Skip to content

Latest commit

 

History

History
761 lines (642 loc) · 34.3 KB

File metadata and controls

761 lines (642 loc) · 34.3 KB

Future release (next version)

Put unreleased changes here!

Board Support:

  • About app: show correct netmask
  • WebAssembly: fix mobile touch input by properly converting SDL's normalized touch coordinates to actual window pixel coordinates by @DrSkunk

Frameworks:

  • App: change 'no icon' log level from warning to info
  • AudioManager: add find_input_by_kind() and find_output_by_kind()
  • AudioManager: add find_input_by_name() and find_input_by_kind()
  • InputManager: add has_haptic_feedback() class method
  • WifiService: fix get_ipv4_netmask to get the netmask (not the address) by @lebeno

OS:

  • Settings: add 'Startup sound' to mute bootup buzzer by @DrSkunk
  • Settings: gate 'Startup sound' by AudioManager having a 'buzzer' output
  • Settings: gate 'Haptic feedback' by InputManager having haptic feedback support

0.14.2

Builtin Apps:

  • AppStore: use one backend list call to check for updates instead of per-app detail fetches

Frameworks:

  • NotificationManager: support emojis in notifications
  • Topmenu: close notification bar when launching app from notification drawer

0.14.1

Builtin Apps:

  • AppStore: improve responsiveness by skipping download of icons in list view (generate image based on SHA1 hash)
  • AppStore: use new version field in BadgeHub.eu's /project-summaries
  • New MPOS-AppLogos icons by @QuasiKili
  • Appstore, OSUpdate, Settings: remove redundant assets/ folder

Frameworks:

  • MposKeyboard: don't show NEWLINE button when the linked textarea is set_one_line(True)
  • Code cleanups

OS:

  • Reduce max concurrent DNS resolving threads from 4 to 2 to be on the safe side

0.14.0

Board Support:

  • DFRobot UniHiker K10: add board support (ST7789 display, XL9535 GPIO expander, GC2145 camera, on-board sensors, RGB LED) by @woodhead-tech
  • Fri3d 2026: repeat buttons when pressed
  • Add new 'web' target by @DrSkunk to run in a webbrowser using WebAssembly!

Builtin Apps:

  • About: fix logo not showing
  • AppStore: download the correct .mpk from BadgeHub.eu if there are multiple versions
  • File Manager: fix browsing SD card (FAT32) folders and files not showing
  • OSUpdate: show raw ESP error and a user-friendly message when the update fails to activate

Frameworks:

  • AppManager: add support for apps as Python packages
  • AudioManager: support for desktop audio by @jnuyens
  • DownloadManager and aiohttp: various connection handling improvements by @jnuyens
  • File Explorer: add support for deleting directories
  • Focus: add_focus_border() highlights stay hidden until the user navigates by direction
  • FontManager: fallback to included lips for various variations
  • NotificationManager: add buzzer sound notifications with setting
  • SDCard: tolerate trailing slashes when listing SD card contents
  • StreamingUnzip: tolerate trailing slashes when creating directories
  • FontManager: tolerate trailing slashes when listing directories
  • WifiService: increase connection timeout from 10 to 13 seconds, reduce log levels to avoid polluting REPL shell

OS:

  • Increase size of esp32-small and lilygo_t4 partitions to 3800000 to accomodate esp32 builds
  • shutil: tolerate trailing slashes in rmtree(), copytree(), and move()
  • os.path: fix exists(), isdir(), and isfile() for directories ending with / on FAT32
  • micropython-nostr: add NIP-17 and NIP-44 support
  • DNS lookups in separate thread to prevent UI hang on esp32 by @jnuyens
  • Strip trailing slashes from directory paths before filesystem calls to support both LittleFS and FAT32 (SD card)

0.13.0

Builtin Apps:

  • Add File Manager to builtin apps, with support for dispatching an implicit 'view' intent to open files
  • AppStore: make BadgeHub.eu the default backend, with Apps.MicroPythonOS.com second, cleanups
  • AppStore: prioritize display of known icons, show installed apps first (no network needed)
  • OSUpdate: show 'OS Update' instead of 'OTA Update' during progress

Board Support:

  • Fri3d 2024/2026: correct IR TX pin for SAO IO13/IO21 (not IO10 badge link) so Mini Blaster / Noisy Cricket works with IR Remote app
  • Fri3d 2026: add support for headset-only audio output (without simulteneous communicator output)

Drivers:

  • ST7789 display controller: tune up VCOMS, VRHS for improved contrast; raise frame rate to 90 Hz to prevent tearing effect; update positive and negative gamma curves for better colors

