PageChangelog · release ledger
Buildv0.10.0 · 2026-06-10
Cadence■ Live · every Monday
Condensed from the project’s CHANGELOG.md; the full, unabridged ledger lives in the repo.
The post-0.10.0 line through 2026-07-08: the marketing site rebuilt as a single app, the dashboard’s write surface staged behind sign-off flags, and the tri-surface audit’s correctness fixes landed.
Added
- Dashboard write-path exposure for assignee and plan-item edits: wired end to end but shipped switched off behind per-surface sign-off flags (NG-2 default-off).
- Per-page
<link rel=canonical>,sitemap.xml, androbots.txt; the public marketing surface is under CI render, axe, and layout gates for the first time (#355). - Two Claude Design source drops committed as repo artifacts (the five-page marketing replacement and the eight-screen dashboard console suite), each with a wire-in triage manifest (#356 / #357).
Changed
- Marketing site rebuilt as a prerendered single-page app (extensionless routes, per-route heads, and one search / launchpad chrome), replacing the multi-page static build.
Fixed
- P0: a Start-source switch mid-run could Apply the previous run’s stored plan; the run id is now invalidated on every source switch, pinned by a source-level regression test.
- The console session pill now reads session expiry the way its colour already did: a live-but-expired session no longer reads “session valid” across six screens.
Added
- The working-day shift reaches the dashboard:
--shift-working-days/--shift-sectionnow thread through the plan-compute surface end to end; the CLI half shipped in PR #236. - Session keep-alive with an expiry estimate;
--reauth-waitpauses a run mid-apply when the session expires instead of killing it. - Opt-in encrypted-at-rest cookie jar; harvest extension v0.2.0 with a session-countdown badge and opt-in auto-push.
- Dashboard multi-select with a bulk-action bar and ⌘K-on-selection; collapsible sidebar.
- CSV schema versioning (
schema export) and thedrift-trendreport.
Changed
- Dashboard apex cut over to the built Vite bundle; Command Center reads on TanStack Query; heavy tables virtualized, every row reachable.
- CLI internals split into focused modules (auth, presets, discovery, read-only reporting). No behavior change.
- Harvest hardening: JWT signature verification recorded per event; domain-aware cookie jar.
Fixed
- Public
/harvest/*routing lost at the 2026-05-29 cutover. - Light-theme error-text contrast: the accessibility suite is fully green for the first time.
- Title normalization double-strip on digit-leading names; capture-redaction timestamp corruption.
The remote-operations release: the web dashboard, the cookie-harvest sidecar, and the self-hosted deployment behind Cloudflare Access all land here.
Added
CLEAR: clear a due date back to “no date set” from the same CSV column.plan --shift-working-days N(+--shift-section): nudge every target date by whole working days when the schedule slips.- The web dashboard review surface, and the self-hosted deployment: dashboard + harvest sidecar behind Caddy + Cloudflare Access on an always-on mini PC.
- Harvest push notifications (WebSocket), Prometheus metrics, daily digest, and an operator-set per-minute write cap.
--plan-typeand status filters on plan; apply guards: run-context freeze, stale-plan guard, retry-failed-only.- Interface density toggle; design tokens generated from one
tokens.json; a closed visual-regression loop.
Changed
- Dashboard fully ported to a Vite/ESM build, chart screens included.
- Remote-UI and phased-writes scope amendments ratified into the spec (NG-6, NG-2): policy before code.
- Lookahead ingest split from the tracker upload; clearer naming end to end.
Removed
- The Streamlit UI, fully retired.
Fixed
- Async apply durability brought to parity with the serial path: atomic intent + audit commits, retriable transport errors, a 100-req/10-s spike limiter, and 429 back-off that honors
X-Rate-Limit-Reset. - Dashboard accessibility: zero axe violations across every screen in both themes.
- Wrapped-title normalization; upload sheet / header-row parity in the dashboard.
Validated
- Release checks on the live tracker: production wall-clock preserved; Ctrl+C shutdown ≤200 ms with
resume.shwritten.
Added
- External lookahead XLSX adapter: a P6 / MS Project / Smartsheet export (or a hand-kept sheet) feeds
plandirectly through a TOML column map. Pull-only, no write-back.
Fixed
- A phantom ~1-second delay on every async write, found by instrumentation; full-scope apply (1,425 rows) projects at ~22-25 s wall-clock.
Added
- REST-first reads and the async apply path (
--async, multi-plan orchestration): the optimization program’s Phases 0-2. - Resume hardening: the target-drift guard (a hand-edited plan can’t sneak past review),
resume.shwritten on interrupt, instant Ctrl+C shutdown. - Operator handoff docs, release automation (
make validate/ release gates), and the shadow-pilot digest.
Changed
- Preflight probes the session for real (a stale sign-in fails cleanly at preflight, not mid-write); drift rows classify in under a second instead of a 15-s timeout each.
First full-tracker production run: 711 items · 28 plans · 626 changes · 0 failures · 11m52s. This release closes the findings that run surfaced.
Fixed
- Windows console encoding crashes in preflight/verify output.
--sheet+--header-rowflags for trackers with scope-specific sheets and preamble rows.plan --allow-missing: skip template-drift rows instead of crashing the whole plan.- Preflight audit parallelized, roughly 4 minutes off the full-tracker run.
Changed
- Writes go direct: the synthetic open-fill-save UI dance replaced by the same HTTP call Procore’s own UI fires, using your session. Per-item time ~4.2 s → ~1.8 s; 3.2× faster on a live 27-row validation run.
- The DOM path is kept as a hedge: a Procore change to either surface only takes down half the apply phase.
Added
- Worker-pool parallelism: four browser workers, one plan each, against a shared audit store.
- Adaptive throttling: a shared back-off factor doubles on every 429 and decays after sustained success, so all workers slow down together.
- Per-worker failfast and cross-worker fatal-error propagation.
Changed
- Rolls up the v0.1.x polish sprints: safety nets, selector tuning, CI gates, the first Excel adapter.
Added
- The first tagged release:
auth·preflight·plan·apply·verify, with the SQLite audit log. - CI on three Python versions; recovery runbooks for selector regression, session expiry, and partial applies.
- Every error message carries a cause and a fix, pointed at the exact command or doc.
Versions follow SemVer; entries follow Keep a Changelog. Source of truth: CHANGELOG.md · GitHub releases.