Conversation
📝 WalkthroughWalkthroughThis PR adds an optional Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~22 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR defaults all GitHub issue, task, and PR pickers to open items only and adds a "Show closed" checkbox to opt-in to closed/merged results. It also fixes the v2 host-service PR search to correctly distinguish merged PRs (via
Confidence Score: 4/5Safe to merge after addressing the URL-paste regression for closed/merged items. One P1 issue: pasting a URL for a closed issue or merged PR silently returns empty results when showClosed is false. All other findings are P2 style/cleanup. The core feature (open-by-default + Show closed toggle) and the merged-PR detection logic are correct. packages/host-service/src/trpc/router/workspace-creation/workspace-creation.ts — the direct-URL lookup branches for both issues and PRs.
|
| Filename | Overview |
|---|---|
| packages/host-service/src/trpc/router/workspace-creation/workspace-creation.ts | Adds includeClosed to searchGitHubIssues and searchPullRequests; introduces normalizePullRequestState; direct-URL lookup now silently returns empty for closed/merged items when includeClosed is false (P1). |
| apps/desktop/src/lib/trpc/routers/projects/projects.ts | Adds optional includeClosed to listPullRequests, searchPullRequests, and listIssues; gh CLI state flag switches between "open" and "all" correctly. |
| apps/desktop/src/renderer/components/Chat/ChatInterface/components/IssueLinkCommand/IssueLinkCommand.tsx | Adds Show-closed checkbox for local tasks; filter logic is duplicated between Fuse construction and filteredTasks, but functionally correct. |
| apps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsx | Adds Show-closed checkbox; minor wording inconsistency in empty-state messages ("found" vs no "found"). |
| apps/desktop/src/renderer/components/NewWorkspaceModal/components/PromptGroup/components/GitHubIssueLinkCommand/GitHubIssueLinkCommand.tsx | Adds Show-closed checkbox; passes includeClosed to the tRPC query; UI labels update correctly. |
| apps/desktop/src/renderer/components/NewWorkspaceModal/components/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsx | Adds Show-closed checkbox; passes includeClosed to both listPullRequests and searchPullRequests queries. |
| apps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/GitHubIssueLinkCommand/GitHubIssueLinkCommand.tsx | Adds Show-closed checkbox; includeClosed is threaded into the query key and queryFn correctly. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[User opens picker] --> B{showClosed?}
B -- false --> C[Query: is:open filter applied]
B -- true --> D[Query: no state filter]
C --> E{Direct URL paste?}
D --> E
E -- yes, includeClosed=false --> F{item.state === open?}
F -- no --> G[⚠️ Return empty — user sees No items found]
F -- yes --> H[Return item]
E -- yes, includeClosed=true --> H
E -- no --> I[GitHub search / gh CLI list]
I --> J[Results shown in CommandList]
H --> J
Prompt To Fix All With AI
This is a comment left during a code review.
Path: packages/host-service/src/trpc/router/workspace-creation/workspace-creation.ts
Line: 1566-1568
Comment:
**Closed-item URL paste silently returns empty**
When a user pastes a URL for a specific closed issue or merged PR directly into the picker (e.g. `https://github.com/org/repo/issues/42` for a closed issue), the direct-lookup path now returns `{ issues: [] }` unless `includeClosed` is already checked. Since `showClosed` defaults to `false`, the user sees "No issues found" with no hint that the issue exists but is filtered — they must first toggle "Show closed" and then re-paste the URL. This is a surprising regression for the URL-paste workflow, which was previously always able to resolve a specific item by number.
The same applies to the PR path at line 1645.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: apps/desktop/src/renderer/components/Chat/ChatInterface/components/IssueLinkCommand/IssueLinkCommand.tsx
Line: 93-115
Comment:
**Duplicate filter computation**
The closed-status filter is computed in two places: once to build the Fuse index (lines 93–100) and again inside `filteredTasks` for the no-search-query branch (lines 110–115). When a search query is active the results come from `taskFuse`, which already excludes closed items, so the second filter is never needed for that path. Consider deriving a single `visibleTasks` array outside both `useMemo` calls and reusing it as the Fuse input.
How can I resolve this? If you propose a fix, please make it concise.
---
This is a comment left during a code review.
Path: apps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsx
Line: 157-162
Comment:
**Inconsistent empty-state wording**
When a search query is active and nothing is found, the message is `"No open pull requests found."`, but when the list is simply empty with no query the message is `"No open pull requests."` (no "found"). The sibling `NewWorkspaceModal` `PRLinkCommand` uses "No open pull requests." consistently for both cases. Pick one form and apply it uniformly.
How can I resolve this? If you propose a fix, please make it concise.Reviews (1): Last reviewed commit: "fix closed picker filters" | Re-trigger Greptile
| if (!input.includeClosed && issue.state !== "open") { | ||
| return { issues: [] }; | ||
| } |
There was a problem hiding this comment.
Closed-item URL paste silently returns empty
When a user pastes a URL for a specific closed issue or merged PR directly into the picker (e.g. https://github.com/org/repo/issues/42 for a closed issue), the direct-lookup path now returns { issues: [] } unless includeClosed is already checked. Since showClosed defaults to false, the user sees "No issues found" with no hint that the issue exists but is filtered — they must first toggle "Show closed" and then re-paste the URL. This is a surprising regression for the URL-paste workflow, which was previously always able to resolve a specific item by number.
The same applies to the PR path at line 1645.
Prompt To Fix With AI
This is a comment left during a code review.
Path: packages/host-service/src/trpc/router/workspace-creation/workspace-creation.ts
Line: 1566-1568
Comment:
**Closed-item URL paste silently returns empty**
When a user pastes a URL for a specific closed issue or merged PR directly into the picker (e.g. `https://github.com/org/repo/issues/42` for a closed issue), the direct-lookup path now returns `{ issues: [] }` unless `includeClosed` is already checked. Since `showClosed` defaults to `false`, the user sees "No issues found" with no hint that the issue exists but is filtered — they must first toggle "Show closed" and then re-paste the URL. This is a surprising regression for the URL-paste workflow, which was previously always able to resolve a specific item by number.
The same applies to the PR path at line 1645.
How can I resolve this? If you propose a fix, please make it concise.| (allTasks ?? []).filter((task) => { | ||
| if (showClosed) return true; | ||
| const status = task.statusId | ||
| ? statusMap.get(task.statusId) | ||
| : undefined; | ||
| return !isClosedStatus(status?.type); | ||
| }), | ||
| { | ||
| keys: [ | ||
| { name: "slug", weight: 3 }, | ||
| { name: "title", weight: 2 }, | ||
| ], | ||
| threshold: 0.4, | ||
| ignoreLocation: true, | ||
| }, | ||
| ), | ||
| [allTasks, showClosed, statusMap], | ||
| ); | ||
|
|
||
| const filteredTasks = useMemo(() => { | ||
| if (!allTasks?.length) return []; | ||
| const visibleTasks = allTasks.filter((task) => { | ||
| if (showClosed) return true; |
There was a problem hiding this comment.
The closed-status filter is computed in two places: once to build the Fuse index (lines 93–100) and again inside filteredTasks for the no-search-query branch (lines 110–115). When a search query is active the results come from taskFuse, which already excludes closed items, so the second filter is never needed for that path. Consider deriving a single visibleTasks array outside both useMemo calls and reusing it as the Fuse input.
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/renderer/components/Chat/ChatInterface/components/IssueLinkCommand/IssueLinkCommand.tsx
Line: 93-115
Comment:
**Duplicate filter computation**
The closed-status filter is computed in two places: once to build the Fuse index (lines 93–100) and again inside `filteredTasks` for the no-search-query branch (lines 110–115). When a search query is active the results come from `taskFuse`, which already excludes closed items, so the second filter is never needed for that path. Consider deriving a single `visibleTasks` array outside both `useMemo` calls and reusing it as the Fuse input.
How can I resolve this? If you propose a fix, please make it concise.| : repoMismatch | ||
| ? `PR URL must match ${repoMismatch}.` | ||
| : debouncedTrimmed | ||
| ? "No pull requests found." | ||
| : "No pull requests found."} | ||
| ? showClosed | ||
| ? "No pull requests found." | ||
| : "No open pull requests found." |
There was a problem hiding this comment.
Inconsistent empty-state wording
When a search query is active and nothing is found, the message is "No open pull requests found.", but when the list is simply empty with no query the message is "No open pull requests." (no "found"). The sibling NewWorkspaceModal PRLinkCommand uses "No open pull requests." consistently for both cases. Pick one form and apply it uniformly.
Prompt To Fix With AI
This is a comment left during a code review.
Path: apps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsx
Line: 157-162
Comment:
**Inconsistent empty-state wording**
When a search query is active and nothing is found, the message is `"No open pull requests found."`, but when the list is simply empty with no query the message is `"No open pull requests."` (no "found"). The sibling `NewWorkspaceModal` `PRLinkCommand` uses "No open pull requests." consistently for both cases. Pick one form and apply it uniformly.
How can I resolve this? If you propose a fix, please make it concise.There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/desktop/src/renderer/components/NewWorkspaceModal/components/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsx (1)
188-211:⚠️ Potential issue | 🟡 MinorEmpty-state copy doesn't tell the user closed PRs are filtered out when they search.
When
showClosed=falseand the user has typed a query with no results, the message is a flat"No pull requests found."— the siblingDashboardNewWorkspaceModal/PRLinkCommand.tsxhandles this by saying"No open pull requests found."in the same state, which is a clearer hint. Also minor:"No open pull requests."(Line 200) drops the trailing"found"that the other branches include. Consider aligning the wording across both pickers.Suggested consolidation
- : debouncedTrimmed - ? "No pull requests found." - : showClosed - ? "No pull requests found." - : "No open pull requests."} + : showClosed + ? "No pull requests found." + : "No open pull requests found."}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/desktop/src/renderer/components/NewWorkspaceModal/components/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsx` around lines 188 - 211, Update the empty-state copy logic in PRLinkCommand (PRLinkCommand.tsx) so the message for the case when showClosed is false and the user has typed a query (debouncedTrimmed true) explicitly mentions “open” PRs and mirrors the sibling component wording; specifically adjust the CommandEmpty branches that build messages using isLoading, debouncedTrimmed, isCrossRepositoryUrl, and showClosed so the “no results” text becomes “No open pull requests found.” (and keep the existing “No open pull requests found.” or “No pull requests found.” consistency across other branches) ensuring the same phrasing used in DashboardNewWorkspaceModal/PRLinkCommand.tsx is applied.
🧹 Nitpick comments (2)
apps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/GitHubIssueLinkCommand/GitHubIssueLinkCommand.tsx (1)
158-165: Redundant nested ternary — both branches produce the same output.The
debouncedTrimmedbranch and the!debouncedTrimmedbranch here resolve to the identical pair of strings, so the outer conditional has no effect. Collapse to a singleshowClosedcheck.Proposed simplification
- : debouncedTrimmed - ? showClosed - ? "No issues found." - : "No open issues found." - : showClosed - ? "No issues found." - : "No open issues found."} + : showClosed + ? "No issues found." + : "No open issues found."}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/GitHubIssueLinkCommand/GitHubIssueLinkCommand.tsx` around lines 158 - 165, The nested ternary inside the CommandEmpty JSX in GitHubIssueLinkCommand.tsx is redundant because both debouncedTrimmed branches produce the same strings; replace the entire conditional expression that currently uses debouncedTrimmed and showClosed with a single check on showClosed (e.g., showClosed ? "No issues found." : "No open issues found.") so CommandEmpty renders the same text without the unnecessary debouncedTrimmed branch.apps/desktop/src/renderer/components/Chat/ChatInterface/components/IssueLinkCommand/IssueLinkCommand.tsx (1)
90-130: Optional: extract the open/closed filter to avoid duplicating the predicate.The same
showClosed+isClosedStatus(statusMap.get(task.statusId)?.type)filter runs in bothtaskFuse(Lines 93-99) andfilteredTasks(Lines 114-118). Extracting a single memoizedvisibleTaskskeeps the two paths in sync and drops one scan ofallTasks.Sketch
+ const visibleTasks = useMemo(() => { + if (!allTasks?.length) return []; + if (showClosed) return allTasks; + return allTasks.filter((task) => { + const status = task.statusId ? statusMap.get(task.statusId) : undefined; + return !isClosedStatus(status?.type); + }); + }, [allTasks, showClosed, statusMap]); + const taskFuse = useMemo( () => - new Fuse( - (allTasks ?? []).filter((task) => { - if (showClosed) return true; - const status = task.statusId - ? statusMap.get(task.statusId) - : undefined; - return !isClosedStatus(status?.type); - }), - { ... }, - ), - [allTasks, showClosed, statusMap], + new Fuse(visibleTasks, { ... }), + [visibleTasks], ); const filteredTasks = useMemo(() => { - if (!allTasks?.length) return []; - const visibleTasks = allTasks.filter((task) => { ... }); if (!searchQuery) { return visibleTasks.sort(...).slice(0, MAX_RESULTS); } return taskFuse.search(searchQuery, { limit: MAX_RESULTS }).map((r) => r.item); - }, [allTasks, searchQuery, showClosed, statusMap, taskFuse]); + }, [visibleTasks, searchQuery, taskFuse]);🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@apps/desktop/src/renderer/components/Chat/ChatInterface/components/IssueLinkCommand/IssueLinkCommand.tsx` around lines 90 - 130, The open/closed filtering logic is duplicated in taskFuse and filteredTasks; extract it into a single memoized visibleTasks using useMemo (dependant on allTasks, showClosed, statusMap, isClosedStatus) and use that in both taskFuse (replace (allTasks ?? []).filter(...) with visibleTasks) and filteredTasks (use visibleTasks for the no-search branch and for creating taskFuse results), keeping the same sort/limit (MAX_RESULTS) and preserving taskFuse, filteredTasks, and MAX_RESULTS identifiers and their existing useMemo dependency lists.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In
`@apps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsx`:
- Around line 159-165: The nested ternary in PRLinkCommand using
debouncedTrimmed and showClosed is redundant and inconsistent ("No open pull
requests." lacks "found."); replace the whole expression with a single check on
showClosed and make both branches end with "found." — e.g. use showClosed ? "No
pull requests found." : "No open pull requests found." — remove the outer
ternary on debouncedTrimmed and ensure the strings are used where the current
nested ternary is returned.
---
Outside diff comments:
In
`@apps/desktop/src/renderer/components/NewWorkspaceModal/components/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsx`:
- Around line 188-211: Update the empty-state copy logic in PRLinkCommand
(PRLinkCommand.tsx) so the message for the case when showClosed is false and the
user has typed a query (debouncedTrimmed true) explicitly mentions “open” PRs
and mirrors the sibling component wording; specifically adjust the CommandEmpty
branches that build messages using isLoading, debouncedTrimmed,
isCrossRepositoryUrl, and showClosed so the “no results” text becomes “No open
pull requests found.” (and keep the existing “No open pull requests found.” or
“No pull requests found.” consistency across other branches) ensuring the same
phrasing used in DashboardNewWorkspaceModal/PRLinkCommand.tsx is applied.
---
Nitpick comments:
In
`@apps/desktop/src/renderer/components/Chat/ChatInterface/components/IssueLinkCommand/IssueLinkCommand.tsx`:
- Around line 90-130: The open/closed filtering logic is duplicated in taskFuse
and filteredTasks; extract it into a single memoized visibleTasks using useMemo
(dependant on allTasks, showClosed, statusMap, isClosedStatus) and use that in
both taskFuse (replace (allTasks ?? []).filter(...) with visibleTasks) and
filteredTasks (use visibleTasks for the no-search branch and for creating
taskFuse results), keeping the same sort/limit (MAX_RESULTS) and preserving
taskFuse, filteredTasks, and MAX_RESULTS identifiers and their existing useMemo
dependency lists.
In
`@apps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/GitHubIssueLinkCommand/GitHubIssueLinkCommand.tsx`:
- Around line 158-165: The nested ternary inside the CommandEmpty JSX in
GitHubIssueLinkCommand.tsx is redundant because both debouncedTrimmed branches
produce the same strings; replace the entire conditional expression that
currently uses debouncedTrimmed and showClosed with a single check on showClosed
(e.g., showClosed ? "No issues found." : "No open issues found.") so
CommandEmpty renders the same text without the unnecessary debouncedTrimmed
branch.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: 71c59778-4f73-4696-ae2f-3a3cffbe27d2
📒 Files selected for processing (7)
apps/desktop/src/lib/trpc/routers/projects/projects.tsapps/desktop/src/renderer/components/Chat/ChatInterface/components/IssueLinkCommand/IssueLinkCommand.tsxapps/desktop/src/renderer/components/NewWorkspaceModal/components/PromptGroup/components/GitHubIssueLinkCommand/GitHubIssueLinkCommand.tsxapps/desktop/src/renderer/components/NewWorkspaceModal/components/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsxapps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/GitHubIssueLinkCommand/GitHubIssueLinkCommand.tsxapps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsxpackages/host-service/src/trpc/router/workspace-creation/workspace-creation.ts
| : debouncedTrimmed | ||
| ? "No pull requests found." | ||
| : "No pull requests found."} | ||
| ? showClosed | ||
| ? "No pull requests found." | ||
| : "No open pull requests found." | ||
| : showClosed | ||
| ? "No pull requests found." | ||
| : "No open pull requests."} |
There was a problem hiding this comment.
Minor wording inconsistency + mostly-redundant outer ternary.
Three of the four branches say "...found." but "No open pull requests." (Line 165) drops the trailing "found.". Beyond consistency, note that the showClosed arms on both sides of debouncedTrimmed produce the same "No pull requests found." — the outer ternary only differentiates the !showClosed case. Easy to collapse:
Proposed simplification
- : debouncedTrimmed
- ? showClosed
- ? "No pull requests found."
- : "No open pull requests found."
- : showClosed
- ? "No pull requests found."
- : "No open pull requests."}
+ : showClosed
+ ? "No pull requests found."
+ : "No open pull requests found."}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In
`@apps/desktop/src/renderer/routes/_authenticated/components/DashboardNewWorkspaceModal/components/DashboardNewWorkspaceForm/PromptGroup/components/PRLinkCommand/PRLinkCommand.tsx`
around lines 159 - 165, The nested ternary in PRLinkCommand using
debouncedTrimmed and showClosed is redundant and inconsistent ("No open pull
requests." lacks "found."); replace the whole expression with a single check on
showClosed and make both branches end with "found." — e.g. use showClosed ? "No
pull requests found." : "No open pull requests found." — remove the outer
ternary on debouncedTrimmed and ensure the strings are used where the current
nested ternary is returned.
# Conflicts: # packages/host-service/src/trpc/router/workspace-creation/workspace-creation.ts
There was a problem hiding this comment.
🧹 Nitpick comments (1)
packages/host-service/src/trpc/router/workspace-creation/procedures/search-pull-requests.ts (1)
61-63: Nit: double space in the built query whenincludeClosedis true.When
stateFilteris"", the template yieldsrepo:... is:pr ${effectiveQuery}with two spaces betweenis:prand the query;.trim()only strips leading/trailing whitespace, not internal. GitHub's search API tolerates it, so this is purely cosmetic, but a small tweak keeps the constructed query tidy:♻️ Optional cleanup
- const stateFilter = input.includeClosed ? "" : " is:open"; - const query = - `repo:${repo.owner}/${repo.name} is:pr${stateFilter} ${effectiveQuery}`.trim(); + const stateFilter = input.includeClosed ? "" : "is:open"; + const query = [ + `repo:${repo.owner}/${repo.name}`, + "is:pr", + stateFilter, + effectiveQuery, + ] + .filter(Boolean) + .join(" ");🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@packages/host-service/src/trpc/router/workspace-creation/procedures/search-pull-requests.ts` around lines 61 - 63, The constructed query string in search-pull-requests.ts can contain a double space when stateFilter is an empty string (caused by `stateFilter` + `effectiveQuery`), so update the `query` construction (where `stateFilter`, `query`, `includeClosed`, `effectiveQuery`, and `repo.owner`/`repo.name` are used) to avoid inserting an extra space: build the parts conditionally or join non-empty segments (e.g., include the space only when `stateFilter` is non-empty or use an array of segments and .filter(Boolean).join(' ')) so the final `query` has single spacing without relying on .trim().
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In
`@packages/host-service/src/trpc/router/workspace-creation/procedures/search-pull-requests.ts`:
- Around line 61-63: The constructed query string in search-pull-requests.ts can
contain a double space when stateFilter is an empty string (caused by
`stateFilter` + `effectiveQuery`), so update the `query` construction (where
`stateFilter`, `query`, `includeClosed`, `effectiveQuery`, and
`repo.owner`/`repo.name` are used) to avoid inserting an extra space: build the
parts conditionally or join non-empty segments (e.g., include the space only
when `stateFilter` is non-empty or use an array of segments and
.filter(Boolean).join(' ')) so the final `query` has single spacing without
relying on .trim().
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: bcd81c74-4646-469a-bd0b-8f816179dbe1
📒 Files selected for processing (3)
packages/host-service/src/trpc/router/workspace-creation/procedures/search-github-issues.tspackages/host-service/src/trpc/router/workspace-creation/procedures/search-pull-requests.tspackages/host-service/src/trpc/router/workspace-creation/schemas.ts
✅ Files skipped from review due to trivial changes (1)
- packages/host-service/src/trpc/router/workspace-creation/schemas.ts
🧹 Preview Cleanup CompleteThe following preview resources have been cleaned up:
Thank you for your contribution! 🎉 |
upstream の 10 commits は #426 と #427 で fork 固有の差分を保ちながら個別に cherry-pick 取り込み済み。本 merge は ours strategy で **記録だけ** マージ済みに することで behind=0 を達成し、git 履歴上の追跡を正しくする。 Cherry-pick 取り込み済 (PR #426): - 5aab22a fix closed picker filters (superset-sh#3702) → cdb52f9 - 99db5be [codex] simplify workspace controls (superset-sh#3714) → f079606 - 186078a fix(chat): prevent ask_user question from shadowing sandbox access prompt (superset-sh#3662) → 09d6b57 - 47893c2 fix desktop workspace creation title clamp (superset-sh#3718) → 6a8c4ae - 09323ff Add diff pane file viewer action (superset-sh#3715) → 817ed8d - a5891c6 remove pending launch log (superset-sh#3721) → 0764d03 - c83de0c Add Tiptap table support (superset-sh#3719) → e67a885 - 486b621 [codex] Fix v2 terminal lifecycle after sleep (superset-sh#3711) → b71fbbb (+ #426 内 review fixups) Cherry-pick 取り込み済 (PR #427): - e07aef6 feat(desktop): play v2 notification hooks client-side (superset-sh#3675) → 27ac18a - eae6008 [codex] Port v2 terminal hotkeys to v1 (superset-sh#3724) → 05a77b8 (+ #427 内 Windows .ps1 v2 化) Fork 固有領域は変更ゼロで保持: 19 tRPC procedures (workspaces.githubExtended)、 AudioScheduler / Aivis TTS / notification-manager、terminal suggestion handler (新 terminalKeyboardHandler.ts に移植)、TERMINAL_OPTIONS、SUPERSET_WORKSPACE_NAME、 MainWindowEffects、INCEPTION_AUTH_PROVIDER_ID、v1MigrationState、TiptapPromptEditor、 electron-builder.ts (dmg.size="4g", fileAssociations)、Service Status Dashboard、 Linux daemon systemd、Worktree auto-sync、Windows support、DnD scratch route 他。
What changed
Show closedcheckbox to include closed issues/tasks/PRs on demand.merged_atand displayed asmergedrather than plainclosed.includeClosedbehavior through the legacy desktopprojectstRPC picker endpoints.Why
Closed items were appearing in picker results by default, and REST/search PR results did not distinguish merged PRs from closed PRs. That made the v2 PR picker/status UI lose useful state and made closed work too easy to select accidentally.
Validation
bun run --cwd packages/host-service typecheckbun run --cwd apps/desktop typecheckbunx @biomejs/biome@2.4.2 check ...on touched filesSummary by cubic
Default GitHub issue, PR, and local task pickers now show only open items by default. Added a “Show closed” toggle and ensured merged PRs are labeled correctly.
Bug Fixes
host-servicePR state usesmerged_atto show “merged” instead of “closed”; direct number lookups exclude closed items whenincludeClosedis false.New Features
includeClosedflag acrosshost-serviceand desktopprojectsendpoints, switching GitHub queries between open and all.Written for commit acac6bc. Summary will update on new commits.
Summary by CodeRabbit