Compare commits

...

2 Commits

Author SHA1 Message Date
036931ac51 fix(themes): light mode — the window glow tightens to a few px
All checks were successful
Check / eval (push) Successful in 4m15s
The shadow color is the palette mantle: near-black on dark themes (a
normal ambient shadow) but a light warm tone on light ones, where the
20px range reads as a wide glow that bleeds into neighbouring windows
and the bar (hardware report, kiln-clay, 2026-07-18). Light mode now
defaults the range to 5px — the glow stays as an identity feature,
just tight; dark themes keep the soft 20px shadow. Still lib.mkDefault,
so downstream overrides keep working.

Verified V1 (generation renders range=5 under kiln-clay); on-hardware
before/after of the live desktop taken in the reporting session.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 21:12:11 +01:00
8fdd9dc423 fix(session): recover user services after a broken logout teardown
2026-07-18 dev-box incident: on a warm relogin (user manager kept alive
by the tty1 greetd session — no linger involved) the previous logout's
graphical-session.target stop had been rejected as a destructive
transaction (easyeffects held a queued start job), so the target stayed
active across the logout. Its WantedBy services (cliphist, swaync,
xdg-desktop-portal-*, swayosd, …) crash-looped against the dead Wayland
socket into start-limit-hit, and the next login's plain
'start hyprland-session.target' was a no-op — every session service
stayed failed, doctor red, until a reboot.

Session bring-up (HM's systemd.extraCommands, rendered into the first
exec-once) now stops both hyprland-session.target and a possibly-stale
graphical-session.target, clears failed/start-limit state with
reset-failed, then starts fresh. All three commands are no-ops after a
clean logout or cold boot.

Verified V1: home generation built against this tree renders the new
command chain into hyprland.conf line 1 (nix build of
homeConfigurations.bernardo with the nomarchy input overridden).
V3 pending: warm relogin on hardware — queued in HARDWARE-QUEUE with
exact steps; BACKLOG #149 updated with the incident evidence (the
exec-once posture it watches is defending against a real race).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 21:11:39 +01:00
3 changed files with 46 additions and 1 deletions

View File

@@ -205,6 +205,18 @@ defending against nothing. Do not rip it out on this note alone: it works, and
the claim needs a real relogin without linger to test (V3 — the same relogin
that verifies #148's watcher fix would answer it).
**2026-07-18 evidence: the warm relogin is real post-linger.** On the dev
box the user manager survived a Hyprland logout (the tty1 greetd session
keeps it alive — no linger involved) and the teardown broke:
`graphical-session.target`'s stop transaction was rejected as destructive
(easyeffects had a queued start job), the target stayed active,
cliphist/swaync/portals/swayosd crash-looped against the dead Wayland
socket into `start-limit-hit`, and the relogin's plain `start` was a no-op
— doctor red for the whole session. Session bring-up now stops stale
targets + `reset-failed` before starting (`hyprland.nix`
systemd.extraCommands); relogin V3 check queued in HARDWARE-QUEUE. The
exec-once posture this entry watches is therefore still earning its keep.
### 120. A netinstall ISO, next to the fat offline one
**Deferred to PROPOSED 2026-07-16 (Bernardo): not now.** Nothing below is

View File

@@ -517,6 +517,16 @@ Everything else below stays open; order is convenience, not a gate.
`~/.nomarchy/flake.nix` has `?ref=main` (not lagging v1). **Pass:**
`nomarchy-rebuild` does not die with
`The option 'nomarchy.hardware' does not exist`.
- [ ] **Relogin session recovery (2026-07-18 incident)** — after pulling
the session-recovery commit and rebuilding: from a full Hyprland
session (bar up, a browser open so easyeffects/tray are busy), log
out (SUPER+SHIFT+E) and log straight back in at the greeter — do
**not** reboot between. **Pass:** `nomarchy-doctor` shows *no failed
user units*; `systemctl --user status cliphist swaync
xdg-desktop-portal-hyprland swayosd` are all `active (running)`; the
bar, notifications, and clipboard history (SUPER+V) work. This is
the V3 close for the stale `graphical-session.target` /
`start-limit-hit` relogin breakage (BACKLOG #149 note).
## AMD dev box only
- [ ] **#118 smartd still runs where drives DO have SMART** (this commit) — the

View File

@@ -970,6 +970,24 @@ in
# (Hyprland then boots into emergency mode with no binds).
configType = "hyprlang";
# Session bring-up (HM renders these into the first exec-once, after
# its dbus-update-activation-environment). The default is just
# stop/start of hyprland-session.target — not enough after a broken
# logout: if the graphical-session.target *stop* transaction was
# rejected mid-teardown (seen 2026-07-18: "transaction is destructive"
# while easyeffects had a queued start job), the target stays active
# across the logout, its services crash-loop against the dead Wayland
# socket into start-limit-hit, and the next login's plain `start` is a
# no-op — cliphist/swaync/portals stay failed for the whole session
# (doctor all red). So: tear the stale targets down, clear
# failed/start-limit state, then start fresh. All three are no-ops
# after a clean logout or cold boot.
systemd.extraCommands = [
"systemctl --user stop hyprland-session.target graphical-session.target"
"systemctl --user reset-failed"
"systemctl --user start hyprland-session.target"
];
settings = {
"$mod" = "SUPER";
"$terminal" = config.nomarchy.terminal;
@@ -1042,7 +1060,12 @@ in
};
shadow = {
enabled = t.ui.shadow;
range = lib.mkDefault 20;
# The mantle-tinted shadow reads as a dark halo on dark themes
# but as a warm *glow* on light ones (mantle is light there) —
# kept as an identity feature, just tight (a few px) so it never
# bleeds into neighbouring windows or the bar (hardware report
# 2026-07-18); dark themes keep the soft 20px ambient shadow.
range = lib.mkDefault (if t.mode == "light" then 5 else 20);
render_power = lib.mkDefault 3;
color = rgba c.mantle "aa";
};