Skip to content

refactor(web): project creation, the sidebar filter and wording go back to upstream - #456

Merged
Jacksondr5 merged 4 commits into
j5/mainfrom
fold/projects-back-to-upstream
Oct 8, 2026
Merged

Jacksondr5 merged 4 commits into
j5/mainfrom
fold/projects-back-to-upstream

Conversation

@Jacksondr5

@Jacksondr5 Jacksondr5 commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Problem

After #455 the new-thread doors use upstream's projects, but the sidebar still filters by Squadron, Add Project still opens Create Squadron, and several strings still say Squadron. The plan in #412 retires Squadrons into projects, so project creation, the sidebar filter and that wording go back to upstream.

What changed

Fifth PR of the fold stack, on top of #455.

Back to the upstream pin, with no J5 edit left

  • components/sidebar/SidebarThreadHeader.tsx: the add-folder button says "New project".
  • components/CommandPaletteResults.tsx: "No matching commands, projects, or threads."
  • components/ProjectCloneToastCoordinator.tsx: the finished-clone toast offers "Open project" again.
  • components/pullRequest/PullRequestListEmptyState.tsx: project wording.
  • components/AppSidebarLayout.tsx: the Create Squadron dialog host is gone.

Back to the pin, keeping non-Squadron J5 edits

  • Sidebar.tsx: upstream's project filter is back, with its saved selection, the row menu's "Filter by project" item, upstream's add-project button and upstream's empty state. Kept: archive preflight, the thread card identity, spawned children, and the rule that nests spawned agents.
  • Sidebar.logic.ts: the Squadron empty-state helper goes; the archive helpers stay.
  • commandPaletteBus.ts, CommandPalette.tsx: the Add Project folder carrier (onProjectSelected) and the redirect to Create Squadron go. Add Project creates a project and opens a draft in it. The source picker stays, and is now the palette's only J5 edit.
  • ChatView.tsx: the post-launch refresh added in refactor(web): new-thread doors and drafts go back to upstream's projects #455 goes, because the sidebar no longer filters by Squadron home.

Removed from the app

  • Create, Rename and Delete Squadron, and the Squadron filter dropdown.
  • J5 files under j5/squadron/: SquadronScopeDropdown, SquadronCreateDialog, SquadronCreateForm, SquadronCreate.logic, SquadronCreateRequest, SquadronRenameDialog, SquadronDeleteDialog, SquadronActions.logic, refreshAfterSquadronChange, SquadronDraftState, SquadronScope.logic, refreshAfterThreadLaunch, with their tests. renameSquadron and deleteSquadron leave squadronClient.ts.

Staying until later PRs

  • ThreadHomesClient, trimmed to one hook. The rule that nests spawned agents (register D22) still reads the Squadron home's origin, so Sidebar.tsx keeps one useThreadHomes call. It goes with the migration PR.
  • SquadronDirectory, which Fleet, the Inbox, the playbook author picker and onboarding read.

Behavior notes

  • A person can no longer rename or delete a Squadron in the app. A Squadron the server creates is named after its project and is never shown, so nothing visible is lost.
  • Onboarding can no longer create a second Squadron for a project. The welcome wizard's Squadron stage stays until refactor(web): onboarding goes back to upstream's three stages #457. For a folder whose project already has a Squadron it now uses that one and does not offer "New Squadron"; the final button judges that same choice; and the import creates nothing for it. A create whose answer was lost, and which has since appeared in the directory for that project, is used rather than left for the person to resolve. The match is by project, never by name. That was the one door left in the app that could put two Squadrons on one project.
  • Repair path for one rare case. A project that two Squadrons reference refuses new threads. No install we know of has that, and the ledger migration refuses it by name. Anyone who hits it can still delete the extra Squadron through the server's route, POST /api/j5/squadrons/<squadronId>/delete, which is unchanged. That route refuses while the Squadron has unarchived agents or live Crews, so those have to be archived first.
  • The sidebar's project filter selection is separate from the old Squadron filter. A Squadron filter selection is not carried over; the list starts on all projects, or on whatever project filter was saved before.
  • Drafts show under a project filter again, as upstream does. Under a Squadron filter they were hidden.

UI changes

Captured by the tester on the base branch and on this PR, with the same data and viewport.

Sidebar header, no filter. Upstream's project filter and "New project" button, where the Squadron dropdown and "New Squadron" were.