Frameworks:

  • Add generic InputActivity for reusable single-value input UI; SettingActivity is now a thin wrapper that launches InputActivity and persists the result
  • FontManager: add a few more emojis and have getEmojiStrings() return complete emoji sequences (e.g. flag pairs) for visual emoji lists
  • Add new add_focus_border utility and migrate all focus/defocus border handlers (ImageView, MusicPlayer, ShowFonts, About, HowTo, Launcher, WiFi Settings, Connect4, SettingsActivity, topmenu) to use it
  • Add new builtin File Explorer Activity with picker
  • AppManager: add support to install/update mpk/zip packages with 0-byte files (like IR Remote)
  • AppManager: move to new 'flat' mpk structure to reduce directory overhead by LittleFS
  • AppManager: add file-type association support (mimeType/pathPattern intent filters) and an 'Open With' chooser
  • AudioManager: add support for compressed 4-bit ADPCM IMA WAV format
  • ActivityNavigator: dispatch implicit file intents to installed apps with proper app context and status-bar handling
  • Fix ChooserActivity, ViewActivity, and ShareActivity for LVGL 9.x and remove undefined references
  • ViewActivity fallback now displays the filename plus the first 512 bytes of the file's contents
  • Activity: add onBackPressed() hook so an activity can intercept the back/close gesture and stay foreground until it decides to close
  • View: split the explicit finish_current_activity() path from back_screen() so Activity.finish() no longer re-triggers onBackPressed()
  • SharedPreferences: migrate and store preferences to /prefs/ instead of /

OS:

  • Add BMP bitmap image support (with fix for LVGL 9.4 bmp scaling)
  • Fix tjpgd JPEG scaling in LVGL
  • Move MicroPythonOS-logo-white-long-w296.png to /builtin/res/

0.12.2

Board Support:

  • lilygo_t_display_s3.py: remove old LVGL 9.2 workaround for button repeat handling
  • m5stack_fire.py: remove old LVGL 9.2 workaround for button repeat handling
  • esp32-small and lilygo_t4: reduce app partition size from 3.9M to 3.7M
  • Fix import logging error in 9 boards

Builtin Apps:

  • AppStore: fix focus border around action button
  • AppStore: wait at least 2 minutes before checking for app updates
  • HowTo: fix checkbox being persisted unnecessarily
  • Launcher: speed up by removing icon image hasing
  • OSUpdate: improve layout, focus handling, UI
  • OSUpdate: wait at least 2 minutes before checking for app updates

Frameworks:

  • AppManager: look for apps with both absolute and relative paths

OS:

  • Increase LV_IMAGE_HEADER_CACHE_DEF_CNT from 24 to 64 to fit enough app icons
  • fs_driver.py: fix one failed M:/ load from breaking all future M: loads
  • Logging: add timestamp (milliseconds since startup) for improved performance debugging
  • Mount LittleFS2 internal filesystem progsize=256 to match the ESP32 SPI flash hardware page, avoiding read-modify-write cycles.
  • Mount LittleFS2 internal filesystem with readsize=256 to align flash reads for better efficiency.
  • Move Nostr userlist from internal_filesystem/lib/userlist.py micropython-nostr/userlist.py
  • Print warning about limited aiorepl and how to enable full REPL shell
  • macOS/unix builds: auto import main (like on ESP32) so it works without any internal_filesystem directory

0.12.1

Board Support:

  • Fri3d 2024: cleanup key repeat workaround for old LVGL 9.2
  • Fri3d 2026: add button repeat on long press
  • Fri3d 2026: switch audio to final pin assigments (keep IO0/START pressed to use old prototype pin assigments)

Builtin Apps:

  • Launcher: fix splash screen remaining visible when app fails to start
  • Use logger/logging with __debug__ guard for smaller build size

Frameworks:

  • CameraActivity: use QR symbol for QR decoding
  • DownloadManager: print stack trace in case of download error
  • DownloadManager: include User-Agent HTTP header
  • FontManager: optimize emoji PNG sizes with optipng and zopflipng to reduce build size by ~14KiB
  • FontManager: add popular 'Smiling Face with Three Hearts' emoji that was missing from the frequency table
  • WidgetAnimator: fix animations with large values (like a large on-chain balance in LightningPiggy) not being animated

OS:

  • aiohttp: add support for relative HTTP redirects (in addition to absolute HTTP redirects)
  • Drawer menu: close when home button is clicked
  • Optional override of builtin boot splash image by /data/images/boot_splash.png
  • Compile Python code with -O3 to optimize for speed and size
  • Use logger/logging with __debug__ guard for smaller build size

