# Changelog ## [Unreleased] ## [2.0.0-beta.7] - 2022-10-24 ### Fixed - Fixed UI temporary freeze when downloading and running programs ([support#750]). [support#750]: https://github.com/pybricks/support/issues/750 ## [2.0.0-beta.6] - 2022-10-21 ### Added - Added feature to install custom firmware from file ([pybricks-code#1020]). - Added support for multi-file programs ([support#189]). ### Changed - Updated dependencies. - Updated documentation. - Updated APIs for code completions. - Update hub firmware to v3.2.0b4: ### Added - 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]). ### Changed - 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 and `DriveBase` 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][pp1.2.0]. - Bluetooth now uses random private address instead of static public address ([support#600]). ### Fixed - 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]). [pp1.2.0]: https://github.com/pybricks/technical-info/blob/master/pybricks-ble-profile.md#profile-v120 [pybricks-micropython#115]: https://github.com/pybricks/pybricks-micropython/pull/115 [support#85]: https://github.com/pybricks/support/issues/85 [support#232]: https://github.com/pybricks/support/issues/232 [support#599]: https://github.com/pybricks/support/issues/599 [support#600]: https://github.com/pybricks/support/issues/600 [support#647]: https://github.com/pybricks/support/issues/647 [support#679]: https://github.com/pybricks/support/issues/679 [support#692]: https://github.com/pybricks/support/issues/692 [support#699]: https://github.com/pybricks/support/issues/699 [support#729]: https://github.com/pybricks/support/issues/729 [support#741]: https://github.com/pybricks/support/issues/741 ### Fixed - 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 - Removed feature to include custom `main.py` when flashing firmware. - Removed support for file names containing `-`. [pybricks-code#932]: https://github.com/pybricks/pybricks-code/issues/932 [pybricks-code#1011]: https://github.com/pybricks/pybricks-code/issues/1011 [pybricks-code#1020]: https://github.com/pybricks/pybricks-code/issues/1020 [support#189]: https://github.com/pybricks/support/issues/189 [support#691]: https://github.com/pybricks/support/issues/691 [support#694]: https://github.com/pybricks/support/issues/694 [support#717]: https://github.com/pybricks/support/issues/717 ## [2.0.0-beta.5] - 2022-07-28 ### Fixed - Fixed `main.[hash].js` not cached ([support#689]). [support#689]: https://github.com/pybricks/support/issues/689 ## [2.0.0-beta.4] - 2022-07-28 ### Added - 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. ### Changed - Updated dependencies. - Updated firmware to Pybricks v3.2.0b3: ### Fixed - Fix integral control not working properly. ### Changed - `Motor.run_time` no longer raises an exception for negative time values. ### Fixed - Fixed deleting files that are not open in the editor. [support#659]: https://github.com/pybricks/support/issues/659 [support#681]: https://github.com/pybricks/support/issues/681 ## [2.0.0-beta.3] - 2022-07-06 ### Changed - Updated dependencies. - Updated firmware to Pybricks v3.2.0b2: ### Added - Added `Motor.stalled()` method. ### Fixed - 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]). ### Changed - 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. [support#662]: https://github.com/pybricks/support/issues/662 [support#665]: https://github.com/pybricks/support/issues/665 [support#674]: https://github.com/pybricks/support/issues/674 ## [2.0.0-beta.2] - 2022-06-24 ### Added - Added basic intellisense to the code editor. ## [2.0.0-beta.1] - 2022-06-03 ### Added - Added multi-file support ([support#418], [support#465]). ### Changed - Moved settings. - Accessibility improvements. - Updated dependencies. - Updated documentation. - Updated firmware to v3.2.0b1: ### Added - Added `Stop.NONE` as `then` option for motors. - Added `Stop.COAST_SMART` as `then` 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 - Changed how `DriveBases` and `Motor` classes can be used together. - Raise asynchronous `OSError` instead of `SystemExit` 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` and `Motor.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 - Fixed color calibration on Powered Up remote control ([support#424]). - Fixed 3x3 Light Matrix colors with hue > 255 not working correctly ([support#619]). [pybricks-micropython#88]: https://github.com/pybricks/pybricks-micropython/issues/88 [support#424]: https://github.com/pybricks/support/issues/424 [support#619]: https://github.com/pybricks/support/issues/619 ### Fixed - Fix tooltips not closing when expected ([pybricks-code#275]). [pybricks-code#275]: https://github.com/pybricks/pybricks-code/issues/275 [support#418]: https://github.com/pybricks/support/issues/418 [support#465]: https://github.com/pybricks/support/issues/465 ## [1.2.0-beta.1] - 2021-12-27 ### Added - Status bar indicator for connected hub. - Basic battery OK/low indicator ([support#559]). ### Changed - Saving file now uses proper save dialog in Chromium browser ([support#84]). - Toolbar buttons now scale with screen size ([support#300]). ### Fixed - Fixed buttons wrong size while image is downloading ([support#369]). [support#84]: https://github.com/pybricks/support/issues/84 [support#300]: https://github.com/pybricks/support/issues/300 [support#369]: https://github.com/pybricks/support/issues/369 [support#559]: https://github.com/pybricks/support/issues/559 ## [1.1.0] - 2021-12-16 ### Changed - Updated dependencies. - Updated to Pybricks Firmware v3.1.0: ### Changed - Renamed new `DCMotor.dc_settings()` method to `DCMotor.settings()` ([support#536]). ### Fixed - Fixed direction for `DriveBase.turn()` and `Drivebase.curve()` for some arguments ([support#535]). - Fixed `then=Stop.COAST` not working in `DriveBase` methods ([support#535]). [support#535]: https://github.com/pybricks/support/issues/535 [support#536]: https://github.com/pybricks/support/issues/536 - Updated docs: ### Added - Added maximum voltage setter for `DCMotor` and `Motor`. - Documented `DriveBase.curve()` method. ### Changed - Removed `duty` setting from `Control.limits` method. - Removed `integral_range` setting from `Control.pid` method. ## [1.1.0-rc.1] - 2021-11-19 ### Added - Hub name setting for selecting hub name when flashing firmware ([support#52]). ### Changed - Updated to Pybricks firmware v3.1.0c1: ### Added - Added `DriveBase.curve()` method to drive an arc segment. - Added `then` and `wait` arguments to `DriveBase` methods ([support#57]). ### Changed - Dropped `integral_range` argument from `Control.pid()`. This setting was ineffective and never used. When set incorrectly, the motor could get stuck for certain combinations of `kp` and `ki`. - 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` and `DCMotor`. It is now set as a voltage limit via a dedicated method, instead of `Motor.control`. ### Fixed - 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. [support#57]: https://github.com/pybricks/support/issues/57 [support#366]: https://github.com/pybricks/support/issues/366 [support#397]: https://github.com/pybricks/support/issues/397 [support#500]: https://github.com/pybricks/support/issues/500 [support#501]: https://github.com/pybricks/support/issues/501 - Updated docs: ### Added - Added `ColorLightMatrix` class. - Added `LWP3Device` class. [support#52]: https://github.com/pybricks/support/issues/52 ## [1.1.0-beta.6] - 2021-09-21 ### Added - Show error message if connected hub is running old firmware ([support#482]). ### Changed - Updated dependencies. - Updated to Pybricks firmware v3.1.0b1: ### Added - 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 - 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]). ### Changed: - Updated to MicroPython v1.17. [support#304]: https://github.com/pybricks/support/issues/304 [support#439]: https://github.com/pybricks/support/issues/439 [support#440]: https://github.com/pybricks/support/issues/440 [support#456]: https://github.com/pybricks/support/issues/456 [support#489]: https://github.com/pybricks/support/issues/489 [support#482]: https://github.com/pybricks/support/issues/482 ## [1.1.0-beta.5] - 2021-08-30 ### Changed - Updated to Pybricks firmware v3.1.0a4: ### Added - 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]) ### Changed - 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` to `name` to match documentation. - Implement connecting by name. - Add `name()` method. - Add `light` attribute. [pybricks-code#49]: https://github.com/pybricks/pybricks-micropython/issues/49 [pybricks-code#60]: https://github.com/pybricks/pybricks-micropython/pull/60 [pybricks-code#68]: https://github.com/pybricks/pybricks-micropython/pull/68 [support#408]: https://github.com/pybricks/support/issues/408 - Updated documentation: ### Added - MicroPython module documentation. - Examples for hub system functions including stop button and shutdown. ### Changed - 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 - Fixed flashing firmware on Android [support#403]. ### Changed - 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]. [support#403]: https://github.com/pybricks/support/issues/403 [support#412]: https://github.com/pybricks/support/issues/412 [support#433]: https://github.com/pybricks/support/issues/433 ## [1.1.0-beta.3] - 2021-07-20 ### Changed - 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 - Fixed auto-indent not working [pybricks-code#470]. [support#375]: https://github.com/pybricks/support/issues/375 [pybricks-code#470]: https://github.com/pybricks/pybricks-code/issues/470 [pybricks-code#471]: https://github.com/pybricks/pybricks-code/issues/471 [pybricks-code#472]: https://github.com/pybricks/pybricks-code/issues/472 [v3.1.0a3]: https://github.com/pybricks/pybricks-micropython/blob/master/CHANGELOG.md#310a3---2021-07-19 ## [1.1.0-beta.2] - 2021-07-06 ## Changed - Changed from Ace editor to Monaco editor. - Updated hub firmware to [v3.1.0a2]. ### Fixed - Fixed run button still enabled after hub disconnects during download [support#378]. [support#378]: https://github.com/pybricks/support/issues/378 [v3.1.0a2]: https://github.com/pybricks/pybricks-micropython/blob/master/CHANGELOG.md#310a2---2021-07-06 ## [1.1.0-beta.1] - 2021-06-23 ### Changed - Updated projects URL. - Updated hub firmware to [v3.1.0a1]. - Updated docs. - [v3.1.0a1]: https://github.com/pybricks/pybricks-micropython/blob/master/CHANGELOG.md#310a1---2021-06-23 ## [1.0.0] - 2021-06-08 ### Added - Added changelog link to about dialog. ### Changed - Updated hub firmware to [v3.0.0]. - Updated documentation. [v3.0.0]: https://github.com/pybricks/pybricks-micropython/blob/master/CHANGELOG.md#300---2021-06-08 ## Prerelease Prerelease changes are documented at [support#48]. [support#48]: https://github.com/pybricks/support/issues/48 [Unreleased]: https://github.com/pybricks/pybricks-code/compare/v2.0.0-beta.7...HEAD [2.0.0-beta.7]: https://github.com/pybricks/pybricks-code/compare/v2.0.0-beta.6...v2.0.0-beta.7 [2.0.0-beta.6]: https://github.com/pybricks/pybricks-code/compare/v2.0.0-beta.5...v2.0.0-beta.6 [2.0.0-beta.5]: https://github.com/pybricks/pybricks-code/compare/v2.0.0-beta.4...v2.0.0-beta.5 [2.0.0-beta.4]: https://github.com/pybricks/pybricks-code/compare/v2.0.0-beta.3...v2.0.0-beta.4 [2.0.0-beta.3]: https://github.com/pybricks/pybricks-code/compare/v2.0.0-beta.2...v2.0.0-beta.3 [2.0.0-beta.2]: https://github.com/pybricks/pybricks-code/compare/v2.0.0-beta.1...v2.0.0-beta.2 [2.0.0-beta.1]: https://github.com/pybricks/pybricks-code/compare/v1.2.0-beta.1...v2.0.0-beta.1 [1.2.0-beta.1]: https://github.com/pybricks/pybricks-code/compare/v1.1.0...v1.2.0-beta.1 [1.1.0]: https://github.com/pybricks/pybricks-code/compare/v1.1.0-rc.1...v1.1.0 [1.1.0-rc.1]: https://github.com/pybricks/pybricks-code/compare/v1.1.0-beta.6...v1.1.0-rc.1 [1.1.0-beta.6]: https://github.com/pybricks/pybricks-code/compare/v1.1.0-beta.5...v1.1.0-beta.6 [1.1.0-beta.5]: https://github.com/pybricks/pybricks-code/compare/v1.1.0-beta.4...v1.1.0-beta.5 [1.1.0-beta.4]: https://github.com/pybricks/pybricks-code/compare/v1.1.0-beta.3...v1.1.0-beta.4 [1.1.0-beta.3]: https://github.com/pybricks/pybricks-code/compare/v1.1.0-beta.2...v1.1.0-beta.3 [1.1.0-beta.2]: https://github.com/pybricks/pybricks-code/compare/v1.1.0-beta.1...v1.1.0-beta.2 [1.1.0-beta.1]: https://github.com/pybricks/pybricks-code/compare/v1.0.0...v1.1.0-beta.1 [1.0.0]: https://github.com/pybricks/pybricks-code/compare/v1.0.0-rc.2...v1.0.0