aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-20 14:48:49 -0400
committerCraig Jennings <c@cjennings.net>2026-05-20 14:48:49 -0400
commitc6c7a48b81e5592e1f37947a5532dc202ab701e3 (patch)
treec7a0f9c57aecd21e06f6a4f9f22b35ff0652dbf0
parent5426f03ebea6f71366e4855eeaf1dea1c5918937 (diff)
downloadarchsetup-c6c7a48b81e5592e1f37947a5532dc202ab701e3.tar.gz
archsetup-c6c7a48b81e5592e1f37947a5532dc202ab701e3.zip
chore: clean dead todo.org doc-links and file three docs to outbox
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.
-rw-r--r--assets/outbox/2026-05-13-calendar-sync-local-into-dotfiles.txt80
-rw-r--r--assets/outbox/2026-05-18-handoff-from-dotemacs-tmux-copy-mode-keys.org59
-rw-r--r--assets/outbox/2026-05-19-lint-followups.org49
-rw-r--r--todo.org8
4 files changed, 190 insertions, 6 deletions
diff --git a/assets/outbox/2026-05-13-calendar-sync-local-into-dotfiles.txt b/assets/outbox/2026-05-13-calendar-sync-local-into-dotfiles.txt
new file mode 100644
index 0000000..a167e77
--- /dev/null
+++ b/assets/outbox/2026-05-13-calendar-sync-local-into-dotfiles.txt
@@ -0,0 +1,80 @@
+calendar-sync.local.el into common/.emacs.d/
+=============================================
+
+Date: 2026-05-13
+Machine: laptop (this one)
+
+What was done
+-------------
+
+Added dotfiles/common/.emacs.d/calendar-sync.local.el. The real
+file lives under common/ and is symlinked back into ~/.emacs.d/
+on this machine:
+
+ ~/.emacs.d/calendar-sync.local.el
+ -> ~/code/archsetup/dotfiles/common/.emacs.d/calendar-sync.local.el
+
+A matching template, calendar-sync.local.el.example, was checked
+into the dotemacs repo so future setups know what shape the file
+needs to take. The .example file is tracked in dotemacs;
+calendar-sync.local.el itself is gitignored in dotemacs (entry
+already present at .gitignore:54).
+
+Why
+---
+
+On 2026-05-04, commit cc594fd ("Make calendar sync startup safe
+without config") in the dotemacs repo refactored
+modules/calendar-sync.el to stop hard-coding the calendar feed
+URLs inline. The new design loads them from a private file at
+~/.emacs.d/calendar-sync.local.el. That file is gitignored in
+dotemacs, so it never propagates across machines via the dotemacs
+checkout.
+
+This laptop never got the file created. M-x calendar-sync-now
+failed with "calendar-sync: No calendars configured". State file
+(data/calendar-sync-state.el) showed last successful sync at
+2026-05-01 16:57, three days before the refactor landed --
+confirming the gap.
+
+Putting the file under common/ in archsetup means GNU Stow
+distributes it the same way every other dotfile is distributed:
+make stow links it into $HOME on each machine.
+
+Heads-up for archsetup
+----------------------
+
+The file contains real private .ics feed URLs (Google personal,
+Proton, Google work). It is currently TRACKED in archsetup --
+.gitignore was not modified to exclude it, because the whole
+point of putting it under common/ is for it to flow to other
+machines via git pull + make restow.
+
+The archsetup remote is git@cjennings.net:archsetup.git only --
+your private server, no public mirror -- so exposure is bounded
+to that host. Same URLs are already in dotemacs git history on
+both cjennings.net and the github.com mirror anyway (from
+cc594fd^). The dotemacs URLs were left in place by choice.
+
+If you ever change your mind on tracking, the move is:
+ 1. Regenerate the .ics secret addresses in each calendar's UI.
+ 2. Add dotfiles/common/.emacs.d/calendar-sync.local.el to
+ archsetup/.gitignore.
+ 3. Distribute the file out-of-band (manual copy, age-encrypted,
+ pass, whatever).
+
+While here: inbox/ was root-owned (since 2026-04-10) and
+unwritable as cjennings, blocking note creation. Ran:
+ sudo chown -R cjennings:cjennings ~/code/archsetup/inbox/
+to normalize. No idea what set it to root originally -- probably
+a sudo-driven install step. Worth flagging if it returns.
+
+Action items
+------------
+
+- Decide whether to commit common/.emacs.d/calendar-sync.local.el
+ in archsetup (recommended) or pull it into a separate private
+ channel.
+- On every other machine: pull archsetup, run `make restow
+ <de>`, restart Emacs. The symlink should appear and the next
+ M-x calendar-sync-now will work.
diff --git a/assets/outbox/2026-05-18-handoff-from-dotemacs-tmux-copy-mode-keys.org b/assets/outbox/2026-05-18-handoff-from-dotemacs-tmux-copy-mode-keys.org
new file mode 100644
index 0000000..c3e46b4
--- /dev/null
+++ b/assets/outbox/2026-05-18-handoff-from-dotemacs-tmux-copy-mode-keys.org
@@ -0,0 +1,59 @@
+#+TITLE: tmux copy-mode keys aligned with Emacs vterm-copy-mode
+#+DATE: 2026-05-18
+
+* Source
+
+Authored from a =~/.emacs.d= session. Edit lives in this repo because
+=~/.tmux.conf= is the stowed symlink target.
+
+* Change
+
+Added a copy-mode key block to =dotfiles/common/.tmux.conf= (just below
+=set -g status-keys emacs=) to mirror the Emacs
+=cj/vterm-tmux-history= / =vterm-copy-mode= ergonomics in
+=~/.emacs.d/modules/vterm-config.el=:
+
+#+begin_src tmux
+bind-key -T copy-mode M-w send-keys -X copy-selection
+bind-key -T copy-mode C-g send-keys -X cancel
+unbind-key -T copy-mode Enter
+#+end_src
+
+Behavior:
+
+- =M-w= copies the selection and stays in copy-mode, so multiple
+ selections can be grabbed in a row. tmux's default copied and then
+ exited via =copy-selection-and-cancel=.
+- =C-g= now exits copy-mode (tmux's default was =clear-selection=).
+- =Enter= is unbound so RET has no "copy and exit" shortcut. The
+ Emacs side removes RET from =vterm-copy-mode-map= for the same
+ reason — one consistent way to leave the buffer.
+
+Defaults retained:
+- =q= and =Escape= already cancel.
+- =Space= still begins selection.
+
+* Why
+
+The Emacs side already aligned =vterm-copy-mode= and
+=cj/vterm-tmux-history= on one key story (commentary block at the top
+of =modules/vterm-config.el=). When tmux runs inside vterm, the user
+also lands in tmux's copy-mode (via the auto-enter on mouse wheel-up,
+line 10), so without this change the third surface had a different
+key story — Enter exits, M-w exits, C-g clears rather than cancels.
+
+* Activation
+
+After pulling and re-stowing on each machine:
+
+#+begin_src bash
+tmux source-file ~/.tmux.conf
+#+end_src
+
+Or in a live tmux session: =prefix r= (configured at line 53 of the
+conf).
+
+* Status
+
+Edited and saved. Not yet committed in =archsetup=. Craig confirms
+the keys work, then commits at his discretion.
diff --git a/assets/outbox/2026-05-19-lint-followups.org b/assets/outbox/2026-05-19-lint-followups.org
new file mode 100644
index 0000000..69df424
--- /dev/null
+++ b/assets/outbox/2026-05-19-lint-followups.org
@@ -0,0 +1,49 @@
+
+* 2026-05-19 lint-org follow-ups — todo.org
+** TODO line 471 — link-to-local-file — Link to non-existent local file "docs/PLAN-browser-themes.org"
+** TODO line 381 — link-to-local-file — Link to non-existent local file "docs/firmware-cleanup.org"
+** TODO line 313 — link-to-local-file — Link to non-existent local file "docs/testing-strategy.org"
+** TODO line 218 — misplaced-heading — Possibly misplaced heading line
+
+* 2026-05-19 Tue — Date coverage: [#A] / [#B] tasks without DEADLINE or SCHEDULED
+Review each: add a date, drop the priority, or confirm 'no-date by intent' inline.
+- 6: ** DOING [#A] Separate dotfiles from archsetup
+- 35: ** DOING [#A] Prepare for GitHub open-source release
+- 153: ** TODO [#A] Review post-archsetup laptop setup steps (velox 2026-04-10)
+- 212: ** TODO [#A] Ensure sleep/suspend works on laptops
+- 219: ** TODO [#A] Build CI/CD pipeline that runs archsetup on every commit
+- 222: ** TODO [#B] Fix install errors surfaced by the 2026-05-11 VM test run
+- 266: ** TODO [#A] Generate recovery scripts from test failures
+- 269: ** TODO [#A] Create package inventory system
+- 274: ** TODO [#A] Establish monthly review workflow
+- 279: ** TODO [#A] Automate the inventory comparison
+- 282: ** TODO [#A] Complete security education within 3 months
+- 285: ** TODO [#A] Prevent X termination and VT switching (security risk)
+- 292: ** TODO [#B] All error messages should be actionable with recovery steps
+- 295: ** TODO [#B] Enable TLP power management for laptops
+- 300: ** TODO [#B] Improve logging consistency
+- 305: ** TODO [#B] Add backup before system file modifications
+- 310: ** TODO [#B] Implement Testinfra test suite for archsetup
+- 331: ** TODO [#B] Set up automated test schedule
+- 334: ** TODO [#B] Implement manual test trigger capability
+- 337: ** TODO [#B] Create test results dashboard/reporting
+- 340: ** TODO [#B] Block merges to main if tests fail
+- 343: ** TODO [#B] Add network failure testing to test suite
+- 346: ** TODO [#B] Keep container base images up to date
+- 349: ** TODO [#B] Persist test logs for historical analysis
+- 352: ** TODO [#B] Implement automated deprecation detection
+- 355: ** TODO [#B] Audit dotfiles/common directory
+- 360: ** TODO [#B] Remove unnecessary linux-firmware packages (velox only)
+- 385: ** TODO [#B] Identify and replace packages no longer in repos
+- 388: ** TODO [#B] Verify package origin for all packages
+- 391: ** TODO [#B] Automate script usage tracking
+- 394: ** TODO [#B] Automate dotfile validation
+- 397: ** TODO [#B] Test security + functionality together
+- 400: ** TODO [#B] Security audit tooling
+- 405: ** TODO [#B] Document threat model and mitigations within 6 months
+- 408: ** TODO [#B] Verify package signature verification not bypassed by --noconfirm
+- 413: ** TODO [#B] Document evaluation criteria and trade-offs
+- 416: ** TODO [#B] Test each modernization thoroughly before replacing
+- 419: ** TODO [#B] Add Rust installation via rustup instead of pacman package
+- 429: ** TODO [#B] Add NVIDIA preflight check for Hyprland
+- 435: ** TODO [#B] Add org-capture popup frame on keyboard shortcut
diff --git a/todo.org b/todo.org
index b7925ec..5ca32bc 100644
--- a/todo.org
+++ b/todo.org
@@ -323,8 +323,6 @@ If modifications fail or are incorrect, difficult to recover - should backup fil
** TODO [#B] Implement Testinfra test suite for archsetup
Create comprehensive integration tests using Testinfra (Python + pytest) to validate archsetup installations
-See complete documentation: [[file:docs/testing-strategy.org::*Test Automation Framework][Testing Strategy - Test Automation Framework]]
-
Tests should cover:
- Smoke tests: user created, key packages installed, dotfiles present
- Integration tests: services running, configs valid, X11 starts, apps launch
@@ -335,7 +333,7 @@ Location: scripts/testing/tests/ directory
Integration: Run via pytest against test VMs after archsetup completes
Benefits: Expressive Python tests, excellent reporting, can test interactive scenarios
-The testing-strategy.org document includes:
+A design doc (not yet written) should cover:
- Complete example test suite (test_integration.py)
- Tiered testing strategy (smoke/integration/end-to-end)
- How to run tests and integrate with run-test.sh
@@ -391,8 +389,6 @@ Can remove:
Disk space savings: ~600 MB
-See [[file:docs/firmware-cleanup.org][docs/firmware-cleanup.org]] for full analysis and removal commands.
-
After removal, update archsetup script to install only needed firmware packages.
** TODO [#B] Identify and replace packages no longer in repos
@@ -481,7 +477,7 @@ error-prone — changes must be made in both places. Consider:
The goal is a single place to edit each config, not two.
** TODO [#C] Create Chrome theme with dupre colors
-Create a Chrome browser theme using the dupre color palette. Plan saved in [[file:docs/PLAN-browser-themes.org][docs/PLAN-browser-themes.org]].
+Create a Chrome browser theme using the dupre color palette.
** TODO [#C] Monitor and optimize test execution time
Keep test runs performant as installs and post-install tests grow (target < 2 hours)