- Fixed Bluetooth firmware updates sometimes failing on macOS. (support#1787)
- Fixed multibyte unicode characters not printing correctly in terminal when split across Bluetooth packets. (support#1743)
2.3.0-beta.1 - 2023-11-24
- Bump beta channel to keep app installs separate from stable channel.
2.2.0 - 2023-11-24
- Updated firmware and docs to v3.3.0. This is a version bump with no changes.
2.2.0-rc.1 - 2023-11-20
- Fixed centering of Pybricks Logo.
- Fixed dialogs not displaying correctly on Android (support#1271).
-
Updated firmware and docs to v3.3.0c1:
- Added
MoveHub.imu.tilt()
([support#539]). - Enabled hub init orientation support for Move Hub ([support#539]).
- Allow Move Hub to ignore
broadcast
instead of raising an exception while connected.
- Fixed Move Hub accelerometer not working since v3.3.0b5 (support#1269).
- Fixed Bluetooth chip locking up on Technic and City hubs when broadcasting (support#1095).
- Fixed potential crash when GC occurs while observing BLE data (support#1278)
- Fixed Technic Hub and City Hub eventually stopping observing BLE data after a few minutes (support#1096) by implementing an auto-reset workaround.
- Added
2.2.0-beta.9 - 2023-10-26
-
Updated dependencies.
-
Updated firmware and docs to v3.3.0b9:
- Added
hub.buttons
as an alias forhub.button
on buttons with one hub (support#1254). - Implemented
brake
forDriveBase
(support#881).
- The
use_gyro
method is added to the normalDriveBase
class instead of having a separateGyroDriveBase
class. Since the latter was only released in beta versions, this is not a breaking change (support#1054). - New color distance function used by the color sensors that is more consistent when distinguishing user-provided colors (pybricks-micropython#104).
- Updated the unreleased BLE API to ensure sent and received objects are the same. Allows one of the supported types or a list/tuple thereof.
- Improved external device detection speed (support#1140).
- Fixed Powered Up Tilt Sensor not working (support#1189).
- Fixed
surface=False
not working inColorSensor
(support#1232). - Fixed
PUPDevice.write
not selecting correct mode (support#1213). - Fixed City Hub turning back on after shutdown (support#1195).
- Fixed SPIKE hubs not broadcasting at all when attempting to broadcast in a tight loop (support#1151).
- Added
- Fixed starting DFU flash while another was still in progress (support#1146).
2.2.0-beta.8 - 2023-07-07
-
Updated dependencies.
-
Updated firmware to v3.3.0b8:
- Added
use_gyro
method toGyroDriveBase
class (support#1054). - Added
pybricks.tools.read_input_byte()
function (support#1102).
- Relaxed thresholds that define when the IMU is stationary (support#1105).
- Fixed Technic (Extra) Large motors not working (support#1131) on all hubs.
- Fixed Powered Up Light not working (support#1131) on all hubs.
- Fixed UART sensors not working on Technic Hub (support#1137).
- Fixed incorrect number of ports on City Hub (support#1131).
- Added
2.2.0-beta.7 - 2023-07-01
- Fixed terminal not working (regression in 2.2.0-beta.6, support#1130).
2.2.0-beta.6 - 2023-06-30
-
Updated dependencies.
-
Updated firmware to v3.3.0b7:
- Added
'modes'
entry to the dictionary returned byPUPDevice.info()
. - Added
pybricks.tools.read_input_byte()
function (support#1102). - Added
pybricks.tools.hub_menu()
function (support#1064).
- Changed internal drivers for LEGO devices (motors and sensors) on all platforms.
- Fixed hub will not power off when Bluetooth chip crashes on City and Technic hubs (support#1095).
- Fixed
off()
method inColorLightMatrix
,UltrasonicSensor
,ColorSensor
(support#1098).
- Added
2.2.0-beta.5 - 2023-06-02
-
Updated dependencies.
-
Updated firmware to v3.3.0b6:
- Enabled builtin
set
type (except on BOOST Move hub) (support#402).
- Updated BTStack to v1.5.5.
- Fixed BLE broadcast not working on City hub.
- Fixed crash on BTStack hubs when program stopped during call to
ble.broadcast()
. - Fixed BLE broadcast not working on Technic hub when not connected (support#1086).
- Fixed delayed sensor sync on boot on City hub (support#747).
- Enabled builtin
- Fixed importing/replacing file when file is open in editor (support#975).
- Fixed file not opened when duplicating (support#1084).
2.2.0-beta.4 - 2023-05-16
- Added warning message when hub has newer Pybricks Profile version than supported version.
-
Updated dependencies.
-
Update code completion for API changes and additions.
-
Updated docs.
-
Updated firmware to v3.3.0b5:
- Enabled the
gc
module (except on BOOST Move hub). - Added
hub.ble
attribute for broadcasting/observing (pybricks-micropython#158).
- Updated MicroPython to v1.20.0.
- Fixed stdin containing
0x06
command byte (support#1052). - Fixed motor process causing delays on ev3dev (support#1035).
- Enabled the
- Fix pasting selection when middle click to close file on Linux (support#1046).
2.2.0-beta.3 - 2023-04-24
- Added support for Pybricks Profile v1.3.0.
-
Better error message when download and run fails due to disconnected hub.
-
Updated dependencies.
-
Update code completion for API changes and additions.
-
Updated docs.
-
Updated firmware to v3.3.0b4:
- Added
pybricks.tools.cross(a, b)
to get a vector cross product. - Added experimental implementation of
hub.imu.heading()
(support#912). - Added support for reading single-axis rotation.
- Added
hub.imu.ready()
method. - Added
GyroDriveBase
class. - Added optional
window
parameter toMotor.speed()
method.
- Moved
Matrix
class fromgeometry
module totools
module (pybricks-micropython#160). - Moved
vector
method fromgeometry
module totools
module (pybricks-micropython#160). - Moved
Axis
class fromgeometry
module toparameters
module (pybricks-micropython#160).
- Fixed gyro on Technic Hub occasionally giving a bad value (support#1026).
- Fixed discrepancy in heading value across hubs (support#1022).
- Fixed iterator for
Matrix
objects giving bad values. - Fixed Bluetooth sometimes locking up on Technic/City hubs (support#567).
- Fixed
GyroDriveBase
being slow to respond to heading perturbations when driving at high speed (support#1032).
- Removed
positive_direction
fromDriveBase
initializer (support#992).
- Added
- Fixed run button active while hub is disconnecting (support#1021).
- Fixed error message not shown when starting REPL fails.
2.2.0-beta.2 - 2023-03-24
-
Focus editor when new file is opened.
-
Updated dependencies.
-
Updated firmware to v3.3.0b3:
- Added
positive_direction
toDriveBase
initializer (support#989). - Added support for setting drivebase acceleration and deceleration separately (support#881).
- Fixed allocator interfering with motor control when memory usage is high (support#977).
- Fixed
Stop.NONE
not working properly for some drivebase geometries (support#972). - Fixed reading programs larger than 65535 bytes on boot on SPIKE hubs. ([support#996).
- Various Bluetooth stability and reliability improvements on BOOST Move hub (support#320, support#324, support#417).
- Fixed Bluetooth random address not changing on City and Technic hubs (support#1011).
- Motor settings and control methods now check the user input and raise a
ValueError
if a value is out of bounds (support#484). - Renamed
precision_profile
toprofile
in theMotor
initializer. - In
DriveBase
,wheel_diameter
andaxle_track
now accept decimal values for increased precision (support#830).
- Removed
DriveBase.left
andDriveBase.right
properties (support#910).
- Added
2.2.0-beta.1 - 2023-03-08
- Added ability to import ZIP files containing Python files (support#833).
-
Updated firmware to v3.3.0b2:
- Added
precision_profile
parameter toMotor
initializer. - Added
Motor.model
object to interact with the motor state estimator. - Added
Stop.BRAKE_SMART
asthen
option for motors. - Added logging support for control stall and pause state.
- Changed how the PID values are initialized for each motor.
- Fixed workaround for motor hold drifting away under external input movement (support#863).
- Reduced motor motion while holding position and added configurable setter and getter for this deadzone.
- Fixed end-user stall flag coming up too early in position based control.
- Further reduced stutter at low motor speeds (support#366).
- Fixed position based commands starting from the wrong position if the previous command was a time based command that could not hit its target (support#956).
- Fixed long delay when connecting to remote on SPIKE hubs (support#466).
- Added
- Fixed importing file with same name overwrites existing without asking user.
2.1.1 - 2023-02-17
-
Updated firmware to v3.2.3:
- Added
close()
method toDCMotor
andMotor
so they can be closed and re-initialized later (support#904).
- Fixed
Light
controlling wrong ports on Move hub (support#913). - Fixed type checking optimized out on Move hub (support#950).
- Added
- Show error message when go to syntax error fails to activate file (support#924).
2.1.0 - 2023-01-06
-
Updated firmware to v3.2.2:
- Fixed some objects do not implement
__hash__
(support#876). - Fixed
Motor.run_time
not completing under load (support#903).
- Fixed some objects do not implement
2.1.0-beta.4 - 2022-12-30
- Code completion trigger improvements (support#894).
- Fixed terminal layout issues when resizing window vertically.
- Fixed editor find widget visible over modal dialogs.
2.1.0-beta.3 - 2022-12-28
- Improved syntax highlighting for f-strings, operators and numeric literals.
- Fixed clipping of code completion popup by terminal.
- Fixed code completion for builtin types.
- Fixed code completion for names starting with
_
. - Fixed code completion for
from ...
for user modules (support#759).
2.1.0-beta.2 - 2022-12-26
-
Updated firmware to v3.2.1:
- Fixed
imu.angular_velocity
returning the values ofimu.acceleration
.
- Fixed
2.1.0-beta.1 - 2022-12-23
- Added audio and visual feedback when typing into terminal while user program is not running.
- Changed app display from "fullscreen" to "standalone" (support#867).
- Fixed imports in scripts that use
async
orawait
keywords (support#873).
2.0.1 - 2022-12-21
- Fixed terminal scroll not working (support#866).
- Fixed terminal breaks if input is given before hub is connected (support#865).
2.0.0 - 2022-12-20
- Added Windows DFU USB driver installation instructions (support#858).
-
Clicking empty area of file list focuses the list (support#856).
-
Various text, style and accessibility fixes and improvements.
-
Updated dependencies.
-
Updated firmware to v3.2.0:
- Buffered stdout is flushed before ending user program.
- Fixed SPIKE/MINDSTORMS hubs advertising after disconnect while user program is still running (support#849).
- Fixed Essential hub hanging on boot when bootloader entered but USB cable not connected (support#821).
- Fixed button needs debouncing on City/Technic/Essential hubs (support#716).
- Fixed motor hold drifting away under external input movement (support#863).
2.0.0-rc.1 - 2022-12-09
- Added videos to firmware flash dialogs (support#728).
-
Moved documentation show/hide button from settings to editor area (support#778).
-
Updated documentation and other dependencies.
-
Updated firmware to v3.2.0c1:
- Fixed
motor.control.limits()
not working if acceleration wasNone
. - Fixed crash on calling methods on uninitialized objects (support#805).
- Fixed crash on calling methods in
__init__(self, ...)
before callingsuper().__init(...)
on uninitialized objects (support#777). - Reverted Pybricks Code stop button raises
SystemAbort
instead ofSystemExit
(support#834). - Improved stop message raised on
SystemExit
andSystemAbort
(support#836). - Fixed Technic Hub and City Hub sometimes not shutting down when a Bluetooth operation is busy (support#814).
- Fixed
hub.system
methods not working (support#837).
- Changed default XYZ orientation of the Technic Hub and the Essential Hub to match the SPIKE Prime Hub and Move Hub (support#848).
- Fixed
- Fixed first tour item not shown if settings is not open (support#823).
- Fixed selected activity tab not controlled independently per window (support#807).
- Fixed selected documentation visibility not controlled independently per window (support#807).
- Fixed slow firmware flash on Android (support#438).
2.0.0-beta.12 - 2022-12-02
- Added in-app LEGO firmware restore for USB/DFU hubs.
- Added Pybricks logo when no files open.
-
Firmware restore for hubs with USB is now done in-app (pybricks-code#1104).
-
Moved Tour button from toolbar to settings.
-
Updated docs, code completion and other dependencies.
-
Updated firmware to v3.2.0b6:
- Added support for
PBIO_PYBRICKS_COMMAND_REBOOT_TO_UPDATE_MODE
Pybricks Profile BLE command. - Implemented
Motor.load()
which now measures load both during active conditions (run
) and passive conditions (dc
).
- The Pybricks Code stop button will force the program to exit even if the user
catches the
SystemExit
exception (pybricks-micropython#117). - Changed
PrimeHub.display.image()
toPrimeHub.display.icon()
and renamed its kwarg fromimage
toicon
(support#409). - Deprecated
Control.load()
,Control.stalled()
, andControl.done()
methods ([support#822]).
- Fixed connecting
Remote
on BOOST move hub (support#793).
- Removed
hub.system.reset()
method. - Disabled
micropython
module on Move Hub.
- Added support for
- Fixed missing warning sign icon.
- Fixed error message for program too big for download (support#810).
2.0.0-beta.11 - 2022-11-11
- Fixed app freezing when checking for updates and update server is unreachable (pybricks-code#1299).
- Added delay to try to mitigate errors when flashing firmware on city hubs (support#792).
2.0.0-beta.10 - 2022-11-11
- Added feature create new empty file (pybricks-code#771).
- Added sponsor button (support#719).
-
Updated documentation.
-
Updated other dependencies.
-
Update Pybricks firmware to v3.2.0a5:
- Added
DriveBase.stalled()
for convenient stall detection. - Added
DriveBase.done()
for convenient completion detection. - Added
Motor.done()
for convenient completion detection.
- Fixed brief hub freeze on
pybricks.common.Logger.save()
when not connected to the computer (support#738). - Fixed drive base stall flags being set while not stalled (support#767).
- Fixed
Motor.run_target
raising exception for short moves (support#786).
- Added
- Fixed firmware checksum validation when checksum === 0.
- Fixed activity views not scrolling when contents don't fit (support#782).
2.0.0-beta.9 - 2022-10-27
- Added feature to close editor tab on middle click (support#758).
- Fixed long time until UI visible on resource-constrained systems.
- Removed word-based autocompletion (support#757).
2.0.0-beta.8 - 2022-10-25
- Fixed crash when user program contains syntax error (support#755).
2.0.0-beta.7 - 2022-10-24
- Fixed UI temporary freeze when downloading and running programs (support#750).
2.0.0-beta.6 - 2022-10-21
- Added feature to install custom firmware from file (pybricks-code#1020).
- Added support for multi-file programs (support#189).
-
Updated dependencies.
-
Updated documentation.
-
Updated APIs for code completions.
-
Update hub firmware to v3.2.0b4:
- Added hub shutdown status light indication.
- Added boot and shutdown light matrix animations.
- Added new indication for over-charging battery (blinking green light).
- Added iterator protocol support to
geometry.Matrix
class. - Added support for multi-file projects (pybricks-micropython#115).
- Added new
System.storage()
API (support#85).
- Battery full indication (green light) comes on earlier (support#647).
- User program is saved to non-volatile memory at shutdown on all hubs.
- Restored the
Motor.speed()
method andDriveBase
equivalent to provide speed as a numerical derivative of the motor position. - Starting REPL automatically imports all modules (support#741).
- Updated Bluetooth to Pybricks Profile v1.2.0.
- Bluetooth now uses random private address instead of static public address (support#600).
- Fixed motors going out of sync when starting program (support#679).
- Fixed motor torque signal overflowing under load (support#729).
- Fixed city hub turning back on after shutdown (support#692).
- Fixed IMU I2C bus lockup on SPIKE hubs (support#232).
- Fixed REPL history corrupt after soft reset (support#699).
- Fixed "ValueError: incompatible .mpy file" when pressing the button when there is no program yet (support#599).
- Fixed run button enabled when no file open (support#691).
- Fixed flash firmware dialog not showing when settings not open (support#694).
- Fixed errors not handled while flashing firmware via USB (pybricks-code#1011).
- Fixed imports with invalid file name silently ignored (support#717).
- Fixed code completion not working when offline (pybricks-code#932).
- Removed feature to include custom
main.py
when flashing firmware. - Removed support for file names containing
-
.
2.0.0-beta.5 - 2022-07-28
- Fixed
main.[hash].js
not cached (support#689).
2.0.0-beta.4 - 2022-07-28
- Added better error message when no files to backup (support#681).
- Added multi-step firmware flashing dialog.
- Added support for flashing firmware via USB DFU (support#659).
- Added an interactive introductory tour of the app.
- Added restore official LEGO firmware dialog.
-
Updated dependencies.
-
Updated firmware to Pybricks v3.2.0b3:
- Fix integral control not working properly.
Motor.run_time
no longer raises an exception for negative time values.
- Fixed deleting files that are not open in the editor.
2.0.0-beta.3 - 2022-07-06
-
Updated dependencies.
-
Updated firmware to Pybricks v3.2.0b2:
- Added
Motor.stalled()
method.
- Fixed motor not stopping at the end of
run_until_stalled
(support#662). - Fixed incorrect battery current reading on Technic hub (support#665).
- Fixed non-zero speed reported when motor stalled.
- Fixed I/O devices not syncing at high baud rate.
- Fixed
ENODEV
error while device connection manager is busy (support#674).
- Reworked internal motor model that is used to estimate speed.
- Speed methods now use estimated speed instead of reported speed.
- Changed drive base default speed to go a little slower.
- Updated MicroPython to v1.19.
- Added
2.0.0-beta.2 - 2022-06-24
- Added basic intellisense to the code editor.
2.0.0-beta.1 - 2022-06-03
- Added multi-file support (support#418, support#465).
-
Moved settings.
-
Accessibility improvements.
-
Updated dependencies.
-
Updated documentation.
-
Updated firmware to v3.2.0b1:
- Added
Stop.NONE
asthen
option for motors. - Added
Stop.COAST_SMART
asthen
option for motors. - Made motor deceleration configurable separately from acceleration.
- Enabled
ujson
module. - Added ability to use more than one
DriveBase
in the same script. - Added support for battery charging on Prime and essential hubs.
- Changed how
DriveBases
andMotor
classes can be used together. - Raise asynchronous
OSError
instead ofSystemExit
if motor is disconnected while a program is running. - Changing settings while a motor is moving no longer raises an exception. Some settings will not take effect until a new motor command is given.
- Disabled
Motor.control
andMotor.log
on Move Hub to save space. - Changed LED color calibration on Prime hub to make yellow less green.
- Updated to upstream MicroPython v1.18.
- Changed imu.acceleration() units to mm/s/s (pybricks-micropython#88) for Move Hub, Technic Hub, and Prime Hub.
- Fixed color calibration on Powered Up remote control (support#424).
- Fixed 3x3 Light Matrix colors with hue > 255 not working correctly (support#619).
- Added
- Fix tooltips not closing when expected (pybricks-code#275).
1.2.0-beta.1 - 2021-12-27
- Status bar indicator for connected hub.
- Basic battery OK/low indicator (support#559).
- Saving file now uses proper save dialog in Chromium browser (support#84).
- Toolbar buttons now scale with screen size (support#300).
- Fixed buttons wrong size while image is downloading (support#369).
1.1.0 - 2021-12-16
-
Updated dependencies.
-
Updated to Pybricks Firmware v3.1.0:
- Renamed new
DCMotor.dc_settings()
method toDCMotor.settings()
(support#536).
- Fixed direction for
DriveBase.turn()
andDrivebase.curve()
for some arguments (support#535). - Fixed
then=Stop.COAST
not working inDriveBase
methods (support#535).
- Renamed new
-
Updated docs:
- Added maximum voltage setter for
DCMotor
andMotor
. - Documented
DriveBase.curve()
method.
- Removed
duty
setting fromControl.limits
method. - Removed
integral_range
setting fromControl.pid
method.
- Added maximum voltage setter for
1.1.0-rc.1 - 2021-11-19
- Hub name setting for selecting hub name when flashing firmware (support#52).
-
Updated to Pybricks firmware v3.1.0c1:
- Added
DriveBase.curve()
method to drive an arc segment. - Added
then
andwait
arguments toDriveBase
methods (support#57).
- Dropped
integral_range
argument fromControl.pid()
. This setting was ineffective and never used. When set incorrectly, the motor could get stuck for certain combinations ofkp
andki
. - Improved motor behavior for cases with low-speed, low-load, but high inertia (support#366).
- Changed how the duty cycle limit is set for
Motor
andDCMotor
. It is now set as a voltage limit via a dedicated method, instead ofMotor.control
.
- Fixed
then=Stop.COAST
being ignored in most motor commands. - Fixed
brake()
/light.off()
not working on Move hub I/O port C (support#501). - Fixed
Remote()
failing to connect when hub is connected to 2019 or newer MacBooks (support#397). - Fixed intermittent improper detection of hot-plugged I/O devices (support#500).
- A program now stops when a
Motor
is unplugged while it is running, instead of getting in a bad state.
- Added
-
Updated docs:
- Added
ColorLightMatrix
class. - Added
LWP3Device
class.
- Added
1.1.0-beta.6 - 2021-09-21
- Show error message if connected hub is running old firmware (support#482).
-
Updated dependencies.
-
Updated to Pybricks firmware v3.1.0b1:
- Support for LEGO Technic Color Light Matrix (support#440).
- Support for LEGO UART devices with a new battery power flag. This is required to support the new LEGO Technic Color Light Matrix (support#440).
- Support for the SPIKE Essential hub/Technic Small hub (support#439).
- Fixed Ultrasonic Sensor and Color Sensor turning off when a user script ends (support#456).
- Hub reset due to watchdog timer when writing data to UART I/O device (support#304).
- City/Technic hubs not connecting via Bluetooth on macOS 12 (support#489).
- Updated to MicroPython v1.17.
1.1.0-beta.5 - 2021-08-30
-
Updated to Pybricks firmware v3.1.0a4:
- Enabled builtin
bytearray
(pybricks-code#60). - Enabled
ustruct
module (pybricks-code#60). - Added alpha support for dual boot installation on the SPIKE Prime Hub.
- Added
pybricks.experimental.hello_world
function to make it easier for new contributors to experiment with Pybricks using C code. - Added ability to import the
main.mpy
that is embedded in the firmware from a download and run program (support#408). - Added
pybricks.iodevices.LWP3Device
to communicate with a device that supports the LEGO Wireless Protocol 3.0.00 (pybricks-code#68)
- Move Hub Bluetooth optimizations to reduce firmware size (pybricks-code#49).
- Disabled
pybricks.iodevices
module on Move Hub to reduce firmware size. - Improvements to
pybricks.pupdevices.Remote
:- Check if a remote is already connected before attempting to create a new connection.
- Rename first argument from
address
toname
to match documentation. - Implement connecting by name.
- Add
name()
method. - Add
light
attribute.
- Enabled builtin
-
Updated documentation:
- MicroPython module documentation.
- Examples for hub system functions including stop button and shutdown.
- Build IDE docs as main docs with minor changes, instead of a completely separate build.
- Moved motor control documentation to the motor page.
1.1.0-beta.4 - 2021-08-13
- Fixed flashing firmware on Android support#403.
- Checksum is now validated as firmware flash progresses instead of just at the end support#433.
- About menu now shows firmware version as main version support#412.
1.1.0-beta.3 - 2021-07-20
- Changed snippet (autocomplete) content and behavior pybricks-code#471.
- Changed gutter background color pybricks-code#472.
- Added BETA badge to application icon support#375.
- Updated hub firmware to v3.1.0a3.
- Fixed auto-indent not working pybricks-code#470.
1.1.0-beta.2 - 2021-07-06
- Changed from Ace editor to Monaco editor.
- Updated hub firmware to v3.1.0a2.
- Fixed run button still enabled after hub disconnects during download support#378.
1.1.0-beta.1 - 2021-06-23
- Updated projects URL.
- Updated hub firmware to v3.1.0a1.
- Updated docs.
1.0.0 - 2021-06-08
- Added changelog link to about dialog.
- Updated hub firmware to v3.0.0.
- Updated documentation.
Prerelease changes are documented at support#48.