Dark is now the only theme, so every `.dark` selector matched unconditionally while each non-dark branch was unreachable. That left fourteen `.dark &` blocks sitting on top of token-based base rules and silently overriding them with hardcoded grays from the previous palette (#333333, #999999, #cccccc, #f2f2f2, #1f1f1f, #2a2a2a). Merged each value down into its base rule and deleted the wrapper, then replaced fifteen more legacy grays with the CYBER tokens. Three bugs surfaced along the way: - FileEditor read `documentElement.classList.contains('dark')`, but the `dark` class is bound on `.app-root`, so Monaco always loaded the light `vs` theme inside the dark editor surface. - CodexLoginModal, CopilotLoginModal and NousLoginModal wrote `border-color: var(--arcoblue-6, #165dff)` and VoiceApiFormModal wrote `color: var(--primary-6, #18a058)`. Those Arco variables hold bare RGB triplets, not colors, so each declaration was invalid and discarded — the hover border and link color stayed stock Arco blue/green instead of the cyan accent. - JourneyView drew the pinned-node ring in amber, a leftover from the old palette. Rendering-layer only: no store logic, no /chat-run payload, no message rendering path.
Chat Chain Change Fragments
Add one Markdown fragment per PR when a change touches the Chat session chain,
Agent Bridge, compression, or Group Chat runtime paths documented in
docs/cli-chat-sessions.md.
Do not append new rows to docs/cli-chat-sessions.md. Keeping one fragment per
PR avoids merge conflicts when multiple branches change the chat chain at the
same time.
Use this shape:
---
date: YYYY-MM-DD
pr: 1234
feature: Short feature name
impact: One-sentence behavior impact
---
Optional extra notes.
If the PR number is not known yet, use pr: pending while the branch is local,
then update that same fragment after the PR is opened.