fix(web): add visual preview swatches to theme mode selector#5767
fix(web): add visual preview swatches to theme mode selector#5767singlerider merged 5 commits intomasterfrom
Conversation
Each theme mode button (System/Dark/Light/OLED) now includes a small color swatch that previews the mode's background, making them visually distinguishable regardless of the currently active theme. Closes #5723
Agent Review β PR #5767Comprehension SummaryThis PR adds visual preview swatches to the four theme mode selector buttons (System, Dark, Light, OLED) in the Settings modal's Appearance tab. Previously, all four buttons rendered identically because they inherited styling from the active theme's CSS variables β users could not visually distinguish which mode they were selecting. The fix adds small color preview rectangles inside each button showing the actual background color of that mode (dark for Dark, light for Light, split gradient for System, pure black for OLED), with the theme icon rendered inside the swatch. Blast radius is limited to Review SummaryGate checks β all pass:
Code review β no issues found:
Security assessment: No security impact. No permissions, network calls, secrets, or file system changes. Performance assessment: No performance impact. No new dependencies, no new runtime computation, no allocation changes. CI NoteThe VerdictThis PR is ready for maintainer merge. Thank you for the clean, well-scoped fix β this directly improves theme selection UX with minimal blast radius. |
|
Hey! CI is failing on Security Audit due to RUSTSEC-2026-0098 and RUSTSEC-2026-0099, two The fix landed in #5786 (merged today). Please merge git fetch upstream
git merge upstream/master
git pushSorry for the noise! |
β¦mode-display-5723
β¦.com/zeroclaw-labs/zeroclaw into worktree-fix-theme-mode-display-5723
β¦READMEs Remove the Buy Me a Coffee badge from the header badge bar and the donation paragraph from the Support ZeroClaw section across the main README and all 30 localized README files. The Support section is retained with its Special Thanks subsection intact.
singlerider
left a comment
There was a problem hiding this comment.
Comprehension summary: Two bundled fixes: (1) adds distinct color swatches to the four theme mode buttons in SettingsModal (System, Dark, Light, OLED) using hardcoded hex values instead of CSS variables -- correct approach since CSS variables would recreate the visual identity bug; (2) removes the Buy Me a Coffee donation badge and paragraph from the main README and all 30 localized READMEs (155 lines, 31 files). Addresses #5723.
Note: the prior agent review understated blast radius as 'SettingsModal.tsx only' -- the README changes are also part of this PR and are correctly documented in the PR body.
Security assessment: No security impact. No permissions, network calls, secrets, or file system changes.
Performance assessment: No performance impact. No new dependencies, no new runtime computation.
β¦ changelog - Bump workspace version 0.7.0 β 0.7.1 in root Cargo.toml - Revert release workflow to gh release create --target for workflow_dispatch (the git-push approach from zeroclaw-labs#5860 is blocked by the org Restrict creations rule; --target uses the Releases API which bypasses it, and v0.7.1 has no immutable release lock so the previous blocker does not apply) - Update CHANGELOG-next.md: retitle to v0.6.9 β v0.7.1, restore full comprehensive notes from the upstream draft, and add entries that were missing from the original v0.7.0 draft: - feat(observability): otel_headers for authenticated OTLP exporters (zeroclaw-labs#5700) - feat: GitHub Copilot provider onboarding (zeroclaw-labs#5321) - fix(channels/telegram): inline_keyboard for tool approval requests (zeroclaw-labs#5790) - fix(provider): strip tool_stream for non-Z.AI providers (zeroclaw-labs#5806) - fix(agent): normalize empty successful tool output (zeroclaw-labs#5565) - fix(web): theme mode switch not applying correctly (zeroclaw-labs#5724) - fix(web): add visual preview swatches to theme selector (zeroclaw-labs#5767) - fix: cron_run tool output not delivered to configured channels
β¦ changelog - Bump workspace version 0.7.0 β 0.7.1 in root Cargo.toml - Revert release workflow to gh release create --target for workflow_dispatch (the git-push approach from zeroclaw-labs#5860 is blocked by the org Restrict creations rule; --target uses the Releases API which bypasses it, and v0.7.1 has no immutable release lock so the previous blocker does not apply) - Update CHANGELOG-next.md: retitle to v0.6.9 β v0.7.1, restore full comprehensive notes from the upstream draft, and add entries that were missing from the original v0.7.0 draft: - feat(observability): otel_headers for authenticated OTLP exporters (zeroclaw-labs#5700) - feat: GitHub Copilot provider onboarding (zeroclaw-labs#5321) - fix(channels/telegram): inline_keyboard for tool approval requests (zeroclaw-labs#5790) - fix(provider): strip tool_stream for non-Z.AI providers (zeroclaw-labs#5806) - fix(agent): normalize empty successful tool output (zeroclaw-labs#5565) - fix(web): theme mode switch not applying correctly (zeroclaw-labs#5724) - fix(web): add visual preview swatches to theme selector (zeroclaw-labs#5767) - fix: cron_run tool output not delivered to configured channels
Version
- Bump workspace version 0.7.0 β 0.7.1 in root Cargo.toml + Cargo.lock
CI rationalisation (FND-004 Phase 1 β Rationalise)
- Delete checks-on-pr.yml and ci-run.yml β two workflows doing identical
work on every PR, producing duplicate signal and double compute cost
- Add ci.yml (name: Quality Gate) β single staged pipeline replacing both:
Stage 1: fmt + clippy --workspace (fast gate)
Stage 2: build matrix, check all-features / no-default-features / 32-bit,
benchmarks compile (parallel, gated on Stage 1)
Stage 3: nextest (gated on Stage 1)
Stage 4: cargo deny check β licenses, sources, advisories (deny.toml
already present and triaged)
Stage 5: CI Required Gate composite job (branch protection target)
- Remove rust_strict_delta_gate.sh β workspace-aware clippy --workspace
makes delta comparison implicit (clean baseline = any warning fails)
- pre-release-validate.yml: remove pull_request trigger (secrets unavailable
on fork PRs caused guaranteed failure on every Cargo.toml bump); remove
stale CARGO_REGISTRY_TOKEN check (crates.io publishing removed in zeroclaw-labs#5858)
Release workflow
- Revert release-stable-manual.yml to gh release create --target for
workflow_dispatch (git push approach from zeroclaw-labs#5860 blocked by org Restrict
creations rule; Releases API bypasses it; v0.7.1 has no immutable lock)
Changelog
- Retitle CHANGELOG-next.md to v0.6.9 β v0.7.1, restore full release notes,
add entries missing from original draft: otel_headers (zeroclaw-labs#5700), GitHub
Copilot onboarding (zeroclaw-labs#5321), Telegram inline_keyboard (zeroclaw-labs#5790), tool_stream
fix (zeroclaw-labs#5806), empty tool output (zeroclaw-labs#5565), web theme fixes (zeroclaw-labs#5724, zeroclaw-labs#5767),
cron_run delivery fix
Version
- Bump workspace version 0.7.0 β 0.7.1 in root Cargo.toml + Cargo.lock
CI rationalisation (FND-004 Phase 1 β Rationalise)
- Delete checks-on-pr.yml and ci-run.yml β two workflows doing identical
work on every PR, producing duplicate signal and double compute cost
- Add ci.yml (name: Quality Gate) β single staged pipeline replacing both:
Stage 1: fmt + clippy --workspace (fast gate)
Stage 2: build matrix, check all-features / no-default-features / 32-bit,
benchmarks compile (parallel, gated on Stage 1)
Stage 3: nextest (gated on Stage 1)
Stage 4: cargo deny check β licenses, sources, advisories (deny.toml
already present and triaged)
Stage 5: CI Required Gate composite job (branch protection target)
- Remove rust_strict_delta_gate.sh β workspace-aware clippy --workspace
makes delta comparison implicit (clean baseline = any warning fails)
- pre-release-validate.yml: remove pull_request trigger (secrets unavailable
on fork PRs caused guaranteed failure on every Cargo.toml bump); remove
stale CARGO_REGISTRY_TOKEN check (crates.io publishing removed in zeroclaw-labs#5858)
Release workflow
- Revert release-stable-manual.yml to gh release create --target for
workflow_dispatch (git push approach from zeroclaw-labs#5860 blocked by org Restrict
creations rule; Releases API bypasses it; v0.7.1 has no immutable lock)
Changelog
- Retitle CHANGELOG-next.md to v0.6.9 β v0.7.1, restore full release notes,
add entries missing from original draft: otel_headers (zeroclaw-labs#5700), GitHub
Copilot onboarding (zeroclaw-labs#5321), Telegram inline_keyboard (zeroclaw-labs#5790), tool_stream
fix (zeroclaw-labs#5806), empty tool output (zeroclaw-labs#5565), web theme fixes (zeroclaw-labs#5724, zeroclaw-labs#5767),
cron_run delivery fix
β¦ 1) (#5867) Version - Bump workspace version 0.7.0 β 0.7.1 in root Cargo.toml + Cargo.lock CI rationalisation (FND-004 Phase 1 β Rationalise) - Delete checks-on-pr.yml and ci-run.yml β two workflows doing identical work on every PR, producing duplicate signal and double compute cost - Add ci.yml (name: Quality Gate) β single staged pipeline replacing both: Stage 1: fmt + clippy --workspace (fast gate) Stage 2: build matrix, check all-features / no-default-features / 32-bit, benchmarks compile (parallel, gated on Stage 1) Stage 3: nextest (gated on Stage 1) Stage 4: cargo deny check β licenses, sources, advisories (deny.toml already present and triaged) Stage 5: CI Required Gate composite job (branch protection target) - Remove rust_strict_delta_gate.sh β workspace-aware clippy --workspace makes delta comparison implicit (clean baseline = any warning fails) - pre-release-validate.yml: remove pull_request trigger (secrets unavailable on fork PRs caused guaranteed failure on every Cargo.toml bump); remove stale CARGO_REGISTRY_TOKEN check (crates.io publishing removed in #5858) Release workflow - Revert release-stable-manual.yml to gh release create --target for workflow_dispatch (git push approach from #5860 blocked by org Restrict creations rule; Releases API bypasses it; v0.7.1 has no immutable lock) Changelog - Retitle CHANGELOG-next.md to v0.6.9 β v0.7.1, restore full release notes, add entries missing from original draft: otel_headers (#5700), GitHub Copilot onboarding (#5321), Telegram inline_keyboard (#5790), tool_stream fix (#5806), empty tool output (#5565), web theme fixes (#5724, #5767), cron_run delivery fix
Summary
masterfor all contributions):masterLabel Snapshot (required)
risk: lowsize: XSdocs,webweb: settingsChange Metadata
bug,choremultiLinked Issue
Supersede Attribution (required when
Supersedes #is used)N/A
Validation Evidence (required)
The theme swatch change is a frontend-only change (web/src/components/SettingsModal.tsx). No Rust code was modified. The README change is documentation-only (31 README files, 155 lines removed).
cargo fmt/clippy/testskipped β no Rust changesSecurity Impact (required)
Privacy and Data Hygiene (required)
passCompatibility / Migration
i18n Follow-Through (required when docs or user-facing wording changes)
Yes, locale navigation parity updated inREADME*,docs/README*, anddocs/SUMMARY.mdfor supported locales (en,zh-CN,ja,ru,fr,vi)? Yes β all 30 localized READMEs updated consistentlyYes, localized runtime-contract docs updated where equivalents exist (minimum forfr/vi:commands-reference,config-reference,troubleshooting)? N/A β no runtime-contract docs affectedYes, Vietnamese canonical docs underdocs/i18n/vi/**synced and compatibility shims underdocs/*.vi.mdvalidated? Yes βdocs/i18n/vi/README.mdupdatedNo/N.A., link follow-up issue/PR and explain scope decision: N/AHuman Verification (required)
Side Effects / Blast Radius (required)
Agent Collaboration Notes (recommended)
Rollback Plan (required)
Risks and Mitigations