From 5d8018ef406556c11a6ae808b507ce49acb643d2 Mon Sep 17 00:00:00 2001 From: pyr0ball Date: Tue, 5 May 2026 14:22:59 -0700 Subject: [PATCH] fix(theme): scope dark media override to auto mode only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit peregrine.css used :root:not([data-theme="hacker"]) in the prefers-color-scheme:dark block, causing --app-primary-light and --app-accent-light to resolve to dark navy/brown in every explicit light theme (light, solarized-light, colorblind) on dark-OS machines. Changed to :root:not([data-theme]) to match theme.css's pattern, so the media query only fires in auto mode. Explicit [data-theme="dark"] block handles the dark-theme-on-light-OS case unchanged. Also fixed incorrect fallback values in HintChip.vue (#0d1829 → #eaeff8) and App.vue global toast (#2a3650/#eaeff8 → light-mode values). Closes: dark elements in light themes on dark-OS machines --- CHANGELOG.md | 24 ++++++++++++++++++++++++ web/src/App.vue | 4 ++-- web/src/assets/peregrine.css | 2 +- web/src/components/HintChip.vue | 4 ++-- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30e8d98..3abbf48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,30 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). --- +## [0.9.3] — 2026-05-05 + +### Added + +- **Editable resume review** — proposed summary and experience bullets in the review modal + are now editable text areas. Edits flow through `apply_review_decisions()` and override + the LLM output in the final resume struct. Preview textarea in Apply Workspace is also + editable, with manual changes preserved through the approve step via `preview_text_override`. + +### Fixed + +- **Double bullets in resume optimizer** — `_section_text_for_prompt` now strips existing + bullet characters before prefixing with `•`, and `_reparse_experience_bullets` uses a + greedy strip regex so `• •` patterns can no longer survive parsing. +- **Asterisk markup in summary** — added `_clean_summary_markup()` to strip LLM-generated + markdown bullet chars (`*`, `-`, etc.) from career summary output; injected no-markdown + rule into the LLM prompt's CRITICAL RULES list. +- **Light theme dark CSS bleed** — `peregrine.css` media dark override now scoped to + `:root:not([data-theme])` (auto mode only) instead of `:root:not([data-theme="hacker"])`. + Fixes dark navy `--app-primary-light`/`--app-accent-light` bleeding into light themes + (light, solarized-light, colorblind) on dark-OS machines. + +--- + ## [0.9.2] — 2026-05-02 ### Added diff --git a/web/src/App.vue b/web/src/App.vue index d3d7fc4..d35c3e4 100644 --- a/web/src/App.vue +++ b/web/src/App.vue @@ -135,8 +135,8 @@ body { bottom: calc(72px + env(safe-area-inset-bottom)); left: 50%; transform: translateX(-50%); - background: var(--color-surface-raised, #2a3650); - color: var(--color-text, #eaeff8); + background: var(--color-surface-raised, #f5f7fc); + color: var(--color-text, #1a2338); padding: 10px 20px; border-radius: var(--radius-md, 8px); font-size: 0.9rem; diff --git a/web/src/assets/peregrine.css b/web/src/assets/peregrine.css index 1a72e4b..3ce6817 100644 --- a/web/src/assets/peregrine.css +++ b/web/src/assets/peregrine.css @@ -79,7 +79,7 @@ body { /* ── Dark mode ─────────────────────────────────────── */ /* Covers both: OS-level dark preference AND explicit dark theme selection in UI */ @media (prefers-color-scheme: dark) { - :root:not([data-theme="hacker"]) { + :root:not([data-theme]) { --app-primary: #68A8D8; /* Falcon Blue (dark) — 6.54:1 on #16202e ✅ AA */ --app-primary-hover: #7BBDE6; --app-primary-light: #0D1F35; diff --git a/web/src/components/HintChip.vue b/web/src/components/HintChip.vue index dc1621e..5b3f733 100644 --- a/web/src/components/HintChip.vue +++ b/web/src/components/HintChip.vue @@ -32,7 +32,7 @@ function dismiss(): void { display: flex; align-items: flex-start; gap: var(--space-2, 8px); - background: var(--color-surface, #0d1829); + background: var(--color-surface, #eaeff8); border: 1px solid var(--app-primary, #2B6CB0); border-radius: var(--radius-md, 8px); padding: var(--space-2, 8px) var(--space-3, 12px); @@ -59,5 +59,5 @@ function dismiss(): void { line-height: 1; } -.hint-chip__dismiss:hover { color: var(--color-text, #eaeff8); } +.hint-chip__dismiss:hover { color: var(--color-text, #1a2338); }