aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* chore: add pycache directories to gitignoreCraig Jennings2026-04-241-0/+3
| | | | now ignoring all __pycache__ directories
* chore(claude): Clean up settings and add vim modeCraig Jennings2026-04-241-24/+16
| | | | | | Remove git-commit and gh-pr-create confirmation hooks, remove code-review plugin, reorder keys alphabetically, and enable vim editor mode.
* fix(hyprland): Escape special workspace on navigateCraig Jennings2026-04-244-1/+304
| | | | | | | | | | | | | 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/. ```
* claude/settings: sync archsetup source to live — hooks + plugins + attributionCraig Jennings2026-04-201-0/+31
| | | | | | | | | | | | | | | Merges live ~/.claude/settings.json content (hooks: PreCompact + PreToolUse/Bash with git-commit-confirm, gh-pr-create-confirm, destructive-bash-confirm; enabledPlugins) into the archsetup source that velox was already symlinking. Previous state: velox symlinked archsetup source (attribution only, missing hooks/plugins). Ratio had a standalone file (hooks/plugins but no attribution). Both machines asymmetric and incomplete. Now: single source of truth in archsetup/dotfiles/common/.claude/ settings.json. Ratio needs to replace standalone file with symlink (manual step per-machine).
* claude/settings: suppress commit and PR attribution structurallyCraig Jennings2026-04-201-1/+5
| | | | | | | | | | | | | | | Adds the empty-string attribution block that disables Claude Code's auto-added attribution lines (Co-Authored-By, 'Generated with Claude Code', etc.) at the tool layer, matching the existing 'no Claude attribution' rule in protocols.org. Two complementary enforcement layers now: - prompt-level rule (protocols.org) - tool-level setting (this commit) Same intent already lives in rulesets/languages/elisp/claude/settings.json for elisp project bundles; this brings it to the global Claude Code config that ships via archsetup.
* remove aix and hey: 'ai' lives in claude-templates nowCraig Jennings2026-04-203-393/+6
| | | | | | | | | | | | | | Both the aix script and hey shell function are superseded by the unified 'ai' launcher in claude-templates (bin/ai, installed via make install). Single command, three modes, smart in-tmux behavior so all sessions survive Hyprland crashes. Per-machine setup adds a step: cd ~/projects/claude-templates && make install The orphaned ~/.local/bin/aix symlink should be removed manually on each machine after pulling this change (rm ~/.local/bin/aix). Stow re-stow would also clean it up.
* hey: convert alias to function with git awareness + FETCH_HEAD cacheCraig Jennings2026-04-202-2/+98
| | | | | | | | | | | | | | | | | | | The 'hey' alias launched claude with 'Read docs/protocols.org' — broken after the docs/ → .ai/ restructure. While updating the path, add matching behavior to aix: - Bail early if the current dir isn't a .ai/ template project - Fetch upstream only when FETCH_HEAD is stale (>10 min old) — avoids re-fetching on back-to-back invocations in the same project - Auto-pull when clean, behind, not ahead - Print a one-line git-status summary otherwise (↑N ↓N dirty) - Launch claude with the updated .ai/protocols.org path Function identical across .bashrc.d and .zshrc.d (bash/zsh compatible). Tested: non-template dir bails cleanly with exit 1; template project shows status and launches claude; repeated invocations reuse FETCH_HEAD cache silently.
* aix: synchronous fetch + git-status annotations + auto-pull if cleanCraig Jennings2026-04-201-3/+98
| | | | | | | | | | | | | | | | | | | | | | | | | Adds multi-machine sync awareness to the session launcher. Before fzf: - Fetches all candidate repos in parallel (capped at 6 concurrent) - Annotates each entry with git status: (↑N ↓N dirty), (no upstream) - Clean repos show no annotation When launching a window: - If working tree is clean, has upstream, is behind (not ahead): pull - Otherwise: open window as-is, user handles any sync manually Design choices: - Fetches are synchronous — accurate status at the cost of a brief wait on session start. Parallel execution keeps it fast (~1-2s for 22 repos). - Pull is --ff-only — never merges, never creates merge commits in aix - Diverged repos (ahead AND behind) trigger no auto-action; user decides - No stash/pop dance — unreliable in multi-project batches; prefer explicit awareness via annotation Primary use case: moving between laptop and desktop. Wrap-it-up's always-push ensures remote is current at session end; this ensures local is current at next session start.
* aix: update to .ai/ layout; filter candidates to template projectsCraig Jennings2026-04-201-4/+11
| | | | | | | | | | | | | | Two changes: - AI_INSTRUCTIONS now points at .ai/protocols.org (was docs/) — aligns with the template docs/ → .ai/ restructure - build_candidates filters directories to those with .ai/protocols.org present. Previously listed every dir under ~/code/ and ~/projects/ including third-party clones and non-template projects, which would fail silently when Claude tried to read a missing protocols file. New projects that haven't been initialized (no .ai/ yet) will not appear in the fzf list. Bootstrap those with a direct claude invocation; the first-session workflow takes over once .ai/ exists.
* docs: complete .ai/ rename in CLAUDE.md layout + noteCraig Jennings2026-04-201-2/+2
| | | | | | | Missed in the main migration commit (sed pattern didn't match the layout table or the standalone 'docs/' reference in the note line). Layout now lists .ai/ correctly; gitignore note refers to .ai/ instead of docs/.
* restructure: move docs/ to .ai/ + sync latest templateCraig Jennings2026-04-202-2/+2
| | | | | Per claude-templates c36fd14. Claude tooling moves to hidden .ai/; project-level docs/ reserved for real documentation.
* fix: Zoom windowrule syntax (stayfocused → stay_focused on)Craig Jennings2026-04-191-2/+2
|
* chore: gitignore .claude/ and .cursorrulesCraig Jennings2026-04-131-0/+4
|
* feat: proton-vpn, lid switch, scratchpad resizingCraig Jennings2026-04-136-13/+35
| | | | | | | | | - archsetup: add proton-vpn-gtk-app; configure logind to ignore lid switch - hyprland.conf: autostart protonvpn-app minimized - waybar: set battery module to BAT1 (velox) - pypr: resize scratchpads to fit 80x24 minimum; enlarge monitor for btop - gitconfig: add deepsat GHE credential helpers - CLAUDE.md: update notes.org reference (lowercase)
* feat: Zoom HiDPI scaling and Hyprland window rulesCraig Jennings2026-04-112-0/+18
| | | | | Add Zoom.desktop override with QT_SCALE_FACTOR=1.5 for HiDPI displays. Float all Zoom windows and fix disappearing popup menus.
* fix: emacs-wayland package, Telegram autostart, velox config syncCraig Jennings2026-04-112-1/+2
| | | | | Switch emacs to emacs-wayland for native Wayland/PGTK support. Add Telegram tray autostart to hyprland.conf.
* fix: archsetup package fixes and velox post-install improvementsCraig Jennings2026-04-103-4/+83
| | | | | | 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.
* docs: add usage examples to hyprland conf.d/local.confCraig Jennings2026-04-101-0/+13
|
* fix: archsetup package fixes, hyprland conf.d, dconf settingsCraig Jennings2026-04-103-5/+25
| | | | | | | | | Enable multilib repo for lib32/Steam packages. Move adwaita-qt5/qt6 to AUR, rename webkit2gtk to webkit2gtk-4.1, remove broken touchpad-indicator-git, replace tidal-dl-ng with tidaler fork, fix pocketbook URL. Add dconf GNOME interface settings to prevent 50s portal-gtk timeout. Add hyprland conf.d source pattern for machine-local overrides.
* chore: add Claude Code local permissions to dotfilesCraig Jennings2026-04-091-0/+11
|
* feat: add Claude Code settings to stowed dotfilesCraig Jennings2026-04-094-0/+757
| | | | | Add commands, settings, MCP config, and humanizer skill to dotfiles/common for GNU Stow management across machines.
* feat: add bind package for DNS utilities, update dotfile stateCraig Jennings2026-04-0914-23/+52
| | | | | | Add bind (dig, host, nslookup) to supplemental packages and systemd-resolvconf for wireguard DNS integration. Update calibre, hyprland, hyprlock, qalculate, mimeapps, and waypaper state.
* fix(hyprland): escape floating window focus trap in layout-navigateCraig Jennings2026-04-091-0/+11
| | | | | | layoutmsg cyclenext only operates on tiled windows, so $mod+J was a no-op when focus was on a floating/pinned scratchpad. Detect floating state and use cyclenext dispatcher instead.
* feat(hyprland): float xdg-desktop-portal-gtk dialogsCraig Jennings2026-03-081-0/+1
| | | | Prevents file open/save dialogs from disrupting master layout.
* chore: clean up lock screen comment, update calibre stateCraig Jennings2026-03-072-6/+6
| | | | Removed stale sxhkdrc reference from lock screen keybinding comment.
* 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.
* feat: comprehensive mime type associations with emacsclient defaultsCraig Jennings2026-03-074-214/+203
| | | | | | | Merge all mime associations into mimeapps.list as single source of truth. Set emacsclient as default for all text/code files. Add TypeScript mime override, emacsclient.desktop with fixed Exec line, and simplify resetmimetypes to just restow + rebuild caches.
* feat(hyprland): remove plugins, add layout cyclingCraig Jennings2026-03-075-85/+40
| | | | | | | | Hyprland 0.54 brings scrolling and monocle layouts into core, making hyprpm plugins unnecessary. Remove hyprland-plugins-setup, focus-restore, hyprpm pacman hook, and allfloat keybinding. Add layout-cycle script and $mod+Shift+Arrow keybindings to cycle master/scrolling/monocle. Move cpio to System Utilities section.
* fix(hyprland): add new_on_top to master layout configCraig Jennings2026-03-071-0/+1
| | | | | Demoted master windows now go to top of slave stack instead of bottom, matching DWM's stack ordering behavior.
* fix: update layout-resize and waybar-netspeed for 0.54Craig Jennings2026-03-072-14/+17
| | | | | | | | layout-resize: replace removed splitratio dispatcher with layoutmsg mfact for master layout resizing. waybar-netspeed: replace iwgetid/proc/net/wireless with iw commands for SSID and signal strength (old tools no longer populated by kernel).
* fix(foot): rename [colors] to [colors-dark] for foot updateCraig Jennings2026-03-073-3/+3
| | | | | Foot deprecated [colors] section in favor of [colors-dark]. Updated all three foot configs (main, dupre theme, hudson theme).
* chore: update calibre, mimeapps, authinfo, add outbox itemsCraig Jennings2026-03-0798-12/+3485
| | | | | Calibre window geometry and scheduler updates. Add Signal URI handlers. Move processed inbox items to outbox.
* feat(hyprland): update plugins for 0.54, add scratchpad hide_delayCraig Jennings2026-03-072-11/+18
| | | | | Remove hyprscrolling from plugin setup (now in core). Add hide_delay workaround for pyprland bug #211 to all scratchpads.
* feat(hyprland): add monocle layout support, fix scrolling keybindingsCraig Jennings2026-03-075-8/+39
| | | | | Add monocle to layout cycle and waybar indicator. Fix scrolling layout move (swapwindow) and resize (resizeactive). Add layout-resize script.
* chore(hyprland): update hypridle settings, update calibre configsCraig Jennings2026-03-064-90/+11
| | | | | Dim at 5min, lock at 7min, remove DPMS off and suspend. Update calibre sort history and window geometry.
* fix(hyprland): remove scratchpad center windowrulesCraig Jennings2026-03-041-7/+2
| | | | | | Removed center windowrules for all 6 pyprland scratchpad classes per maintainer guidance. Rules conflicted with pyprland's float management and were not the cause of bug #211.
* feat(hyprland): rebind mod+shift+f to allfloat, add chess setup scriptCraig Jennings2026-03-025-15/+255
| | | | | | | Add workspace allfloat toggle on mod+shift+f (was togglefloating, now on mod+shift+space only). Add scripts/setup-chess.sh for En Croissant, lc0, Maia, and Stockfish setup. Update log-cleanup to use filename dates instead of mtime. Update ssh and calibre configs.
* feat(archsetup): add rustup, log-cleanup cron, update configsCraig Jennings2026-02-2710-8/+81
| | | | | | | Add rustup toolchain manager to developer_workstation (before AUR packages that need rust to compile). Add log-cleanup cron job with test validation. Update ISO glob for archangel naming. Add dunst icon theme, hyprlock animations, waybar log filtering.
* chore: add ssh config, update todo, add Berkeley Mono NF web fontsCraig Jennings2026-02-2511-23/+154
| | | | | | | | 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(archsetup): add pocketbook installation to hyprland setupCraig Jennings2026-02-252-0/+3
| | | | | | | Install gtk4-layer-shell and pocketbook (via pipx) during Hyprland setup, and clone the source repo in post-install for development. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat(hyprland): add pocketbook notes panel integrationCraig Jennings2026-02-253-1/+14
| | | | | | | | Add waybar custom/pocketbook module with icon and on-click toggle. Add $mod+P keybind and exec-once for pocketbook --hidden. Add waybar CSS for pocketbook icon styling. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(hyprland): re-center scratchpad windows on togglefloatingCraig Jennings2026-02-251-0/+8
| | | | | | Scratchpad windows stayed at their tiled position when returned to floating via shift+mod+space. Add center windowrules so all pyprland scratchpads snap back to center whenever they become floating.
* fix(hyprland): add polkit agent, fix portal startup order, restrict ranger ↵Craig Jennings2026-02-252-11/+37
| | | | | | | | | to DWM Launch polkit-kde-authentication-agent at startup. Restart backend portals (GTK, Hyprland) before the main xdg-desktop-portal to prevent 50s GTK settings proxy timeout. Make ranger DWM-only since Hyprland uses nautilus and dirvish.
* fix(Makefile): detect and prompt on restow conflictsCraig Jennings2026-02-211-3/+23
| | | | | Dry-run stow before restowing to catch real files blocking symlinks. Shows conflicting files and prompts to overwrite or abort.
* feat(archsetup): add texlive-plaingeneric and masterpdfeditor packagesCraig Jennings2026-02-217-7/+184
| | | | | Add texlive-plaingeneric for org-mode PDF export (ulem.sty) and masterpdfeditor from AUR for PDF form editing. Update calibre config.
* chore(calibre): update config, add Comments Cleaner and Reading List pluginsCraig Jennings2026-02-169-54/+212
|
* fix(hyprland): load plugins on every session startCraig Jennings2026-02-161-1/+2
| | | | | hyprland-plugins-setup was skipping hyprpm reload when plugins were already enabled, so they were never loaded into the running session.
* feat(hyprland): add Civ V fullscreen windowruleCraig Jennings2026-02-151-0/+3
| | | | | Force Civ5XP into real Hyprland fullscreen so waybar is hidden per-workspace instead of requiring manual toggle.
* feat(hyprland): resize term scratchpads, rename term2 to ai-termCraig Jennings2026-02-144-17/+13
| | | | | Term scratchpads now 50x70%, renamed term2 to ai-term with updated app-id. Updated calibre window state.