diff options
Diffstat (limited to 'todo.org')
| -rw-r--r-- | todo.org | 115 |
1 files changed, 65 insertions, 50 deletions
@@ -18,13 +18,12 @@ Rule of thumb: A = dated-and-must; B = the active backlog; C = parking lot; D = :LAST_REVIEWED: 2026-06-09 :END: The right-side module icons don't sit at even intervals — spacing reads as inconsistent across the group. Tune the per-module margin/padding in =dotfiles/hyprland/.config/waybar/style.css= so the icons are evenly distributed. Noticed 2026-05-21 after adding the airplane indicator. -** TODO [#C] Airplane-mode toggle robustness follow-ups :quick:solo: +** DONE [#C] Airplane-mode toggle robustness follow-ups :quick:solo: +CLOSED: [2026-06-10 Wed] :PROPERTIES: -:LAST_REVIEWED: 2026-06-09 +:LAST_REVIEWED: 2026-06-10 :END: -Two minor robustness gaps in =dotfiles/hyprland/.local/bin/airplane-mode= surfaced when the feature shipped (2026-05-21). Neither is a live bug — both are defense-in-depth. -- No laptop guard on the toggle itself. The =waybar-airplane= indicator hides on battery-less machines, but =airplane-mode= would still run if invoked directly (e.g. a future keybind on a desktop). Mirror the =is_laptop= check at the top of the toggle so it no-ops off a laptop. -- Brightness-restore edge. If =brightnessctl get= returns empty at engage time, disengage skips the restore (guarded by =[ -n "$bright_was" ]=) and the screen stays at 35%. Fall back to a sane brightness (e.g. 100%) when no prior value was recorded. +Shipped 2026-06-10 as dotfiles commit =16fbe4e=, TDD'd (23 tests green). Both gaps closed: the toggle now no-ops without a BAT* (same check as waybar-airplane, AIRPLANE_POWER_SUPPLY_DIR override for tests), and an empty recorded brightness at disengage falls back to 100% (AIRPLANE_BRIGHTNESS_DEFAULT) instead of stranding the screen at 35%. ** TODO [#C] Wlogout exit-menu buttons are rectangular, not square :PROPERTIES: :LAST_REVIEWED: 2026-06-09 @@ -32,10 +31,13 @@ Two minor robustness gaps in =dotfiles/hyprland/.local/bin/airplane-mode= surfac The wlogout exit menu renders its buttons taller than they are wide on velox, so the cells read as vertical rectangles instead of squares. They render square (centered) correctly on ratio, so this is a per-host / resolution difference, not a flat bug. Fix the button sizing in the wlogout style (=~/.dotfiles/hyprland/.config/wlogout/style.css=) so each cell is square on both hosts. Noticed 2026-05-21. Related: the [#D] VERIFY about wlogout sizing across displays. Add a regression test so the square-cell fix doesn't silently break on a resolution change: assert the rendered (or computed) wlogout button cells are square across ratio's and velox's resolutions. Dropped :quick: — the cross-host test pushes this past a spare-moment fix. -** TODO [#B] protonmail-bridge package service conflicts with Hyprland autostart :cmail: +** DONE [#B] protonmail-bridge package service conflicts with Hyprland autostart :cmail: +CLOSED: [2026-06-10 Wed] :PROPERTIES: -:LAST_REVIEWED: 2026-05-22 +:LAST_REVIEWED: 2026-06-10 :END: +Craig confirmed resolved 2026-06-10 — the per-machine fix (disable the packaged user service, Hyprland exec-once as sole launcher) has held since 2026-05-22 with no recurrence. + The =protonmail-bridge= package ships an enabled systemd user service (=/usr/lib/systemd/user/protonmail-bridge.service=, =--noninteractive=, =Restart=always=) that double-launches with the Hyprland =exec-once = protonmail-bridge --no-window= GUI autostart. Two symptoms: (1) no tray icon — the headless service grabs ports 127.0.0.1:1143/:1025 before the GUI =--no-window= instance can bind; (2) TLS cert mismatch — the headless service can't reach gnome-keyring (starts outside the graphical session), falls back to its own self-signed cert, so =mbsync=/mu4e and cmail-action.py fail STARTTLS against =~/.config/protonbridge.pem= with SSL CERTIFICATE_VERIFY_FAILED. Fix applied per-machine 2026-05-22: =systemctl --user disable --now protonmail-bridge.service=, leaving the Hyprland exec-once GUI as the sole bridge (tray icon returns, served cert matches, =mbsync -a= clean). A fresh install re-enables the package service, so make it durable: mask/disable =protonmail-bridge.service= during install (likely in =scripts/cmail-setup-finish.sh=) and document that the Hyprland exec-once is the intended launcher — never run both. Source: handoff from .emacs.d 2026-05-22. @@ -83,10 +85,13 @@ Add =@emacs-eask/cli= to archsetup's provisioning so fresh machines get it. Eask - Decision: also set a persistent user npm prefix (=~/.npmrc= with =prefix=${HOME}/.local=)? If yes, that =~/.npmrc= is a legitimate dotfile to stow; if no, rely on the explicit =--prefix= flag alone. =~/.eask/= is a regenerable cache — leave un-stowed. - Acceptance: fresh run leaves =eask= on PATH at =~/.local/bin/eask= (no root); =cd ~/code/chime && make setup && make test= works. -** TODO [#B] Add signal-cli to the standard install :tooling:signal:solo: +** DONE [#B] Add signal-cli to the standard install :tooling:signal:solo: +CLOSED: [2026-06-10 Wed] :PROPERTIES: -:LAST_REVIEWED: 2026-05-26 +:LAST_REVIEWED: 2026-06-10 :END: +Shipped 2026-06-10 as archsetup commit =1229fb2= — =aur_install signal-cli= beside signal-desktop, with the JRE/update-cadence/manual-linking caveats as comments. + Add =signal-cli= (AUR) to the regular package set so every provisioned machine has it. It's the headless JSON-RPC engine for an in-Emacs Signal client (a =signel= fork) that's the same across all machines. Source: handoff from .emacs.d 2026-05-26. - =aur_install signal-cli= in the appropriate section (comms/messaging or AUR utilities). @@ -232,10 +237,13 @@ Boot the configured endpoint and send a short prompt; surface success/failure + Acceptance: fresh VM install of the ratio profile reaches an endpoint on =:8081= that answers a smoke prompt; velox profile gets Q4_K_M + 8B and answers a prompt within reasonable laptop latency; network-down install completes successfully with the pending-models warning surfaced. -** TODO [#B] Add =uv= to the install playbook :tooling:python:solo: +** DONE [#B] Add =uv= to the install playbook :tooling:python:solo: +CLOSED: [2026-06-10 Wed] :PROPERTIES: -:LAST_REVIEWED: 2026-05-29 +:LAST_REVIEWED: 2026-06-10 :END: +Shipped 2026-06-10 as archsetup commit =3e22b06= — =pacman_install uv= in the Python tooling block (uv 0.11.19 in extra). Exercised by the same-day hyprland VM run. + Add =uv= (Astral's Python package + script runner) to archsetup so fresh machines pick it up automatically. Currently installed by hand on ratio + velox (=/usr/bin/uv= 0.11.15), not in the standard set — a fresh install would skip it, and project scripts using PEP 723 inline-script metadata (=#!/usr/bin/env -S uv run --script= shebangs) would fail with =env: uv: No such file or directory=. Source: handoff from health 2026-05-29 ([[file:assets/outbox/2026-05-29-1127-from-health-todo-a-add-uv-to-the-install-playbook.org][outbox copy]]). Health requested [#A] (load-bearing for the PEP 723 pattern they're promoting + the rulesets template-script proposal). Demoted to [#B] for archsetup: no current install is broken (uv is pre-installed everywhere it's needed), and the shape matches the existing [#B] tooling-codification tasks (eask, signal-cli) — load-bearing for other projects, manually installed today, codify so fresh installs pick it up. @@ -626,13 +634,12 @@ Read recommended resources to make informed security decisions (see metrics for :END: Currently just reports errors without guidance on how to fix them -** TODO [#B] Enable TLP power management for laptops :quick: +** DONE [#B] Enable TLP power management for laptops :quick: +CLOSED: [2026-06-10 Wed] :PROPERTIES: -:LAST_REVIEWED: 2026-05-21 +:LAST_REVIEWED: 2026-06-10 :END: -TLP manages power-saving modes for Wi-Fi, USB, PCIe, Bluetooth, CPU scheduler -Install tlp, enable service, add custom Framework 13 config to /etc/tlp.d/01-custom.conf -Improves battery life and prevents power-related issues during install/post-install +Done live on velox 2026-06-10: tlp 1.10.1 installed, =/etc/tlp.d/01-custom.conf= written (EPP balance_performance/power + platform-profile per power source; 80% charge cap present but commented off), service enabled and active, systemd-rfkill masked per TLP docs. Verified: tlp-stat runs, EPP reads balance_performance on AC. Codified in archsetup commit =adb39f2= as a battery-gated block. ** TODO [#B] Improve logging consistency :PROPERTIES: @@ -728,31 +735,12 @@ Parse package warnings and repo metadata to catch upcoming deprecations proactiv *** TODO [#B] Check dotfiles for uninstalled packages - remove orphaned configs *** TODO [#B] Verify all stowed files are actually used -** TODO [#B] Remove unnecessary linux-firmware packages (velox only) :quick: +** DONE [#B] Remove unnecessary linux-firmware packages (velox only) :quick: +CLOSED: [2026-06-10 Wed] :PROPERTIES: -:LAST_REVIEWED: 2026-05-21 +:LAST_REVIEWED: 2026-06-10 :END: -Remove firmware packages for hardware not present on Framework laptop. -*NOTE:* This applies to Framework Laptop (velox), not Framework Desktop (ratio) - -Only needed: -- linux-firmware-intel (CPU/GPU/Audio) -- linux-firmware-atheros (WiFi) - -Can remove: -- linux-firmware (meta-package) -- linux-firmware-amdgpu -- linux-firmware-broadcom -- linux-firmware-cirrus -- linux-firmware-mediatek -- linux-firmware-nvidia -- linux-firmware-other -- linux-firmware-radeon -- linux-firmware-realtek - -Disk space savings: ~600 MB - -After removal, update archsetup script to install only needed firmware packages. +Done live on velox 2026-06-10. Hardware re-verified first (i915 graphics, ath9k wifi), then removed the meta + 12 subpackages (the task's 9 plus liquidio/mellanox/nfp/qlogic from the finer 2026 split), keeping intel + atheros + whence. The meta needed =-Rdd= — mkinitcpio-firmware declares a dep on it; the dangling dep is cosmetic. Initramfs rebuilt clean (warnings only for absent hardware), wifi stayed connected. Codified in archsetup commit =adb39f2= as a DMI-gated Framework-Intel block. Full confidence needs the next reboot — see Manual testing below. ** TODO [#B] Identify and replace packages no longer in repos :PROPERTIES: @@ -766,17 +754,26 @@ Systematic check for availability issues :END: Ensure packages are installed from correct source (official repos vs AUR) - prevent installing from wrong place -** TODO [#B] Automate script usage tracking :solo: +** DONE [#B] Automate script usage tracking :solo: +CLOSED: [2026-06-10 Wed] :PROPERTIES: -:LAST_REVIEWED: 2026-05-21 +:LAST_REVIEWED: 2026-06-10 :END: -Parse shell history files for ~/.local/bin script names to identify last usage date and unused scripts +Shipped 2026-06-10 as dotfiles commit =e5044b8=: =script-usage= in =common/.local/bin/= (10 unit tests). Reads zsh extended + bash history, reports last-used date per ~/.local/bin script, =--unused= lists the never-seen set. First run on ratio: 109 scripts, 98 unseen by the current (short) history window. -** TODO [#B] Automate dotfile validation :solo: +** DONE [#B] Automate dotfile validation :solo: +CLOSED: [2026-06-10 Wed] :PROPERTIES: -:LAST_REVIEWED: 2026-05-21 +:LAST_REVIEWED: 2026-06-10 :END: -Parse config files for binary/command references and verify those binaries exist - catch orphaned references +Shipped 2026-06-10 as dotfiles commit =2054da4=: =dotfiles-validate= in =common/.local/bin/= (11 unit tests). Extracts commands from hypr exec/bind-exec lines, waybar exec/on-click/on-scroll values, and systemd user-unit Exec* lines, then verifies each resolves. First run found 4 real orphans — see the follow-up task below. + +*** TODO Fix the 4 orphaned references dotfiles-validate found :quick: +- =hyprland.conf:206= tor-browser (Ctrl+Alt+W bind, binary not installed on ratio) +- =hyprland.conf:208= virtualbox (Super+V bind, binary not installed on ratio) +- =common/.config/systemd/user/emacs.service:7= ExecStart points at =~/.local/bin/emacs= (doesn't exist; emacs is =/usr/bin/emacs=) +- =minimal/.config/systemd/user/emacs.service:7= same dangling ExecStart +Decide per item: install the binary, repoint, or drop the reference. ** TODO [#B] Test security + functionality together :PROPERTIES: @@ -868,11 +865,12 @@ error-prone — changes must be made in both places. Consider: - Same situation applies to fuzzel.ini The goal is a single place to edit each config, not two. -** TODO [#C] Create Chrome theme with dupre colors :quick:solo: +** DONE [#C] Create Chrome theme with dupre colors :quick:solo: +CLOSED: [2026-06-10 Wed] :PROPERTIES: -:LAST_REVIEWED: 2026-05-21 +:LAST_REVIEWED: 2026-06-10 :END: -Create a Chrome browser theme using the dupre color palette. +Shipped 2026-06-10 as archsetup commit =4736058=: unpacked-extension theme at =assets/color-themes/dupre/chrome-theme/= (manifest.json + README with the color mapping and load-unpacked install steps). Visual check is yours — see Manual testing below. ** TODO [#C] Monitor and optimize test execution time :PROPERTIES: @@ -985,8 +983,25 @@ Parse yay errors and provide specific, actionable fixes instead of generic error ** TODO [#D] Improve progress indicators throughout install Enhance existing indicators to show what's happening in real-time -** TODO [#D] Add retry logic to git_install function :quick: -pacman_install and aur_install have retry logic, but git_install doesn't +** DONE [#D] Add retry logic to git_install function :quick: +CLOSED: [2026-06-10 Wed] +Already shipped before this review — commit =798b86f= gave git_install the same MAX_INSTALL_RETRIES loop as pacman/aur, with a clean-slate build dir per attempt. The task predates the fix; closing as done. + +** TODO Manual testing and validation +*** Dupre Chrome theme renders correctly +What we're verifying: the new Chrome theme's colors look right in a real browser — palette mapping can't be eyeballed from a manifest. +- Open chrome://extensions in Chrome +- Enable "Developer mode" (top right) +- Click "Load unpacked" and select =~/code/archsetup/assets/color-themes/dupre/chrome-theme/= +- Look at the window frame, toolbar, tab strip, and a new tab page +Expected: near-black frame (#151311), dark toolbar/omnibox (#252321), gold links on the new-tab page, steel-gray inactive tab text — coherent with the rest of the dupre desktop. + +*** velox boots clean after the firmware trim +What we're verifying: removing 13 linux-firmware packages didn't take any boot-time firmware velox actually needs (wifi and graphics were verified live, but module loads at boot are the real test). +- Reboot velox at the next natural opportunity +- Log in, confirm wifi associates and the desktop renders +- Run: dmesg | grep -iE "firmware.*(fail|error|not found)" +Expected: normal boot, wifi up, graphics fine, and no firmware load failures in dmesg. * Archsetup Resolved |