0.12.0

Board Support:

  • New board: LilyGo T4
  • New board: SQUiXL device by Unexpected Maker - https://squixl.io

Builtin Apps:

  • About: use shutil.disk_usage()
  • About: add LVGL version info
  • AppStore: add 'Update All' functionality, redesign with split between UI and Service logic
  • Launcher: show splash screen (app icon centered) while starting an app
  • OSUpdate: redesign with split between UI and Service logic
  • Settings: new 'Haptic feedback' enable/disable setting

Frameworks:

  • Add Services with intent filter boot_completed
  • AppManager: buffer .mpk/.zip in RAM instead of ROM before extracting (less space required, less flash wear, faster)
  • AppManager: check sufficient free storage space before installing app package
  • FontManager: switch openmoji to noto-emoji
  • FontManager: add 10 additional emojis
  • FontManager: switch from 20x20 to 32x32 emojis to improve quality (same filesize!)
  • FontManager: delegate emoji image scaling to LVGL (native C)
  • FontManager: speed up and simplify emoji scaling
  • NotificationManager: new framework to notify the user
  • SettingActivity: add new optional 'note' field for inline informational text about a setting
  • WebServer: add fast one-layer screenshot view in addition to slower all-layer mode

OS:

  • Gesture navgation: use lv.SYMBOL.NEW_LINE for the swipe from the left edge to go back
  • build_mpos.sh: suppress Clang 21's -Wunterminated-string-initialization so the macOS build doesn't fail compiling secp256k1
  • Create WifiBoot-, WebServerBoot- and AIOReplService
  • Restyle drawer menu to accomodate notifications
  • shutil: add move, copyfile, and copytree() functions
  • Focus direction: rewrite algorithm for speed and widget reachability
  • Show warning if an app throws an exception (with optional details)
  • Require top-level directory in .mpk files that matches the app name

Known issues:

  • Animations with large values (like a large on-chain balance in LightningPiggy) are not animated

0.11.2

Frameworks:

  • Fix SharedPreferences no-op guard silently discarding writes (affects all settings, not just WiFi)
  • Switch Fri3d Communicator Add-On 2026 Keyboard to polling mode to work around spotty IRQ

0.11.1

Builtin Apps:

  • About: cleanup unnecessary code

Board Support:

  • Fri3d 2024: register i2c with DeviceManager for add-ons
  • Fri3d 2024 and 2026: detect and initialize Fri3d Communicator 2024 or 2026 Keyboard
  • Fri3d Communicator Add-On: improve UART handling
  • Fri3d Communicator Add-On Keyboard: new input device (indev) for LVGL with IRQ mode, polling mode, key repeat, escape and arrows for navigation

Frameworks:

  • AudioManager: tweak WAV input buffer to reduce glitches
  • FontManager: default to non-emoji font unless emoji=True to improve performance
  • FontManager: add a few more emojis

0.11.0

Builtin Apps:

  • About: show system uptime, use FontManager
  • Compile builtin apps to bytecode .mpy files to reduce build size by 60KiB and improve startup performance
  • HowTo app: make import lvgl as lv explicit

Frameworks:

  • AppManager: try .mpy after .py and use import instead of explicit compile
  • AppManager: require explicit import lvgl for clarity
  • FontManager: new framework that provides font listing, TTF support, emoji support
  • InputManager: mark emulate_focus_obj(group,o) as deprecated in favor of lv.group_focus_obj(o)
  • MposKeyboard: add support for typing a few basic emojis
  • SharedPreferences: avoid writing default-only configs at boot and prune empty config dirs/files

OS:

  • Add os.path functionality like in CPython
  • c_mpos/quirc: fix compilation warnings
  • Disable unused OS facilities (FreeRTOS internals, tracing, INFO logging, broken GIF, Pinyin IME, LVGL window, BMP) to reduce build size by 109KiB
  • Simplify focusgroup handling
  • Re-enable UART REPL again BUT add esp.uart_repl(False) functionality to disable/enable it at runtime
  • Format internal storage if mounting fails instead of hanging (even if not empty)

Board Support:

  • Freenove's ESP32-S3 display board by @Rohansi

0.10.0

OS:

  • Synchronize with upstream https://github.com/lvgl-micropython/lvgl_micropython 14ad6ce to bring ESP-IDF: 5.4 to 5.5.1 and MicroPython: 1.25 to 1.27
  • Split lvgl_micropython customizations into topic branches for easier rebasing: topic/fonts, topic/lv-conf, topic/platform, topic/error-handling

