docs/design/session-group-custom-hex-colors.md
Named session groups currently share the six-value color enum used by quick
session color tags. The daemon rejects any other value with
invalid_group_color, the TypeScript SDK exposes the same closed union, and the
WebShell editor only offers a preset select. Users cannot align named groups
with an existing project palette or visually distinguish a larger group
catalog.
Tracked by #6744.
| Layer | Change |
|---|---|
| Core | Split preset session-tag colors from named-group display colors. Named groups accept presets or six-digit #RRGGBB; quick tags remain preset-only. Normalize valid Hex values to lowercase before persistence. |
| REST and ACP | Keep quick-tag validation preset-only and pass named-group colors to core validation. |
| TypeScript SDK | Export preset and Hex color types. Group input/output uses their union; session organization continues to use preset colors. |
| WebShell | Keep preset choices and add a Custom option with a native color picker and Hex text field. Render custom group dots with an inline background color. |
#RRGGBB. Three-, four-, and eight-digit forms are
rejected so every persisted value has one predictable shape.background-color.packages/core/src/services/session-organization-service.tspackages/core/src/services/session-organization-service.test.tspackages/cli/src/serve/routes/session.tspackages/cli/src/serve/acp-http/dispatch.tspackages/cli/src/serve/server/session-list.tspackages/acp-bridge/src/bridgeTypes.tspackages/sdk-typescript/src/daemon/types.tspackages/sdk-typescript/src/daemon/index.tspackages/sdk-typescript/src/index.tspackages/web-shell/client/components/sidebar/WebShellSidebar.tsxpackages/web-shell/client/components/SessionOverviewPanel.tsxpackages/web-shell/client/components/sidebar/WebShellSidebar.module.csspackages/web-shell/client/components/sidebar/WebShellSidebar.test.tsxpackages/web-shell/client/i18n.tsxNone. The existing structured error and group persistence paths can be extended without a protocol version bump.