Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Other tools that shaped it, and what each contributed, are listed in [Prior art

## Status

Phase 2 is feature-complete on a dogfood hold (clock 2026-09-29 → ≈ 2026-10-13). Phase 3 alpha polish is shipped through v0.1.10 (lite build, viewers, audit fixes, linear wrap for long tokens, orphaned-reader exit); the phase stays active until the exit decision after installed-binary dogfood. See the [roadmap](wiki/roadmap/README.md) and the [dogfood log](wiki/roadmap/dogfood-log.md). Prereleases and binaries are on [GitHub Releases](https://github.com/luckgrid/wiki-reader/releases).
Phase 2 is done (closed 2026-10-06). Phase 3 alpha polish is shipped through v0.1.10 (lite build, viewers, audit fixes, linear wrap for long tokens, orphaned-reader exit); the phase stays active until the exit decision after installed-binary dogfood. See the [roadmap](wiki/roadmap/README.md) and the [dogfood log](wiki/roadmap/dogfood-log.md). Prereleases and binaries are on [GitHub Releases](https://github.com/luckgrid/wiki-reader/releases).

## Install

Expand Down
2 changes: 1 addition & 1 deletion wiki/guides/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ See [architecture overview](../architecture/overview.md) and [ADR-0006](../decis

## Task workflow

1. Open the current phase file under [roadmap](../roadmap/README.md). Active polish work is [Phase 3](../roadmap/phase-3-alpha.md); [Phase 2](../roadmap/phase-2-mvp.md) is feature-complete on a fixes-only dogfood hold until the adoption verdict (≈ 2026-10-13).
1. Open the current phase file under [roadmap](../roadmap/README.md). Active polish work is [Phase 3](../roadmap/phase-3-alpha.md); [Phase 2](../roadmap/phase-2-mvp.md) is done (closed 2026-10-06); dogfood findings go to Phase 3.
2. Pick a `todo` row; set Status to `doing`; implement the smallest change that completes it.
3. Run `./scripts/check.sh` (the same checks CI runs).
4. Set Status to `done`; reference the ID in commit messages. Leave exit criteria visible.
Expand Down
2 changes: 1 addition & 1 deletion wiki/roadmap/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Dated dogfood bites live in the [dogfood log](dogfood-log.md); audit findings ar
|-------|--------|------|----------------|
| Phase 0 | done | Try what exists | Findings shaped [ADR-0005](../decisions/0005-navigation-model.md) and [ADR-0006](../decisions/0006-reader-first.md) |
| Phase 1 | done | Reader shell (~1–2 weeks) | [phase-1-reader-shell.md](phase-1-reader-shell.md) |
| Phase 2 | feature complete; dogfood hold to ≈ 2026-10-13 | Wiki navigation MVP (~2 weeks) | Side nav, breadcrumbs, links, back/forward, prev/next, backlinks, heading jumps, tabs, search, help, column cursor + drag-select, soft-wrapped raw view, `$EDITOR`, config, session restore. Fixes only during the hold — [phase-2-mvp.md](phase-2-mvp.md) |
| Phase 2 | done (closed early, 2026-10-06) | Wiki navigation MVP (~2 weeks) | Side nav, breadcrumbs, links, back/forward, prev/next, backlinks, heading jumps, tabs, search, help, column cursor + drag-select, soft-wrapped raw view, `$EDITOR`, config, session restore. Dogfooding continues under Phase 3 — [phase-2-mvp.md](phase-2-mvp.md) |
| Phase 3 | active | Alpha polish | Themes, nav position, options window, table and image/diagram viewers, Mermaid image tier, chrome pass (v0.1.3), herdr launcher and page publishing (v0.1.4), lite build, viewer sizing, carousel, diagram toggle, code viewer, shared toolbar icons and the status enum (v0.1.5), audit fixes for crashes and performance (v0.1.6), robustness (P3-29, v0.1.7), table-viewer expand (P3-30, v0.1.8), linear wrap / V4 (P3-34, v0.1.9), orphaned-reader exit / V22 (P3-37, v0.1.10). Exit decision waits on dogfooding the installed binary — [phase-3-alpha.md](phase-3-alpha.md) |
| Phase 4 | proposed | Beta: widget sidebar and agent surface | [phase-4-beta.md](phase-4-beta.md) |

Expand Down
3 changes: 2 additions & 1 deletion wiki/roadmap/dogfood-log.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ related: [phase-2-mvp, phase-3-alpha, phase-4-beta]

# Dogfood log

Phase 2 stays `active` through two weeks of real use on a real collection. Clock started 2026-09-29; exit remains ≈ 2026-10-13. Record anything that bites here (date + one line); feed that into Phase 3 (and later) scoping. Kind is one of `bite` / `fix` / `release` / `decision`. Dates use operator-local time (UTC−07:00 for these entries). Release and same-evening rework notes previously dated 2026-10-03 in UTC are recorded as 2026-10-02 here; accepted [ADR-0019](../decisions/0019-theme-presets.md) remains unchanged with its UTC date of 2026-10-03.
Phase 2 was closed early on 2026-10-06 (clock started 2026-09-29), so dogfooding now counts toward [Phase 3](phase-3-alpha.md). Record anything that bites here (date + one line); feed that into Phase 3 (and later) scoping. Kind is one of `bite` / `fix` / `release` / `decision`. Dates use operator-local time (UTC−07:00 for these entries). Release and same-evening rework notes previously dated 2026-10-03 in UTC are recorded as 2026-10-02 here; accepted [ADR-0019](../decisions/0019-theme-presets.md) remains unchanged with its UTC date of 2026-10-03.

## v0.1.0-alpha.1

Expand Down Expand Up @@ -232,6 +232,7 @@ Phase 2 stays `active` through two weeks of real use on a real collection. Clock
| 2026-10-06 | decision | V8 graphics-on idle check done by the operator in Ghostty on the installed v0.1.10 (`top -l 7 -s 10`, 60 s idle per run, idle wakeups counted as the change in IDLEW): picture on screen ≈ 0.4 wakeups/s, picture scrolled off ≈ 1.4/s, Mermaid diagram ≈ 0.5/s; the same three runs with images disabled ≈ 1.0, 0.8 and 1.3/s; 0.3–0.6 %CPU in every run. A constant 20 ms image poll would show about 50/s, so V8 stays dropped and the Phase 3 exit item is closed. Side observation: the v0.1.8 PTY baseline was 0.0 %CPU and 0 wakeups, and v0.1.10 idles at about 1 wakeup/s and 0.4 %CPU with images on or off. That fits the 1 s sleep of the new `parent-watch` thread (V22) plus the 250 ms event poll, and is not a V8 cost; not acted on | V8, P3-32, P3-37 |
| 2026-10-06 | decision | Table-viewer, diagram-viewer and image-viewer screenshots retaken by the operator (`assets/wiki-reader-table-viewer*.png`, `-diagram-viewer*.png`, `-media-viewer.png`), copied identically into `wiki/assets/` and shown in the UI spec. The four main screenshots (layout, help, search, options) were not retaken | P3-23, P3-30 |
| 2026-10-06 | decision | P3-10 herdr checks done by the operator on herdr 0.9.0 with v0.1.10, using `herdr pane get` in a second pane. (1) Title: shown as the pane's border label; token: `tokens.page` (path relative to the launch root) is visible through `pane get`; both follow page changes; the workspace sidebar was not checked separately. (2) `[herdr] publish = false` via `--config`: `title` and `tokens` stay null through several page changes; publishing resumes without the flag. (3) Agent pane (fake agent registered with `report-agent`, released afterwards): `agent` stayed `claude` and `agent_status` `idle` the whole time the reader published, and both fields were intact after quit with title and token cleared. (4) Unclean kill (`kill -9`, reader started from a shell so the pane survived): title and token stayed for the next 10 polls (12:13:33 to 12:22:33, the kill was just before 12:13:33) and were null at 12:23:33, matching the 10-minute TTL. The killed reader left the pane in raw mode with Kitty keyboard flags and mouse reporting on, so `reset` could not be typed; expected for SIGKILL, recovery is to write the reset sequences from another pane or close the pane. All four P3-10 exit checks are confirmed | P3-10 |
| 2026-10-06 | decision | **Phase 2 closed (operator decision).** The dogfood clock (2026-09-29, planned exit ≈ 2026-10-13) was cut short at about one week: Phase 2 is `done` in [phase-2-mvp.md](phase-2-mvp.md) and the roadmap table, the two-weeks adoption measure is recorded as closed early, not as passed, and any further dogfood findings are filed against Phase 3. The first crates.io release ([P3-39](phase-3-alpha.md)) no longer waits for the Phase 2 verdict; it still waits for the Phase 3 exit decision and a second drift check | P3-39 |

## Related

Expand Down
16 changes: 8 additions & 8 deletions wiki/roadmap/phase-2-mvp.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
id: WR-ROADMAP-P2
title: Phase 2 — Wiki navigation MVP
summary: Custom nav order, backlinks, tabs, diagrams, config, and session restore.
status: active
updated: 2026-10-05
status: done
updated: 2026-10-06
related: [phase-1-reader-shell, phase-3-alpha, dogfood-log]
nav_order: 2
---
Expand All @@ -12,21 +12,21 @@ nav_order: 2

Time box: ≈ 2 weeks.

**Status (2026-10-03): feature complete, dogfood hold.** [Phase 3](phase-3-alpha.md) is active. Phase 2 now accepts only fixes for things the dogfood clock turns up (a small PR with a test or snapshot and a dated line in the [dogfood log](dogfood-log.md)) until the ≈ 2026-10-13 verdict.
**Status (2026-10-06): done.** Closed early by operator decision: the dogfood clock started 2026-09-29, so about one week of the planned two had run. [Phase 3](phase-3-alpha.md) is active, and anything dogfooding turns up from here is a Phase 3 item, recorded in the [dogfood log](dogfood-log.md).

## Exit criteria

All P0/P1 acceptance criteria in [product spec](../product/spec.md) pass; two weeks without opening a GUI markdown app for these collections.

The dogfood polish batch (P2-11…P2-24a) should land before the clock is judged, but the two weeks do **not** restart or extend. Clock started 2026-09-29; exit remains ≈ 2026-10-13. P2-24b (image diagrams) may slip to Phase 3 without blocking exit.
The dogfood polish batch (P2-11…P2-24a) should land before the clock is judged, but the two weeks do **not** restart or extend. Clock started 2026-09-29; the operator closed the phase on 2026-10-06 (see Status). P2-24b (image diagrams) may slip to Phase 3 without blocking exit.

## Dogfood log

Phase 2 stays `active` through two weeks of real use on a real collection. Clock started 2026-09-29; exit remains ≈ 2026-10-13. Dated bites, fixes, releases and decisions live in the [dogfood log](dogfood-log.md).
Phase 2 was `active` through the dogfood clock (2026-09-29 to 2026-10-06, closed early). Dated bites, fixes, releases and decisions live in the [dogfood log](dogfood-log.md).

## Interim acceptance walk (2026-09-30) — historical

**Historical.** Snapshot from 2026-09-30; later landings supersede several rows below (image tier [P3-12](phase-3-alpha.md) / [ADR-0017](../decisions/0017-static-local-images-only.md); themes/layout/options [P3-07](phase-3-alpha.md)/[P3-11](phase-3-alpha.md)/[P3-13](phase-3-alpha.md) shipped; formatted toggle removed by [ADR-0014](../decisions/0014-remove-formatted-view-toggle.md)). Formal exit review ≈ 2026-10-13 still re-confirms the adoption verdict.
**Historical.** Snapshot from 2026-09-30; later landings supersede several rows below (image tier [P3-12](phase-3-alpha.md) / [ADR-0017](../decisions/0017-static-local-images-only.md); themes/layout/options [P3-07](phase-3-alpha.md)/[P3-11](phase-3-alpha.md)/[P3-13](phase-3-alpha.md) shipped; formatted toggle removed by [ADR-0014](../decisions/0014-remove-formatted-view-toggle.md)). The formal exit review planned for ≈ 2026-10-13 never ran: the operator closed Phase 2 early on 2026-10-06.

### P0

Expand Down Expand Up @@ -65,7 +65,7 @@ Phase 2 stays `active` through two weeks of real use on a real collection. Clock

| Measure | Result | Notes |
|---------|--------|-------|
| Two weeks without a GUI markdown app | pending | clock 2026-09-29 → ≈ 2026-10-13 |
| Two weeks without a GUI markdown app | closed early | clock 2026-09-29 → 2026-10-06 (about one week); the operator closed Phase 2 on 2026-10-06 and moved dogfooding to Phase 3 |

## Tasks

Expand Down Expand Up @@ -188,7 +188,7 @@ Acceptance: diagrams render as images where Kitty graphics is available, otherwi

## Order (done)

Feature work below is complete; Phase 2 remains on dogfood hold (fixes only) until the ≈ 2026-10-13 adoption verdict — do not treat this section as a to-do list.
Feature work below is complete and Phase 2 is done (closed 2026-10-06) — do not treat this section as a to-do list.

1. P2-R31 → P2-R32 → P2-R33 — done
2. P2-05 Tabs — done
Expand Down
6 changes: 3 additions & 3 deletions wiki/roadmap/phase-3-alpha.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ nav_order: 3

# Phase 3 — Alpha polish

Phase 1 is closed and Phase 2 is feature complete (dogfood hold until ≈ 2026-10-13, fixes only; see [phase-2-mvp.md](phase-2-mvp.md)). Phase 3 was activated on 2026-10-01. Batch A (chrome, v0.1.3), the herdr work (v0.1.4) and the lite build, viewers, code viewer, toolbar icons and status enum (P3-19 to P3-26, v0.1.5), the audit fixes for crashes, terminal safety and performance (P3-27, P3-28, v0.1.6), robustness (P3-29, v0.1.7), table-viewer expand (P3-30, v0.1.8) linear wrap for long tokens (P3-34, v0.1.9) and the orphaned-reader exit (P3-37, v0.1.10) have shipped. The phase stays active until the exit decision below, which waits on dogfooding the installed binary. Dogfood bites live in the [dogfood log](dogfood-log.md).
Phase 1 and Phase 2 are closed (Phase 2 early, on 2026-10-06 by operator decision; see [phase-2-mvp.md](phase-2-mvp.md)), so dogfooding now feeds this phase. Phase 3 was activated on 2026-10-01. Batch A (chrome, v0.1.3), the herdr work (v0.1.4) and the lite build, viewers, code viewer, toolbar icons and status enum (P3-19 to P3-26, v0.1.5), the audit fixes for crashes, terminal safety and performance (P3-27, P3-28, v0.1.6), robustness (P3-29, v0.1.7), table-viewer expand (P3-30, v0.1.8) linear wrap for long tokens (P3-34, v0.1.9) and the orphaned-reader exit (P3-37, v0.1.10) have shipped. The phase stays active until the exit decision below, which waits on dogfooding the installed binary. Dogfood bites live in the [dogfood log](dogfood-log.md).

## Exit criteria

Expand Down Expand Up @@ -54,7 +54,7 @@ P3-01 is explicitly deferred by operator decision (2026-10-03) before P3-17 sett

Per PR: `scripts/check.sh`, intentional snapshot review, task IDs in commit messages and dated dogfood evidence. P3-19 taught `scripts/check.sh [all|default|lite]` and CI to run both builds and assert the lite tree excludes `image`, `resvg`, `mermaid-rs-renderer` and `ratatui-image`. Gate image examples for `--all-targets`, forward features across crates. Default snapshots must not change during extraction.

Per batch: manual passes in Ghostty and herdr, plus iTerm2/tmux for media or fallback changes, using the repo root, `fixtures/mermaid`, `fixtures/images` and `wiki/`. Per release: verify three tarballs/checksums, a downloaded binary and the Cargo-installed dogfood binary's version; add a new release heading in the dogfood log. At the ≈ 2026-10-13 Phase 2 review, record the adoption verdict; only a positive verdict changes Phase 2 to done and updates both roadmap status rows.
Per batch: manual passes in Ghostty and herdr, plus iTerm2/tmux for media or fallback changes, using the repo root, `fixtures/mermaid`, `fixtures/images` and `wiki/`. Per release: verify three tarballs/checksums, a downloaded binary and the Cargo-installed dogfood binary's version; add a new release heading in the dogfood log. Phase 2 was closed early on 2026-10-06 by operator decision, with no adoption verdict recorded.

## Tasks

Expand Down Expand Up @@ -102,7 +102,7 @@ Per batch: manual passes in Ghostty and herdr, plus iTerm2/tmux for media or fal
| P3-36 | Audit fixes: process and tooling | — | todo | [audit-v0.1.8.md](audit-v0.1.8.md). V17 remainder (reap children, herdr timeout, surface open errors; early signal registration moved to P3-37), V19 (`release.yml` split; dry run first), V20 (`deny.toml` / Dependabot / pin hygiene; audit found unmaintained `bincode` / `ttf-parser`), V21 (`check_doc` via `core::nav::resolve`), boolean-arg tidy-ups. Does **not** gate the Phase 3 exit |
| P3-37 | Audit fix: orphan process spin (V22) + early signals (V17) | — | done | V22: TTY guard + session-leader watchdog + stdin hangup poll (`WIKI_READER_NO_WATCHDOG=1` opts out of the leader check); V17: SIGHUP/SIGTERM/SIGINT before raw mode; `scripts/check-orphan-exit.py` runs the PTY cases in `check.sh` and CI; error output no longer panics on a dead terminal (SIGABRT race). Ships in v0.1.10. Does **not** gate the Phase 3 exit |
| P3-38 | Known issue: exiting process stuck in macOS state `E` with an unread PTY master (V23) | — | todo | [audit-v0.1.8.md](audit-v0.1.8.md). Investigate later. Reproduce with a PTY whose master is open and never read while the reader exits; decide whether `tcflush(TCOFLUSH)` before a forced exit, or another change, releases it; check a clean exit too. Documented in the [development guide](../guides/development.md#known-issues). Does **not** gate the Phase 3 exit |
| P3-39 | First crates.io release | — | todo | Prep landed in #169 (package `wiki-reader-tui`, MSRV 1.92 + CI job, `cargo-deny` + CI job, `NOTICE`, per-crate licence copies, `THIRD-PARTY-LICENSES` in tarballs, crate READMEs, SECURITY.md, Dependabot); `cargo publish --workspace --dry-run` and the release workflow dry run pass. **Gates before publishing (operator):** the Phase 2 adoption verdict (≈ 2026-10-13), the Phase 3 exit decision (P3-10 checks or deferral, table-viewer screenshots, V8), and a second drift check. The first-publish release PR also drops the `v0.1.*` prerelease rule from `release.yml`, updates the release wording in `releasing.md`, README and SECURITY.md, and adds the banned-phrase check. Then `cargo publish --workspace --locked`, tag, verify `cargo install --locked wiki-reader-tui` in a fresh `CARGO_HOME`. Later: trusted publishing and the V19 workflow split. Does **not** gate the Phase 3 exit |
| P3-39 | First crates.io release | — | todo | Prep landed in #169 (package `wiki-reader-tui`, MSRV 1.92 + CI job, `cargo-deny` + CI job, `NOTICE`, per-crate licence copies, `THIRD-PARTY-LICENSES` in tarballs, crate READMEs, SECURITY.md, Dependabot); `cargo publish --workspace --dry-run` and the release workflow dry run pass. **Gates before publishing (operator):** the Phase 3 exit decision (P3-10 checks or deferral, table-viewer screenshots, V8), and a second drift check. The first-publish release PR also drops the `v0.1.*` prerelease rule from `release.yml`, updates the release wording in `releasing.md`, README and SECURITY.md, and adds the banned-phrase check. Then `cargo publish --workspace --locked`, tag, verify `cargo install --locked wiki-reader-tui` in a fresh `CARGO_HOME`. Later: trusted publishing and the V19 workflow split. Does **not** gate the Phase 3 exit |

## Related

Expand Down
Loading