0.9.6

Builtin Apps:

  • About: show correct next update partition instead of always using get_next_update()
  • OSUpdate: restrict OTA update flip-flop target to ota_0/ota_1 instead of all ota_N partitions (via shared partition helper)

Frameworks:

  • Add mpos.partitions.get_next_update_partition() helper that alternates between ota_0 and ota_1 only
  • DownloadManager: add 'redact' argument to replace sensitive info with REDACTED in log output
  • SettingActivity: support slider UI for integer settings
  • SettingActivity: show human-readable value instead of internally used option

Board Support:

  • Fri3d 2026: access expander.analog as property instead of function

OS:

  • Disable the repl on hardware uart for esp32s3 targets (USB serial still works)
  • Remove big, rarely used font Montserrat 34, 40 and 48 to reduce build size by 218KiB, while apps can still upscale or load fonts at runtime

0.9.5

Builtin Apps:

  • Optimize PNGs to reduce build size by 8KiB

Frameworks:

  • WebServer: tweak webREPL UI and serve gzipped HTML to reduce total build size by 60KiB

Board Support:

  • Fri3d 2026: update CH32 firmware to 1.2.2 release
  • Fri3d 2026: remove workarounds for CH32 firmware 1.2.1

0.9.4

Board Support:

  • Fri3d 2026: add CH32 LCD backlight setting
  • Fri3d 2026: fix virgin CH32 coprocessor firmware installation

OS:

0.9.3

Builtin Apps:

  • AppStore: fallback to .zip file if no .mpk file found in filelist
  • AppStore: fetch new long_description from BadgeHub details API
  • Settings - Wi-Fi: don't print password on serial port

Frameworks:

  • Add new GPSManager framework
  • Add new IRManager framework
  • Add new LoRaManager framework
  • Add new DeviceManager framework
  • Add mpos.ui.change_task_handler() function for improving IR timing accuracy
  • AppearanceManager: fix set_light_mode() and set_primary_color()
  • AppManager: support .mpk/.zip files with compression and a redundant top-level directory
  • AppManager: export 'mpos' global to apps for convenience
  • Camera activity: use QR symbol for QR decoding, tweak fonts
  • LightsManager: allow changing number of LEDs after initialization
  • SettingActivity: add allow_deselect option (default False) to radiobuttons
  • SharedPreferences: don't print potentially sensitive values on serial port
  • WebServer: add basic 'View Screen' functionality to view the device's display remotely

OS:

  • aioREPL: use >>> prompt (for ViperIDE)
  • Drawer menu: reload apps when Launch(er) is (re)started
  • Export 'lv' and 'mpos' globals to aioREPL and apps for convenience
  • Compress largest fonts to reduce build size by ~208KiB
  • Rename font_montserrat_28_compressed to font_montserrat_28 for uniformity
  • LilyGo T-Watch S3 Plus: add support for IR Remote app TX
  • LilyGo T-Watch S3 Plus: add support for UART GPS
  • Fri3d 2024: add support for IR remote app (RX only)
  • Fri3d 2026: add CH32 coprocessor firmware handling (credit @bertouttier)
  • Fri3d 2026: add CH32 indev driver (credit @bertouttier)
  • Fri3d 2026: add calibrated battery voltage measurements using CH32

0.9.2

Builtin Apps:

  • Settings: new Audio subsection to choose default output and input device, for boards with multiple audio devices

Frameworks:

  • Activity: add appFullName property
  • AudioManager: load and apply configured default_output and default_input devices
  • AudioManager: fix final 1-2 seconds of WAV files not being played
  • AudioManager: add support for PDM microphones
  • AudioManager: fix 24 and 32 bits per sample WAV support
  • SensorManager: add BMA423 IMU support
  • TimeZone: set Real Time Clock if present

OS:

  • Fix lvgl_micropython UI hang when lv.event_handler() throws exception from timers or callbacks
  • Fix notification bar hiding after swipe up in Launcher apps
  • Increase default heapsize from 8MB to 16MB on desktop to fix sporadic segfault
  • Fri3d 2026: don't provide unnecessary SCLK/BCLK to CJC4334 DAC
  • LilyGo T-Watch S3 Plus: fix power button sporadically becoming unresponsive
  • LilyGo T-Watch S3 Plus: add battery charge level support
  • LilyGo T-Watch S3 Plus: add IMU accelerometer support so IMU app works
  • LilyGo T-Watch S3 Plus: enable audio input (PDM microphone) and output (I2S speaker)
  • LilyGo T-Watch S3 Plus: enable Real Time Clock to keep time when powered off
  • LilyGo T-Watch S3 Plus: power down/up display and touch screen upon power button press

