Repository navigation
feat(web): issues page answers the pull request page's keyboard - #1421
Merged
Merged
Conversation
4 tasks done
donjor
force-pushed
the
t3code/issues-keyboard-parity
branch
from
September 29, 2026 20:50
79a4018 to
6ef32ca
Compare
donjor
force-pushed
the
t3code/issues-keyboard-parity
branch
from
September 29, 2026 22:42
6ef32ca to
cb94af6
Compare
Base automatically changed from
t3code/rework-fork-issues-surface
to
hyprws
September 29, 2026 22:53
Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
force-pushed
the
t3code/issues-keyboard-parity
branch
from
September 29, 2026 22:54
cb94af6 to
191eeb0
Compare
donjor
added a commit
that referenced
this pull request
Sep 29, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Sep 29, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Sep 29, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Sep 29, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Sep 29, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Sep 30, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Sep 30, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Sep 30, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Sep 30, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 1, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 1, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 1, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 1, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 2, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 2, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 2, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 2, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 8, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 8, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 11, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 11, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 11, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 11, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 12, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 12, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 12, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 12, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list keeps its rows while a new state or search loads, like the Pull Requests list. - **Held rows:** the last answer for the same projects stands in - **Narrowed:** held rows filter to the new state and search terms - **Search terms:** title, number, repository, author, labels - **Qualifiers:** `label:bug` and the like stay GitHub's to apply - **Marked:** rows dim; the group header says what is loading - **Ghosts:** only when nothing held fits, or a first load - **No false empty:** a narrowed-to-nothing carry shows ghosts, not "No issues" The carry is a pure helper with focused tests; `useGitHubIssueList` returns `carried` beside `data`. ## Why Every new state or search was a new query that started empty, so the whole list blanked to skeletons for a few seconds. The rows the reader already had were the best answer until GitHub replied. ## UI Changes | Before | After | | --- | --- | |  |  | |  |  | **Before:** Open to All, then search; the list blanks each time https://github.com/user-attachments/assets/fec4ef5c-abe5-48c8-bf52-a9092617e503 **After:** same flow; rows stay and narrow in place https://github.com/user-attachments/assets/8365227c-1205-4008-b32f-9a1b7a54867c ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run carry logic + issues page → exit 0 (10 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1421. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no Co-authored-by: donjor <[email protected]>
donjor
added a commit
that referenced
this pull request
Oct 13, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issues page answers the same keys as the Pull Requests page. | Key | Does | | --- | --- | | **Mod+F** | Focuses and selects the issue search | | **↓ in search** | Steps into the first row | | **↑ / ↓ on a row** | Moves between rows; ↑ on the first returns to search | | **Home / End** | First or last row | | **Enter** | Opens the focused row (unchanged) | | **Mod+W** | Closes the open issue (`rightPanel.close`) | | **Mod+Shift+C** | Copies the open issue's link (`thread.copyReference`) | - Close and copy read the user's keybindings, like the PR page - The thread's issues panel keeps arrow keys only; the thread owns the rest - The focus step is a pure helper with its own tests ## Why The page has no ChatView, so shared panel shortcuts did nothing there. A reader could search but never reach a result without the mouse. ## UI Changes | Row focus | Link copied | | --- | --- | |  |  | **Before:** the same key sequence; nothing moves, so Enter opens nothing https://github.com/user-attachments/assets/f3bfd9a2-ec6e-40ac-9614-f5d5c5b55ed6 **After:** search, step down, open, copy, close, back to search https://github.com/user-attachments/assets/6e9d7db1-1992-4050-bec7-eb51c86785ff ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run keyboard logic + issues page → exit 0 (9 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 ``` ## Checklist - [x] This PR is small and focused - [x] I explained what changed and why - [x] I included before/after screenshots for any UI changes - [x] I included a video for animation/interaction changes Stacked on #1420. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-keyboard-parity@79a4018","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T09:22:43Z"} --> Co-authored-by: donjor <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
The issues page answers the same keys as the Pull Requests page.
rightPanel.close)thread.copyReference)Why
The page has no ChatView, so shared panel shortcuts did nothing there.
A reader could search but never reach a result without the mouse.
UI Changes
Before: the same key sequence; nothing moves, so Enter opens nothing
keyboard-before.mp4
After: search, step down, open, copy, close, back to search
keyboard-after.mp4
Checks
Checklist
Stacked on #1420.
Opus 5.5 via Claude Code in T3 Code.
Fork trailers
Fork-Domain: github-issues
Fork-Tier: qol
Fork-Upstreamable: no