No surface has been visually inspected: web UI and TUI are test-verified only #66

Open
opened 2026-08-11 15:38:24 +00:00 by a73x · 6 comments
a73x commented 2026-08-11 15:38:24 +00:00 (Migrated from git.a73x.sh)

Across this session's work — merge-commit links, the abbrev policy, inline comment markers, resolution grouping, the governance repo list — every web and TUI change was verified by tests and by nobody's eyes.

The tests are real: the web is driven over raw HTTP against a live server and the TUI through a pty harness, both asserting on characters that genuinely reached the wire or the screen. What they cannot catch is layout, overflow, contrast, a marker rendered in the wrong column, or a 40-character id under collab.abbrev=full wrapping badly at narrow widths. Three separate implementers flagged this in the same words: they could not look at it.

Specific things worth a human eye:

  • patch show resolution grouping (unresolved first, resolved collapsed to one line, header suppressed when all answered) — a text layout decision nobody has seen.
  • The Merged in: <oid> link on the web patch page — wired to /{repo}/diff/{oid}, route exists, never clicked.
  • Inline comment and (edited) / [deleted] markers in both surfaces.
  • The dashboard under collab.abbrev=full: ids are 40 chars and the smoke test had to size the terminal to fit them.
  • The governance repo list, and that settings is correctly absent from anonymous HTTP.

Not a bug report — a verification gap. Worth one pass through the UI with a real browser and a real terminal before treating any of it as done.


Migrated from git-collab issue 5c62b43b62bfab8ad7c0210cd7f5305ae095e8b7.

Original author: a73x dev@a73x.sh.

Across this session's work — merge-commit links, the abbrev policy, inline comment markers, resolution grouping, the governance repo list — every web and TUI change was verified by tests and by nobody's eyes. The tests are real: the web is driven over raw HTTP against a live server and the TUI through a pty harness, both asserting on characters that genuinely reached the wire or the screen. What they cannot catch is layout, overflow, contrast, a marker rendered in the wrong column, or a 40-character id under `collab.abbrev=full` wrapping badly at narrow widths. Three separate implementers flagged this in the same words: they could not look at it. Specific things worth a human eye: - `patch show` resolution grouping (unresolved first, resolved collapsed to one line, header suppressed when all answered) — a text layout decision nobody has seen. - The `Merged in: <oid>` link on the web patch page — wired to `/{repo}/diff/{oid}`, route exists, never clicked. - Inline comment and `(edited)` / `[deleted]` markers in both surfaces. - The dashboard under `collab.abbrev=full`: ids are 40 chars and the smoke test had to size the terminal to fit them. - The governance repo list, and that `settings` is correctly absent from anonymous HTTP. Not a bug report — a verification gap. Worth one pass through the UI with a real browser and a real terminal before treating any of it as done. --- Migrated from git-collab issue `5c62b43b62bfab8ad7c0210cd7f5305ae095e8b7`. Original author: a73x <dev@a73x.sh>.
a73x commented 2026-08-12 14:17:01 +00:00 (Migrated from git.a73x.sh)

Web UI pass done, 2026-08-12, via Chrome DevTools MCP against a live server serving this repo (179 collab refs, 15 patches, real diffs). The TUI is still uninspected.

Found three things, all filed: 8e716471 (tables force the whole page to scroll sideways at narrow widths — the real bug), b2a57996 (timestamps render as full RFC3339 with nanoseconds everywhere), c43c459d (empty filtered list says "No patches." when there are fifteen).

Verified working, and worth recording since these were the specific unknowns:

  • The Merged in <oid> link on a patch detail page renders, resolves 200, and points at the commit that genuinely landed that patch. It had never been clicked.
  • Inline comments render with author, file:line, revision and body in a readable block. Reviews likewise, with the verdict shown.
  • Diff pages handle overflow correctly: pre carries overflow-x: auto, so a 1231px-wide diff scrolls inside its own block and the page does not, even at a 500px viewport. This is exactly what the tables fail to do.
  • Ids render at 8 characters uniformly across the list, consistent with the abbrev floor.
  • No console errors on any page visited.

