aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* chore(todo): close quick-capture popup task, file scroll-layout follow-upHEADmainCraig Jennings25 hours4-21/+98
| | | | The popup fix shipped in the dotfiles repo (the script now calls cj/quick-capture; the scrolling layout is disabled and Super+Shift+S reassigned to a fullscreen screenshot). I filed the scrolling-layout frame-fit and wrap-around work as a follow-up, and archived the processed cross-project handoff replies.
* chore(todo): file quick-capture coordination and scroll-layout tasksCraig Jennings30 hours1-0/+22
|
* chore(todo): close silent mic-mute notifications — shippedCraig Jennings3 days1-2/+3
|
* chore(todo): file silent mic-mute notifications taskCraig Jennings3 days1-0/+6
|
* chore(todo): archive completed level-2 tasks to ResolvedCraig Jennings3 days1-253/+233
|
* chore(todo): close the VM-warning investigation — all five resolvedCraig Jennings3 days1-14/+14
|
* fix(testing): lingering check could never pass — ls output broke the captureCraig Jennings3 days1-2/+5
| | | | The check captured 'ls path && echo yes', so a present linger file produced 'path\nyes', which never string-equals yes — every run warned regardless of actual state. Forensics on a kept VM showed lingering correctly enabled all along (file present mid-install, loginctl Linger=yes, logind healthy): the original VM-artifact hypothesis was wrong, archsetup's enable-linger calls were always fine. test -e captures cleanly; verified returning 'yes' against the live VM.
* fix(install): retry the bulk package-cache refreshCraig Jennings3 days1-1/+14
| | | | A single slow mirror (fastly, <1 byte/sec on one signature file) halted a full install at the -Syu step, which had no retry while every per-package install gets three attempts. The refresh now shares MAX_INSTALL_RETRIES; pacman resumes partial downloads, so a transient stall recovers.
* feat(scripts): package auditor + fix the four packages it caughtCraig Jennings3 days3-6/+270
| | | | | | scripts/audit-packages.sh extracts every pacman_install/aur_install package (loop lists included) and verifies each against its declared source — sync dbs for official, one batched RPC query for AUR — flagging movers in both directions. Unit-tested against fixture installers with fake pacman/curl. First real run over 420 packages found four that vanished from both sources, each now fixed: libva-mesa-driver folded into mesa (line dropped), nvidia-dkms replaced by nvidia-open-dkms (Turing+; legacy cards are the preflight task's problem), swww replaced by awww (its successor, already what both machines run), and libappindicator-gtk3 replaced by libayatana-appindicator. Fifteen AUR entries that graduated to official repos still install fine via yay and are left as-is.
* feat(install): stow the per-host dotfiles tier when one existsCraig Jennings3 days1-0/+12
| | | | Mirrors the dotfiles Makefile semantics: a package named after the machine (/etc/hostname, uname -n fallback) is stowed after common + DE when the directory exists, skipped with a message otherwise. Hosts without a tier — including the test VM — see no behavior change.
* chore(todo): close the theme-CSS drift task — shipped with the drift guardsCraig Jennings3 days1-5/+4
|
* docs: per-host overrides shipped — spec decisions, host-tier docs, task ↵Craig Jennings3 days3-4/+27
| | | | close-out
* chore(todo): velox restow-conflict note on per-host task; file processed ↵Craig Jennings3 days4-6/+57
| | | | handoffs
* fix(testing): key the portal-query skip on the compositor, close warning tasksCraig Jennings3 days2-67/+39
| | | | The 19:06 verification run showed the portal skip not firing: a socket-activated xdg-desktop-portal process exists even headless, so the process check was the wrong precondition. The skip now keys on a running Hyprland, same as the socket check. That run confirmed the other three skips live (warnings 5 to 2); the remaining counted warnings are this portal case and the lingering question, which stays open.
* docs: add 2026 tool evaluations — CLI replacements, AUR helper, terminals, ↵Craig Jennings3 days5-0/+245
| | | | | | file managers, criteria Five evaluation reports: modern CLI tools (adopt bat/dust/hyperfine/tealdeer/doggo, all in extra), paru vs yay (stay with yay — paru dormant 11 months with a libalpm-broken stable), terminal emulators (stay with foot; ghostty the only challenger, wezterm effectively unmaintained), Wayland file managers (keep nautilus, add yazi over porting the frozen ranger), and the standing evaluation criteria distilled from the round. Maintenance claims verified against live repo data, not aggregator articles.
* fix(testing): skip environment-impossible checks instead of warningCraig Jennings3 days1-8/+35
| | | | Four warnings fired on every headless VM run, training the reader to ignore the warning count: the Hyprland socket and portal queries (no graphical login), the mDNS ping (slirp passes no multicast), and docker-not-responding (enabled but deliberately not started pre-reboot). Each now detects its precondition and logs a skip that counts nowhere; the warn paths stay for the cases that are real (compositor running without a socket, portal running but unqueryable, mDNS failing on real networking, docker active but dead). The lingering warning stays — it needs its own investigation.
* fix(install): keep linux-firmware-realtek in the Framework trimCraig Jennings3 days2-10/+8
| | | | velox's first post-trim boot showed r8152 failing to load rtl_nic/rtl8156b-2.fw — the Framework Ethernet expansion card is a Realtek RTL8156B, so the trim list was wrong to drop realtek firmware. The driver runs on internal defaults without the blob, so nothing broke, but the package is back on velox and out of the removal list.
* chore(inbox): file processed archangel handoff to outboxCraig Jennings3 days1-0/+11
|
* chore(todo): close Phase 2 VM verification — both runs cleanCraig Jennings3 days1-3/+4
|
* fix(testing): expect minimal/ tree for the .zshrc symlink on DESKTOP_ENV=noneCraig Jennings3 days1-2/+5
| | | | The dotfiles validation hardcoded .dotfiles/common/.zshrc, but a none install stows the standalone minimal/ tree, so the first none-run ever to reach validation failed on a correct symlink. The expected path now follows DESKTOP_ENV from the VM conf.
* chore(todo): close the solo-batch tasks, file validate follow-up + manual checksCraig Jennings3 days1-50/+65
|
* feat(install): TLP for laptops + Framework 13 firmware trimCraig Jennings3 days1-0/+43
| | | | TLP installs and enables on any machine with a battery (BAT* present), with an /etc/tlp.d/01-custom.conf pinning the CPU energy/perf split per power source; systemd-rfkill gets masked per TLP's docs. The firmware trim is DMI-gated to Framework Intel machines, where the hardware set is known: keep linux-firmware-intel and -atheros, remove the meta and the other ten subpackages (~600MB). Applied live on velox first — TLP 1.10.1 active, wifi up after the trim, initramfs rebuilt clean.
* feat(assets): add dupre Chrome themeCraig Jennings3 days2-0/+51
| | | | Unpacked-extension theme mapping the dupre palette onto Chrome's window chrome: bg #151311 frame, bg+1 toolbar/omnibox, gold #d7af5f new-tab links, steel inactive-tab text. Install via chrome://extensions dev mode, Load unpacked.
* feat(install): add signal-cli to the standard installCraig Jennings3 days1-0/+5
| | | | It's the headless JSON-RPC backend for the in-Emacs Signal client, hand-installed until now. Device linking stays manual (interactive QR scan) — the install only guarantees the binary.
* feat(install): add uv to the Python tooling setCraig Jennings3 days1-0/+1
| | | | Fresh installs were skipping uv, so PEP 723 inline-script shebangs (#!/usr/bin/env -S uv run --script) failed with env: uv: No such file or directory. ratio and velox had it hand-installed.
* chore(todo): file the waybar theme-CSS drift taskCraig Jennings4 days1-0/+8
|
* chore(todo): file and close the mic-mute toggle taskCraig Jennings4 days1-0/+17
|
* chore(todo): tag the ratio-local visual tweaks soloCraig Jennings4 days1-2/+2
| | | | Add :solo: to the waybar even-spacing and Chrome dupre-theme tasks. Both are ratio-local and objectively verifiable (measure the gaps, confirm the palette hex values), with the eyeball confirmation handed off as a manual-testing reminder. Velox-only or design-call visual tasks stay off.
* chore(todo): tag the security-dashboard task soloCraig Jennings4 days1-1/+1
| | | | Add :solo: to the security-dashboard command task. It's buildable and locally verifiable against known system state with no upfront decision, so it meets the clarified solo bar.
* chore(todo): tag solo-able tasksCraig Jennings4 days1-6/+6
| | | | Tag six tasks :solo: (finishable end to end with no input, verifiable locally): the airplane-mode robustness follow-ups, the signal-cli and uv install additions, the Phase-2 VM verify, and the two automate-X scripts (usage tracking, dotfile validation). Kept :solo: off anything needing a design call, visual confirmation, laptop-only hardware, or sign-off.
* chore(todo): file three waybar feature tasksCraig Jennings4 days1-0/+55
| | | | File three [#B] waybar tasks: collapsible bar sides (an arrow click shrinks either side to a base set), an nmcli-backed network-manager dropdown with optional GPG-encrypted secrets, and a desktop-settings dropdown gathering the dim, brightness, touchpad, airplane, and idle toggles and sliders.
* chore(todo): scope wlogout square-button task to per-host, add a testCraig Jennings4 days1-2/+4
| | | | The wlogout buttons render square on ratio but rectangular on velox, so it's a resolution difference, not a flat bug. Note that, require a regression test so the square-cell fix holds across both hosts' resolutions, and drop :quick: since the cross-host test is more than a spare-moment change.
* chore(todo): re-grade open-source-release to B, sleep/suspend to CCraig Jennings4 days1-10/+12
| | | | Re-grade the open-source-release epic to [#B] and drop its stale 2026-05-21 schedule (the date had long passed, and an undated B is the honest state). Re-grade sleep/suspend to [#C]. Tag the mpd playlist-split task :quick:. Refresh the review dates on the oldest-unreviewed batch.
* chore(todo): close dotfiles-separation, file mesa/hyprland update guardCraig Jennings4 days1-22/+28
| | | | | | | | Mark the dotfiles-separation epic DONE. Phases 1-3.2 shipped and ratio's stale dotfiles symlinks are cleaned up. Promote its two open follow-ups (per-host override, Phase-2 VM verify) to standalone [#B] tasks. Close the claude-code-optional and input-validation items as shipped. Note that six open-source-release sub-tasks now target the dotfiles repo after Phase 3.2 moved that tree out. File a [#B] guard against a live mesa/hyprland/wayland-runtime -Syu crashing the compositor.
* chore(todo): file mpd playlist-directory reorg taskCraig Jennings10 days1-0/+5
|
* chore(todo): close Phase 3.2 dotfiles tasks, file ratio pull-downCraig Jennings12 days1-5/+15
|
* refactor: drop in-repo dotfiles/, move stow tooling to the dotfiles repoCraig Jennings12 days847-837480/+78
| | | | | | | | Since the installer clones DOTFILES_REPO into ~/.dotfiles and stows from there, the in-repo dotfiles/ tree was dead weight. Nothing reads it at install time. I removed it (831 files) now that both machines are migrated. The Makefile's stow / restow / reset / unstow / import targets and the dotfile-script unit suites moved to the dotfiles repo. They sit alongside the scripts they manage and run standalone (cd ~/.dotfiles && make ...). This Makefile keeps the VM-integration targets and the installer-helper suite (safe-rm-rf). I updated CLAUDE.md and README.md so stow operations run from ~/.dotfiles, and the dotfile-management, theme, and unit-test sections point at the standalone repo. The README was already describing the old in-repo model from before the installer switched to cloning. This brings it in line.
* chore(todo): file dotfiles unit-test migration taskCraig Jennings12 days1-0/+5
|
* docs: note that Tailscale traffic traverses ufw on ratioCraig Jennings14 days1-0/+1
|
* chore(todo): fix markdown-bold line flagged as misplaced headingCraig Jennings14 days1-1/+1
|
* feat(firewall): open mosh UDP port range in ufw rulesCraig Jennings14 days1-0/+2
| | | | archsetup installs mosh, but the ufw rule list never opened its UDP range. A fresh install or rerun leaves incoming mosh blocked until the port is added by hand. I added 60000:61000/udp to the declarative rule loop so the firewall config reproduces a working mosh setup on rebuild.
* chore(todo): file local-llm and uv install tasks; process inboxCraig Jennings2026-05-295-0/+232
| | | | Filed two new [#B] parent tasks. The local offline LLM runtime task carries design-decision and implementation children for resolving the open design questions alongside implementation work. The uv install task matches the existing eask/signal-cli tooling-codification shape — load-bearing for other projects, manually installed today, codify so fresh installs pick it up. Four cross-project handoffs moved to outbox.
* chore(todo): close dim-inactive task and archive resolved workCraig Jennings2026-05-271-55/+43
| | | | I closed the Hyprland dim-inactive task. The config itself shipped in the dotfiles repo. The cleanup pass archived five resolved subtrees into Resolved and bumped the per-machine-override task to [#A].
* chore: file processed eask and signal-cli handoffs to outboxCraig Jennings2026-05-262-0/+85
|
* fix(archsetup): remove the cpupower setup, wrong for this hardwareCraig Jennings2026-05-262-15/+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.
* fix(archsetup): write the cpupower config instead of editing a missing fileCraig Jennings2026-05-261-6/+8
| | | | | | A VM test caught my cpupower step failing with sed exit 2: the cpupower package no longer ships /etc/default/cpupower, so there was nothing to edit. The step was non-fatal, so the install carried on, but the governor never got set. I now write the file fresh with printf, which creates it whether or not one exists. The governor stays performance for the reasons in the surrounding comment.
* fix(archsetup): stop yay hanging on its diff prompt during unattended installsCraig Jennings2026-05-261-1/+5
| | | | | | A VM test run hung for 80 minutes and timed out. yay was blocking on "Diffs to show?" for an AUR package whose build files already existed, waiting for input that never comes in a headless install. --noconfirm doesn't cover yay's diff and clean menus. I added --answerdiff None --answerclean None to the yay call in aur_install: show no diffs, don't clean, proceed. This is the right answer for an unattended run and matches the --noconfirm posture already in place. It likely explains the recurring 90-minute VM-test timeouts that read like slow AUR builds.
* 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.
* feat(archsetup): set a CPU governor with cpupowerCraig Jennings2026-05-261-0/+12
| | | | | | I added cpupower to the Power section: install it, set the governor in /etc/default/cpupower, and enable cpupower.service so the governor applies at boot. The governor is performance. It's the one value valid under every cpufreq driver. amd_pstate and intel_pstate in active mode accept only performance or powersave, while passive and acpi-cpufreq also allow schedutil and ondemand. Laptops want powersave, so that's a per-host override to layer on later. The enable is non-fatal, matching the rest of the Power section.