aboutsummaryrefslogtreecommitdiff
path: root/todo.org
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* fix(waybar): show red network icon when disconnectedCraig Jennings2026-01-271-20/+28
| | | | | Added themed disconnected color to netspeed module CSS across base, dupre, and hudson styles. Changed disconnected label to "Offline".
* fix(waybar): keep volume text readable when mutedCraig Jennings2026-01-271-2/+4
| | | | | Removed #wireplumber.muted color darkening from base, dupre, and hudson waybar CSS. Icon change and "Muted" text are sufficient cues.
* fix(hyprland): open new windows in master areaCraig Jennings2026-01-271-2/+3
| | | | | Changed master layout new_status from slave to master so new windows spawn as master with focus, matching DWM default behavior.