Skip to content

v0.9.0-apps.alpha.17

Pre-release
Pre-release

Choose a tag to compare

@microbit-matt-hillsdon microbit-matt-hillsdon released this 06 Mar 17:56
· 30 commits to apps since this release

What's Changed

Breaking changes

  • Reorganize into directory-based entrypoints for tree shaking. Connection types and factory functions are now imported from subpath exports (@microbit/microbit-connection/usb, /bluetooth, /radio-bridge, /universal-hex) instead of the package root. (#96, 7eab3cc)
  • Replace enums with as-const objects and union types. ConnectionStatus, BoardVersion, and all other enums are now as const objects with companion union types, following modern TypeScript conventions. Values are PascalCase (e.g. ConnectionStatus.Connected not ConnectionStatus.CONNECTED). (709e9eb)
  • Replace EventTarget with custom typed event system. TypedEventTarget replaces DOM EventTarget. Listeners receive event data directly instead of wrapped in event classes. Event classes like ConnectionStatusEvent, AccelerometerDataEvent, ButtonEvent, and FlashEvent are removed. (#105)
  • Throw DeviceError when not connected. Methods like getBoardVersion() and getDeviceId() now throw DeviceError instead of returning undefined. (#104)
  • Move serialWrite to USB-specific interfaces. serialWrite is no longer part of the shared DeviceConnection interface, reflecting that serial is USB-only. (#107)
  • Clean up public API surface. BoardId removed from public exports (internal-only), logging made optional in radio bridge options, BoardId.id made readonly. (e037c2b)

New features

  • Pause USB connection on tab switch instead of disconnecting. When a browser tab becomes hidden, the USB connection enters a new Paused state rather than fully disconnecting. Serial output is preserved across tab switches. The behavior is opt-out via pauseOnHidden. (#102, edc7274)
  • Saturate DAPLink CDC buffers before flash to prevent serial data loss. Pushes NUL bytes through the target UART before flashing to prevent DAPLink's shared ring buffer from corrupting flash data. (d239473)
    • This is experimental and we'll try this for some time on the apps branch before releasing.
  • Improve serial data handling around flash. Better coordination of serial start/stop during the flash lifecycle. (9829707)

Between the serial fixes this should mean no lost output after flash and no garbage output from the previous program.

Bug fixes and minor changes

  • Add missing V2 init packet hash. Adds DFU integrity check for V2 board (#93)
  • Reinstate "uBit" BLE name prefix support. Restores filtering for devices advertising with the "uBit" prefix. (#95)
  • Remove ChromeOS 105 WebUSB workaround. Drops a workaround for a long-fixed Chrome OS bug. (cffcb03)
  • Document post-flash connection state differences between USB and Bluetooth. (#106)
  • Document radio bridge as experimental/limited. (#108)
  • Update README for all recent API changes. (dbd14c2)

Internal improvements

  • Hardware test runner. Added a human-in-the-loop test runner for on-device testing. (bcc6a86)
  • Inline CMSIS-DAP protocol handling, removing dapjs dependency (#110)
  • Reorganize USB code with a layer split for CMSIS-DAP. Clearer separation between high-level USB connection logic and low-level DAP operations. (dd0007d)
  • Fix partial flash retry by reinitializing SWD. Resolves reliability issues when partial flashing needs to retry. (3596992)
  • Error handling and logging review. Consolidated error handling across USB and Bluetooth paths. (8c4ffa9)
  • Workaround for bad response issue. Mitigates a timing-related CMSIS-DAP response mismatch. (#77)

Full Changelog: v0.9.0-apps.alpha.16...HEAD