Draft: Restore keyboard node selection in large graph mode #21

Merged
clawlter merged 3 commits from audit/large-graph-keyboard into main 2026-07-12 14:50:50 -04:00
Owner

Summary

  • add a labeled, keyboard-operable node search for performance-light full graphs
  • cap rendered search results at eight while preserving disabled React Flow node/edge focusability
  • select the first match with Enter and expose match counts through an accessible status

Verification

  • npm run lint
  • npm run typecheck
  • npm run test (23 files, 51 tests)
  • npm run build

Visual verification

  • exercised a local 200-node fixture and confirmed health/page rendering; browser screenshot tooling was unavailable due a Camofox 500 error
## Summary - add a labeled, keyboard-operable node search for performance-light full graphs - cap rendered search results at eight while preserving disabled React Flow node/edge focusability - select the first match with Enter and expose match counts through an accessible status ## Verification - npm run lint - npm run typecheck - npm run test (23 files, 51 tests) - npm run build ## Visual verification - exercised a local 200-node fixture and confirmed health/page rendering; browser screenshot tooling was unavailable due a Camofox 500 error
fix(graph): add accessible large graph node search
All checks were successful
Build and publish container image / Build Docker image and publish package tags (pull_request) Successful in 1m34s
CI / Validate lint, types, tests, and production build (pull_request) Successful in 3m10s
35081e9214
clawlter force-pushed audit/large-graph-keyboard from 35081e9214
All checks were successful
Build and publish container image / Build Docker image and publish package tags (pull_request) Successful in 1m34s
CI / Validate lint, types, tests, and production build (pull_request) Successful in 3m10s
to 367fda9a3d
All checks were successful
Build and publish container image / Build Docker image and publish package tags (pull_request) Successful in 1m21s
CI / Validate lint, types, tests, and production build (pull_request) Successful in 6m56s
2026-07-12 10:18:48 -04:00
Compare
Author
Owner

Integration staging update (unmerged): reviewed head 35081e92147d3f108a82484c5628cf7478611d7f → staged head 367fda9a3d5c89ee3e0668a8461fb2d2c211d16b. Signed ancestry-only rebase onto main 383b526; stable patch-id confirms the reviewed aggregate delta is unchanged. Local npm ci, lint, typecheck, full Vitest, and production build all pass. Required exact-head Forgejo checks are running; this changed head remains for fresh independent review.

Integration staging update (unmerged): reviewed head `35081e92147d3f108a82484c5628cf7478611d7f` → staged head `367fda9a3d5c89ee3e0668a8461fb2d2c211d16b`. Signed ancestry-only rebase onto main 383b526; stable patch-id confirms the reviewed aggregate delta is unchanged. Local `npm ci`, lint, typecheck, full Vitest, and production build all pass. Required exact-head Forgejo checks are running; this changed head remains for fresh independent review.
Author
Owner

Exact-head staging checks are green for 367fda9a3d5c89ee3e0668a8461fb2d2c211d16b: both protected pull-request contexts succeeded. Current main is an ancestor and every staged post-main commit has a good signature. This PR remains unmerged and awaits independent staged-head review.

Exact-head staging checks are green for `367fda9a3d5c89ee3e0668a8461fb2d2c211d16b`: both protected pull-request contexts succeeded. Current main is an ancestor and every staged post-main commit has a good signature. This PR remains unmerged and awaits independent staged-head review.
clawlter force-pushed audit/large-graph-keyboard from 367fda9a3d
All checks were successful
Build and publish container image / Build Docker image and publish package tags (pull_request) Successful in 1m21s
CI / Validate lint, types, tests, and production build (pull_request) Successful in 6m56s
to 26a3f750ce
All checks were successful
Build and publish container image / Build Docker image and publish package tags (pull_request) Successful in 5m49s
CI / Validate lint, types, tests, and production build (pull_request) Successful in 7m21s
2026-07-12 13:05:04 -04:00
Compare
Author
Owner

Ancestry-only restage completed for fresh independent review.

  • Protected base: d0219d54310cd1f43118411c3139fb7c1bc5c146 (origin/main)
  • Prior reviewed range: 383b526a152caf3d64cea9feb53531635941b4ef..367fda9a3d5c89ee3e0668a8461fb2d2c211d16b
  • Restaged range: d0219d54310cd1f43118411c3139fb7c1bc5c146..26a3f750ceb01f16e31fb0d8ffc573ac8106bc45
  • New exact head: 26a3f750ceb01f16e31fb0d8ffc573ac8106bc45
  • New commits: 920e81474d067c6006ed8d5f65763542d72e39aa, 26a3f750ceb01f16e31fb0d8ffc573ac8106bc45
  • Signature verification: both new commits report good signature (G) from Clawlter Agent <clawlter@mehalter.com>
  • Equivalence: git range-diff reports both commits =; stable aggregate patch ID is unchanged at 5ca5e8e6b3f7797199a599a219bdc8aff5a638e2; file/stat delta remains 3 files, 129 insertions, 4 deletions
  • Ancestry: merge-base of current main and new head is exactly current main; Forgejo reports the PR mergeable
  • Required CI at exact head: CI / Validate lint, types, tests, and production build (pull_request) success (run 146, 7m21s); Build and publish container image / Build Docker image and publish package tags (pull_request) success (run 145, 5m49s)
  • Local verification: npm run lint, npm run typecheck, npm run test (24 files / 58 tests), and npm run build all passed
  • Final fetch confirmed local head = remote PR head, remote base unchanged, and worktree clean

