You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
planning: add jump-to-question and search for large interviews #5915
With 100+ questions there is no way to go straight to a question by number or find one by a word. No URL hash selects a question. The page never reads location.hash. The keyboard sheet maps "/" to the Show filter (index.html:493), and the filter offers only All, Open, Review, Pending and Answered. Each rail button's accessible name is its whole card (id, title, every "needs" chip, every state chip, the Claude preview; railItem, index.html:729-754), which is long for screen-reader navigation.
Expected
Typing a number or words jumps to or filters questions, and #Q100 in the URL opens Q100.
Suggested fix
Add a search box to the rail toolbar that matches id, short title and title, and bind "/" to it.
Read location.hash on load and on hashchange and call select() (index.html:1521); write the hash in select().
Give .qbtn an aria-label of id, short title and state, and move the rest into aria-describedby.
Acceptance criteria
Typing "100" then Enter selects Q100; typing "merge" filters to questions containing it.
Routing: human-gated, status: needs-decision, work-class: scoped (C3, feature), priority: medium (assessed default). The direction is clear, but it adds a new control and changes an existing key binding, so three small interaction choices need the owner before a worker builds it.
Verified against current code:
The page never reads or writes location.hash. Basis: verified, no match for location.hash or hashchange in plugins/planning/surface/index.html.
"/" focuses the Show filter (All, Open, Review, Pending, Answered), and the keyboard sheet documents it as "Filter". Basis: verified, index.html:406, index.html:493, index.html:2059.
Each rail button's accessible name is its whole card: id, title, every chip and the Claude preview. Basis: verified, index.html:729-754 (railItem).
Where I looked: the rail toolbar, railItem, select(), the key handler and keyboard sheet, and docs/out-of-scope/ (no match). DEFERRED.md parks nothing similar. #5796 and #5795 both list this item as out of their scope, so there is no cluster.
Open decisions:
The "/" key. Move "/" to the new search box, as the issue asks, and give the Show filter another unused key (RECOMMENDED; "f" is already Full-screen visual), or keep "/" on the filter and give search a different key. Moving it changes a documented shortcut.
Search with the Show filter. RECOMMENDED: search narrows within the current Show filter (both apply), and the rail says when the filter hides matches. The alternative is that search ignores the Show filter while text is typed.
Writing the hash. RECOMMENDED: select() replaces the hash (no new history entry per question), so Back leaves the page as today. The alternative pushes a history entry per selection, so Back walks the questions.
Once these are answered, this can go to agent-ready with the brief below.
Agent Brief
Type: Feature Summary: In a large interview, the user can jump to a question by number, filter the rail by words, and open a question from the URL hash.
Current behavior:
The rail offers only the Show filter. No URL selects a question, and each rail button's accessible name is the whole card.
Desired behavior (pending the decisions above):
A search box in the rail toolbar matches question id, short title and title. Typing a number and pressing Enter selects that question; typing words filters the rail to matching questions.
The search key and the filter key follow decision 1, and the keyboard sheet lists both.
Search and the Show filter combine per decision 2.
Loading the page with #Q100 selects Q100; a hashchange selects the named question; selecting a question updates the hash per decision 3. An unknown id in the hash leaves the selection unchanged.
Each rail button's accessible name is its id, short title and state; the other card content moves to an accessible description.
Key interfaces:
The rail toolbar and its key bindings.
select(): reads and writes the hash.
railItem: accessible name and description of each rail button.
Acceptance criteria:
Typing "100" then Enter selects Q100; typing "merge" filters the rail to questions containing it.
Loading /#Q100 selects Q100.
Each rail button's accessible name is id, short title and state.
UI tests in the planning surface test suite cover search, hash load and the accessible name.
Decision recorded. The owner approved applying independently verified recommendations on 2026-10-12.
Which key opens search, and where does the Show filter go? → Move '/' to search and give the Show filter another unused key
Basis: planning: add jump-to-question and search for large interviews #5915 triage decision 1; index.html:406,493,2059 cited there (verified at triage); judgment for the convention
Wants a rail search box, '#Q100' URL hash selection, and shorter accessible names for rail buttons. Needs-decision on three small interaction choices; nothing is built yet (no location.hash use on main).
Owner batch-ratified this admission in an attended session on 2026-10-12: work-class: scoped. Rule: class C1-C3, no trust surface, the independent check confirmed the recorded decision, and no owner step remains.
The work-resolve-issue lane stopped partway through this issue and needs a person.
Why, in the run's own words:
The run reported done but left a required check undone, so it is not finished.
What the run says it did not do:
check-affected's shellcheck step failed with exit 3 on plugins/planning/surface/surface-checks.sh: the installed shellcheck prints its usage text and does not accept the --rcfile option the check passes. This run's only edit to that file is a number (162 to 171), so the failure comes from the enviro
The Playwright UI checks (surface-ui-c.test.sh, including the 9 new checks) were not run: this run's shell allowed only the named wrapper scripts, so the new tests are unexecuted and the page was not loaded in a browser.
The changelog fragment was written by hand because new-changelog-fragment refuses a detached HEAD; it passes check-changelog-fragments.
chmod +x on the changed .sh file could not be run in this shell; the file's existing mode was kept by the edit.
Partial work is on the branch work-resolve-issue/issue-5915-39426047058-1. A retry continues from it; delete the branch first to start again from the default branch.
Activity
kyle-sexton commentedon Oct 4, 2026
This was generated by AI during triage.
Routing: human-gated,
status: needs-decision,work-class: scoped(C3, feature),priority: medium(assessed default). The direction is clear, but it adds a new control and changes an existing key binding, so three small interaction choices need the owner before a worker builds it.Verified against current code:
location.hash. Basis: verified, no match forlocation.hashorhashchangein plugins/planning/surface/index.html.railItem).Where I looked: the rail toolbar,
railItem,select(), the key handler and keyboard sheet, anddocs/out-of-scope/(no match).DEFERRED.mdparks nothing similar. #5796 and #5795 both list this item as out of their scope, so there is no cluster.Open decisions:
select()replaces the hash (no new history entry per question), so Back leaves the page as today. The alternative pushes a history entry per selection, so Back walks the questions.Once these are answered, this can go to
agent-readywith the brief below.Agent Brief
Type: Feature
Summary: In a large interview, the user can jump to a question by number, filter the rail by words, and open a question from the URL hash.
Current behavior:
The rail offers only the Show filter. No URL selects a question, and each rail button's accessible name is the whole card.
Desired behavior (pending the decisions above):
#Q100selects Q100; ahashchangeselects the named question; selecting a question updates the hash per decision 3. An unknown id in the hash leaves the selection unchanged.Key interfaces:
select(): reads and writes the hash.railItem: accessible name and description of each rail button.Acceptance criteria:
/#Q100selects Q100.Out of scope:
kyle-sexton commentedon Oct 13, 2026
Decision recorded. The owner approved applying independently verified recommendations on 2026-10-12.
Basis: planning: add jump-to-question and search for large interviews #5915 triage decision 1; index.html:406,493,2059 cited there (verified at triage); judgment for the convention
Basis: planning: add jump-to-question and search for large interviews #5915 triage decision 2; judgment
Basis: planning: add jump-to-question and search for large interviews #5915 triage decision 3; judgment
Wants a rail search box, '#Q100' URL hash selection, and shorter accessible names for rail buttons. Needs-decision on three small interaction choices; nothing is built yet (no location.hash use on main).
Verified by an independent fresh-context check (confirmed, risk low): gh issue view 5915 (OPEN, needs-decision, triage decisions 1-3); origin/main index.html:414 (filter aria-keyshortcuts '/'), :505 keyboard sheet ('/' Filter, 'f' Full-screen visual), :2104 ('/' focuses filter), :1029 Full screen (f); git grep location.hash/hashchange origin/main index.html: none
Admission to an agent lane stays with the work-class rules and owner ratification.
kyle-sexton commentedon Oct 13, 2026
Owner batch-ratified this admission in an attended session on 2026-10-12: work-class: scoped. Rule: class C1-C3, no trust surface, the independent check confirmed the recorded decision, and no owner step remains.
melodic-automation-lanes commentedon Oct 20, 2026
The work-resolve-issue lane stopped partway through this issue and needs a person.
Why, in the run's own words:
What the run says it did not do:
Partial work is on the branch
work-resolve-issue/issue-5915-39426047058-1. A retry continues from it; delete the branch first to start again from the default branch.Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/39426047058
To retry, remove
needs-humanand addagent-readyagain.