The lesson for the backlog: every one of the three defects is invisible to the test suite. The HTML is well-formed, every content assertion passes, and the pages are correct in every respect a test can express. They are only wrong at a width, or in what a human reads into a sentence. Worth keeping a browser pass in the loop rather than treating the tests as covering this.

Web UI pass done, 2026-08-12, via Chrome DevTools MCP against a live server serving this repo (179 collab refs, 15 patches, real diffs). The TUI is still uninspected. **Found three things, all filed:** 8e716471 (tables force the whole page to scroll sideways at narrow widths — the real bug), b2a57996 (timestamps render as full RFC3339 with nanoseconds everywhere), c43c459d (empty filtered list says "No patches." when there are fifteen). **Verified working, and worth recording since these were the specific unknowns:** - The `Merged in <oid>` link on a patch detail page renders, resolves 200, and points at the commit that genuinely landed that patch. It had never been clicked. - Inline comments render with author, `file:line`, revision and body in a readable block. Reviews likewise, with the verdict shown. - Diff pages handle overflow correctly: `pre` carries `overflow-x: auto`, so a 1231px-wide diff scrolls inside its own block and the page does not, even at a 500px viewport. This is exactly what the tables fail to do. - Ids render at 8 characters uniformly across the list, consistent with the abbrev floor. - No console errors on any page visited. The lesson for the backlog: every one of the three defects is invisible to the test suite. The HTML is well-formed, every content assertion passes, and the pages are correct in every respect a test can express. They are only wrong at a width, or in what a human reads into a sentence. Worth keeping a browser pass in the loop rather than treating the tests as covering this.
a73x commented 2026-08-12 17:58:47 +00:00 (Migrated from git.a73x.sh)

TUI pass done, 2026-08-12, against the rewritten dashboard (07a78a60) captured from a real pty at both 100x30 and 200x45. Both surfaces have now been looked at.

Found and filed: 952390ad — the TUI still renders 2026-08-12T16:57:16.325870642+00:00 in detail panes. b2a57996 fixed exactly this in the web UI and did not touch the TUI, so the two surfaces now disagree about how to print a date.

Verified working:

  • DASHBOARD as of 18:57 — the staleness indicator from 59ab40e8 is present and legible in the header, which is the property that turns a stale screen from silently wrong into merely old.
  • Two-pane layout holds at both widths, borders align, no overdraw.
  • The issue list truncates titles to the pane width rather than wrapping or overflowing. At 200 columns titles are readable; at 100 they cut around 13 characters (TUI is read-o), which is aggressive but honest — it is a 33-column pane, and the detail pane beside it carries the full title.
  • Labels render (Labels: dev-ready), linked patches render.

Caveat on method, worth recording for whoever does this next: my first two capture attempts produced nothing and looked like the app was broken. A pty created without TIOCSWINSZ has size 0x0, and ratatui asks the terminal via ioctl rather than reading $COLUMNS — so it dutifully drew an empty screen. Set the window size on the pty explicitly. The capture script is throwaway but the trap is not.

Still unexamined: the new review keys (c/R/x/a) in a human terminal, and the $EDITOR suspend/restore round trip, which the pty harness covers functionally but nobody has watched. Also 07a78a60 turned wrapping off on the detail pane so the cursor line and the commented line cannot disagree — long diff lines now clip. Correct for anchoring, and a visible change nobody has looked at.