0.9.1

Builtin Apps:

  • AppStore: use BadgeHub.eu filter mpos_api_0 instead of device-specific hardware ID
  • HowTo: add padding
  • Settings: add Number Format setting

Frameworks:

  • Add new NumberFormat framework for decimal and thousands separators
  • DownloadManager: add connection timeout to DownloadManager session.get()

OS:

  • New board support: LilyGo T-HMI
  • New board support: M5Stack Core2
  • LilyGo T-Watch S3 Plus: initialize Power Management Unit at startup
  • LilyGo T-Watch S3 Plus: power button short press for display backlight on/off, long press for power down
  • Add driver for LoRa SX1262 with lvgl_micropython-style (= split Bus/Device) hardware SPI
  • Add drivers for LoRa SX126X with SoftSPI (and default MicroPython hardware SPI)
  • Add esp32-component-rvswd and MicroPython bindings to flash WCH's CH32 microcontrollers
  • Add glyphs to fonts: diacritics 0x7F-0xFF, Bitcoin symbol ₿ 0x20BF, italic satoshi symbol 丯 0x4E2F and regular satoshi symbol 丰 0x4E30
  • Add LVGL symbols to fonts: 0xf002,0xf004,0xf005,0xf00e,0xf010,0xf029,0xf030 for search, heart, star, search-plus, search-minus, qrcode, camera
  • Add LVGL symbols to fonts: 0xf15a,0xf164,0xf165,0xf1e0 for btc (without circle), thumbs-up, thumbs-down, share-alt
  • Add LVGL symbols to fonts: 0xf2ea,0xf379,0xf58f for undo-alt, bitcoin (in circle), headphones-alt
  • Improve handling of 'mpos.main' errors
  • Fix empty black window issue on macOS desktop
  • Fix macOS/unix desktop build with newer Clang (17+)

0.9.0

Builtin Apps:

  • AppStore: update BadgeHub.eu URL
  • About: show netmask separately, make labels focusable
  • HowTo: new onboarding app with auto-start handling to explain controls
  • Settings: add sub-groups of setings as separate apps, including WiFi app
  • Settings: add Hotspot sub-group (SSID, password, security)
  • Settings: add WebServer sub-group (autostart, port, password)
  • Launcher: ignore launchers and MPOS settings (except WiFi)

Frameworks:

  • Audio streams: WAV playback/recording improvements (duration/progress, hardware volume control)
  • AudioManager: registry/session model, multi-speaker/mic routing, ADC-based mic (adc_mic)
  • DownloadManager: explicit certificate handling
  • InputManager: pointer detection helpers and board registrations
  • SensorManager: refactor to IMU drivers with magnetometer support and desktop IIO fallback
  • SharedPreferences: fix None handling
  • WebServer: new framework with Linux/macOS fixes and no background thread
  • WifiService: hotspot support, IP address helpers, simplified connect/auto-connect
  • Websocket library: renamed to uaiowebsocket to avoid conflicts

OS:

  • ESP32 boards: bundle WebREPL (not started by default) to offer remote MicroPython shell over the network, accessible through webbrowser
  • New board support: LilyGo T-Display-S3 (physical and emulated by QEMU)
  • New board support: LilyGo T-Watch S3 Plus
  • New board support: M5Stack Fire
  • New board support: ODroid Go
  • New board support: unPhone 9
  • Fri3d 2024/2026 updates: display reset support using CH32 microcontroller, communicator/expander drivers
  • ADC microphone C module and tests
  • Build system: switch to static builds for desktop systems to bundle LIBC and fix LIBC version issue
  • Build system: add linux-arm64 and macos-intel GitHub workflows to support more precompiled binaries
  • Add FreeRTOS module for low-level ESP32 functions

0.8.0

Builtin Apps:

  • About: use logger framework
  • AppStore: mark BadgeHub backend as 'beta'
  • Launcher: improve layout on different screen width sizes
  • OSUpdate: remove 'force update' checkbox not in favor of varying button labels

Frameworks:

  • SDCard: add support for SDIO/SD/MMC mode
  • CameraManager and CameraActivity: work fully camera-agnostic

OS:

  • Add board support: Makerfabs MaTouch ESP32-S3 SPI IPS 2.8' with Camera OV3660
  • Scale MicroPythonOS boot logo down if necessary
  • Don't show battery icon if battery is not supported
  • Move logging.py to subdirectory