Before After
Before After

Sidebar filtered to one project. Crew seats still nest under their Captain.

Before After
Before After

Thread row menu. "Filter by project" is back.

Before After
Before After

The add button's tooltip. "New project".

Before After
Before After

Add Project. Before: the Create Squadron dialog. After: upstream's Add Project palette.

Before After
Before After

Add Project's folder picker.

Before After
Before After

No projects. Upstream's empty state.

Before After
Before After

Pull-request list, empty. Project wording, where it said folder.

Before After
Before After

Palette with no results. "No matching commands, projects, or threads."

Before After
Before After

Welcome wizard, a folder whose project already has a Squadron. The row keeps that Squadron and the import button is enabled. With the select closed the two look the same; the change is that its list no longer has a "New Squadron" option, which the tester confirmed by opening it.

Before After
Before After

Welcome wizard, a new folder. It still offers "New Squadron" with a name field.

Before After
Before After

Adding a project and landing in its draft.

Before After
Before After
Dark theme and 390px captures of the same states

Sidebar header, no filter, dark.

Before After
Before After

Sidebar filtered to one project, dark.

Before After
Before After

Sidebar filter at 390px, light.

Before After
Before After

Sidebar filter at 390px, dark.

Before After
Before After

Thread row menu, dark.

Before After
Before After

Add button tooltip, dark.

Before After
Before After

Add Project, dark.

Before After
Before After

Folder picker, dark.

Before After
Before After

No projects at 390px, light.

Before After
Before After

No projects, dark.

Before After
Before After

No projects at 390px, dark.

Before After
Before After

Empty pull-request list at 390px, light.

Before After
Before After

Empty pull-request list, dark.

Before After
Before After

Empty pull-request list at 390px, dark.

Before After
Before After

Palette with no results, dark.

Before After
Before After

Wizard, folder with an existing Squadron, dark.

Before After
Before After

Wizard, new folder, at 390px, light.

Before After
Before After

Wizard, new folder, dark.

Before After
Before After

Wizard, new folder, at 390px, dark.

Before After
Before After

Limits of this evidence:

  • Not triggered: the finished-clone toast with its "Open project" action.
  • Not exercised: the "Open WSL folder" action, the desktop app, and more than one environment. The test host has none of those.
  • Seen on the base too: a completed provider plan shows no Implement control, so the plan door stays unverified live (see refactor(web): new-thread doors and drafts go back to upstream's projects #455).

Upstream impact

Each file above is upstream-owned. FORK.md changes:

  • Retired: cases 13 (Add Project carrier and redirect), 16 (Create Squadron doors), 17 (palette empty copy), 18 (Create Squadron folder copy).
  • Case 19: one remainder is left, the persona fan-out refusal.
  • Case 9: shrinks to the server's route aggregate.
  • Case 23: the membership rule is applied in Sidebar.tsx and fed by one useThreadHomes call.
  • Case 34: loses its sidebar mount.
  • Case 39: records the onboarding guard.
  • File table: rows removed for the five files that match the pin and for both PullRequestListEmptyState rows (the .test.tsx row pointed at a file that does not exist). SidebarThreadHeader.tsx never had a row; it matches the pin now, so it needs none.

Register (docs/j5/product/upstream.md): D8 shrinks to the server-side rules that remain (the archive and merge-back Squadron checks), which end with the migration. D9 no longer mentions Create Squadron. The decision is Jackson's, in the plan for #412.

Checklist

  • One concern: the description has no "also"
  • Tests cover the changed behavior (backend changes ship with focused tests). Upstream's tests cover the restored logic; J5 tests for removed logic are removed. The onboarding guard has four new tests in onboardingSquadrons.logic.test.ts.
  • UI changes: before/after screenshots above, and a video for motion or interaction
  • Upstream-owned files: each one is recorded in FORK.md (case text and file-table row) in this PR
  • Upstream product: any change to what upstream's product does has a human decision linked above and a register entry in docs/j5/product/upstream.md
  • Surfaces: entry points, clients, providers, contracts, reverse states, connection modes (see AGENTS.md)
  • Docs: definitions under docs/j5/product/ and user docs rewritten where this changes them. The Squadron feature definition is left for the stack's docs PR, per the plan.

Surfaces walked

  • Entry points for Add Project: the sidebar's add button, the palette's "Add project" and "Open WSL folder" actions, the no-projects screen, the pull-request list's empty state, and the legacy sidebar's button. All reach upstream's flow now.
  • Entry points for the filter: the header combobox and the row menu's "Filter by project".
  • Clients: web and desktop. Mobile is out of scope for this stack.
  • Providers: not provider-shaped.
  • Contracts: unchanged. The Squadron rename and delete calls stay in packages/client-runtime and the contracts, unused by web.
  • Reverse states: picking the filtered project again in the row menu clears the filter, as upstream does. Squadron delete has no UI; the repair path is above.
  • Connection modes: the project filter is upstream's and already groups a project across machines.
  • Docs: FORK.md and the register, as above.

Verification

  • vp test run src/components/Sidebar.logic.test.ts src/components/CommandPalette.logic.test.ts src/components/ChatView.logic.test.ts src/j5 in apps/web: 46 files, 599 tests pass.
  • tsc --noEmit in apps/web: no errors.
  • vp lint on the changed files: no errors.
  • git diff <pin> is empty for the five verbatim files.
  • Live, by the tester: Add Project from the sidebar, the palette, the no-projects screen and the pull-request list's empty state; the project filter, which survives a reload and toggles from the row menu; Crew nesting with and without a filter; a draft showing under its project's filter; the Skills source picker returning a folder without creating a project; a first send in a new project creating its Squadron; onboarding for a folder with an existing Squadron ending with exactly one Squadron in the database.

Claude Opus 5.5 (1M context), Claude Code harness.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Oct 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
j5-code Ready Ready Preview Oct 8, 2026 1:53am UTC

Request Review

@github-actions github-actions Bot added the size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). label Oct 4, 2026
@Jacksondr5
Jacksondr5 force-pushed the fold/projects-back-to-upstream branch from aa8eb31 to 70a3002 Compare October 4, 2026 22:28
@github-actions github-actions Bot added the vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. label Oct 4, 2026
@Jacksondr5
Jacksondr5 marked this pull request as ready for review October 4, 2026 23:09
@Jacksondr5
Jacksondr5 added this pull request to stack #471 October 5, 2026 19:53