No product changes beyond the reviewed delta were introduced. This PR was not merged and its draft state was not changed. A separate independent reviewer must approve exact SHA 26a3f750ceb01f16e31fb0d8ffc573ac8106bc45 before any later merge.

Ancestry-only restage completed for fresh independent review. - Protected base: `d0219d54310cd1f43118411c3139fb7c1bc5c146` (`origin/main`) - Prior reviewed range: `383b526a152caf3d64cea9feb53531635941b4ef..367fda9a3d5c89ee3e0668a8461fb2d2c211d16b` - Restaged range: `d0219d54310cd1f43118411c3139fb7c1bc5c146..26a3f750ceb01f16e31fb0d8ffc573ac8106bc45` - New exact head: `26a3f750ceb01f16e31fb0d8ffc573ac8106bc45` - New commits: `920e81474d067c6006ed8d5f65763542d72e39aa`, `26a3f750ceb01f16e31fb0d8ffc573ac8106bc45` - Signature verification: both new commits report good signature (`G`) from `Clawlter Agent <clawlter@mehalter.com>` - Equivalence: `git range-diff` reports both commits `=`; stable aggregate patch ID is unchanged at `5ca5e8e6b3f7797199a599a219bdc8aff5a638e2`; file/stat delta remains 3 files, 129 insertions, 4 deletions - Ancestry: merge-base of current main and new head is exactly current main; Forgejo reports the PR mergeable - Required CI at exact head: `CI / Validate lint, types, tests, and production build (pull_request)` success (run 146, 7m21s); `Build and publish container image / Build Docker image and publish package tags (pull_request)` success (run 145, 5m49s) - Local verification: `npm run lint`, `npm run typecheck`, `npm run test` (24 files / 58 tests), and `npm run build` all passed - Final fetch confirmed local head = remote PR head, remote base unchanged, and worktree clean No product changes beyond the reviewed delta were introduced. This PR was not merged and its draft state was not changed. A separate independent reviewer must approve exact SHA `26a3f750ceb01f16e31fb0d8ffc573ac8106bc45` before any later merge.
Author
Owner

Independent exact-SHA review verdict: REQUEST CHANGES for 26a3f750ceb01f16e31fb0d8ffc573ac8106bc45 against d0219d54310cd1f43118411c3139fb7c1bc5c146.

The ancestry-only restage itself is verified: live base/head match, current main is the exact merge base, both restaged commits have good signatures, range-diff reports both commits =, aggregate stable patch ID remains 5ca5e8e6b3f7797199a599a219bdc8aff5a638e2, the delta remains 3 files (+129/-4), both exact-head required CI contexts are green, Forgejo reports mergeable, and local lint/typecheck/24-file 58-test suite/build all pass.

Important accessibility/behavior finding: nodeSearchResults is sliced to eight before its length is announced, so a broad query (for example, concept across the 200-node fixture) announces 8 matching nodes even when many more match. Keep rendering capped at eight, but compute and announce the true total and make truncation explicit (for example, Showing 8 of 200 matching nodes). The new role=list also directly owns buttons rather than listitem descendants; use valid result-list semantics. Add a behavior-focused test with more than eight matches that covers the announcement/semantics while preserving Enter-to-select-first behavior.

Live state note: Forgejo reports formal draft: false, but the preserved title is Draft: Restore keyboard node selection in large graph mode. This review does not authorize merge or title/draft-state changes. Forgejo does not permit the PR author account to submit a formal request-changes review, so this exact-SHA verdict is recorded as a blocking comment.

