diff --git a/wiki/roadmap/dogfood-log.md b/wiki/roadmap/dogfood-log.md index c236a28..43884ff 100644 --- a/wiki/roadmap/dogfood-log.md +++ b/wiki/roadmap/dogfood-log.md @@ -125,7 +125,7 @@ Phase 2 stays `active` through two weeks of real use on a real collection. Clock | 2026-10-03 | decision | #126 publication record merged as `731d43f`; main synced and installed binary reports 0.1.3. Phase 2 remains on fixes-only hold until the ≈ 2026-10-13 adoption verdict; no phase exit or release authorised by this housekeeping | P3-08 | | 2026-10-03 | decision | [P3-S2 herdr spike](spikes/p3-s2-herdr-integration.md): 0.9.0 popup launches with context cwd; operator confirmed real images, Help/Esc/Ctrl+Enter/q and no leftover fragments. Plain non-agent split metadata stored; operator confirmed title or token visible in the sidebar. Confirm feasibility for P3-09 popup and P3-10 ordinary-pane publishing; no metadata from popups (no pane ID). Overlay/split keys passed automation, graphics checks remain unverified. Scratch panes closed and global plugin unlinked; P4-05 theme-name following can use a config watcher without a plugin | P3-09, P3-10, P4-05 | -## v0.1.4 (preparation) +## v0.1.4 | Date | Kind | Note | Task IDs | |------|------|------|----------| @@ -139,11 +139,12 @@ Phase 2 stays `active` through two weeks of real use on a real collection. Clock | 2026-10-03 | decision | P3-09 accepted by the operator on herdr 0.9.0: the `open` action's ordinary split pane draws images and diagrams (and they survive theme switches); the overlay and popup entrypoints open, take keys and dismiss but are text-only, showing the plugin-pane wording. Matches the retest prediction, so it is the documented limit, not a defect; images there wait for herdr to give plugin panes cell metrics | P3-09 | | 2026-10-03 | bite | Operator, running the P3-09 split pane (installed 0.1.3): images survive theme switches, but some diagram images do not; switching pages and back reloads them and scrolling past refreshes them. Same symptom family as P2-56 | P2-60 | | 2026-10-03 | fix | P2-60: cause found in `ratatui-image`'s Kitty path. The upload is embedded in the picture's first cell on its first render and is never repeated, so a picture first drawn under a popup (the options window is open while the theme applies) never reached the terminal; a page switch or a scroll builds a new encode, which explains the refresh. Popups record their panels; pictures wait until their first cell is visible. Two regression tests (Kitty picker, popup open while pictures first render; diagrams switched under the options window) fail without the fix. Distinct from P2-56 (palette-keyed size cache) | P2-60 | -| 2026-10-03 | decision | P3-10 implemented (unreleased): the reader publishes the current page's title and a `page` token to herdr's sidebar from a worker thread, on by default inside a herdr pane with its own pane id, `[herdr] publish = false` to opt out. [ADR-0022](../decisions/0022-herdr-launcher-and-page-publishing.md) records it with the ordinary-pane launcher. Unit tests cover the exact argv, debounce, renewal, monotonic seq, clear on drop and failure isolation; sidebar behaviour in a real pane still needs the operator pass | P3-10 | +| 2026-10-03 | decision | P3-10 implemented (v0.1.4): the reader publishes the current page's title and a `page` token to herdr's sidebar from a worker thread, on by default inside a herdr pane with its own pane id, `[herdr] publish = false` to opt out. [ADR-0022](../decisions/0022-herdr-launcher-and-page-publishing.md) records it with the ordinary-pane launcher. Unit tests cover the exact argv, debounce, renewal, monotonic seq, clear on drop and failure isolation; sidebar behaviour in a real pane still needs the operator pass | P3-10 | | 2026-10-03 | bite | Operator P3-10 test in a plain pane (`target/debug/wiki-reader wiki`, pane `w30:p18`): `herdr pane get` showed no title or token, so nothing was published. Cause: herdr's CLI rejects `--title=value` ("unknown option"), and the publisher passed options that way; every report failed and, by design, it went quiet after three failures. The fake herdr in the unit tests could not catch it | P3-10 | | 2026-10-03 | fix | P3-10: options and values now go as separate arguments (`--title T --token page=P`); herdr accepts a value that starts with `-` that way, has no `--` terminator. Added an opt-in contract test against the real CLI (`WIKI_READER_TEST_HERDR_PANE= cargo test -p wiki-reader real_herdr -- --ignored`): it publishes a dash-leading title and the `page` token, sees both in `pane get` with `agent_status` still `unknown`, and sees them cleared on drop. Sidebar appearance still needs the operator's eyes | P3-10 | | 2026-10-03 | decision | P3-10 operator retest on herdr 0.9.0 (plain pane `w30:p18`, `target/debug/wiki-reader wiki`): `pane get` shows the page title and `tokens.page` following each page change (Decisions, ADR-0005, ADR-0006, ADR-0007), an unchanged page is not re-sent, `agent_status` stays `unknown`, and quitting leaves no title or token. Publishing works end to end. Not exercised: which sidebar element shows the title versus the token, the opt-out, a pane that hosts an agent, and TTL expiry after an unclean kill. Both fields stay on; ADR-0022 already records the agent-pane risk | P3-10 | | 2026-10-03 | decision | Prepare v0.1.4 to put P2-60 (diagrams switched under the options window), the herdr launcher with text-only plugin panes (P3-09) and herdr page publishing (P3-10, [ADR-0022](../decisions/0022-herdr-launcher-and-page-publishing.md)) in the installed dogfood binary. Require green CI on the release merge commit before tagging. Phase 2 stays on fixes-only hold until the ≈ 2026-10-13 verdict; the adoption clock does not restart | P2-60, P3-09, P3-10, P3-08 | +| 2026-10-03 | release | [v0.1.4](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.4) published as a prerelease from #131 merge commit `5646e05` after its Ubuntu/macOS CI passed. All three release builds passed; three tarballs and three checksums present. macOS arm64 download checksum and binary version verified; Cargo dogfood install upgraded from v0.1.3 to v0.1.4 (`~/.cargo/bin/wiki-reader`, the only copy on `PATH`; `--version` reports 0.1.4), so the herdr `open` action's `exec wiki-reader` now runs a build that publishes. Operator verified P2-60, the launcher and page publishing in real herdr panes before the release. Clock continues without restarting | P2-60, P3-09, P3-10, P3-08 | ## Related diff --git a/wiki/roadmap/phase-2-mvp.md b/wiki/roadmap/phase-2-mvp.md index 9eb264e..0c055a7 100644 --- a/wiki/roadmap/phase-2-mvp.md +++ b/wiki/roadmap/phase-2-mvp.md @@ -138,7 +138,7 @@ Judged from tests, dogfood QA, and code — not a full interactive sweep of ever | P2-57 | Docs audit and drift fixes | — | done | dogfood 2026-10; README/ui-spec ⚙, spec U3/U6–U9, modal viewers section, date drift, P3-07 Notes | | P2-58 | Docs structure: short README Status, dogfood log as its own file, benchmarks as their own page | — | done | dogfood 2026-10; [dogfood-log.md](dogfood-log.md), [benchmarks.md](../architecture/benchmarks.md) | | P2-59 | Narrow-terminal nav overlay: opaque inherited background, pinned header controls and outside-click dismissal | U2 / K1 | done | 2026-10-03 (v0.1.3): operator confirmed all three bugs on v0.1.2; pre-#121 `c69c348` renders reproduce bleed at 40/60 columns and regression tests fail for long breadcrumbs and outside clicks. Clear/fill only the overlay; reserve header icon columns and ellipsize overflow; outside clicks dismiss without activating underlying targets. Regression snapshots and mouse tests; post-fix terminal pass pending | -| P2-60 | Diagrams switched under the options window stay blank until the page is left or scrolled | D1 | done | 2026-10-03 (unreleased): the Kitty upload rides in a picture's first cell on its first render, and `ratatui-image` never repeats it. A theme switch re-renders every diagram while the options window is open, so a picture first drawn with its first cell under the popup lost its upload. Popups now record their panels (`HitMap::occlude`) and `ImageManager::draw` holds a picture back until its first cell is visible (`Entry::Ready.confirmed`, reset when its rectangle or crop changes). Regression tests use a Kitty-protocol picker and fail without the fix; the P2-56 theme-switch test is unchanged | +| P2-60 | Diagrams switched under the options window stay blank until the page is left or scrolled | D1 | done | 2026-10-03 (v0.1.4): the Kitty upload rides in a picture's first cell on its first render, and `ratatui-image` never repeats it. A theme switch re-renders every diagram while the options window is open, so a picture first drawn with its first cell under the popup lost its upload. Popups now record their panels (`HitMap::occlude`) and `ImageManager::draw` holds a picture back until its first cell is visible (`Entry::Ready.confirmed`, reset when its rectangle or crop changes). Regression tests use a Kitty-protocol picker and fail without the fix; the P2-56 theme-switch test is unchanged | | P2-R38 | Copy fixes: empty table cells kept, wrapped cells rejoined, OSC 52 cap on the encoded payload (75 KB of text), held drag keeps scrolling | CP | done | round 2 follow-ups (PR 2) | | P2-24b | Image diagrams and images | D1 | moved | slipped to Phase 3 as P3-12 (2026-09-30), now split into P3-12a…d; images follow [ADR-0017](../decisions/0017-static-local-images-only.md) | diff --git a/wiki/roadmap/phase-3-alpha.md b/wiki/roadmap/phase-3-alpha.md index 0386522..b757281 100644 --- a/wiki/roadmap/phase-3-alpha.md +++ b/wiki/roadmap/phase-3-alpha.md @@ -58,7 +58,7 @@ Per batch: manual passes in Ghostty and herdr, plus iTerm2/tmux for media or fal | ID | Task | Reqs | Status | Notes | |----|------|------|--------|-------| -| P3-08 | Install via `cargo install` + release binaries | | done | daf8fc5; hygiene f90c378; release hardening 9012fce; [v0.1.0-alpha.1](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.1); [v0.1.0-alpha.2](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.2); [v0.1.0-alpha.3](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.3); [v0.1.0-alpha.4](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.4); [v0.1.0-alpha.4.1](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.4.1); [v0.1.0-alpha.5](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.5) (P3-12c/d Mermaid image tier); [v0.1.0-alpha.5.1](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.5.1) (P2-55 copy path); [v0.1.1](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.1) (P3-07/11/13/14/15, the first `v0.1.N` tag); [v0.1.2](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.2) (2026-10-03, P2-56 theme-switch fix and docs filing; three release targets and macOS arm64 download verified); [v0.1.3](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.3) (2026-10-03, P2-59 narrow-nav fix and the Batch A chrome pass P3-16/17/18; three release targets and macOS arm64 download verified); v0.1.4 (prepared 2026-10-03: P2-60 diagram upload fix, the herdr launcher P3-09 and page publishing P3-10; tag pending green CI on the release merge commit) | +| P3-08 | Install via `cargo install` + release binaries | | done | daf8fc5; hygiene f90c378; release hardening 9012fce; [v0.1.0-alpha.1](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.1); [v0.1.0-alpha.2](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.2); [v0.1.0-alpha.3](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.3); [v0.1.0-alpha.4](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.4); [v0.1.0-alpha.4.1](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.4.1); [v0.1.0-alpha.5](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.5) (P3-12c/d Mermaid image tier); [v0.1.0-alpha.5.1](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.0-alpha.5.1) (P2-55 copy path); [v0.1.1](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.1) (P3-07/11/13/14/15, the first `v0.1.N` tag); [v0.1.2](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.2) (2026-10-03, P2-56 theme-switch fix and docs filing; three release targets and macOS arm64 download verified); [v0.1.3](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.3) (2026-10-03, P2-59 narrow-nav fix and the Batch A chrome pass P3-16/17/18; three release targets and macOS arm64 download verified); [v0.1.4](https://github.com/luckgrid/wiki-reader/releases/tag/v0.1.4) (2026-10-03, P2-60 diagram upload fix, the herdr launcher P3-09 and page publishing P3-10; three release targets and macOS arm64 download verified) | | P3-06 | Help overlay with clickable keys | | done | done via P2-20 (#71) | | P3-07 | Themes | | done | Reworked 2026-10-02 (local time; [ADR-0019](../decisions/0019-theme-presets.md) retains its immutable UTC date, 2026-10-03): `dark` / `light` take the luckgrid.net palette, `herdr` follows the theme named in herdr's config and is the default inside herdr; live follow is P4-05. Original: `theme = dark \| light \| herdr` wired to `Theme::from_name`; light preset with a contrast test; syntect theme and Mermaid palette follow the preset (diagrams were always drawn light before); herdr preset is vesper-based; quadrant/xy-chart/ER-key fills stay light (renderer hard-codes them). Checked 2026-10-02: Mermaid fixtures look right in the default (dark) theme. Light and herdr presets got their in-app visual pass with the options window (P3-13) | | P3-11 | Layout and theme config | C1 | done | `nav.position = left \| right` (default left); divider on the inner edge; Viewer ←/→ at the edge toward the nav hands focus over. Nav width stays session-only (P2-14). No other layout keys (formatted view removed, [ADR-0014](../decisions/0014-remove-formatted-view-toggle.md)). Feature request from 2026-09-30 dogfood | @@ -72,8 +72,8 @@ Per batch: manual passes in Ghostty and herdr, plus iTerm2/tmux for media or fal | P3-04 | Optional header ‹ › buttons | U4 | deferred | Operator decision 2026-10-03: Phase 4 seed P4-07 | | P3-05 | Link hover preview popover | W6 | deferred | Operator decision 2026-10-03: Phase 4 seed P4-08 | | P3-03 | Nav label options | U3 | done | completed by P3-16; two modes, literal filenames/folders and legacy config migration | -| P3-09 | herdr: launch as a herdr plugin pane | | done | Implemented in #128 (unreleased): `--herdr-context` and `--herdr-split`, an `integrations/herdr/` plugin whose default action opens the reader in an ordinary split pane (images work) plus text-only overlay and popup actions. [P3-S2](spikes/p3-s2-herdr-integration.md) retests show every herdr 0.9.x plugin pane, overlay included, lacks cell metrics, so plugin panes cannot draw images; wiki-reader names that in its fallback text and never guesses a cell size. Operator accepted 2026-10-03: the `open` action's split pane draws images and diagrams; overlay and popup open and take keys but are text-only on herdr 0.9.x, with the plugin-pane wording. Ships in v0.1.4 | -| P3-10 | herdr: publish the current page to herdr's sidebar | | done | Implemented in #130 (unreleased): `crates/wiki-reader/src/herdr.rs` `Publisher` (worker thread, 250 ms debounce, 10 min TTL renewed every 4 min, cleared on exit, `--seq` = Unix ms, failure isolation after 3 in a row), hooked into the event loop by `App::sync_herdr`; `[herdr] publish` (default on); [ADR-0022](../decisions/0022-herdr-launcher-and-page-publishing.md). Ordinary panes only: popups have no pane id. The first operator run found herdr rejects `--name=value`; fixed, and a real-CLI contract test now covers publish and clear. Operator verified 2026-10-03 on herdr 0.9.0: `pane get` follows page changes with title and `page` token, no duplicate for an unchanged page, `agent_status` stays `unknown`, cleared on quit. Not exercised: which sidebar element shows the title versus the token, opt-out, an agent-hosting pane, TTL after an unclean kill. Ships in v0.1.4 | +| P3-09 | herdr: launch as a herdr plugin pane | | done | Implemented in #128 (v0.1.4): `--herdr-context` and `--herdr-split`, an `integrations/herdr/` plugin whose default action opens the reader in an ordinary split pane (images work) plus text-only overlay and popup actions. [P3-S2](spikes/p3-s2-herdr-integration.md) retests show every herdr 0.9.x plugin pane, overlay included, lacks cell metrics, so plugin panes cannot draw images; wiki-reader names that in its fallback text and never guesses a cell size. Operator accepted 2026-10-03: the `open` action's split pane draws images and diagrams; overlay and popup open and take keys but are text-only on herdr 0.9.x, with the plugin-pane wording. Ships in v0.1.4 | +| P3-10 | herdr: publish the current page to herdr's sidebar | | done | Implemented in #130 (v0.1.4): `crates/wiki-reader/src/herdr.rs` `Publisher` (worker thread, 250 ms debounce, 10 min TTL renewed every 4 min, cleared on exit, `--seq` = Unix ms, failure isolation after 3 in a row), hooked into the event loop by `App::sync_herdr`; `[herdr] publish` (default on); [ADR-0022](../decisions/0022-herdr-launcher-and-page-publishing.md). Ordinary panes only: popups have no pane id. The first operator run found herdr rejects `--name=value`; fixed, and a real-CLI contract test now covers publish and clear. Operator verified 2026-10-03 on herdr 0.9.0: `pane get` follows page changes with title and `page` token, no duplicate for an unchanged page, `agent_status` stays `unknown`, cleared on quit. Not exercised: which sidebar element shows the title versus the token, opt-out, an agent-hosting pane, TTL after an unclean kill. Ships in v0.1.4 | | P3-13 | Options window | U5 | done | feature request 2026-10-02. A popup like markdown-reader's, opened by a key and a footer/header button, that edits config from inside the app: **theme** selector (dark / light / herdr, live preview), **nav position** (left / right, P3-11), **nav labels** (titles ↔ filenames, `nav.labels`), **Mermaid** settings (`diagrams` tier: auto / image / text / source), **image** settings, **copy path** format (`copy.path`: relative / absolute, key added by P2-55). Implemented: `,` / `c` or the layout footer ⚙ (moved by P3-18) opens the overlay; writes via [ADR-0018](../decisions/0018-config-write-path.md); new `[images] enabled \| max_slot_rows`; live apply for every row (images re-enable after a disable needs a restart when the startup probe was skipped). Reworked 2026-10-02 (local time) after dogfood: grouped radio rows in the style of markdown-reader's settings window, `,` and `c` both open and close it, and the copy-path key is listed in Help as "Copy file path" | | P3-14 | Table viewer | U6 | done | feature request 2026-10-02. Open a large table in a modal / window (like markdown-reader): scroll in both axes with a fixed header row and first column, **filter** rows by text, **sort** by a column, copy a cell or row (reuse the tab-separated table copy from P2-R38). Entry point: the existing "expand table" block action (BA), plus `Enter` on a focused table. Also the shell for P3-15. Implemented: `RenderedDoc::tables` (`DocTable`) from `render.rs`; `ExpandTable` block action and `Enter` open `tui/table_viewer.rs` inside `tui/modal_viewer.rs`. Keys: arrows / `hjkl`, `PgUp` / `PgDn`, `g` / `G`, `/` filter, `s` sort, `y` cell, `Y` row. See [UI spec: Modal viewers](../product/ui-spec.md#modal-viewers) | | P3-15 | Image and diagram viewer | U7 | done | feature request 2026-10-02. Open an image or Mermaid diagram full size in a modal: **zoom** in/out and **pan**. Reuses the P3-12 pipeline at a larger pixel budget. Entry: `ExpandDiagram` / `Enter` on a slot. Keys: arrows / `hjkl` pan, `PgUp` / `PgDn`, `g` / `G`, `+` / `-` zoom, `0` reset. SVG/Mermaid re-rasterise at zoom; raster files scale from the bitmap. See [UI spec: Modal viewers](../product/ui-spec.md#modal-viewers). Deferred: mouse drag to pan, click on a picture to open it, carousel (P3-21), diagram state toggle (P3-22), viewer sizing (P3-20) |