Files
OpenParcelBox/CHANGELOG.md
T
2026-07-16 17:36:28 +02:00

8.1 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project follows Semantic Versioning.


[Unreleased]

Added

  • One-second white RGB indication when firmware initialization completes and the keypad loop is ready.
  • Branded Android launcher icon and native splash screen using the project assets.
  • French and English mobile UI with automatic phone-language selection and a manual override.
  • Dark mobile dashboard, shortcut bar, styled modals, code limits, opening history, phone-side NFC UID scanning, and administrator/guest role controls.
  • Secure saved-box records, automatic BLE reconnection, invitation QR generation/scanning, and guest revocation.
  • AES-256-GCM password-protected mobile backup and restore using a PBKDF2-SHA256 derived key.
  • Persistent box names and administrator factory reset with BLE bond removal.
  • Persistent seven-day opening history for permanent codes, temporary codes, named NFC tags, and named mobile identities.
  • Fallback time 2026-06-01T00:00:00Z and reboot continuity from the newest persisted opening event.
  • Eight permanent and twenty temporary access-code slots.
  • BLE LE Secure Connections, AES-CCM encrypted GATT access, persistent bonding, and 128-bit administrator/guest application identities.
  • First-phone administrator provisioning without exposing the stored key.
  • App-triggered NFC enrollment with persistent tag names.
  • Initial project structure.
  • Zephyr RTOS firmware baseline.
  • Standardized project architecture.
  • Firmware coding conventions.
  • Documentation structure.
  • RGB LED driver.
  • GPIO expander abstraction layer.
  • Matrix keypad driver.
  • Active buzzer driver.
  • Firmware component documentation.
  • Firmware debugging documentation.
  • Firmware buzzer documentation.
  • Firmware lock control documentation.
  • English architecture documentation in docs/architecture.md.
  • Persistent six-digit access code storage.
  • Persistent NFC tag UID storage with default development UID 60:4F:E2:B5.
  • NFC scan-mode application flow triggered by keypad activity.
  • Flutter mobile application shell in mobile-app/app.
  • Mobile application use of the root images/ logo and background.jpg assets.
  • Mobile BLE scan/connect flow targeting the OpenParcelBox XIAO service.
  • Mobile commands for XIAO clock synchronization, direct lock opening, access-code management, and NFC tag management.
  • Firmware BLE administration service with JSON command writes and stored-state readback.
  • Volatile phone-synchronized firmware clock for lock-opening log timestamps.
  • One-time access codes that are removed after first successful keypad use.
  • Lock control pulse on XIAO pin D9.
  • Lock state feedback detection using KR-S79 COM/NC on XIAO D7 / D8.
  • Long buzzer success beep for accepted unlock codes.
  • Door opened and door closed UART messages.
  • NFC scan and UID validation UART messages.

Changed

  • Refactored firmware into independent components.
  • Standardized source file headers.
  • Standardized project coding style.
  • Centralized board-specific definitions into board_config.h.
  • Updated project documentation to English.
  • Renamed project constraint documents from contraintes.md to constraints.md.
  • Updated firmware, hardware, Home Assistant, and mobile application documentation.
  • Aligned hardware documentation with the active buzzer transistor driver.
  • Aligned firmware documentation with C17 and the current Zephyr build tools.
  • Updated project tracking documents to reflect completed RGB LED, GPIO expander, keypad, and active buzzer work.
  • Updated keypad unlock user feedback with off-at-rest LEDs, green-open indication, red invalid-code feedback, and B entry cancellation.
  • Updated runtime LED feedback with blue NFC scan-mode indication.
  • Updated open-lock reminder beep interval to 2 seconds.
  • Updated the mobile application to reload access codes and NFC tags from the firmware BLE state characteristic.
  • Corrected NFC hardware documentation: the nRF52840 integrated NFCT peripheral is tag-side NFC-A hardware, while passive badge UID reading requires a dedicated NFC reader circuit.

Fixed

  • Removed oversized Settings callback allocations that exceeded the 1024-byte main stack once opening-history or application-identity records existed.

  • Moved Settings/NVS loading to a dedicated 4096-byte services thread and increased the main, system-workqueue, and Bluetooth RX stack margins.

  • Kept the keypad fallback code and default clock available from RAM before any flash or Bluetooth operation can run.

  • Added bounded retries when Bluetooth advertising temporarily returns -EAGAIN, and no longer abort advertising solely because stored Bluetooth settings report a load error.

  • Prevented invalid persisted box settings from overwriting the active default configuration before validation.

  • Kept opening-history timestamps monotonic after an older phone clock sync so one descending event cannot invalidate the complete table on reboot.

  • Provided Flutter's Material localization delegates so input fields and registration dialogs work when the phone language is French.

  • Prevented incompatible persistent development-table layouts from blocking firmware startup before keypad initialization; affected tables now recover through their safe defaults.

  • Made Bluetooth initialization asynchronous so keypad operation and USB availability no longer wait for BLE controller startup.

  • Removed the silent early exit when RGB LED initialization fails.

  • Kept keypad access available with in-memory default credentials when persistent settings fail, and added background keypad initialization retries.

  • Fixed secure BLE startup ordering: the persisted bt/* settings and identity are now loaded after bt_enable() and before advertising, preventing BLE advertising failed: -11.

  • Moved secure BLE initialization to a dedicated thread started after the local keypad-ready indication, so Bluetooth or bond restoration can never block keypad access, lock control, or the main application loop.

  • Removed the interactive Zephyr/I2C shell and its competing serial backend; USB CDC is now owned exclusively by the firmware console, matching the validated standalone diagnostic configuration.

  • Restricted guest BLE sessions to authentication, clock synchronization, and lock opening, and replaced oversized full-state notifications with a compact change marker.

  • Added strict validation of persisted identity and opening-history records before they can be used or serialized.

  • Removed automatic NVS writes and migrations from the boot path. Default tables are now available immediately in RAM and are persisted only after a real credential, identity, tag, box-name, or history change.

  • Replaced the coupled application loop with a resilient local-first entry point: keypad input, code validation, lock control, buzzer, LEDs, and door feedback run independently from BLE and NFC processing.

  • Temporarily removed NFC polling from the production main loop while retaining NFC storage and BLE management initialization; it will be restored after the validated keypad/BLE baseline is confirmed on hardware.

  • Fixed Flutter inherited-widget assertions when closing input modals by keeping text controllers alive until their dialog widgets are actually unmounted.

  • Changed encrypted-backup restoration to select the backup file before asking for its password.

  • Matrix keypad scanning.

  • GPIO expander abstraction.

  • Firmware build configuration.

  • Removed obsolete documentation references to board_pins.h.

  • Removed obsolete documentation references to PWM buzzer control.

  • Removed stale development-environment references from project documentation.

  • Removed corrupted text encoding artifacts from Markdown documentation.

  • Prevented unintended lock command pulses at startup or after flashing by declaring D9 in Devicetree and configuring it directly inactive.


[0.1.0] - TBD

Added

  • First public development release.
  • Zephyr RTOS firmware.
  • RGB LED driver.
  • GPIO expander driver.
  • Matrix keypad driver.
  • Active buzzer driver.
  • Initial documentation.
  • Project roadmap.
  • TODO list.