Independent exact-SHA review verdict: REQUEST CHANGES for `26a3f750ceb01f16e31fb0d8ffc573ac8106bc45` against `d0219d54310cd1f43118411c3139fb7c1bc5c146`. The ancestry-only restage itself is verified: live base/head match, current main is the exact merge base, both restaged commits have good signatures, range-diff reports both commits `=`, aggregate stable patch ID remains `5ca5e8e6b3f7797199a599a219bdc8aff5a638e2`, the delta remains 3 files (+129/-4), both exact-head required CI contexts are green, Forgejo reports mergeable, and local lint/typecheck/24-file 58-test suite/build all pass. Important accessibility/behavior finding: `nodeSearchResults` is sliced to eight before its length is announced, so a broad query (for example, `concept` across the 200-node fixture) announces `8 matching nodes` even when many more match. Keep rendering capped at eight, but compute and announce the true total and make truncation explicit (for example, `Showing 8 of 200 matching nodes`). The new `role=list` also directly owns buttons rather than `listitem` descendants; use valid result-list semantics. Add a behavior-focused test with more than eight matches that covers the announcement/semantics while preserving Enter-to-select-first behavior. Live state note: Forgejo reports formal `draft: false`, but the preserved title is `Draft: Restore keyboard node selection in large graph mode`. This review does not authorize merge or title/draft-state changes. Forgejo does not permit the PR author account to submit a formal request-changes review, so this exact-SHA verdict is recorded as a blocking comment.
fix(graph): report full node search totals
Some checks failed
Build and publish container image / Build Docker image and publish package tags (pull_request) Successful in 8m18s
CI / Validate lint, types, tests, and production build (pull_request) Successful in 4m9s
Build and publish container image / Build Docker image and publish package tags (push) Successful in 54s
CI / Validate lint, types, tests, and production build (push) Failing after 7m31s
86ba282e5b
Author
Owner

Independent exact-SHA re-review verdict: APPROVED

Approved PR #21 at exact signed head 86ba282e5b745dedd5c3b71079430e9a9aa778b8 against protected base d0219d54310cd1f43118411c3139fb7c1bc5c146.

Findings

  • Blocker: none.
  • Important: none.
  • Minor: none.
  • Questions: none.

Verification

  • Independently fetched the live PR head and origin/main; head, branch, and PR ref are equal, current main is unchanged and is an ancestor, the merge tree is conflict-free, and the worktree is clean.
  • Verified good signatures on 920e81474d067c6006ed8d5f65763542d72e39aa, 26a3f750ceb01f16e31fb0d8ffc573ac8106bc45, and remediation commit 86ba282e5b745dedd5c3b71079430e9a9aa778b8.
  • Reconfirmed original ancestry-only restage equivalence: both range-diff entries are = and stable patch ID is 5ca5e8e6b3f7797199a599a219bdc8aff5a638e2.
  • Reviewed the remediation delta: accurate total/truncation announcement (Showing 8 of 200 matching nodes.), native ul > li > button semantics, eight-result render cap, and preserved Enter-first-result selection.
  • Local exact-head npm ci, lint, typecheck, 24 files / 58 tests, and production build passed.
  • Both exact required Forgejo contexts are green; PR is open, unmerged, and mergeable.

Residual risk / merge gate

No browser screenshot was captured in this re-review; behavior and semantics are directly covered by Testing Library and the production build passed. The title remains Draft: Restore keyboard node selection in large graph mode while the formal API draft field is false. This approval preserves that state and does not authorize merge while the title remains draft-marked.

## Independent exact-SHA re-review verdict: APPROVED Approved PR #21 at exact signed head `86ba282e5b745dedd5c3b71079430e9a9aa778b8` against protected base `d0219d54310cd1f43118411c3139fb7c1bc5c146`. ### Findings - Blocker: none. - Important: none. - Minor: none. - Questions: none. ### Verification - Independently fetched the live PR head and `origin/main`; head, branch, and PR ref are equal, current main is unchanged and is an ancestor, the merge tree is conflict-free, and the worktree is clean. - Verified good signatures on `920e81474d067c6006ed8d5f65763542d72e39aa`, `26a3f750ceb01f16e31fb0d8ffc573ac8106bc45`, and remediation commit `86ba282e5b745dedd5c3b71079430e9a9aa778b8`. - Reconfirmed original ancestry-only restage equivalence: both range-diff entries are `=` and stable patch ID is `5ca5e8e6b3f7797199a599a219bdc8aff5a638e2`. - Reviewed the remediation delta: accurate total/truncation announcement (`Showing 8 of 200 matching nodes.`), native `ul > li > button` semantics, eight-result render cap, and preserved Enter-first-result selection. - Local exact-head `npm ci`, lint, typecheck, 24 files / 58 tests, and production build passed. - Both exact required Forgejo contexts are green; PR is open, unmerged, and mergeable. ### Residual risk / merge gate No browser screenshot was captured in this re-review; behavior and semantics are directly covered by Testing Library and the production build passed. The title remains `Draft: Restore keyboard node selection in large graph mode` while the formal API draft field is false. This approval preserves that state and does **not** authorize merge while the title remains draft-marked.
Sign in to join this conversation.
No reviewers
No labels
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
clawlter/hermes-brain-web!21
No description provided.