aboutsummaryrefslogtreecommitdiff
path: root/todo.org
Commit message (Collapse)AuthorAgeFilesLines
* fix(archsetup): remove the cpupower setup, wrong for this hardwareCraig Jennings2026-05-261-1/+4
| | | | | | I added cpupower earlier this session, VM-verified it, then realized it's the wrong tool here. Both my machines run active-mode pstate drivers (the desktop on amd-pstate-epp, the laptop on intel_pstate), where the only governors are performance and powersave and the driver scales frequency itself via EPP. Both already sit on powersave, which is the recommended adaptive mode, not "slow." cpupower's governor-forcing only helps older acpi-cpufreq systems, which I don't run. Forcing performance would pin max clocks: worse battery on the laptop, pointless heat on the desktop. So I dropped the cpupower step rather than ship a backwards default. The cpufreq drivers self-manage with no help from us.
* chore(todo): log eask, signal-cli, and dim-inactive tasksCraig Jennings2026-05-261-0/+37
| | | | Three task additions from this session: provision Eask in archsetup (linear-emacs handoff), add signal-cli to the standard install (.emacs.d handoff), and investigate dimming inactive Hyprland windows.
* chore(todo): close the moot eval task and the already-done rustup taskCraig Jennings2026-05-261-3/+6
| | | | Both were stale. The eval task pointed at a line-434 eval that no longer exists. The only eval left is in retry_install, and it's the deliberate one that captures the exit code directly, so there's nothing to replace. The rustup task was already implemented (rustup install plus rustup default stable in the languages section). It just predated that work.
* docs: add per-host override spec and backlog tasksCraig Jennings2026-05-261-4/+43
| | | | | | I added a spec for a per-machine override mechanism (docs/PLAN-per-host-overrides.org). It proposes per-host stow tiers keyed on hostname, with the existing conf.d glob as the first tenant, so HiDPI scaling can differ between ratio and velox without per-app patches. It's gated on review. I also updated the task list: added a pocketbook development backlog and a waybar timer module task, fleshed out the per-host task with a spec link, and rewrote the stale velox "pocketbook not installed" review item as a dated entry now that nothing installs it.
* chore: log dotfiles-separation progress and file processed handoffsCraig Jennings2026-05-231-0/+37
|
* chore: tag sub-30-minute tasks with :quick:Craig Jennings2026-05-211-18/+18
| | | | I walked the open work and tagged 18 tasks finishable in 30 minutes or less — CSS spacing tweaks, single-file archsetup edits, gitignore-and-untrack cleanups, and config-flag gates. The tag filters the agenda down to quick wins.
* chore: cancel obsolete X11 VT-switch task, demote 6 undated A's to BCraig Jennings2026-05-211-9/+180
| | | | | | | | The priority scheme requires an [#A] to carry a date. Six were undated aspirational backlog with no active work — the CI/CD pipeline, recovery-script generation, the package-inventory trio (inventory system, monthly review, automated comparison), and security education — so I dropped them to [#B]. I cancelled "Prevent X termination and VT switching." Its whole approach is xorg.conf.d with DontVTSwitch and DontZap, dead now that these machines run pure Wayland with no XWayland. I also recorded today's review date on the open tasks I walked.
* chore: log UI follow-up bugs and ignore dated secret backupsCraig Jennings2026-05-211-56/+58
| | | | I logged three follow-ups: uneven waybar indicator spacing, airplane-mode toggle hardening (a laptop guard and a brightness fallback), and rectangular wlogout exit-menu buttons. I also moved the finished touchpad and airplane-mode entries into the resolved section, and added a gitignore rule so dated .bak backups stay on disk but out of git.
* feat(hyprland): add airplane-mode waybar toggleCraig Jennings2026-05-211-0/+15
| | | | | | | | I added a laptop-only waybar button that drops the machine into a low-power state and restores it on a second click. Engaging turns wifi off, sets the CPU energy-performance preference to power, dims the backlight to 35%, and stops network-only services (tailscale, proton-vpn, avahi, cups, wsdd, geoclue, sshd, fail2ban, syncthing). Bluetooth is left alone so earbuds keep working. Disengaging replays the state recorded when airplane mode was engaged rather than writing hardcoded defaults. A lever already in its low-power position is left untouched: wifi that was already off stays off, and a service that was already stopped isn't restarted. The indicator hides itself on machines with no battery, so desktops never show the button. State lives in $XDG_RUNTIME_DIR/airplane-state, and the bar refreshes the moment the toggle fires via a realtime signal.
* chore: document a priority scheme and close two tasks in todo.orgCraig Jennings2026-05-201-5/+70
| | | | | | I added an A/B/C/D priority scheme to the task list: what each level means, the assignment criteria, and the rule that an [#A] task needs a scheduled or deadline date so priorities stay grounded in time. I also closed two finished tasks: the rm -rf path guard (done, with a pointer to the safe_rm_rf helper and its tests) and the touchpad toggle indicator (spec, implementation, and deploy record).
* chore: clean dead todo.org doc-links and file three docs to outboxCraig Jennings2026-05-201-6/+2
| | | | | | I removed three dead `file:` links in todo.org. They pointed at docs that were never written: testing-strategy.org, firmware-cleanup.org, and PLAN-browser-themes.org. Each task body already carries that content inline, so the links were dead weight. I also reworded the Testinfra task's lead-in that claimed the testing-strategy doc exists. I filed three resolved reference docs into assets/outbox/: the calendar-sync scrub note, the tmux copy-mode handoff, and the 2026-05-19 lint follow-up report.
* chore: log the calendar-secret scrub and queue URL rotationCraig Jennings2026-05-201-11/+21
| | | | Recorded the git-history scrub of the private calendar config and added a follow-up to rotate the three exposed feed URLs once I'm at ratio's GUI. Also closed the testing-docs and shellcheck tasks that shipped this round.
* chore: log AUR exit-0 fix verification and close the sub-taskCraig Jennings2026-05-191-6/+4
| | | | | | Two updates in todo.org. I marked the two dconf entries in the `[#B] Fix install errors` parent body as RESOLVED in `dc06895`, since the system-wide dconf db migration verified clean in last night's VM run. I converted the `*** TODO [#B] AUR exit-0 logged as error` sub-task into a dated event-log entry. The root cause was a bash if-compound semantics trap in `retry_install` (the if-compound exits 0 when no condition tested true, overwriting the eval's actual exit code that `last_exit_code=$?` was trying to capture). Today's VM run verified the fix: `mkinitcpio-firmware` and `tidaler` now report `error code: 1` instead of the misleading `error code: 0`.
* chore: close LICENSE task and log emacs-fix VM verificationCraig Jennings2026-05-191-3/+8
| | | | | | Two updates in todo.org. I closed the LICENSE-file subtask as a dated event-log entry. The canonical GPL-3 text landed at `LICENSE` in 028f144 on 2026-05-11. The SPDX/NOTICE-headers follow-up splits into its own subtask for the eventual public release. I also logged the 7cd7392 emacs-stow fix verification under `[#B] Fix install errors`. The 2026-05-18 `make test` exercised the new three-branch path (git init + fetch + checkout -B main against a stow-populated `~/.emacs.d`) and the exit-128 error is gone from the Error Summary.
* chore(todo): collapse stray **NOTE:** label to italicCraig Jennings2026-05-191-1/+1
| | | | | | Lint flagged the **NOTE:** marker as a possibly-misplaced heading (double-asterisk at start of line). Switching to single-asterisk italic keeps the visual emphasis without the heading collision.
* fix(archsetup): handle stow-created ~/.emacs.d when cloning dotemacsCraig Jennings2026-05-171-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 2026-05-16 VM run surfaced `setting up emacs configuration files (error code: 128)` with `fatal: not a git repository`. Root cause: `dotfiles/common/.emacs.d/calendar-sync.local.el` lives in the stow tree, so by the time the dotemacs clone step runs, `~/.emacs.d/` already exists with a stowed symlink inside. The previous two-branch check `[ -d "$emacs_dir" ]` then took the `git pull` path and failed because the dir isn't a git checkout. I replaced the check with three branches: - `.git` exists → `git pull --recurse-submodules` (the existing upgrade path). - Dir missing or empty → `git clone --recurse-submodules` (the fresh install path). - Dir exists with content but no `.git` (the stow case, today's bug) → `git init` + `remote add origin` + `fetch --recurse-submodules` + `checkout -B main origin/main` + `submodule update --init --recursive`. This pulls the tree in on top of the stowed file without losing it. The one-line `[ -d ]` → `[ -d .git ]` fix wouldn't have been enough on its own: the clone branch would still fail because `git clone` refuses a non-empty target. `bash -n archsetup` is clean. The VM test run that surfaced the bug exercised the old two-branch path. The new third branch wants a fresh `make test` to verify before this lands on a real machine. todo.org picks up two things this commit touches. The stale gitrepos.sh reference under "Remove/template personal info from scripts" comes out. A new sub-TODO under `[#B] Fix install errors` expands the existing tidaler item: the same "AUR exit 0 logged as error" pattern now hits six packages instead of one (tidaler, mkinitcpio-firmware, speedtest-go-bin, rar, masterpdfeditor, zsh-fast-syntax-highlighting-git). The recommendation points at `aur_install` and the error-summary aggregator as trace targets.
* chore(todo): bump GitHub-prep subtask priorities to ACraig Jennings2026-05-151-14/+14
|
* chore: close out dotfile-separation spec reviewCraig Jennings2026-05-151-1/+5
|
* docs: add dotfile-separation spec with phased implementation planCraig Jennings2026-05-131-0/+6
| | | | Covers extracting dotfiles/ into a standalone repo, adding a minimal/ stow target for headless installs, and a three-phase plan with commit boundaries. todo.org tracks the review as a sub-task.
* chore: add tasks for the 2026-05-11 VM-test validation warningsCraig Jennings2026-05-121-0/+25
| | | | I added a [#C] task with one child per validation warning from the 18:36 VM test, each with the check it comes from and a recommendation. Most are headless-VM or QEMU-slirp false positives the test harness should skip. The lingering and Docker ones have a small real angle: logind health in the VM, and "systemctl enable docker" vs "enable --now".
* chore: update VM-test-errors TODO with post-fix statusCraig Jennings2026-05-111-8/+9
|
* feat(archsetup): add input validation for config and usernameCraig Jennings2026-05-111-2/+6
| | | | | | | | A new `validate_config()` runs whenever `--config-file` is used and rejects bad values up front instead of letting the install run partway and die: `DESKTOP_ENV` must be dwm/hyprland/none (previously only caught in the display-server step), `AUTOLOGIN`/`NO_GPU_DRIVERS` must be yes/no (previously silently ignored), `LOCALE` gets a basic shape check, and the six `*_REPO` URLs get a scheme plus no-whitespace/no-leading-dash check before they reach `git clone`. I also pulled the username regex and reserved-names check out of `preflight_checks()` into a `validate_username()` helper, and call it from both `preflight_checks()` and `validate_config()`. That closes a gap: the old inline check only ran when the username was prompted, so a config-supplied `USERNAME=root` went through unchecked. This is not a security boundary: `load_config` sources the config as bash, so a hostile config can already do anything. It is about catching typos with a clear message. Verified with `bash -n` and a smoke-test matrix. The next `make test` run confirms valid configs still install.
* chore: track findings from the 2026-05-11 VM test runCraig Jennings2026-05-111-2/+19
| | | | | | I added a TODO for the 7 errors logged during the run. A few look real: fc-cache and dconf hit exit 127, and gamemode failed for the user. A couple look like VM/nf_tables artifacts I want to confirm on bare metal. I moved the rlwrap-not-installed investigation to Resolved (DONE). rlwrap installs cleanly in a fresh VM, so the ratio glitch does not reproduce. The test-infra fix from the previous commit is also logged as DONE in Resolved.
* chore: reorganize task list and record open-source-release notesCraig Jennings2026-05-111-85/+132
| | | | Moved 13 completed tasks into the Resolved section. Recorded the open-source-release source audit and the dotfile-separation plan as dated subheaders under their tasks.
* chore: mark quick-wins TODOs as DONECraig Jennings2026-05-071-3/+6
|
* chore(todo): drop SCHEDULED from closed linux-lts checkCraig Jennings2026-04-271-1/+0
|
* fix(hyprland): Escape special workspace on navigateCraig Jennings2026-04-241-0/+18
| | | | | | | | | | | | | When focus is inside a special workspace (e.g. special:stash), layoutmsg cyclenext/cycleprev only operates within that workspace, trapping $mod+J inside the scratchpad overlay. Detect workspace name starting with "special:" on focus navigation (not move), toggle the overlay off first, re-read active window state, then fall through to the normal layout/floating branches. Add unit tests with a fake hyprctl harness in tests/layout-navigate/. ```
* fix: archsetup package fixes and velox post-install improvementsCraig Jennings2026-04-101-0/+68
| | | | | | Fixed multilib, adwaita-qt, webkit2gtk, touchpad-indicator, tidaler, pocketbook URL. Added post-archsetup review tasks for laptop setup. Updated mbsyncrc for STARTTLS and waypaper config.
* session: archsetup run on velox, multi-machine config supportCraig Jennings2026-04-101-0/+13
| | | | | | | | Ran archsetup on velox, fixed 7 package failures, enabled multilib, added dconf settings for fast portal-gtk startup. Introduced hyprland conf.d pattern for machine-local overrides. Cloned all repos, configured HiDPI scaling, gaps, and scratchpad sizing for laptop. Added resolution-adaptive config tasks to todo.
* chore: mark monocle layout and linux-lts tasks as doneCraig Jennings2026-03-071-2/+6
| | | | | Monocle layout now native in Hyprland 0.54. linux-lts at 6.18.16, amdgpu workaround already removed.
* chore(hyprland): update hypridle settings, update calibre configsCraig Jennings2026-03-061-2/+0
| | | | | Dim at 5min, lock at 7min, remove DPMS off and suspend. Update calibre sort history and window geometry.
* chore: add ssh config, update todo, add Berkeley Mono NF web fontsCraig Jennings2026-02-251-23/+138
| | | | | | | | Add deepsat GitHub Enterprise host to ssh config, reorganize todo.org with GitHub release prep tasks, add Berkeley Mono Nerd Font woff/woff2 variants, and move podman notes to outbox. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(aix): focus newly opened project window after sortCraig Jennings2026-02-141-1268/+175
| | | | | | Move select-window after sort_windows so the first new project gets focus via stable window ID. Also restructure todo.org into flat task list (V2MOM preserved in docs/v2mom.org).
* feat(archsetup): add package-inventory script and reconcile packagesCraig Jennings2026-02-071-0/+3
| | | | | | | | | Add package-inventory script that compares archsetup-declared packages against the live system. Fix awk for-loop parser and dependency filtering. Add 10 missing packages to archsetup (hyprpaper, wev, socat, sshpass, flatpak, solaar, ttf-dejavu, atomicparsley, freetube, tidal-dl-ng). Fix pipx_install function name bug. Change Hyprland follow_mouse to 0 to fix swap focus issue.
* chore(todo): add monocle layout task and update qalculate historyCraig Jennings2026-02-061-0/+6
|
* chore(todo): mark completed tasks from session reviewCraig Jennings2026-02-021-30/+73
| | | | | | | | | | | | - Mark DONE: set-theme overwriting, plugin notifications, FZF verification - Mark DONE: testing infrastructure (VM-based, 90 validation functions) - Mark DONE: disk encryption, UFW firewall (handled in archangel) - Mark DONE: SSH and Proton Mail Bridge verification - Cancel: hy3 tab bar theming (plugin disabled due to crashes) - Add: Chrome theme with dupre colors [#C] - Reschedule: linux-lts check to 2026-02-23 (+3w) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* fix(hyprland): dismiss plugin notifications on startupCraig Jennings2026-02-011-0/+54
| | | | | | Add hyprctl dismissnotify after hyprpm update to clear hardcoded plugin initialization messages. Also document set-theme and plugin notification issues in todo.org.
* docs(todo): update wallpaper note to reflect swww choiceCraig Jennings2026-02-011-1/+1
| | | | Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* chore: remove yazi, update file manager notesCraig Jennings2026-02-011-2/+9
| | | | | | | | - Remove yazi, lazygit, ouch from archsetup (theming issues) - Update ranger comment to note X11/ueberzug dependency - Update todo with yazi trial notes, lower priority Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs(todo): add task to review theme config architectureCraig Jennings2026-01-271-0/+11
| | | | | | | | The dunst/fuzzel configs exist in both dotfiles/common (stowed) and dotfiles/hyprland/.config/themes/ (templates), requiring edits in multiple places. Needs a cleaner single-source-of-truth approach. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hyprland): add hy3 tab bar theme colors and boot-time theme applyCraig Jennings2026-01-271-1/+1
| | | | | | | | | Add static plugin { hy3 { tabs { ... } } } block with full color set including border, focused, and darkened inactive tab colors. Eliminates default cyan borders. Update set-theme with matching colors for both dupre and hudson themes. Add exec-once set-theme to reapply theme on boot. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(fuzzel): use dupre red border on pinentry password promptCraig Jennings2026-01-271-1/+1
| | | | | | | | Add --border-color=d47c59ff (dupre red) and widen from 25 to 35 characters in pinentry-fuzzel so the password dialog stands out from normal fuzzel usage and accommodates longer passwords. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(dunst): remove border and match font size to waybarCraig Jennings2026-01-271-1/+1
| | | | | | | Set frame_width to 0 (no border) and font size from 13 to 14 in both dupre and hudson theme dunstrc files, matching waybar's 14px text size. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hyprland): bind mod-f to nautilus instead of ranger scratchpadCraig Jennings2026-01-271-1/+1
| | | | | | | | Removed the foot-files ranger scratchpad (workspace rule, keybinding, window rules) and the redundant CTRL+ALT+F nautilus binding. mod-F now launches nautilus directly as a regular window. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs(todo): add Hyprland UI tasks, update prioritiesCraig Jennings2026-01-271-2/+10
| | | | | | | Add nautilus keybinding, monocle tab-group theming, dunst text sizing, and bump fuzzel/dunst tasks to priority B. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs(todo): mark completed tasks, add dunst/fuzzel UI tasksCraig Jennings2026-01-271-30/+23
| | | | | | | | Mark done: temperature/storage waybar thresholds, dotfiles cleanup, dotfiles reorganization. Cancel rofi-wayland (chose fuzzel). Add new tasks for dunst border removal and fuzzel border visibility. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(waybar): add warning/critical color thresholds for temperature and diskCraig Jennings2026-01-271-3/+5
| | | | | | | | Temperature turns yellow at 70°C, red at 80°C using built-in waybar states. Disk replaced with custom script that turns yellow at 80% full, red at 90%, working across ZFS/btrfs/ext4. Colors themed per dupre/hudson. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(theme): switch cursor to Bibata Modern IceCraig Jennings2026-01-271-15/+16
| | | | | | Replaced Vimix/Capitaine cursors with Bibata-Modern-Ice across all config locations: hyprland.conf, dupre/hudson Xresources, GTK settings, and archsetup package list. Standardized cursor size to 24.
* feat(hyprland): screenshot script with fuzzel menuCraig Jennings2026-01-271-2/+6
| | | | | | Replaced inline grim/satty keybindings with screenshot script that captures to file then presents fuzzel menu: Copy Path, Copy Image, or Annotate. Bindings: $mod+S (region), $mod+Print (fullscreen).
* fix(hyprland): focus new windows when they openCraig Jennings2026-01-271-2/+3
| | | | | Added focus_on_activate = true to misc section so new windows spawning as master receive keyboard focus immediately.