Repository navigation
v0.8.0 — Schedule canvas, atomic ingest, engine purity, test stability
What's in this release
Schedule canvas rebuild (T50–T60)
The schedule grid migrated from a hand-rolled CSS table to a true CSS Grid canvas. grid-row: span N handles merged cells; scheduleGrid.css covers cell pseudo-states and data-attribute states (one scoped exception, bounded to src/components/schedule/).
Atomic replace-ingest (T61 + T68)
Replace-mode ingest now runs inside a single main-process transaction — either fully succeeds or leaves the camp untouched. Normative deletion order (8 steps), PRAGMA foreign_key_check after deletes, rollback proven by test. Host-only guard on both Add and Replace modes. Activity min_per_week floored to 1 on import for eligible activities.
Replace confirmation now names every category of director-authored content it destroys: schedule slots, Fixed Events (with live count, recoverable from Trash), saved versions (irreversible, visually distinguished), Day Override templates.
appendOp performance (T66)
Statements are now prepared once per db handle via WeakMap<db, Map<sql, Statement>>. A 2400-op Replace ingest dropped from ~37s of blocked main thread to non-blocking. Op-log semantics unchanged.
Engine purity (T62 / T63 / T65 / T69 / T71)
- Anchor double-scheduling fixed — engine excludes anchor-referenced activities from the placement pass
- JSON-string id-list tolerance removed from
buildSchedule.jsandweekCatalog.js— array-only contract enforced at the IPC boundary - Stats bar Placed denominator fixed —
'unavailable'slots excluded; dead enginestatsobject removed - DEV-only
assertIdListShapemakes a boundary violation loud rather than a silent spinner
Design polish (design/polish-20260807)
Global motion tokens (--motion-quick/base/slow, --ease-out/in-out) in src/index.css. useEnterTransition hook. Error banner entry motion. Activity palette token reconciliation. Cross-screen polish (Waves 0–4).
Dev environment (T64)
npm run electron:dev:fresh kills a stale Electron process before relaunching. Window title shows Shoresh [DEV] when running from source.
Test suite stability (T44 / T70)
scripts/ensure-abi.jsnow probes the compiled binary before trusting the.abi-targetmarker — eliminates phantom 47-failure cascades from concurrent session binary churn- Arrival-wait
sleepBecauseTimeIsUnderTestcalls insyncClient.test.jsconverted towaitFor; wall-clock upper-bound assertions removed;noBareSleepsguard tightened - Five consecutive clean full-suite runs: 113 files, 1784 tests
Open tickets
- T51 — MCP CLI ingestion
- T52 — Activity color tokenization
- T36 — Ingest unlabeled path residuals
- T49 — Finish ingestion