You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Issue links open in the right panel instead of switching to the Issues page #120
What: Clicking a GitHub Issue link in a thread opens the Issue in the thread's right panel, the way pull request links do, and leaves the main view on the thread. Why: Both the chat link handler and the thread's linked-Issues panel call useOpenIssueInIssuesView, which navigates the whole app to the Issues page. So what: Prism builds the fix in one PR; the user checks it in the desktop app.
Outcome
From a thread, clicking an Issue link (in chat markdown or in the linked Issues list) shows that Issue's detail in the right panel next to the thread. The main view stays on the thread. The Issues page itself keeps opening Issues in its own side panel as today.
Elon record
Requirements and who asked: Open Issues in the right panel like PRs, without switching the main view (user, 2026-10-01).
Deleted: Navigating to the Issues page from a thread.
Bottleneck: None; the Issue detail panel already exists on the Issues page and the right panel already hosts pull requests.
Checked myself:apps/web/src/components/issues/useOpenIssueOrPullRequestLink.ts:42-55 (navigates to the Issues view), its use at :77,125 for chat links and in ThreadIssueLinks.tsx:185-188 for the linked-Issues list.
Acceptance criteria
Clicking an Issue link in a thread's chat opens its detail in the right panel and the main view stays on the thread.
Clicking an Issue in the thread's linked Issues list does the same.
Pull request links keep their current behaviour, and the Issues page keeps its own side panel.
The panel can be closed, and opening another Issue replaces it.
Non-goals
Changing the Issues page.
Mobile.
Blocked by
None
Required proof
Focused tests for the opening logic where it is logic, plus before and after screenshots from the desktop app.
What:PR #124 implements Issue links beside their thread in one PR against main. Why: The inherited draft had the correct routing approach; persisted targets needed validation and the linked row's accessible label needed correction. So what: The coordinator verifies the installed desktop build, then merges in the stated sibling order.
Branch: fix/120-issue-links-right-panel. Workspace: /Users/lukaszmaj/dev/toolboxmd/chromeria-worktrees/120-issue-links-right-panel. Base: 0db8b3f. Head: fbc2ad5, clean and pushed. No merge authority, no versioning by design.
Independent reviewer: sub.sub.46b03420-8643-4703-8756-8602f14b39fb.dispatcher-1e496a050956.reviewer-65c7c19dadbe. Clean exact-head verdict, verified review/independent success by lukemaj. Opus UI takeover: sub.sub.46b03420-8643-4703-8756-8602f14b39fb.dispatcher-1e496a050956.4478c42e5994, explicitly claudeAgent / claude-opus-5-5, reviewed 670b0e7 and committed the final accessible-label correction.
Requirements and who asked: User and #120: chat/list Issue links beside the thread, preserved PR and Issues-page behavior, replacement/close, focused proof and screenshots. Deleted: Whole-app navigation from thread Issue links, duplicate detail UI, mobile and version-policy changes. Bottleneck: Routing and final proof, using the existing detail panel and one exclusive source writer at a time. Checked myself: Full inherited diff, source consumers, actual baseline navigation and candidate chat/list/replacement/close/PR behavior; exact Git/GitHub head and independent status.
Primary T3 Browser pass used worktree-local .t3, VACUUM INTO snapshot, sanitized projections and a normal GitHub-linked fixture repository under .t3 (partial-clone remote suffix breaks existing identity parser). Baseline click left the thread for the Issues page. Final candidate chat and linked list retain the thread URL and open Issue #120; Issue #113 replaces the singleton; closing returns to remaining tabs; PR #112 retains its panel; Issues page retains its side detail. Web and Electron-shared UI apply; mobile is excluded. Providers/contracts unchanged; remote environment behavior uses existing tested resolver, no real remote server was exercised.
Screenshot paths and reversible assumptions are in PR #124. All six uploaded screenshots are embedded in PR #124. Installed-desktop verification remains coordinator-owned under the common brief. UI has no known in-scope gaps; Issue-body markdown links without thread context retain existing navigation outside requested entry points. CI is running. Nothing merged, installed or deployed.
Final CI correction at fbc2ad5: removed useOpenIssueInIssuesView export after rg confirmed no external consumer, and obsolete ThreadLinksPanel test mock. Opus passed 89 tests across ThreadLinksPanel.test.tsx, issueLinkOpening.logic.test.ts, issueLinks.logic.test.ts and ChatMarkdown.test.tsx; web typecheck; touched-file lint/format; scoped knip --workspace apps/web --exports (exit 0). Exact-head independent review is success by lukemaj. Final-head CI is running with no failures yet. Dev server stopped via retained session 79006 after proof. Observer publication succeeded but sync failed twice with database is locked, so measurement cutoff is stale (19:32 UTC), recorded in PR.
Activity
lukemaj commentedon Oct 1, 2026
What: PR #124 implements Issue links beside their thread in one PR against main.
Why: The inherited draft had the correct routing approach; persisted targets needed validation and the linked row's accessible label needed correction.
So what: The coordinator verifies the installed desktop build, then merges in the stated sibling order.
Branch: fix/120-issue-links-right-panel. Workspace: /Users/lukaszmaj/dev/toolboxmd/chromeria-worktrees/120-issue-links-right-panel. Base: 0db8b3f. Head: fbc2ad5, clean and pushed. No merge authority, no versioning by design.
Independent reviewer: sub.sub.46b03420-8643-4703-8756-8602f14b39fb.dispatcher-1e496a050956.reviewer-65c7c19dadbe. Clean exact-head verdict, verified review/independent success by lukemaj. Opus UI takeover: sub.sub.46b03420-8643-4703-8756-8602f14b39fb.dispatcher-1e496a050956.4478c42e5994, explicitly claudeAgent / claude-opus-5-5, reviewed 670b0e7 and committed the final accessible-label correction.
Requirements and who asked: User and #120: chat/list Issue links beside the thread, preserved PR and Issues-page behavior, replacement/close, focused proof and screenshots.
Deleted: Whole-app navigation from thread Issue links, duplicate detail UI, mobile and version-policy changes.
Bottleneck: Routing and final proof, using the existing detail panel and one exclusive source writer at a time.
Checked myself: Full inherited diff, source consumers, actual baseline navigation and candidate chat/list/replacement/close/PR behavior; exact Git/GitHub head and independent status.
Implementation proof on 670b0e7
pnpm exec vp test run apps/web/src/rightPanelStore.test.ts apps/web/src/components/issues/issueLinks.logic.test.tsBefore persistence fix: exit 1, 1 failed / 88 passed. Failure: restores valid Issue tabs and discards malformed persisted targets. Expected closed empty panel; malformed id survived.
pnpm exec vp fmt apps/web/src/rightPanelStore.ts apps/web/src/rightPanelStore.test.ts apps/web/src/components/issues/ThreadIssuePanel.tsx apps/web/src/components/issues/issueLinks.logic.test.ts apps/web/src/components/issues/issueLinkOpening.logic.test.ts docs/fork-features.mdExit 0.
pnpm exec vp test run apps/web/src/rightPanelStore.test.ts apps/web/src/components/issues/issueLinks.logic.test.ts apps/web/src/components/issues/issueLinkOpening.logic.test.ts apps/web/src/components/issues/ThreadLinksPanel.test.tsx apps/web/src/threadRoutes.test.ts apps/web/src/lib/openPullRequestLink.test.ts apps/web/src/components/ChatMarkdown.test.tsxExit 0; 7 files, 210 tests passed. Node printed localStorage unavailable experimental warnings in the non-browser test environment.
pnpm exec vp lint apps/web/src/components/ChatMarkdown.tsx apps/web/src/components/ChatView.tsx apps/web/src/components/RightPanelTabs.tsx apps/web/src/components/issues/IssueDetailPanel.tsx apps/web/src/components/issues/IssuesView.tsx apps/web/src/components/issues/ThreadIssueLinks.tsx apps/web/src/components/issues/ThreadIssuePanel.tsx apps/web/src/components/issues/issueLinks.logic.ts apps/web/src/components/issues/issueLinks.logic.test.ts apps/web/src/components/issues/issueLinkOpening.logic.test.ts apps/web/src/components/issues/useOpenIssueOrPullRequestLink.ts apps/web/src/rightPanelStore.ts apps/web/src/rightPanelStore.test.tsExit 0; React warnings in existing ChatMarkdown, ChatView and RightPanelTabs code. No errors.
pnpm exec tsc --noEmit -p apps/web/tsconfig.jsonExit 0; web package only, no output.
pnpm exec vp fmt --check apps/web/src/components/ChatMarkdown.tsx apps/web/src/components/ChatView.tsx apps/web/src/components/RightPanelTabs.tsx apps/web/src/components/issues/IssueDetailPanel.tsx apps/web/src/components/issues/IssuesView.tsx apps/web/src/components/issues/ThreadIssueLinks.tsx apps/web/src/components/issues/ThreadIssuePanel.tsx apps/web/src/components/issues/issueLinks.logic.ts apps/web/src/components/issues/issueLinks.logic.test.ts apps/web/src/components/issues/issueLinkOpening.logic.test.ts apps/web/src/components/issues/useOpenIssueOrPullRequestLink.ts apps/web/src/rightPanelStore.ts apps/web/src/rightPanelStore.test.ts docs/fork-features.mdExit 0; all matched files correctly formatted.
git diff --checkExit 0 before commit.
node scripts/fork-features.mjs checkExit 0; 19 features.
git commit -m "fix(web): open thread issue links in the right panel"Exit 0; staged-file formatter hook passed; 15 files, 327 insertions, 31 deletions.
bash scripts/fork-check.shExit 0 on candidate commit; upstream base de251fc; 49-commit merge-free fork stack; allowlist and feature ownership passed.
Final accessible-label correction at bab5590
Integrated proof and handoff
Primary T3 Browser pass used worktree-local .t3, VACUUM INTO snapshot, sanitized projections and a normal GitHub-linked fixture repository under .t3 (partial-clone remote suffix breaks existing identity parser). Baseline click left the thread for the Issues page. Final candidate chat and linked list retain the thread URL and open Issue #120; Issue #113 replaces the singleton; closing returns to remaining tabs; PR #112 retains its panel; Issues page retains its side detail. Web and Electron-shared UI apply; mobile is excluded. Providers/contracts unchanged; remote environment behavior uses existing tested resolver, no real remote server was exercised.
Screenshot paths and reversible assumptions are in PR #124. All six uploaded screenshots are embedded in PR #124. Installed-desktop verification remains coordinator-owned under the common brief. UI has no known in-scope gaps; Issue-body markdown links without thread context retain existing navigation outside requested entry points. CI is running. Nothing merged, installed or deployed.
Final CI correction at fbc2ad5: removed useOpenIssueInIssuesView export after rg confirmed no external consumer, and obsolete ThreadLinksPanel test mock. Opus passed 89 tests across ThreadLinksPanel.test.tsx, issueLinkOpening.logic.test.ts, issueLinks.logic.test.ts and ChatMarkdown.test.tsx; web typecheck; touched-file lint/format; scoped knip --workspace apps/web --exports (exit 0). Exact-head independent review is success by lukemaj. Final-head CI is running with no failures yet. Dev server stopped via retained session 79006 after proof. Observer publication succeeded but sync failed twice with database is locked, so measurement cutoff is stale (19:32 UTC), recorded in PR.