-
Notifications
You must be signed in to change notification settings - Fork 0
Plan wiki ticket ui
Superseded by Plan-wiki-ticket-ui-ia — kept as the record of why the earlier approach changed.
WikiTicket SDD stores everything as files in the tracked repo: the event log
(.work/todo.jsonl / done.jsonl), generated roadmap, frozen plans/status/designs/ADRs,
the wiki ledger, and GitHub issues/releases. There is no way to see it all at once.
Rick wants a new public repo, wiki_ticket_sdd_ui, containing a locally-runnable app
(possibly desktop later) that visualizes the whole project status — visually stunning,
a complete dashboard. Constraint (Rick, mid-plan): it must work with ANY GitHub repo
that uses wiki_ticket_sdd, not just this one. Status: plan only for now — do not
implement (Rick, mid-plan). On approval, this plan is captured and published; the
build happens when Rick says go.
-
Generic by construction — the target repo is runtime input, not config baked in.
The app opens any local checkout whose root has
.work/config.yml(the marker that worklog is installed). Repo path comes from CLI arg / env / a repo-picker in the UI; recent repos remembered. Everything else is derived from that repo:- GitHub coords from
ticketing.projectin.work/config.yml(e.g.SpillwaveSolutions/wiki_ticket_sdd), falling back togit remote get-url origin. - Wiki URL from
wiki.root_url. - Doc paths from
paths:(plans/status/roadmap) — never hardcoded.
- GitHub coords from
-
Never reimplement worklog semantics — shell out to the target repo's own tools.
Every worklog-initialized repo ships
bin/worklog(Python, stdlib-only). The server runspython3 bin/worklog foldin the target repo for the folded item list, reads the generateddocs/roadmap.mdfor roadmap + Mermaid, and usesgit/ghfor history and releases. Fold logic stays in one place (the spec's), so the UI can never drift from the tracker. Raw JSONL is read directly only for the activity feed (events are the timeline;evULIDs carry timestamps). -
Tech: local web app first, desktop shell later.
-
Frontend: Vite + React + TypeScript + Tailwind CSS, shadcn/ui components,
Recharts (charts),
mermaid(render roadmap diagrams),react-markdown+gray-matter(docs with frontmatter chips), framer-motion (polish). -
Backend: a small Node server (Hono) exposing a JSON API over the target repo:
file reads,
worklog fold,git log,gh api(releases/issues). One process,npm start -- --repo /path/to/repo(or auto-detect cwd/parent). - Desktop: Tauri 2 wrap of the same frontend is a later, separate work item — the API layer is designed so Tauri's Rust side can replace the Node server without touching the UI. Not in the first build.
-
Frontend: Vite + React + TypeScript + Tailwind CSS, shadcn/ui components,
Recharts (charts),
-
GitHub data via
ghCLI when available, unauthenticated REST fallback. Releases, issue states, and PR checks come fromgh api repos/<owner>/<repo>/...; ifghis missing, fall back to fetch against api.github.com (public repos work unauthenticated, rate-limited). Degrade gracefully — the file-based panels work fully offline.
Dark, glassy, information-dense but calm. Left nav, top bar showing repo name + current branch + latest tag + drift indicators. Panels:
-
Overview — headline stats (open/blocked/in-progress counts, epics in flight,
latest release, days since last status report), a milestone progress ring per
milestone, and a compact activity sparkline. All derived from
worklog fold+ event timestamps. -
Board — kanban by status (
todo/in_progress/blocked/ recentlydone), cards showing level/kind badges (epic/story/task/subtask × feature/bug/ops/triage), priority, milestone chip, epic grouping (viaparent),unplannedflag, and the linked GitHub issue number/URL from the item'sexternalfield. Click → item detail drawer with full event history for that ULID. -
Roadmap — rendered
docs/roadmap.mdincluding its Mermaid blocks (dependency graph, hierarchy, event-dated gantt) rendered live with mermaid.js; sections Now/Next/Later/Needs-classification/Needs-attention preserved. -
Activity — unified reverse-chron feed merging: worklog events (from both JSONL
files, timestamps from
evULIDs), git commits (git log), releases, and status reports. Filter by actor/kind/op. -
Releases — GitHub releases timeline (tag, date, notes rendered), linked to the
matching frozen roadmap snapshot
docs/roadmap/<date>_<tag>-release.mdand design doc pair when present. - Docs — browser for plans / ADRs / status reports / designs / user guide, with frontmatter rendered as metadata chips (e.g. ADR status accepted/superseded, plan's epic + items, design doc's git_hash/tag). Frozen docs get a "frozen" badge.
-
Wiki — the
.work/published.jsonledger as a table: page, source file, wiki URL (external link), and drift status (re-hash source vssource_hash— green in-sync / amber stale), mirroring the publish skill's own hash-skip logic. -
Sync health —
.work/sync-state.jsoncursors + per-item push state joined against fold output: which open items have issues, which are unpushed, orphans and_conflictssurfaced loudly. - Charts — burnup (created vs closed over time from event ULIDs), kind mix (triage/ops trending down per the taxonomy's rule 6), velocity by week, unplanned ratio (the estimate-honesty metric).
wiki_ticket_sdd_ui/
├── README.md # what it is, screenshot, quickstart: npx/npm start --repo <path>
├── LICENSE # match wiki_ticket_sdd
├── package.json # workspaces: server, web
├── server/ # Hono API: /api/repo, /api/items, /api/events, /api/roadmap,
│ # /api/docs/*, /api/releases, /api/wiki-ledger, /api/sync,
│ # /api/git/log — all scoped to the selected repo path
├── web/ # Vite React app (panels above)
└── .github/workflows/ci.yml # typecheck + build + vitest
Read-only guarantee: the app never writes to the target repo — it is a viewer.
(Mutations, if ever, go through bin/worklog — later item, not this plan.)
- Wave 1: scaffold repo (
gh repo create SpillwaveSolutions/wiki_ticket_sdd_ui --public), server API against the data contract above, dogfood target =../wiki_ticket_sdd. - Wave 2 (parallel subagents): panels, each file-disjoint.
- Wave 3: polish pass (the "visually stunning" bar), README with screenshots, CI, tag v0.1.0.
- Work is tracked in the main repo's worklog (this plan's items); the UI repo is a deliverable, not a second tracker.
Per Rick: store the plan only. Run worklog plan-capture (writes
docs/plans/<date>-wiki-ticket-ui.md, files the epic + story items on the board,
background-publishes to wiki). Then stop — no repo creation, no code.
- Point the app at
../wiki_ticket_sdd→ all 9 panels populate from real data; fold output matchespython3 bin/worklog foldbyte-for-byte upstream. - Point it at a fresh
init.sh-scaffolded throwaway repo → app works with one item and no releases (the generic-repo proof). - Wiki drift indicator flips amber when a source doc is edited without republish.
- Offline (no
gh, no network): file-based panels still render; GitHub panels show a graceful "offline" state.
- Fold output fields:
id,title,status,priority,level,kind,parent,milestone,plan, resolution,depends_on,labels,unplanned,external(+_orphan,_conflictsmarkers); open statusestodo|in_progress|blocked; defaults level=task, kind=triage. - Event envelope:
ev,item,op(create|close|link|snapshot|compact),set,ts,actor(+throughon compact); ULIDevencodes the event timestamp. -
published.json:{slug: {rev, source, source_hash(12-hex), url, title?}}. -
sync-state.json:{adapter_path, cursors:{github:ts}, items:{ulid:{last_push, last_pushed_hash}}}. - Frontmatter: plans
date/slug/title/epic/items; statuskind/date/window/through/ generated_at; designsgenerated_at/git_hash/branch/tag/roadmap; ADRsid/slug/title/date/status/deciders/tags/supersedes/superseded_by. -
docs/roadmap.mdis generated with embedded Mermaid (deps/hierarchy default, gantt opt-in), header comment carriessource-hash/generated-at.
- (P2) Scaffold public repo wiki_ticket_sdd_ui: README, LICENSE, npm workspaces, CI
- (P2) Server: Hono JSON API over any worklog repo (fold, events, docs, git, gh, wiki ledger, sync state)
- (P2) Web shell: Vite + React + Tailwind dark dashboard chrome with repo picker
- (P2) Panels wave 1: Overview, Board, Roadmap (Mermaid), Activity feed
- (P2) Panels wave 2: Releases, Docs browser, Wiki drift, Sync health, Charts
- (P3) Polish pass to the visually-stunning bar; README screenshots; tag v0.1.0
- (P3) Tauri 2 desktop shell wrapping the same frontend
- Roadmap
- Design-Doc · Code-Walkthrough
- Plan: Plan-ia-content-model
- Plan: Plan-ticket-sync-and-init-detection
- ADR-0001-event-log-fold-union-merge
- ADR-0002-skill-based-edges-typed-contract
- ADR-0003-green-gates-merge
- Index-Releases
- Latest snapshot: Roadmap-2026-07-29_v0.18.0-release
- Index-Status
- Index-Decisions