0.7.1

Builtin Apps:

  • Update icons for AppStore, Settings, and Wifi apps

Frameworks:

  • Fix issue with multiple DownloadManager.download_url's on ESP32 due to SSL session sharing/corruption

0.7.0

Builtin Apps:

  • Redesign all app icons from scratch for a more consistent style
  • About app: show MicroPythonOS logo at the top
  • AppStore app: fix BadgeHub backend handling
  • OSUpdate app: eliminate requests library
  • Settings app: make 'Cancel' button more 'ghost-y' to discourage accidental misclicks

Frameworks:

  • Harmonize frameworks to use same coding patterns
  • Rename AudioFlinger to AudioManager framework
  • Rename PackageManager to AppManager framework
  • Add new AppearanceManager framework
  • Add new BatteryManager framework
  • Add new DeviceInfo framework
  • Add new DisplayMetrics framework
  • Add new InputManager framework
  • Add new TimeZone framework
  • Add new VersionInfo framework
  • ActivityNavigator: support pre-instantiated activities so an activity can close a child activity
  • SensorManager: add support for LSM6DSO

OS:

  • Show new MicroPythonOS logo at boot
  • Replace all compiled binary .mpy files by source copies for transparency (they get compiled during the build, so performance won't suffer)
  • Remove dependency on micropython-esp32-ota library
  • Remove dependency on traceback library
  • Additional board support: Fri3d Camp 2026 (untested)

0.6.0

  • About app: make more beautiful
  • AppStore app: add Settings screen to choose backend
  • Camera app and QR scanning: fix aspect ratio for higher resolutions
  • WiFi app: check 'hidden' in EditNetwork
  • Wifi app: add support for scanning wifi QR codes to 'Add Network'
  • Create new SettingsActivity and SettingActivity framework so apps can easily add settings screens with just a few lines of code
  • Create CameraManager framework so apps can easily check whether there is a camera available etc.
  • Simplify and unify most frameworks to make developing apps easier
  • Improve robustness by catching unhandled app exceptions
  • Improve robustness with custom exception that does not deinit() the TaskHandler
  • Improve robustness by removing TaskHandler callback that throws an uncaught exception
  • Don't rate-limit update_ui_threadsafe_if_foreground
  • Make 'Power Off' button on desktop exit completely

0.5.2

  • Fri3d Camp 2024 Board: add I2S microphone as found on the communicator add-on
  • API: add TaskManager that wraps asyncio
  • API: add DownloadManager that uses TaskManager
  • API: use aiorepl to eliminate another thread
  • AudioFlinger API: add support for I2S microphone recording to WAV
  • AudioFlinger API: optimize WAV volume scaling for speed and immediately set volume
  • Rearrange automated testing facilities
  • About app: add mpy format info
  • AppStore app: eliminate all threads by using TaskManager
  • AppStore app: add experimental support for BadgeHub backend (not enabled)
  • MusicPlayer app: faster volume slider action
  • OSUpdate app: show download speed
  • SoundRecorder app: created to test AudioFlinger's new recording feature!
  • WiFi app: new 'Add network' functionality for out-of-range networks
  • WiFi app: add support for hidden networks
  • WiFi app: add 'Forget' button to delete networks

0.5.1

  • Fri3d Camp 2024 Board: add startup light and sound
  • Fri3d Camp 2024 Board: workaround ADC2+WiFi conflict by temporarily disable WiFi to measure battery level
  • Fri3d Camp 2024 Board: improve battery monitor calibration to fix 0.1V delta
  • Fri3d Camp 2024 Board: add WSEN-ISDS 6-Axis Inertial Measurement Unit (IMU) support (including temperature)
  • API: improve and cleanup animations
  • API: SharedPreferences: add erase_all() function
  • API: add defaults handling to SharedPreferences and only save non-defaults
  • API: restore sys.path after starting app
  • API: add AudioFlinger for audio playback (i2s DAC and buzzer)
  • API: add LightsManager for multicolor LEDs
  • API: add SensorManager for generic handling of IMUs and temperature sensors
  • UI: back swipe gesture closes topmenu when open (thanks, @Mark19000 !)
  • About app: add free, used and total storage space info
  • AppStore app: remove unnecessary scrollbar over publisher's name
  • Camera app: massive overhaul!
    • Lots of settings (basic, advanced, expert)
    • Enable decoding of high density QR codes (like Nostr Wallet Connect) from small sizes (like mobile phone screens)
    • Even dotted, logo-ridden and scratched pictures of QR codes are now decoded properly!
  • ImageView app: add delete functionality
  • ImageView app: add support for grayscale images
  • OSUpdate app: pause download when wifi is lost, resume when reconnected
  • Settings app: fix un-checking of radio button
  • Settings app: add IMU calibration
  • Wifi app: simplify on-screen keyboard handling, fix cancel button handling

0.5.0

  • ESP32: one build to rule them all; instead of 2 builds per supported board, there is now one single build that identifies and initializes the board at runtime!
  • MposKeyboard: fix q, Q, 1 and ~ button unclickable bug
  • MposKeyboard: increase font size from 16 to 20
  • MposKeyboard: use checkbox instead of newline symbol for 'OK, Ready'
  • MposKeyboard: bigger space bar
  • OSUpdate app: simplify by using ConnectivityManager
  • OSUpdate app: adapt to new device IDs
  • ImageView app: improve error handling
  • Settings app: tweak font size
  • Settings app: add 'format internal data partition' option
  • Settings app: fix checkbox handling with buttons
  • UI: pass clicks on invisible 'gesture swipe start' are to underlying widget
  • UI: only show back and down gesture icons on swipe, not on tap
  • UI: double size of back and down swipe gesture starting areas for easier gestures
  • UI: increase navigation gesture sensitivity
  • UI: prevent visual glitches in animations
  • API: add facilities for instrumentation (screengrabs, mouse clicks)
  • API: move WifiService to mpos.net
  • API: remove fonts to reduce size
  • API: replace font_montserrat_28 with font_montserrat_28_compressed to reduce size
  • API: improve SD card error handling
  • WifiService: connect to strongest networks first

0.4.0

  • Add custom MposKeyboard with more than 50% bigger buttons, great for tiny touch screens!
  • Apply theme changes (dark mode, color) immediately after saving
  • About app: add a bit more info
  • Camera app: fix one-in-two 'camera image stays blank' issue
  • OSUpdate app: enable scrolling with joystick/arrow keys
  • OSUpdate app: Major rework with improved reliability and user experience
    • add WiFi monitoring - shows 'Waiting for WiFi...' instead of error when no connection
    • add automatic pause/resume on WiFi loss during downloads using HTTP Range headers
    • add user-friendly error messages with specific guidance for each error type
    • add 'Check Again' button for easy retry after errors
    • add state machine for better app state management
    • add comprehensive test coverage (42 tests: 31 unit tests + 11 graphical tests)
    • refactor code into testable components (NetworkMonitor, UpdateChecker, UpdateDownloader)
    • improve download error recovery with progress preservation
    • improve timeout handling (5-minute wait for WiFi with clear messaging)
  • Tests: add test infrastructure with mock classes for network, HTTP, and partition operations
  • Tests: add graphical test helper utilities for UI verification and screenshot capture
  • API: change 'display' to mpos.ui.main_display
  • API: change mpos.ui.th to mpos.ui.task_handler
  • waveshare-esp32-s3-touch-lcd-2: power off camera at boot to conserve power
  • waveshare-esp32-s3-touch-lcd-2: increase touch screen input clock frequency from 100kHz to 400kHz

0.3.2

  • Settings app: add 'Auto Start App' setting
  • Tweak gesture navigation to trigger back and top menu more easily
  • Rollback OTA update if launcher fails to start
  • Rename 'Home' to 'Launch' in top menu drawer
  • Fri3d-2024 Badge: use same SPI freq as Waveshare 2 inch for uniformity
  • ESP32: reduce drawing frequency by increasing task_handler duration from 1ms to 5ms
  • Rework MicroPython WebSocketApp websocket-client library using uasyncio
  • Rework MicroPython python-nostr library using uasyncio
  • Update aiohttp_ws library to 0.0.6
  • Add fragmentation support for aiohttp_ws library

Known issues:

  • Fri3d-2024 Badge: joystick arrow up ticks a radio button (workaround: un-tick the radio button)

0.3.1

  • OSUpdate app: fix typo that prevented update rollback from being cancelled
  • Fix 'Home' button in top menu not stopping all apps
  • Update micropython-nostr library to fix epoch time on ESP32 and NWC event kind

0.3.0

  • OSUpdate app: now gracefully handles the user closing the app mid-update instead of freezing
  • Launcher app: much faster thanks to PackageManager + UI only rebuilt when apps actually change
  • AppStore app: improved stability + icons for already-installed apps are shown instantly (no download needed)
  • API: Add SDCardManager for SD Card support
  • API: add PackageManager to (un)install MPK packages
  • API: split mpos.ui into logical components
  • Remove 'long press IO0 button' to activate bootloader mode; either use the Settings app (very convenient) or keep it pressed while plugging in the USB cable (or briefly pressing the reset button)
  • Increase framerate on ESP32 by lowering task_handler duration from 5ms to 1ms
  • Throttle per-frame async_call() to prevent apps from overflowing memory
  • Overhaul build system and docs: much simplier (single clone and script run), add MacOS support, build with GitHub Workflow, automatic tests, etc.

0.2.1

  • Settings app: fix stray /cat in Europe/Brussels timezone
  • Launcher app: fix handling of empty filesystem without apps

0.2.0

  • Fix KeyPad focus handling for devices without touch screen like the Fri3d Camp 2024 Badge
  • Use direction arrows for more intuitive navigation instead of Y/A or pageup/pagedown for previous/next
  • About app: enable scrolling using arrow keys so off-screen info can be viewed
  • About app: add info about freezefs compiled-in filesystem
  • AppStore app: don't update UI after the user has closed the app
  • Launcher app: improve error handling
  • Wifi app: cleanup and improve keyboard and focus handling
  • Wifi app: improve different screensize handling

0.1.1

  • Update to MicroPython 1.25.0 and LVGL 9.3.0
  • About app: add info about over-the-air partitions
  • OSUpdate app: check update depending on current hardware identifier, add 'force update' option, improve user feedback
  • AppStore, Camera, Launcher, Settings: adjust for compatibility with LVGL 9.3.0

0.0.11

  • Merge official Fri3d Camp 2024 Badge support

0.0.10

  • About app: add machine.freq, unique_id, wake_reason and reset_cause
  • Reduce timezones from 400 to 150 to reduce scrolling
  • Experimental Fri3d Camp 2024 Badge support

0.0.9

  • UI: add visual cues during back/top swipe gestures
  • UI: prevent menu drawer button clicks while swiping
  • Settings: add Timezone configuration
  • Draw: new app for simple drawing on a canvas
  • IMU: new app for showing data from the Intertial Measurement Unit ('Accellerometer')
  • Camera: speed up QR decoding 4x - thanks @kdmukai!

0.0.8

  • Move wifi icon to the right-hand side
  • Power off camera after boot and before deepsleep to conserve power
  • Settings: add 20 common theme colors in dropdown list

0.0.7

  • Update battery icon every 5 seconds depending on VBAT/BAT_ADC
  • Add 'Power' off button in menu drawer

0.0.6

  • Scale button size in drawer for bigger screens
  • Show 'Brightness' text in drawer
  • Add builtin 'Settings' app with settings for Light/Dark Theme, Theme Color, Restart to Bootloader
  • Add 'Settings' button to drawer that opens settings app
  • Save and restore 'Brightness' setting
  • AppStore: speed up app installs
  • Camera: scale camera image to fit screen on bigger displays
  • Camera: show decoded result on-display if QR decoded

0.0.5

  • Improve focus group handling while in deskop keyboard mode
  • Add filesystem driver for LVGL
  • Implement CTRL-V to paste on desktop
  • Implement Escape key for back button on desktop
  • WiFi: increase size of on-screen keyboard for easier password entry
  • WiFi: prevent concurrent operation of auto-connect and Wifi app

0.0.4

  • Add left edge swipe gesture for back screen action
  • Add animations
  • Add support for QR decoding by porting quirc
  • Add support for Nostr by porting python-nostr
  • Add support for Websockets by porting websocket-client's WebSocketApp
  • Add support for secp256k1 with ecdh by porting and extending secp256k1-embedded
  • Change theme from dark to light
  • Improve display refresh rate
  • Fix aiohttp_ws bug that caused partial websocket data reception
  • Add support for on Linux desktop
  • Add support for VideoForLinux2 devices (webcams etc) on Linux
  • Improve builtin apps: Launcher, WiFi, AppStore and OSUpdate

0.0.3

  • appstore: add 'update' button if a new version of an app is available
  • appstore: add 'restore' button to restore updated built-in apps to their original built-in version
  • launcher: don't show launcher apps and sort alphabetically
  • osupdate: show info about update and 'Start OS Update' before updating
  • wificonf: scan and connect to wifi in background thread so app stays responsive
  • introduce MANIFEST.JSON format for apps
  • improve notification bar behavior

0.0.2

  • Handle IO0 'BOOT button' so long-press starts bootloader mode for updating firmware over USB

0.0.1

  • Initial release