From cdc8852aacc2308cceac016661ddd4d54767464b Mon Sep 17 00:00:00 2001 From: PostHog Code Date: Wed, 20 May 2026 15:40:57 +0000 Subject: [PATCH 1/2] feat(code): scope initial task suggestions by repo Stamp each enricher- and discovery-agent-produced suggestion with the repo it was generated for, and filter `SuggestedTasksPanel` on the new task page so only suggestions matching the currently selected repo are shown. Suggestions persisted before this change have no `repoPath` and remain visible for backward compatibility until the next discovery run. Generated-By: PostHog Code Task-Id: a1a33388-f634-43c0-b2df-a732145fb162 --- .../setup/services/setupRunService.ts | 22 ++++++++++++++----- .../code/src/renderer/features/setup/types.ts | 6 +++++ .../components/SuggestedTasksPanel.tsx | 15 +++++++++++-- .../task-detail/components/TaskInput.tsx | 5 ++++- 4 files changed, 39 insertions(+), 9 deletions(-) diff --git a/apps/code/src/renderer/features/setup/services/setupRunService.ts b/apps/code/src/renderer/features/setup/services/setupRunService.ts index 920ccc082..0bea52059 100644 --- a/apps/code/src/renderer/features/setup/services/setupRunService.ts +++ b/apps/code/src/renderer/features/setup/services/setupRunService.ts @@ -272,13 +272,19 @@ export class SetupRunService { }); if (installState === "initialized") { - useSetupStore - .getState() - .addEnricherSuggestionIfMissing(buildSdkHealthSuggestion()); + useSetupStore.getState().addEnricherSuggestionIfMissing({ + ...buildSdkHealthSuggestion(), + repoPath: directory, + }); await this.injectStaleFlagSuggestions(directory); } else { const suggestion = buildPosthogSetupSuggestion(installState); - useSetupStore.getState().addEnricherSuggestionIfMissing(suggestion); + useSetupStore + .getState() + .addEnricherSuggestionIfMissing({ + ...suggestion, + repoPath: directory, + }); } useSetupStore.getState().completeEnrichment(); } catch (err) { @@ -297,7 +303,10 @@ export class SetupRunService { }); const store = useSetupStore.getState(); for (const flag of flags) { - store.addEnricherSuggestionIfMissing(buildStaleFlagSuggestion(flag)); + store.addEnricherSuggestionIfMissing({ + ...buildStaleFlagSuggestion(flag), + repoPath: directory, + }); } } catch (err) { log.warn("Failed to find stale flag suggestions", { error: err }); @@ -423,7 +432,8 @@ export class SetupRunService { taskCount: tasks.length, signalSource, }); - useSetupStore.getState().completeDiscovery(tasks); + const tasksWithRepo = tasks.map((t) => ({ ...t, repoPath: directory })); + useSetupStore.getState().completeDiscovery(tasksWithRepo); track(ANALYTICS_EVENTS.SETUP_DISCOVERY_COMPLETED, { discovery_task_id: task.id, discovery_task_run_id: taskRun.id, diff --git a/apps/code/src/renderer/features/setup/types.ts b/apps/code/src/renderer/features/setup/types.ts index 90bbe8e6f..ee50745f9 100644 --- a/apps/code/src/renderer/features/setup/types.ts +++ b/apps/code/src/renderer/features/setup/types.ts @@ -17,6 +17,12 @@ export interface DiscoveredTask { | "posthog_setup" | "experiment"; source: DiscoveredTaskSource; + // The repo this suggestion was produced for — a local filesystem path for + // local-workspace runs, or "org/repo" for cloud runs. Stamped at the time + // the suggestion is created so the new task page can filter suggestions + // when the selected repo changes. Optional for backward compatibility with + // suggestions persisted before this field existed. + repoPath?: string; file?: string; lineHint?: number; impact?: string; diff --git a/apps/code/src/renderer/features/task-detail/components/SuggestedTasksPanel.tsx b/apps/code/src/renderer/features/task-detail/components/SuggestedTasksPanel.tsx index 74d762fe8..3f32b4a0a 100644 --- a/apps/code/src/renderer/features/task-detail/components/SuggestedTasksPanel.tsx +++ b/apps/code/src/renderer/features/task-detail/components/SuggestedTasksPanel.tsx @@ -26,10 +26,21 @@ const LOG_FEED_PADDING = 16; interface SuggestedTasksPanelProps { onSelect: (task: DiscoveredTask) => void; + // The repo currently selected on the new task page. Suggestions are only + // shown if their `repoPath` matches this value. Suggestions persisted + // before the field existed (no `repoPath`) are shown unconditionally so + // existing users don't lose their inbox until the next discovery run. + repoPath?: string | null; } -export function SuggestedTasksPanel({ onSelect }: SuggestedTasksPanelProps) { - const discoveredTasks = useSetupStore((s) => s.discoveredTasks); +export function SuggestedTasksPanel({ + onSelect, + repoPath, +}: SuggestedTasksPanelProps) { + const allDiscoveredTasks = useSetupStore((s) => s.discoveredTasks); + const discoveredTasks = repoPath + ? allDiscoveredTasks.filter((t) => !t.repoPath || t.repoPath === repoPath) + : allDiscoveredTasks; const discoveryStatus = useSetupStore((s) => s.discoveryStatus); const enricherStatus = useSetupStore((s) => s.enricherStatus); const discoveryFeed = useSetupStore((s) => s.discoveryFeed); diff --git a/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx b/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx index eb00b588c..8e3f70cb2 100644 --- a/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx +++ b/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx @@ -837,7 +837,10 @@ export function TaskInput({ )} - + From 0c77b6ca3e1909a88f761609cbde998d6fb3b595 Mon Sep 17 00:00:00 2001 From: PostHog Code Date: Wed, 20 May 2026 15:57:36 +0000 Subject: [PATCH 2/2] chore(code): fix biome formatting on enricher suggestion call Generated-By: PostHog Code Task-Id: a1a33388-f634-43c0-b2df-a732145fb162 --- .../features/setup/services/setupRunService.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/apps/code/src/renderer/features/setup/services/setupRunService.ts b/apps/code/src/renderer/features/setup/services/setupRunService.ts index 0bea52059..5e5288ab9 100644 --- a/apps/code/src/renderer/features/setup/services/setupRunService.ts +++ b/apps/code/src/renderer/features/setup/services/setupRunService.ts @@ -279,12 +279,10 @@ export class SetupRunService { await this.injectStaleFlagSuggestions(directory); } else { const suggestion = buildPosthogSetupSuggestion(installState); - useSetupStore - .getState() - .addEnricherSuggestionIfMissing({ - ...suggestion, - repoPath: directory, - }); + useSetupStore.getState().addEnricherSuggestionIfMissing({ + ...suggestion, + repoPath: directory, + }); } useSetupStore.getState().completeEnrichment(); } catch (err) {