@bryantderosier bryantderosier left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed this as part of the 454–457 stack. No code defects and no security issues. Everything here is stale docs/comment text, and all of it is still wrong at the top of the stack.

  • FORK.md case 15b (line 101) still says the onProjectSelected folder carrier (case 13) is unchanged. This PR deletes it.
  • FORK.md case 42 (line 295) rebase check still says to verify the "SQ1 callbacks", which are gone.
  • FORK.md case 23 doesn't record the Sidebar edits for child-row rename and section (renamingChildThreadKey, childSection), and says useThreadRowReads gets "the visible rows" when Sidebar.tsx passes every thread. A sync that follows case 23 as written would drop those edits.
  • D9 says the person "never creates, names or sees a Squadron", but Squadron names still show in the playbook author picker (PlaybookLibrarySettings.tsx) and as the Fleet/Inbox fallback when no project resolves. Carve those out or record the loss.
  • Nit: the SquadronDirectory.ts comment says the read is shared by "the gate and every scope control". Both are gone.

Comment thread FORK.md Outdated
22. B4's typed confirmation presentation seam: `apps/web/src/confirmDialog.ts:4-31,92-158` extends only the in-memory `requestConfirmDialog(message, options, presentation?)` coordinator state with optional `ReactNode` content and `confirmLabel`; `apps/web/src/components/ConfirmDialogHost.tsx:57-67,79-116` renders the typed node and label when present and otherwise keeps its existing string title/description plus `Confirm` path. The host has no J5 import, payload decoding, or private prefix branch. J5 owns the archive row content in `apps/web/src/j5/a2a/ArchiveWarningContent.tsx:6-130`; `apps/web/src/j5/a2a/archiveFlow.ts:13-17,40-94` builds and passes it for consequential archive facts, with `Archive anyway` only when one or more open asks are measured and `Archive` otherwise. `apps/web/src/components/Sidebar.tsx:3169-3181` plus `apps/web/src/components/LegacySidebar.tsx:1824-1836,2012-2018` use the existing confirmation coordinator to carry the presentation. Existing string callers omit the third argument and remain byte-for-byte on the prior path. Jackson's Variant B title `Archive <agent>?` supersedes the earlier Designer condition that put “anyway” in the question; the explicit button label now disambiguates the action. On every rebase, verify the host stays J5-agnostic, the absent-presentation string branch remains intact, and the three archive doors continue to pass J5-owned presentation only for fact-backed warnings.

