.qwen/e2e-tests/session-group-custom-hex-colors.md
Validate issue #6744 across daemon persistence, REST/SDK behavior, WebShell editing, and preset quick-tag regression boundaries.
Use the globally installed CLI before the local build:
qwen --version
Create or update a named session group with #12ABEF through the existing
session-groups endpoint. Expected baseline: HTTP 400 with
code=invalid_group_color; the WebShell editor exposes only six presets.
Command:
cd packages/core
npx vitest run src/services/session-organization-service.test.ts
Expected after implementation:
#12ABEF (including accidental surrounding
whitespace) and returns #12abef;invalid_group_color;Commands:
cd packages/cli
npx vitest run src/serve/server.test.ts src/serve/acp-http/transport.test.ts
cd ../sdk-typescript
npx vitest run test/unit/DaemonClient.test.ts
Expected after implementation: REST and ACP group mutations round-trip Hex; session organization remains preset-only; SDK group types and responses expose the custom value.
Command:
cd packages/web-shell
npx vitest run client/components/sidebar/WebShellSidebar.test.tsx
Expected after implementation:
npm run format
npm run build
npm run typecheck
npm run bundle
Use a unique temporary workspace and session name:
export QWEN_RUNTIME_DIR="$(mktemp -d /tmp/qwen-hex-groups.XXXXXX)"
node dist/cli.js serve --web
In the WebShell, create Hex demo with #12ABEF, reload, rename it, switch to
a preset, then back to Custom. Confirm the dot color and lowercase Hex persist.
Also confirm a quick session tag still offers only the six presets.
Verified on macOS:
qwen was 0.19.4-dataworks.0; it predates session
organization, so the live daemon baseline was skipped. The pre-change main
source was used as the reproducible baseline: non-preset group colors throw
invalid_group_color.act() warnings.server.test.ts: 674 passed, 1 unrelated failure in extension-update
status handling (expected 202, received 200).ScheduledTasksDialog import fix from #6748. Core and WebShell package
typechecks pass.The WebShell editor was rendered against a local fixture daemon to capture the picker + Hex field screenshot in the PR. Persistence and normalization were verified through the live REST path and focused tests. Windows and Linux behavior is delegated to CI.