aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* chore(todo): archive completed package-inventory tasks to ResolvedCraig Jennings13 days1-19/+17
|
* chore(todo): add undeclared-package review task from ratio diffCraig Jennings13 days1-0/+46
|
* chore(inbox): file processed .emacs.d reply to outboxCraig Jennings13 days1-0/+7
|
* chore(todo): close package-inventory tasks, regrade CI/CDCraig Jennings13 days1-12/+21
| | | | I marked the two package-inventory tasks DONE. Both are satisfied by scripts/package-inventory, now covered by characterization tests and a make package-diff target. I demoted the CI/CD pipeline task to C, since a full VM install per commit isn't realistic active backlog.
* test(scripts): lock package-inventory behavior with characterization testsCraig Jennings13 days3-6/+172
| | | | | | | | package-inventory compares archsetup's declared packages against the live system but had no tests, so a future archsetup edit (a new for-loop shape, a renamed install helper) could silently break the extraction. I added two env seams so the script is testable without the real system. PKGINV_ARCHSETUP points the extractor at a fixture installer, PKGINV_PACMAN swaps in a fake pacman serving controlled query output. Both default to the real targets, so normal use is unchanged, and the seams match the env-override pattern audit-packages.sh already uses. The 7 tests pin the extraction (direct calls, for-loop lists, variable-arg skip) and both diff directions against the fixture, with no network or real pacman db. I also added a make package-diff target so the tool is reachable alongside the test targets.
* chore(todo): close quick-capture popup task, file scroll-layout follow-upCraig Jennings2026-06-134-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 Jennings2026-06-121-0/+22
|
* chore(todo): close silent mic-mute notifications — shippedCraig Jennings2026-06-111-2/+3
|
* chore(todo): file silent mic-mute notifications taskCraig Jennings2026-06-111-0/+6
|
* chore(todo): archive completed level-2 tasks to ResolvedCraig Jennings2026-06-111-253/+233
|
* chore(todo): close the VM-warning investigation — all five resolvedCraig Jennings2026-06-111-14/+14
|
* fix(testing): lingering check could never pass — ls output broke the captureCraig Jennings2026-06-111-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 Jennings2026-06-111-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 Jennings2026-06-113-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 Jennings2026-06-111-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 Jennings2026-06-111-5/+4
|
* docs: per-host overrides shipped — spec decisions, host-tier docs, task ↵Craig Jennings2026-06-113-4/+27
| | | | close-out
* chore(todo): velox restow-conflict note on per-host task; file processed ↵Craig Jennings2026-06-114-6/+57
| | | | handoffs
* fix(testing): key the portal-query skip on the compositor, close warning tasksCraig Jennings2026-06-102-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 Jennings2026-06-105-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 Jennings2026-06-101-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 Jennings2026-06-102-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 Jennings2026-06-101-0/+11
|
* chore(todo): close Phase 2 VM verification — both runs cleanCraig Jennings2026-06-101-3/+4
|
* fix(testing): expect minimal/ tree for the .zshrc symlink on DESKTOP_ENV=noneCraig Jennings2026-06-101-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 Jennings2026-06-101-50/+65
|
* feat(install): TLP for laptops + Framework 13 firmware trimCraig Jennings2026-06-101-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 Jennings2026-06-102-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 Jennings2026-06-101-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 Jennings2026-06-101-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 Jennings2026-06-101-0/+8
|
* chore(todo): file and close the mic-mute toggle taskCraig Jennings2026-06-101-0/+17
|
* chore(todo): tag the ratio-local visual tweaks soloCraig Jennings2026-06-101-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 Jennings2026-06-101-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 Jennings2026-06-101-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 Jennings2026-06-091-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 Jennings2026-06-091-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 Jennings2026-06-091-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 Jennings2026-06-091-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 Jennings2026-06-031-0/+5
|
* chore(todo): close Phase 3.2 dotfiles tasks, file ratio pull-downCraig Jennings2026-06-021-5/+15
|
* refactor: drop in-repo dotfiles/, move stow tooling to the dotfiles repoCraig Jennings2026-06-02847-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 Jennings2026-06-021-0/+5
|
* docs: note that Tailscale traffic traverses ufw on ratioCraig Jennings2026-05-311-0/+1
|
* chore(todo): fix markdown-bold line flagged as misplaced headingCraig Jennings2026-05-311-1/+1
|
* feat(firewall): open mosh UDP port range in ufw rulesCraig Jennings2026-05-311-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.