feat(web): show First Mate's fleet as a tree in the sidebar - #162
Conversation
Fleet threads were scattered among ordinary threads. A second mate moved whenever its activity changed. Nothing tied a worker to its second mate. The roles showed only as small grey labels. The sidebar now shows the fleet as a tree above the other threads. - A pinned First Mate sits at the top, above a divider. Unpinned, it lists among the other threads. The pin is today's pin. - Second mates follow in repository-name order. Their place never changes with activity, and they cannot be settled, snoozed or pinned out of it. - Each worker is indented under the second mate that shares its fleetRepo. First Mate already sends that key for both, so no new field is needed. - An arrow beside a second mate folds its workers away. - A worker that is settled or snoozed moves to the usual shelf. Each fleet row keeps today's row shape. Its model line reads First Mate, Second mate or Worker in its own colour, then the model and the reasoning level. A ship, sailboat or pickaxe sits beside the project icon in the same colour. First Mate is pink. Each second mate gets one of four cool colours from its repository name, so the colour stays the same across reloads. Workers take their second mate's colour, faded. Fleet rows leave the branch to the tooltip.
Code review: Standards and SpecTwo separate reviewers read this pull request. Their reports follow, lightly cleaned. Each finding has a confidence and a severity. StandardsI found 4 breaks of the written standards and 9 judgement calls in PR 162's one commit ( Hard violations
Judgement calls (smells)
What checks out
Decide whether finding 4 (second mates stuck settled, snoozed or pinned) blocks the merge, since it is the only medium-severity finding. SpecPR 162 leaves the "New First Mate" button in place with its old label. It also moves First Mate off the top of the sidebar unless the thread is pinned. Note: the local (a) Missing or partial
(b) Not asked for
(c) Looks implemented but may be wrong
|
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
First Mate now sits at the top whether or not it is pinned. The pin marks the main First Mate when an environment list has several; the others list under it. With none live, a Start First Mate row replaces the old New First Mate button. First Mate rows offer Pin on hover, and the row menu no longer offers settle or snooze for First Mate, since the top slot has no way back from either. Settled and snoozed workers stay under their second mate as dimmed rows with their un-settle or wake control. A second mate that was already settled, snoozed or pinned keeps the control that undoes it. The second mate palette grows to six colours, and the row layout moves into buildFleetRows so the sidebar only renders it.
|
Fix round for the review above, in What changed
Also: the row menu no longer offers settle or snooze for First Mate, since the top slot has no way back from either. The Settings text for the First Mate folder now says Start First Mate. The model and harness line is left out of the PR body, because this repository's owner does not allow an agent name in pull request text. Tests seen failing firstChecks
ScreenshotsNot attached yet. The screenshots are taken, but I found no way to upload them to GitHub without committing them or using a browser signed in to GitHub. They will be added here once uploaded. |
A second mate's role word and role icon, and its workers' quieter ones, now take the colour of the project icon the sidebar shows. A monogram badge or coloured icon gives its own colour. An image logo gives its main colour, read once from the image and cached, with only its lightness set for light and dark. Only an icon with no usable colour, such as an emoji or a grey logo, falls back to a stable colour from the repository name. First Mate keeps its pink. The fixed six-colour palette is gone. A settled or snoozed fleet row now stays a full row, dimmed until hovered, so it keeps its role line and its title is no shorter than any other row's. Its Un-settle or Wake control sits where Settle would.
|
Fleet colours now come from each project's icon, in What changed
Tests seen failing firstRun against a stub that always returned the fallback: Checks
ScreenshotsNew light and dark screenshots were taken from a local dev build and reviewed outside GitHub. They are not attached here. |
Knip flagged mainColorOfPixels as an unused export, which failed the Check job. Only fleetTone.logic.ts uses it.
Fleet threads were scattered among ordinary threads. A second mate moved whenever its activity changed. Nothing tied a worker to its second mate. The roles showed only as small grey labels, so First Mate, a second mate and a worker looked alike at a glance.
The sidebar now shows the fleet as a tree above the other threads.
fleetRepo, settled and snoozed ones included. Those stay full rows, dimmed, with their un-settle or wake control. An arrow beside a second mate folds its workers away.Each fleet row keeps today's row shape and font. Its model line names the role in its own colour, then the model and the reasoning level. Each second mate takes its colour from its project icon as the sidebar shows it: a monogram badge's own colour, or an image logo's main colour, read once from the image, with only its lightness set for light and dark. Only an icon with no usable colour, such as an emoji or a grey logo, falls back to a stable colour from the repository name. First Mate keeps its pink. Workers take their second mate's colour, faded. Fleet rows leave the branch to the tooltip.
No one-way doors
A second mate that was settled, snoozed or pinned before this change keeps the control that undoes it: un-settle, wake, or unpin. The row does not offer a new settle, snooze or pin. The row menu no longer offers settle or snooze for First Mate, because the top slot has no way back from either.
How a worker finds its second mate
By
fleetRepo, which the fleet already records. First Mate sends the repository key asfleetRepoonthread.createfor both a second mate and its workers. No contract change was needed.Screenshots
Before and after screenshots in light and dark were reviewed outside GitHub and are not attached here.
Options considered
The branch
prototype/fleet-sidebarrecords every layout tried before this one was picked. It is not for merging.Surfaces
Web and desktop. The mobile sidebar is unchanged.
The model and harness line that
AGENTS.mdasks for is left out, because this repository's owner does not allow an agent name in pull request text.