Conversation
camielvs
added this pull request to stack #2771
September 21, 2026 19:09
🎩 PreviewA preview build has been created at: |
camielvs
force-pushed
the
ai-task-colours
branch
from
September 21, 2026 19:50
772b449 to
00fe5b5
Compare
camielvs
force-pushed
the
ai-task-colours
branch
from
September 21, 2026 21:38
00fe5b5 to
5c77a3d
Compare
camielvs
force-pushed
the
ai-task-colours
branch
from
September 21, 2026 22:23
5c77a3d to
2ddb379
Compare
camielvs
commented
Sep 22, 2026
camielvs
left a comment
Collaborator
Author
There was a problem hiding this comment.
Correctness pass over the branch (diff against ai-pipeline-notes). No findings — this one is clean.
Ran it in a throwaway worktree: tsc --noEmit clean, eslint clean on all five changed source files, and the full Vitest suite green (234 files / 2538 tests), including the 121 tests in the two touched test files.
What I checked, and why each candidate concern turned out not to be a bug:
setTaskColorhandler — validates the colour, rejects an empty id list, and resolves every$idviaresolveTargetbefore callingbatchSetTaskColor, so a bad id genuinely cannot produce a partial write. Dedupes with aSet. No await between resolution and mutation, so it does not need the root-pinning guardaddTaskhas.- Cross-subgraph mutation —
locateEntityrecurses throughtask.subgraphSpec, which is a realprop<ComponentSpec>in the keystone tree, andundo.init(rootSpec, …)(useSpecLifecycle.ts:45) anchors the undo manager at the root. So nested colour edits are recorded, undoable and serialized (jsonSerializer.ts:127emits task annotations). transparentround-trip — the annotation codec defaults to"transparent", soAnnotations.getnever returnsundefined;serializeTaskmaps the sentinel toundefinedandpickDefineddrops it, matchingbatchSetTaskColor'sremove()on"transparent". No path gets a stale"transparent"into the AI payload. (Worth noting this is the one place in the stack where the codec-default-is-not-undefined pattern is handled correctly — see the(0,0)position findings on #2766 and #2767 for the same pattern going wrong.)- Colour validation —
isPickableColoraccepts 3- and 6-digit hex, andparseHexToRgbinTaskNode/color.utils.tshandles both, so an AI-set#abccannot produceNaNin the palette/contrast maths. - Interface fan-out — both
ToolBridgeApiimplementors (editorcsomBridge,runViewToolBridgeread-only stub) were updated. No other registry enumerates tool names exceptTOOL_STATUS_LABELS, which has a"Working..."fallback and already omits several sibling tools. - Colour survives
create_subgraph(the behaviour the new architect prompt steers toward) —snapshotTaskclonesannotations.itemsand rebuilds withAnnotations.from(...)correctly.
camielvs
force-pushed
the
ai-task-colours
branch
from
September 22, 2026 18:23
2ddb379 to
6ec5ccb
Compare
camielvs
force-pushed
the
ai-task-colours
branch
from
September 22, 2026 18:55
6ec5ccb to
53c4f0a
Compare
camielvs
marked this pull request as ready for review
September 22, 2026 21:14
Colour is how people group tasks on a canvas by eye — often into stages that were never made into subgraphs. None of it reached the assistant, so it would describe a pipeline while blind to the structure the user had encoded into it, and had no way to colour anything itself. A task's colour now appears in what the assistant reads, and only once someone has set one: an uncoloured task says nothing rather than reporting the "transparent" default. `set_task_color` recolours any number of tasks in one call, including tasks in different subgraphs, since colour is a per-task annotation with no reference to its graph. Colours are restricted to the values the picker can produce, and nothing is written unless every id and the colour are valid. The prompts treat colour the way they treat sticky notes — the user's own mark, not the assistant's to change unasked. The architect is also told that existing colour grouping is information rather than decoration: tasks sharing a colour are one stage in the user's head, which is usually what a subgraph should follow. Repair is told plainly never to recolour a task to flag it as broken or fixed. Named `set_task_color` to match the existing `TASK_COLOR_ANNOTATION` and `batchSetTaskColor`; the prose keeps the repo's British spelling as its comments already do. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
camielvs
force-pushed
the
ai-task-colours
branch
from
September 22, 2026 21:49
53c4f0a to
619a670
Compare
Mbeaulne
approved these changes
Sep 23, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Colour is how people group tasks on a canvas by eye — often into stages that were never
made into subgraphs. None of it reached the assistant, so it would describe a pipeline
while blind to the structure the user had encoded into it, and had no way to colour
anything itself.
A task's colour now appears in what the assistant reads, and only once someone has set
one: an uncoloured task says nothing rather than reporting the
transparentdefault.set_task_colorrecolours any number of tasks in one call, including tasks in differentsubgraphs, since colour is a per-task annotation with no reference to its graph. Colours
are restricted to the values the picker can produce, and nothing is written unless every
id and the colour are valid.
The prompts treat colour the way they treat sticky notes — the user's own mark, not the
assistant's to change unasked. The architect is also told that existing colour grouping is
information rather than decoration: tasks sharing a colour are one stage in the user's
head, which is usually what a subgraph should follow. Repair is told plainly never to
recolour a task to flag it as broken or fixed.
Named
set_task_colorto match the existingTASK_COLOR_ANNOTATIONandbatchSetTaskColor; the prose keeps the repo's British spelling as its comments alreadydo.
Related Issue and Pull requests
Top of the five-PR stack. Shares the colour validation added in the sticky-notes PR at
the bottom.
Type of Change
Checklist
Test Instructions
should notice the grouping rather than describing every step as identical.
step.
handle both.
annotation should be gone rather than set to "transparent".
which id it could not find.
— it should follow your colour grouping.
🤖 Generated with Claude Code