TUI pass done, 2026-08-12, against the rewritten dashboard (07a78a60) captured from a real pty at both 100x30 and 200x45. Both surfaces have now been looked at. **Found and filed:** 952390ad — the TUI still renders `2026-08-12T16:57:16.325870642+00:00` in detail panes. b2a57996 fixed exactly this in the web UI and did not touch the TUI, so the two surfaces now disagree about how to print a date. **Verified working:** - `DASHBOARD as of 18:57` — the staleness indicator from 59ab40e8 is present and legible in the header, which is the property that turns a stale screen from silently wrong into merely old. - Two-pane layout holds at both widths, borders align, no overdraw. - The issue list truncates titles to the pane width rather than wrapping or overflowing. At 200 columns titles are readable; at 100 they cut around 13 characters (`TUI is read-o`), which is aggressive but honest — it is a 33-column pane, and the detail pane beside it carries the full title. - Labels render (`Labels: dev-ready`), linked patches render. **Caveat on method, worth recording for whoever does this next:** my first two capture attempts produced nothing and looked like the app was broken. A pty created without `TIOCSWINSZ` has size 0x0, and ratatui asks the terminal via ioctl rather than reading `$COLUMNS` — so it dutifully drew an empty screen. Set the window size on the pty explicitly. The capture script is throwaway but the trap is not. Still unexamined: the new review keys (`c`/`R`/`x`/`a`) in a human terminal, and the $EDITOR suspend/restore round trip, which the pty harness covers functionally but nobody has watched. Also 07a78a60 turned wrapping **off** on the detail pane so the cursor line and the commented line cannot disagree — long diff lines now clip. Correct for anchoring, and a visible change nobody has looked at.
a73x commented 2026-08-14 07:30:17 +00:00 (Migrated from git.a73x.sh)

dashboard driven test passes!

dashboard driven test passes!
a73x commented 2026-08-14 07:32:07 +00:00 (Migrated from git.a73x.sh)

First human-terminal confirmation, 2026-08-14. The user drove the dashboard and successfully commented on an issue — the flow reported in d7158619 and implemented in 3ba51232, working in a real terminal rather than a pty harness or a TestBackend buffer.

That covers the c binding, the $EDITOR suspend and return, and the write landing on the DAG. It is the first behaviour in this surface confirmed by a person all cycle.

Still unseen by anyone, and worth a pass when convenient:

  • The ? overlay at small terminal sizes. It is sized from the widest key plus widest label and clips rather than reflows; only one sizing bug was caught, and only because a pty test happened to notice truncated labels.
  • Footer priority at 80 columns — reasoned from character counts, never surveyed across widths.
  • Wrapping (w toggle, Ctrl-E/Ctrl-Y) on a genuinely long diff line, and the › truncation marker when wrapping is off.
  • C close/reopen, including that the reason lands and an empty buffer abandons.
  • The web UI since the layout fixes: tables no longer force sideways scroll, timestamps are short, the Base column replaced Branch.

Two known unknowns that a terminal would settle quickly: Shift handling assumes the terminal folds Shift into the character (true for crossterm here, unverified under the kitty keyboard protocol), and key release events are unfiltered — a terminal that reports them would now print "does nothing" per release.

**First human-terminal confirmation, 2026-08-14.** The user drove the dashboard and successfully commented on an issue — the flow reported in d7158619 and implemented in 3ba51232, working in a real terminal rather than a pty harness or a TestBackend buffer. That covers the `c` binding, the `$EDITOR` suspend and return, and the write landing on the DAG. It is the first behaviour in this surface confirmed by a person all cycle. Still unseen by anyone, and worth a pass when convenient: - The `?` overlay at small terminal sizes. It is sized from the widest key plus widest label and **clips rather than reflows**; only one sizing bug was caught, and only because a pty test happened to notice truncated labels. - Footer priority at 80 columns — reasoned from character counts, never surveyed across widths. - Wrapping (`w` toggle, `Ctrl-E`/`Ctrl-Y`) on a genuinely long diff line, and the `›` truncation marker when wrapping is off. - `C` close/reopen, including that the reason lands and an empty buffer abandons. - The web UI since the layout fixes: tables no longer force sideways scroll, timestamps are short, the Base column replaced Branch. Two known unknowns that a terminal would settle quickly: Shift handling assumes the terminal folds Shift into the character (true for crossterm here, unverified under the kitty keyboard protocol), and key *release* events are unfiltered — a terminal that reports them would now print "does nothing" per release.
a73x commented 2026-08-14 07:47:14 +00:00 (Migrated from git.a73x.sh)

Live-site browser pass, 2026-08-14, against https://git.a73x.sh (Chrome DevTools MCP) after the deploy of 8bbdad3. All four web fixes confirmed in production, not just in tests:

