diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index 491938e..3a64d44 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -55,19 +55,6 @@ runtime-computed `resume_offset` into the boot cmdline, and the dev box runs exactly this layout (`/proc/cmdline` verified) but isn't Nomarchy. Steps in HARDWARE-QUEUE. Close #76 on PASS. -### 88. neon-glass polish / finish (`VISION § D`) -**Promoted** (Bernardo 2026-07-11) from PROPOSED finish-or-quarantine — -**path = finish**, not quarantine. Theme ships as whole-swap (`themes/neon-glass/`: -rofi.rasi, btop.theme, preview, backgrounds); waybar.css was removed earlier -(#53) so the bar uses the generated path from the JSON palette. -- Visual polish pass: rofi/btop/preview coherence with the glass aesthetic; - regenerate `preview.png` via theme-shot if needed. -- Contrast + design audit green (already contrast-gated; re-check after edits). -- **V2:** theme-shot neon-glass (and one other theme for regression) — - view desktop/menu shots per VERIFICATION §3. -- Do **not** reintroduce a broken whole-swap waybar.css without full - `@define-color` parity (theme-wholeswap check). - ## LATER - **Wallpapers artifact split** (ROADMAP § Faster switches — decided, @@ -131,9 +118,8 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.* fixture. Control-center / MOTD already mention these; the gap is the silent first *graphical* session for people who never open those. -_(#80–#83 + #85–#87 shipped 2026-07-11. neon-glass → **NEXT #88** finish - path. Theme A day-2 largely shipped — VISION ✓. Dock/hibernate V3 → - HARDWARE-QUEUE.)_ +_(#80–#83 + #85–#88 shipped 2026-07-11. Theme A day-2 + neon-glass finish + shipped — VISION ✓. Dock/hibernate V3 → HARDWARE-QUEUE.)_ ### v1.0 pointer diff --git a/agent/JOURNAL.md b/agent/JOURNAL.md index b00ce6f..54bc6d2 100644 --- a/agent/JOURNAL.md +++ b/agent/JOURNAL.md @@ -19,6 +19,19 @@ Template: --- +## 2026-07-11 — #88 neon-glass polish / finish +- **Task:** NEXT #88 — finish neon-glass (`VISION § D`), not quarantine. +- **Did:** Rewrote `themes/neon-glass/rofi.rasi` (was invalid `var()` CSS; + now Boreal-style glass with `@colors`, cyan edge, soft selection). + btop accent titles/selection; JSON ui rounding 14 + slight glass + opacity; `preview.png` from theme-shot desktop. No waybar.css. +- **Verified:** **V2** — contrast 24×7 pass; theme-wholeswap green; + theme-shot neon-glass desktop+menu viewed (cyan bar + glass menu); + boreal theme-shot regression green (menu/bar intact). +- **Pending:** — +- **Next suggestion:** post-install hardware hints PROPOSED, or human + HARDWARE-QUEUE. + ## 2026-07-11 — Promote neon-glass → NEXT #88 (Bernardo) - **Task:** human triage: promote neon-glass PROPOSED. - **Did:** NEXT **#88** neon-glass polish/finish (`VISION § D`); path = diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 233af29..0e0d5ae 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -400,6 +400,13 @@ Design/decision records and a running log of shipped work (items marked built-in. Rules in `modules/nixos/dock-audio-rules.nix`; `checks.dock-audio` pure + conf-file VM. Real hotplug V3 in HARDWARE-QUEUE. + ✓ **neon-glass finish (#88, `VISION § D`):** rewrote whole-swap + `rofi.rasi` to rofi-native `@color` glass panel (cyan rim, soft + selection wash — same hex-alpha glass pattern as Boreal); btop title/ + selection in accent cyan; ui rounding/opacity tuned; `preview.png` + regenerated from theme-shot. Bar remains generated from JSON (no + waybar.css reintro). Contrast + theme-wholeswap green; V2 theme-shot + neon-glass + boreal viewed. - ✓ **Hibernate double-unlock:** on resume from hibernate the LUKS passphrase already gates the machine, but locking hyprlock before sleep meant a second password. Fixed by *not locking* before an encrypted diff --git a/docs/VISION.md b/docs/VISION.md index 64e3ddd..5956efd 100644 --- a/docs/VISION.md +++ b/docs/VISION.md @@ -93,7 +93,7 @@ Reference: [HARDWARE.md](HARDWARE.md) §4–§5, §11 (doctor). | Idea | Intent | Notes | |------|--------|-------| -| **Fewer themes, sharper** | Finish or quarantine neon-glass; invest in whole-swap quality | **NEXT #88** finish path (promoted 2026-07-11); contrast stays gated | +| **Fewer themes, sharper** ✓ | Finish or quarantine neon-glass; invest in whole-swap quality | ✓ #88 finish — glass rofi (proper @colors), btop, preview; bar stays generated (no broken waybar.css) | | **Time-of-day pair** ✓ | Auto light/dark (e.g. summer-day ↔ summer-night) from schedule | ✓ shipped #79 (2026-07-10) — `settings.autoTheme` + timer; still one engine | | **Theme switch speed** | Wallpapers artifact split (LATER) if switches still feel slow | GOALS: no second pipeline | @@ -156,9 +156,7 @@ From GOALS non-goals and installer audits — do not “fill the roadmap” with 1. `VISION § B` — post-install hardware hints (self-gated first-session toast when `fwupdmgr` / `fprintd-list` exist; one-shot markers; no nag) -2. `VISION § D` — neon-glass polish → **NEXT #88** (finish path; do not - reintroduce broken whole-swap waybar without @define-color parity) -3. `VISION § D` / LATER — wallpapers artifact split (decided deferred; +2. `VISION § D` / LATER — wallpapers artifact split (decided deferred; promote only if theme-switch latency still hurts after measurement) 4. `VISION § H` — HARDWARE-QUEUE burn-down (human-only V3; agents only append exact steps) diff --git a/themes/neon-glass.json b/themes/neon-glass.json index 98f7291..be5c005 100644 --- a/themes/neon-glass.json +++ b/themes/neon-glass.json @@ -28,14 +28,14 @@ "size": 11 }, "ui": { - "gapsIn": 5, - "gapsOut": 12, + "gapsIn": 6, + "gapsOut": 14, "borderSize": 2, - "rounding": 10, + "rounding": 14, "iconSize": 36, - "activeOpacity": 1.0, - "inactiveOpacity": 0.95, - "terminalOpacity": 0.96, + "activeOpacity": 0.96, + "inactiveOpacity": 0.90, + "terminalOpacity": 0.94, "blur": true, "shadow": true }, diff --git a/themes/neon-glass/btop.theme b/themes/neon-glass/btop.theme index d793318..58a79ca 100644 --- a/themes/neon-glass/btop.theme +++ b/themes/neon-glass/btop.theme @@ -1,9 +1,10 @@ +# Neon Glass — btop whole-swap (keep hexes aligned with neon-glass.json) theme[main_bg]="#0B0E14" theme[main_fg]="#E0E6F0" -theme[title]="#E0E6F0" +theme[title]="#00F0FF" theme[hi_fg]="#00F0FF" theme[selected_bg]="#1E2530" -theme[selected_fg]="#E0E6F0" +theme[selected_fg]="#00F0FF" theme[inactive_fg]="#4B566B" theme[graph_text]="#8F9BB3" theme[meter_bg]="#151A22" diff --git a/themes/neon-glass/preview.png b/themes/neon-glass/preview.png index 66f6085..5aa6de9 100644 Binary files a/themes/neon-glass/preview.png and b/themes/neon-glass/preview.png differ diff --git a/themes/neon-glass/rofi.rasi b/themes/neon-glass/rofi.rasi index 2e63106..3ba40a6 100644 --- a/themes/neon-glass/rofi.rasi +++ b/themes/neon-glass/rofi.rasi @@ -1,93 +1,133 @@ -/* - * Neon Glass Rofi Theme - * Glassmorphic, transparent, blurred background with glowing accents. +/** + * Neon Glass — rofi whole-swap (themes//rofi.rasi). + * Vibe: cyber-frost panel on near-black void — cyan rim light, soft + * violet alt, translucent surfaces (hex-alpha, same pattern as Boreal's + * glassBg). Structure mirrors the generated theme so the theme-grid + * picker's -theme-str still lays out. No configuration {} block — + * modi/terminal/show-icons come from modules/home/rofi.nix. + * + * Palette locks to themes/neon-glass.json (keep in sync on color edits). */ * { - /* Using standard theme palette via env variables injected by home-manager, - or fallback if testing independently. The whole-swap still gets the - colors injected into the RASI by the module! */ + base: #0B0E14; + glassBg: #0B0E14E0; /* ~88% opaque void glass */ + surface: #151A22; + glassSurf: #151A22CC; + overlay: #1E2530; + text: #E0E6F0; + subtext: #8F9BB3; + muted: #4B566B; + accent: #00F0FF; + accentAlt: #B026FF; + accentSoft: #00F0FF33; /* cyan wash for selection */ + neonEdge: #00F0FF80; /* cyan border glow */ + good: #00FFA3; + warn: #FFD000; + bad: #FF003C; + + font: "Inter 12"; background-color: transparent; - text-color: var(text, #E0E6F0); - font: "Inter 13"; + text-color: @text; } window { - width: 600px; - /* transparent base with slight tint */ - background-color: rgba(11, 14, 20, 0.45); + background-color: @glassBg; border: 1px; - border-color: rgba(0, 240, 255, 0.3); - border-radius: 24px; - padding: 24px; - /* Blur would be applied via hyprland layerrule for rofi */ + border-color: @neonEdge; + border-radius: 16px; + width: 620px; + location: center; + anchor: center; + padding: 18px; } mainbox { - spacing: 16px; + background-color: transparent; + children: [ inputbar, message, listview ]; + spacing: 14px; } inputbar { - background-color: rgba(21, 26, 34, 0.5); + children: [ prompt, entry ]; + background-color: @glassSurf; + text-color: @text; border: 1px; - border-color: rgba(0, 240, 255, 0.5); + border-color: @neonEdge; border-radius: 12px; padding: 12px 16px; spacing: 12px; - children: [ prompt, entry ]; } -prompt { - text-color: var(accent, #00F0FF); -} +prompt { text-color: @accent; } entry { - placeholder: "Search..."; - placeholder-color: var(subtext, #8F9BB3); + text-color: @text; + cursor: text; + placeholder: "Search…"; + placeholder-color: @muted; } listview { - lines: 7; - spacing: 8px; + background-color: transparent; + columns: 1; + lines: 8; + dynamic: true; scrollbar: true; - border: 0px; + spacing: 6px; + padding: 4px 0px 0px 0px; } element { - padding: 10px 16px; + background-color: transparent; + text-color: @text; + orientation: horizontal; border-radius: 12px; + padding: 10px 14px; spacing: 12px; } -element normal.normal, element alternate.normal { +element normal.normal, +element alternate.normal { background-color: transparent; } +/* Selected: soft cyan wash + bright accent label (glass highlight). */ element selected.normal { - background-color: rgba(0, 240, 255, 0.15); + background-color: @accentSoft; + text-color: @accent; border: 1px; - border-color: rgba(0, 240, 255, 0.4); - text-color: var(accent, #00F0FF); + border-color: @neonEdge; } element-icon { - size: 24px; background-color: transparent; + size: 30px; + cursor: inherit; } element-text { background-color: transparent; + text-color: inherit; + highlight: bold; vertical-align: 0.5; } -element-text selected { - text-color: var(accent, #00F0FF); +message { padding: 0px; } + +textbox { + background-color: @glassSurf; + text-color: @text; + border: 1px; + border-color: @overlay; + border-radius: 12px; + padding: 10px 14px; } scrollbar { width: 4px; handle-width: 4px; - handle-color: rgba(0, 240, 255, 0.8); - background-color: rgba(21, 26, 34, 0.5); + handle-color: @accent; + background-color: @surface; border: 0px; }