23. The thread card's J5 identity, Crew chips and spawned children: `apps/web/src/components/Sidebar.tsx` imports and mounts J5-owned `apps/web/src/j5/threads/ThreadCardIdentity.tsx` on the full-card row, passing the thread id, its environment, upstream's own project display name and the persona assignment. The label is the project, as upstream shows it; J5 adds the persona chip, a seat chip on Crew members and the Captain mark on launchers (`apps/web/src/j5/crew/CrewMembershipsClient.ts` and `CaptainMark.tsx`, over the authenticated `POST /api/j5/a2a/client-reads/crew-memberships` read registered in `J5AuthenticatedRoutes.ts`). The list stays flat by recency and no grouping is introduced. The same card mounts J5-owned `apps/web/src/j5/threads/SpawnedChildren.tsx` once, immediately before its closing `</li>`, which renders a collapsed expander of the row's placed children from `SpawnedChildrenClient.ts` (`POST /api/j5/a2a/client-reads/spawned-children`); the nested rows are J5-rendered and never reuse the upstream card component. `Sidebar.tsx` calls J5-owned `useThreadRowReads` once with the visible rows, which requests both reads; they no longer ride inside `useThreadHomes`. Both per-thread stores (`createScopedThreadReadStore` in `packages/client-runtime/src/j5/scopedThreadReadStore.ts`, reached through the `./j5/scopedThreadReadStore` export this case adds to upstream-owned `packages/client-runtime/package.json`) keep an empty answer loaded so a reordered row set never re-reads it, keep the previous snapshot when a batch changes nothing so rows skip their render, and the 30-second Fleet poll re-reads only the rows the roster names as involved (`fleetInvolvedThreadRefs`: seats, their Captains, spawners with placed children), so those reads follow Crew activity rather than the length of the thread list (2026-09-17, after Jackson's review of PR #149). The expander's remembered expansion is keyed by environment, parent, and group. Sidebar membership (register D22, SB5) is decided in J5-owned `apps/web/src/j5/threads/sidebarMembership.ts` (`isSidebarMember`, applied by the already-called `filterThreadsForSquadronScope`), fed by the optional `origin` the J5 participant-homes read states from placement provenance; agent-spawned Peer Agents therefore leave the top level unless pinned without any further Sidebar edit. That `origin` is the homes read's one remaining client use for the card and the rule; it stays until the ledger re-keys to projects. The Roster that keeps every agent visible is the J5-owned `/fleet` page over `POST /api/j5/a2a/client-reads/fleet`, which groups by upstream's logical project on the client. The existing tooltip remains the secondary detail for folder, machine, and model. The thin Sidebar integration must remain card-only: search and slim rows are byte-for-byte unchanged.
23. The thread card's J5 identity, Crew chips and spawned children: `apps/web/src/components/Sidebar.tsx` imports and mounts J5-owned `apps/web/src/j5/threads/ThreadCardIdentity.tsx` on the full-card row, passing the thread id, its environment, upstream's own project display name and the persona assignment. The label is the project, as upstream shows it; J5 adds the persona chip, a seat chip on Crew members and the Captain mark on launchers (`apps/web/src/j5/crew/CrewMembershipsClient.ts` and `CaptainMark.tsx`, over the authenticated `POST /api/j5/a2a/client-reads/crew-memberships` read registered in `J5AuthenticatedRoutes.ts`). The list stays flat by recency and no grouping is introduced. The same card mounts J5-owned `apps/web/src/j5/threads/SpawnedChildren.tsx` once, immediately before its closing `</li>`, which renders a collapsed expander of the row's placed children from `SpawnedChildrenClient.ts` (`POST /api/j5/a2a/client-reads/spawned-children`); the nested rows are J5-rendered and never reuse the upstream card component. `Sidebar.tsx` calls J5-owned `useThreadRowReads` once with the visible rows, which requests both reads; they no longer ride inside `useThreadHomes`. Both per-thread stores (`createScopedThreadReadStore` in `packages/client-runtime/src/j5/scopedThreadReadStore.ts`, reached through the `./j5/scopedThreadReadStore` export this case adds to upstream-owned `packages/client-runtime/package.json`) keep an empty answer loaded so a reordered row set never re-reads it, keep the previous snapshot when a batch changes nothing so rows skip their render, and the 30-second Fleet poll re-reads only the rows the roster names as involved (`fleetInvolvedThreadRefs`: seats, their Captains, spawners with placed children), so those reads follow Crew activity rather than the length of the thread list (2026-09-17, after Jackson's review of PR #149). The expander's remembered expansion is keyed by environment, parent, and group. Sidebar membership (register D22, SB5) is decided in J5-owned `apps/web/src/j5/threads/sidebarMembership.ts` (`isSidebarMember`, applied in `Sidebar.tsx` as one `.filter` on upstream's `filterSidebarV2VisibleThreads` result), fed by the optional `origin` the J5 participant-homes read states from placement provenance; `Sidebar.tsx` reads it through one `useThreadHomes` call (`apps/web/src/j5/squadron/ThreadHomesClient.ts`). Agent-spawned Peer Agents therefore leave the top level unless pinned. That `origin` is the homes read's only client use; it stays until the ledger re-keys to projects. The Roster that keeps every agent visible is the J5-owned `/fleet` page over `POST /api/j5/a2a/client-reads/fleet`, which groups by upstream's logical project on the client. The existing tooltip remains the secondary detail for folder, machine, and model. The thin Sidebar integration must remain card-only: search and slim rows are byte-for-byte unchanged.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two gaps in this case: the Sidebar edits for child-row rename and section (renamingChildThreadKey, childSection) aren't recorded, and Sidebar.tsx passes every thread to useThreadRowReads, not "the visible rows". Someone syncing from this text would drop those edits.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm an AI agent (Claude) working for Jackson.

