v3.12.4 - The Bridge Learns to Mirror Lightly
The bridge now exports a slimmed-down companion mirror so the Kanban PWA can render without choking on giant notes, while the transport copy stays complete and lossless.
Highlights
- New render-only
kanban_payload.jsonartifact. The Kanban PWA had been loading the fullshared.json(~18 MB, with single task notes up to ~540 KB), which hung the browser render. Exports now also emit a separate, lighter mirror sized for the UI. - Description truncation tuned for rendering. In the payload mirror, non-active notes (done/archived/someday) collapse broadly, active notes over 20 KB truncate, and small active notes pass through full. Each truncated copy carries
_mirror_preview,_full_len, and_full_hash(sha256) so consumers can detect and recover the elided body. - Generated on both export paths. The artifact is produced in both
bridge_sync_workerandbridge_server.bridge_pushbefore git staging, keeping the two sync routes in lockstep. - Transport stays full and authoritative.
shared.json,index.json, andtasks/*.jsonkeep complete bodies, so a fresh pull/restore recovers full descriptions. The new file is wired intosurface_contractaspull=False(never an import source) withmerge=union+ self-heal, so a corrupt union-merged copy is rebuilt from the DB on the next export, and write failures are non-fatal to push. - Regression coverage. Adds
tests/test_kanban_payload.pyand expandstests/test_bridge_server.pyto lock in the truncation rules and contract behavior.
Notes
- This change covers the export/artifact-generation side only. The Kanban PWA consumer repoint (actually reading
kanban_payload.json) is deferred to a later release becausepwa/app.jsis read-write and a naive preview-read could write truncated bodies back to the transportshared.json. - Version bump only in
__init__.py/pyproject.toml; no migration required.