headers:  ID Status Title Author Labels Base Unresolved Updated
sample:   02671b2a  merged  …  a73x  ""  main  ""  2026-08-11 16:08
  • b2a57996 — timestamps render 2026-08-11 16:08, not the 35-character nanosecond form.
  • 850f3b8e — the Branch column is gone; Base shows main.
  • 76c6cb58 — an Unresolved column exists.
  • 8e716471 — at 1280px pageScrollsSideways: false; at 500px still false (docW 485 vs viewport 500) with tableScrollsItself: true and the wrapper at overflow-x: auto. That is the exact defect this issue was opened for, fixed and verified on the deployed site.
  • c43c459d — No closed patches. (31 total — show all), linking to ?filter=all. The flat false "No patches." is gone.

No console errors or warnings on any page visited.

Not covered by this pass: screenshots time out against this host (Page.captureScreenshot timed out), so everything above is measured rather than seen. Layout properties, header text and the absence of horizontal scroll are solid; visual judgement — spacing, alignment, whether the Unresolved column reads well when populated — is not. Every patch on this repo is merged with no unresolved comments, so that column is empty everywhere it appears and has never been seen carrying a number.

The TUI half of this issue is separate: commenting is confirmed working by the user in a real terminal, and the ? overlay, footer widths, wrapping toggle and C close/reopen remain unseen.

**Live-site browser pass, 2026-08-14**, against https://git.a73x.sh (Chrome DevTools MCP) after the deploy of 8bbdad3. All four web fixes confirmed in production, not just in tests: ``` headers: ID Status Title Author Labels Base Unresolved Updated sample: 02671b2a merged … a73x "" main "" 2026-08-11 16:08 ``` - **b2a57996** — timestamps render `2026-08-11 16:08`, not the 35-character nanosecond form. - **850f3b8e** — the Branch column is gone; Base shows `main`. - **76c6cb58** — an Unresolved column exists. - **8e716471** — at 1280px `pageScrollsSideways: false`; at **500px** still `false` (docW 485 vs viewport 500) with `tableScrollsItself: true` and the wrapper at `overflow-x: auto`. That is the exact defect this issue was opened for, fixed and verified on the deployed site. - **c43c459d** — `No closed patches. (31 total — show all)`, linking to `?filter=all`. The flat false "No patches." is gone. No console errors or warnings on any page visited. **Not covered by this pass:** screenshots time out against this host (`Page.captureScreenshot timed out`), so everything above is measured rather than *seen*. Layout properties, header text and the absence of horizontal scroll are solid; visual judgement — spacing, alignment, whether the Unresolved column reads well when populated — is not. Every patch on this repo is merged with no unresolved comments, so that column is empty everywhere it appears and has never been seen carrying a number. The TUI half of this issue is separate: commenting is confirmed working by the user in a real terminal, and the `?` overlay, footer widths, wrapping toggle and `C` close/reopen remain unseen.
a73x commented 2026-08-14 07:53:19 +00:00 (Migrated from git.a73x.sh)

Correction to my previous comment: the Unresolved column does carry numbers and I have now seen it. Screenshots work against this host as JPEG (format: jpeg, quality: 60); it is only PNG that times out. Live at 1280px: 21a2f08d: 6, 46368211: 5, 659f0350: 14, rendered in amber, blank where zero. I had written that it was empty everywhere it appears — that was inferred from this repo's patches all being merged, and it was wrong.

Seeing the page also surfaced something measurement did not: a test patch I believed deleted was live on the public site. Filed separately.

Correction to my previous comment: **the Unresolved column does carry numbers** and I have now seen it. Screenshots work against this host as JPEG (`format: jpeg, quality: 60`); it is only PNG that times out. Live at 1280px: `21a2f08d: 6`, `46368211: 5`, `659f0350: 14`, rendered in amber, blank where zero. I had written that it was empty everywhere it appears — that was inferred from this repo's patches all being merged, and it was wrong. Seeing the page also surfaced something measurement did not: a test patch I believed deleted was live on the public site. Filed separately.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
a73x/git-collab#66
No description provided.