Fixed in 2cb7280 (now 44d01bc). Case 23 now says useThreadRowReads receives every thread shell, not only the listed rows, and why (a spawned child has no row of its own). It records the three Sidebar.tsx edits a sync must keep: renamingChildThreadKey, threadsRef (how the context-menu callback finds a child among every shell) and childSection (how such a child is classified as settled or snoozed).

Comment thread docs/j5/product/upstream.md Outdated
**Why:** agents need a home in the ledger, and the ledger is still keyed by Squadron. The server rule is a step of retiring Squadrons into projects ([#412](https://github.com/Jacksondr5/j5code/issues/412)), where a thread's home is its project. A Squadron created this way carries its project's name, so it isn't the unnamed junk drawer the first-run gate used to guard against.

**Consequences:** the person no longer creates a Squadron before the first thread; the gate is gone. Create Squadron is still offered from the sidebar and from Add Project (D8), and it still requires a folder. A project that several Squadrons reference can't start a thread until one is deleted.
**Consequences:** the person never creates, names or sees a Squadron: the gate, Create Squadron, rename and delete are gone, and the app shows projects. The welcome wizard still has a Squadron stage (D10). A project that several Squadrons reference can't start a thread, and the app offers no repair for it; the server's delete route (`POST /api/j5/squadrons/<squadronId>/delete`) is the way out, once the extra Squadron's agents and Crews are archived. The wizard's Squadron stage no longer offers a new Squadron for a folder whose project already has one, so the app itself can't create that state.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Squadron names are still visible: the playbook author picker renders squadron.name and Fleet/Inbox fall back to it when no project resolves. Either carve those out here or record them as accepted.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm an AI agent (Claude) working for Jackson.

Fixed in 2cb7280 (now 44d01bc). D9 no longer says the person never sees a Squadron. It names the two places a Squadron's name still shows until the ledger re-keys to projects: the playbook author picker in Settings, and Fleet and the Inbox when no project resolves. Both are accepted until the migration PR, which removes them.

@Jacksondr5

Copy link
Copy Markdown
Owner Author

I'm an AI agent (Claude) working for Jackson. Replies to the review points that have no inline thread:

  • Case 15b said the onProjectSelected carrier is unchanged. Fixed: it says the carrier went with case 13 and only the source picker remains.
  • Case 42's rebase check named the "SQ1 callbacks". Removed.
  • SquadronDirectory.ts comment named the gate and scope controls. Fixed: it now says the read is shared by every J5 view that still reads Squadrons.

All in 44d01bc.

@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

  • Run on-demand review

This review includes 39 billable files and costs up to $9.75.

  • Ask an admin to make reviews automatic

Open in CodeRabbit

Reviews can continue after your included limit without a manual trigger. An admin must approve usage-based billing.

Or wait 20 minutes for your next included review.

Check out review usage here.

View limit details

Limit details: You’ve used all 3 included reviews currently available. Your 40 included PR review attempts over the past 7 days set your current allowance at 3 reviews per hour.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository: Jacksondr5/j5code/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 4d1945eb-54a9-4015-9477-54b4aa5091ab
📥 Commits

Reviewing files that changed from the base of the PR and between e5c1079 and 005814a.

📒 Files selected for processing (39)
  • FORK.md
  • apps/web/src/commandPaletteBus.test.ts
  • apps/web/src/commandPaletteBus.ts
  • apps/web/src/components/AppSidebarLayout.tsx
  • apps/web/src/components/ChatView.tsx
  • apps/web/src/components/CommandPalette.tsx
  • apps/web/src/components/CommandPaletteResults.tsx
  • apps/web/src/components/ProjectCloneToastCoordinator.tsx
  • apps/web/src/components/Sidebar.logic.test.ts
  • apps/web/src/components/Sidebar.logic.ts
  • apps/web/src/components/Sidebar.tsx
  • apps/web/src/components/pullRequest/PullRequestListEmptyState.tsx
  • apps/web/src/components/sidebar/SidebarThreadHeader.tsx
  • apps/web/src/j5/onboarding/SquadronsStage.tsx
  • apps/web/src/j5/onboarding/onboardingSquadrons.logic.test.ts
  • apps/web/src/j5/onboarding/onboardingSquadrons.logic.ts
  • apps/web/src/j5/squadron/SquadronActions.logic.test.ts
  • apps/web/src/j5/squadron/SquadronActions.logic.ts
  • apps/web/src/j5/squadron/SquadronCreate.logic.test.ts
  • apps/web/src/j5/squadron/SquadronCreate.logic.ts
  • apps/web/src/j5/squadron/SquadronCreateDialog.tsx
  • apps/web/src/j5/squadron/SquadronCreateForm.tsx
  • apps/web/src/j5/squadron/SquadronCreateRequest.test.ts
  • apps/web/src/j5/squadron/SquadronCreateRequest.ts
  • apps/web/src/j5/squadron/SquadronDeleteDialog.tsx
  • apps/web/src/j5/squadron/SquadronDirectory.ts
  • apps/web/src/j5/squadron/SquadronDraftState.test.ts
  • apps/web/src/j5/squadron/SquadronDraftState.ts
  • apps/web/src/j5/squadron/SquadronRenameDialog.tsx
  • apps/web/src/j5/squadron/SquadronScope.logic.test.ts
  • apps/web/src/j5/squadron/SquadronScope.logic.ts
  • apps/web/src/j5/squadron/SquadronScopeDropdown.test.tsx
  • apps/web/src/j5/squadron/SquadronScopeDropdown.tsx
  • apps/web/src/j5/squadron/ThreadHomesClient.test.ts
  • apps/web/src/j5/squadron/ThreadHomesClient.ts
  • apps/web/src/j5/squadron/refreshAfterSquadronChange.ts
  • apps/web/src/j5/squadron/refreshAfterThreadLaunch.ts
  • apps/web/src/j5/squadron/squadronClient.ts
  • docs/j5/product/upstream.md
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

Jacksondr5 and others added 2 commits October 7, 2026 21:52
…hat has a Squadron

The row showed the existing Squadron while the final button judged a stale
unconfirmed or unnamed choice and stayed disabled.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… name still shows

Review follow-up. Case 23 names the rename and section edits for spawned
children. D9 carves out the playbook author picker and the Fleet and Inbox
fallback. Removes stale carrier text from cases 15b and 42.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@Jacksondr5
Jacksondr5 force-pushed the fold/projects-back-to-upstream branch from af9f718 to 005814a Compare October 8, 2026 01:52
@Jacksondr5
Jacksondr5 merged commit 7fd03c8 into j5/main Oct 8, 2026
28 checks passed
@Jacksondr5
Jacksondr5 deleted the fold/projects-back-to-upstream branch October 8, 2026 02:33
This was referenced Oct 8, 2026

This branch was successfully deployed

1 active deployment
Preview — 005814ab Deployed Oct 8, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). 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.

2 participants