Skip to content

feat(web,mobile): list working Factory Droid subagents in the sidebar - #8

Draft
jhomra21 wants to merge 23 commits into
feat/provider-droid-nextfrom
feat/sidebar-working-subagents
Draft

jhomra21 wants to merge 23 commits into
feat/provider-droid-nextfrom
feat/sidebar-working-subagents

Conversation

@jhomra21

@jhomra21 jhomra21 commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Problem

While a Factory Droid parent runs subagents in the background, the web sidebar and the mobile thread list show only the parent. The working subagents can't be opened from the list. A subagent that hasn't started its provider run also reads as idle, because its shell status comes only from runs.

Change

  • isThreadListed in packages/client-runtime/src/state/subagentDisplay.ts lists a subagent whose provider is Factory Droid while its runtime status is starting, running or waiting. It checks the provider's driver kind, so renamed instances work. A settled Droid subagent, and every other provider's subagent, stays nested under its parent as before.
  • The web sidebar (Sidebar.logic.ts, Sidebar.tsx, useSidebarProjectGroups.ts, routeReveal.ts), the command palette's thread list (CommandPalette.logic.ts) and the mobile thread list and ordering (threadListV2.ts, thread-order.ts) all use that rule, so the lists match. Each caller passes the environment's provider list, which clients already load, so no wire change is needed.
  • ProjectionStore.ts uses a subagent's run-less root_turn node for its status until the subagent has a run. This covers both threadShellFromProjection and the SQL shell query, and the live-shell index now includes those threads. The SQL lookup goes through the existing (thread_id, run_id) index on projection nodes.
  • shellRuntime in models.ts keeps that status instead of returning no runtime for a thread without a run.

Scope and approval

This depends on the native Factory Droid provider PR and falls under the same Ideas discussion. (Ideas discussion: pingdotgg#27369) It changes which threads the sidebar lists, so it needs that approval.

Against the provider branch, the diff is 20 files: the visibility rule and run-less status in client-runtime, the web sidebar and command palette, the mobile thread list and ordering, and the projection store, with their tests. Showing a subagent's reported effort in its hover card is a separate PR.

Verification

  • vp env exec --node 26.12.1 -- vp test run apps/web/src/components/Sidebar.logic.test.ts packages/client-runtime/src/state/entities.test.ts apps/server/src/orchestration-v2/ProjectionStore.test.ts apps/mobile/src/features/threads/threadListV2.test.ts: 191 passed. The tests cover listing only working Droid subagents, a Droid instance with a custom ID, a non-Droid instance whose ID contains "droid", settled subagents, and run-less status in both memory and SQL shells. The mobile ordering and action tests passed another 43.
  • Typecheck of client-runtime, web, mobile and server: passed.
  • vp env exec --node 26.12.1 -- vp run check:changed: format, lint, knip, GraphQL, typecheck of 37 packages and React Compiler checks passed. Its tests had one failure, a provider-droid symlink test that needs Windows symlink permission (EPERM), and browser tests couldn't start because Playwright Chromium isn't installed here.
  • After merging upstream main c8a606c7b7, which also changed ProjectionStore.ts, the apps/server typecheck passed and ProjectionStore.test.ts passed 45 tests.
  • Mutation checks on the pre-merge branch: removing the isThreadListed filter made lists only active Droid subagents list a settled Droid child and an active Codex child. Removing the run-less status made memory shells use run-less subagent root activity read idle instead of running.
  • Not checked: browser tests (Playwright Chromium isn't installed on this machine), the native mobile app, and an integrated pass in a real client after the merge.

These screenshots predate the upstream merge. "Before" ran on the provider branch, and "after" on a fork branch that includes this change. A Droid parent starts subagents in the background.

Before: only the parent is listed while its subagents work After: the working subagents are listed, and the parent waits on them
Before: the sidebar lists the parent thread as Working and no subagent rows After: the sidebar lists two working subagent threads alongside the parent

Built with Claude Opus 5.5 orchestrating GPT-6 Luna workers through Factory Droid in T3 Code. Upstream preparation by GPT-6.1 Terra and GPT-6 Luna, orchestrated by Claude Opus 5.5, through Factory Droid in T3 Code.

@github-actions github-actions Bot added the vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. label Oct 16, 2026
Show working Droid subagents in the sidebar and thread list (web and mobile),
keep a run-less subagent thread active before its provider thread exists, and
carry the Task complexity as optional effort metadata for the hover card.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
@jhomra21
jhomra21 force-pushed the feat/sidebar-working-subagents branch from b3dab21 to ab1a695 Compare October 18, 2026 14:47
@jhomra21
jhomra21 force-pushed the feat/provider-droid-next branch from 46c0130 to 7e42eba Compare October 18, 2026 14:47
@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Thread transfer impact

⚠️ The latest CI run did not produce a thread transfer result for ab1a695.

This comment will update automatically after the next completed run.

jhomra21 and others added 3 commits October 29, 2026 20:11
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
@github-actions github-actions Bot added size:XL and removed size:L labels Oct 30, 2026
@jhomra21
jhomra21 marked this pull request as draft October 30, 2026 02:32
jhomra21 and others added 3 commits October 29, 2026 21:33
Move provider-reported effort fallback out of sidebar visibility PR #8 so each contribution addresses one problem.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
@github-actions github-actions Bot added size:L and removed size:XL labels Oct 30, 2026
@jhomra21 jhomra21 changed the title feat(web): list working subagents in the sidebar with their effort feat(web, mobile): list working subagents before their provider run Oct 30, 2026
@jhomra21 jhomra21 changed the title feat(web, mobile): list working subagents before their provider run fix(web): show a subagent's reported effort in its hover card Oct 30, 2026
@jhomra21 jhomra21 changed the title fix(web): show a subagent's reported effort in its hover card feat(web,mobile): list working Factory Droid subagents in the sidebar Oct 30, 2026
jhomra21 and others added 7 commits October 29, 2026 22:39
Provider instance names do not reliably identify the driver. Use the provider list for each environment to determine which working subagents are listed across clients.

Built with GPT-6.1 Terra through Factory Droid in T3 Code.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
jhomra21 and others added 9 commits October 30, 2026 18:20
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant