Repository navigation
v0.2.0 · Dashboard and session progress
The original large Passport dashboard stays. A second page adds compact quota visualization and the three most recently updated visible Codex sessions, each with a title, current state and short progress summary.
Device controls
- Short UP/DOWN: switch between the two pages.
- Hold UP/DOWN: switch quota windows on either page.
- Short OK while awake: mark notifications read.
- Hold OK: reconnect BLE and keep pairing bonds.
- First press while asleep: wake only.
Progress is read-only: no detail menus, conversation continuation, replies or approval actions. New alerts wake the screen without changing the selected page. Starts update silently; old completion summaries are not shown as progress for a newly started turn.
The device now receives up to three bounded titles and summaries over encrypted BLE. A bundled 16 px OFL CJK font supports spaces and basic Chinese/Japanese characters; unsupported emoji/rare glyphs are omitted rather than displayed as missing-glyph boxes. The phone retains its separate notification inbox.
Upgrade
Update Python relay, Android APK and Passport firmware together to 0.2.0. Keep the relay state directory and phone settings. Flash only the Passport application at 0x10000 on the documented hardware layout; preserve bootloader, partitions, NVS, cardid and Recovery. APK is debug-signed.
uvx --index https://pypi.org/simple --from 'codex-passport-sync==0.2.0' codex-passport --helpFor persistent hooks use the source environment or uv tool install --index https://pypi.org/simple 'codex-passport-sync[ble]==0.2.0'. Restart the relay and reopen existing Codex sessions after updating hooks.
Validation: 22 Python tests, native button checks, strict firmware and Android builds, physical rendering of both pages, user-verified page/window switching and wake-only behavior, and four computer/phone BLE transitions with matching device receipts. Source and unpacked release artifacts passed private-data scans. Off-LAN WireGuard and battery endurance remain unmeasured.