Commit Graph

19 Commits

Author SHA1 Message Date
meels
0a7271136a Specify the coverage file shape and wire Workflow A into Workflow D (I4, I5)
- I4: added a fourth Required Page Template for wiki/script-coverage.md
  spelling out the exact positional shape parseCoverageTable requires
  (metadata line syntax, column order, station spelling, lowercase all/yes) —
  Workflow D described the fields but never the shape, so a compliant write
  could still fail every parse. Also spelled out the seven station names in
  Workflow D step 3 and resolved the step 4 (pinned rows are protected) vs
  step 5 (stale rows are removed) ambiguity for a pinned row whose concept
  page is gone.
- I5: added Workflow A step 9, pointing any ingest that touches
  wiki/concepts/ at Workflow D before reporting — previously that trigger
  lived only inside Workflow D's own list, so an ingest run top to bottom
  never synced coverage and the right pane went stale silently.
- log.md: added "sync" to the intent docstring's valid values (Workflow D
  already required it) and corrected the 2026-07-28 entry's attribution —
  the concept grouping lives in index.md, not in script-coverage.md itself.
2026-07-28 14:58:12 +02:00
meels
9eb29bb41e Add sync coverage button, preflight-disable buttons, fix output wrapping (I2, I3, I6)
- I2: .wd-row now wraps and .wd-output takes the full row width, so streamed
  output no longer gets crushed beside the button on the filename's line.
- I3: split .webinar-dash into token scope + a new .wd-bar toolbar above a
  .wd-grid two-pane layout. Extracted renderAll (called from onload) which
  renders a global "Sync coverage" button, generalised runIngest's subprocess
  handling into a shared runClaude keyed by run id, and added spawnGate to
  preflight-disable both the sync and per-file ingest buttons when claude
  can't be spawned (no desktop Obsidian / no child_process). A successful
  ingest or sync now re-renders the dashboard instead of requiring reopen.
- I6: the right pane now shows the tracked script path and last-synced date
  from the coverage file's metadata, and flags when cfg.script disagrees
  with it.
- Minors: documented the unescaped-pipe split regex, added role="img" to the
  coverage meter alongside its aria-label.
2026-07-28 14:57:11 +02:00
meels
3bc1afa9f1 Fix ingest subprocess dropping the filename argument (C1)
spawn(..., { shell: true }) made Node concatenate argv without quoting;
cmd.exe re-tokenized it and the ingest prompt arrived as a bare "ingest"
with the filename silently discarded, while the run still reported
success. claude.exe is a real executable here, so no shell is needed:
drop shell: true and pass argv directly. isSafeFilename is unchanged
(still correct defence in depth) but its comment now reflects that the
spawn path carries no injection surface today.
2026-07-28 14:55:04 +02:00
meels
84fe67632a docs: fold Task 7 security findings into the plan
Caret and control characters added to the filename guard, file-keyed in-flight
registry replacing the row-scoped one, try/catch around spawn, single finish()
exit path, UTF-8 chunk decoding, bounded output buffer.
2026-07-28 14:39:52 +02:00
meels
fa1e14c8d1 fix: reject cmd.exe caret and control chars; fix subprocess lifecycle bugs in runIngest 2026-07-28 14:34:43 +02:00
meels
79d3240aa2 feat: spawn headless claude ingest with filename validation 2026-07-28 14:15:49 +02:00
meels
2bb0be0a64 feat: render coverage meter and station-grouped table 2026-07-28 14:07:44 +02:00
meels
a5ca1b0ee4 docs: correct the absent-concept grouping claim
index.md groups integration-dead-ends and leave-less-room-for-imagination
under Machine side, and both are absent from the script. The claim that every
absent concept is human-side or strategy-side was wrong: it is 8 of 10.
2026-07-28 14:03:07 +02:00
meels
2522c70463 fix: correct absent-concept grouping claim in script coverage notes 2026-07-28 14:02:30 +02:00
meels
c88a5d002c docs: fold review findings back into the plan
Corrections made during execution as reviews surfaced defects in the plan
itself: duplicate raw-path claim handling and its one-pass orphaned filter,
unescaped-pipe table split, RAW_EXTENSIONS widening, dark accent tracking the
installed theme, the bare node --test command, and test counts.
2026-07-28 13:55:32 +02:00
meels
39d8fffdcb feat: add script coverage file and Workflow D sync contract 2026-07-28 13:54:31 +02:00
meels
0304757982 feat: parse the script coverage table 2026-07-28 13:45:24 +02:00
meels
3e28180f8b fix: include txt/pdf raw sources in queue, match dark accent to theme
- readPipeline no longer filters raw/sources to .md only; CLAUDE.md
  documents txt and pdf as valid raw source types, and hiding them from
  the queue silently was the same invisibility bug the dashboard exists
  to remove.
- Dark-mode accent now tracks the installed tesanti theme (same signal
  red, no base-color lift) instead of contradicting it; status colors
  (ok/warn/danger) keep their lifted dark values for AA contrast on
  small text, per design-system separation of status tokens from the
  brand accent.
2026-07-28 13:39:18 +02:00
meels
1045082df6 feat: render source pipeline in left pane 2026-07-28 13:23:40 +02:00
meels
7958d225d5 fix: prevent double-counting orphaned pages in conflicting scenarios 2026-07-28 13:17:51 +02:00
meels
80ef971d1a fix: handle duplicate raw-path claims by routing to orphaned 2026-07-28 13:13:33 +02:00
meels
027dcb4e4e feat: derive source pipeline from raw path claims 2026-07-28 13:06:28 +02:00
meels
af247326b3 feat: scaffold webinar-dash plugin with config block 2026-07-28 13:01:52 +02:00
meels
b75730fda3 chore: initial commit of vault before dashboard work 2026-07-28 13:00:04 +02:00