Repository navigation
feat(web): close and reopen an issue from its detail panel - #1424
Merged
Merged
Conversation
4 tasks done
donjor
force-pushed
the
t3code/issues-close-reopen
branch
from
September 29, 2026 20:50
da534f3 to
f37ede2
Compare
donjor
force-pushed
the
t3code/issues-close-reopen
branch
2 times, most recently
from
September 29, 2026 22:50
93fc111 to
629b581
Compare
donjor
force-pushed
the
t3code/issues-close-reopen
branch
from
September 29, 2026 22:54
629b581 to
497360c
Compare
donjor
force-pushed
the
t3code/issues-close-reopen
branch
2 times, most recently
from
September 29, 2026 23:14
38d8d68 to
64b21b5
Compare
donjor
force-pushed
the
t3code/issues-close-reopen
branch
2 times, most recently
from
September 29, 2026 23:35
912aa6b to
a69e719
Compare
donjor
force-pushed
the
t3code/issues-close-reopen
branch
2 times, most recently
from
September 29, 2026 23:58
ad69e56 to
315bd78
Compare
donjor
force-pushed
the
t3code/issues-close-reopen
branch
from
September 30, 2026 00:07
315bd78 to
81e3d4d
Compare
donjor
force-pushed
the
t3code/issues-close-reopen
branch
2 times, most recently
from
September 30, 2026 00:23
1040612 to
349906c
Compare
Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
force-pushed
the
t3code/issues-close-reopen
branch
from
September 30, 2026 00:32
349906c to
c44a3f6
Compare
donjor
added a commit
that referenced
this pull request
Oct 2, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> 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's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 2, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> 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's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 2, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> 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's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 3, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 3, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 3, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 3, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 3, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 3, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> 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's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
pushed a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> 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's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> 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's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> 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's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 4, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> 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's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 6, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 8, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 8, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
donjor
added a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue actions menu can close and reopen the issue, like the Pull Request panel's close. | Issue state | Menu items | | --- | --- | | **Open** | Close as completed, Close as not planned | | **Closed** | Reopen issue | ### Server - **RPC:** new `githubIssues.setState` - **CLI:** `gh issue close|reopen N --repo host/repo` - **Reason:** `--reason` on a close only - **Scope:** Operate, like other write RPCs - **Gate:** new `githubIssueStateChange` capability - **Older server:** no state items in the menu ### Client - **Afterwards:** the detail and the list re-read - **Failure:** error toast with the CLI's message - **No confirmation:** Reopen is one click away - **Docs:** user and fork guides drop "read-only" ## Why Closing an issue once the work landed meant leaving for GitHub. The PR panel already closes its pull request in place. ## UI Changes | Before | After, open issue | After, closed issue | | --- | --- | --- | |  |  |  | Evidence stops at the menu: a live close would change a real issue. Focused server tests cover the exact `gh` arguments and the unauthenticated error. **Before:** open issue, then closed issue; no state items https://github.com/user-attachments/assets/f020ae33-7aa6-48a8-b201-d4ef700a9816 **After:** same flow; Close items on the open issue, Reopen on the closed one https://github.com/user-attachments/assets/fbb20f24-0573-4f99-84aa-cf11a86c7e95 ## Checks ```text tsc --noEmit (web, server, client-runtime, contracts) → exit 0 vp test run GitHubIssueService.test.ts → exit 0 (15 tests) vp test run githubIssue components + issues page → exit 0 (52 tests) vp lint (changed files) → exit 0 vp run fork:ci → exit 0 (after the gate) ``` ## 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 #1423. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no <!-- gh-bot:edit-attest {"v":2,"repo":"RSI-Software/t3code-hyprws","ref":"t3code/issues-narrow-controls@162a045","build":"1d98cf90","agents":[{"role":"host","iface":"claude","provider":"anthropic","model":"claude-opus-5-5","effort":"high","harness":"[email protected]","session":"7bf97c33c682"}],"ts":"2026-09-29T22:50:50Z"} --> Co-authored-by: donjor <[email protected]>
donjor
pushed a commit
that referenced
this pull request
Oct 10, 2026
> 🤖 claude/anthropic claude-opus-5-5 (high) ## What Changed The issue list's control row wraps as two groups, not item by item. - **Top group:** project scope and search - **Bottom group:** filter, state, projects, order, refresh - **Wide pane:** both groups share one line - **Narrow pane:** controls move under the search together - **Never:** one control stranded on its own line ## Why Each control wrapped on its own, so the break point depended on the pane's exact width. At 900px Refresh sat alone on a second line; at 1100px Newest and Refresh did. ## UI Changes | Width | Before | After | | --- | --- | --- | | 1100 |  |  | | 900 |  |  | | 700 |  |  | **Before:** window narrows from 1100 to 700 https://github.com/user-attachments/assets/79737a53-e871-41cc-bd4d-1c18339dfda8 **After:** same resize https://github.com/user-attachments/assets/95964a45-3357-4421-951c-4ced770cd9a2 ## Checks ```text tsc --noEmit (apps/web) → exit 0 vp test run -issuesPage.test.tsx → exit 0 (5 tests) vp lint _chat.issues.tsx → 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 #1424. Opus 5.5 via Claude Code in T3 Code. ## Fork trailers Squashes: - 62e8eec fix(web): issue controls wrap as one group on a narrow pane (#1425) (#1425) - ad501e5 fix(web): issue controls never strand one control on a narrow pane (#1455) (#1455) Fork-Domain: github-issues Fork-Tier: qol Fork-Upstreamable: no
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 issue actions menu can close and reopen the issue, like the Pull Request panel's close.
Server
githubIssues.setStategh issue close|reopen N --repo host/repo--reasonon a close onlygithubIssueStateChangecapabilityClient
Why
Closing an issue once the work landed meant leaving for GitHub.
The PR panel already closes its pull request in place.
UI Changes
Evidence stops at the menu: a live close would change a real issue.
Focused server tests cover the exact
gharguments and the unauthenticated error.Before: open issue, then closed issue; no state items
state-before.mp4
After: same flow; Close items on the open issue, Reopen on the closed one
state-after.mp4
Checks
Checklist
Stacked on #1423.
Opus 5.5 via Claude Code in T3 Code.
Fork trailers
Fork-Domain: github-issues
Fork-Tier: qol
Fork-Upstreamable: no