Commit Graph

373 Commits

Author SHA1 Message Date
3cdd079e2e feat(install): new apps, parallel brew cache, output formatting
Some checks failed
Dotfiles CI / Run test suite (Dockerfile) (push) Has been cancelled
Dotfiles CI / Run test suite (Dockerfile.arch) (push) Has been cancelled
Add eza, fd, sd, bottom, procs, tealdeer to mise apps. Add || true
guards to mise install/use and bat cache to prevent failures from
halting the installer.

Parallelize brew list --cask/--versions queries with background jobs.
Add log_indent helper. Cleaner script section formatting with ruled
separators and compact timing output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 16:22:06 +00:00
789ef71771 fix(zsh): Tab completion and colby buffer expansion
Fix fzf_default_completion stale pointer after zle -D by setting it to
expand-or-complete before deleting the lazy comp widget. Rebind ^I
explicitly after widget deletion and add safety net in widgets.zsh
after bindkey -e.

Replace colby() function with ^M buffer expansion so the full
copilot --allow-all-tools --allow-all-paths invocation is visible
in terminal history and screen recordings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-27 16:21:58 +00:00
ec8d41b396 fix(zsh): restore ^S binding, suppress ^D logout warning
Move stty -ixon from widgets.zsh (lazy-loaded inside zle-line-init
hook) back to .zshrc so it runs before ZLE starts. Inside a ZLE hook,
the change only survives the first prompt because ZLE restores saved
terminal settings (with ixon on) between prompts.

Bind ^D to delete-char so pressing it on an empty line no longer
triggers the IGNORE_EOF 'use exit to exit' warning spam.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-25 10:18:02 +00:00
b62a6c00f9 chore(install): optimize logging, speed, cleanup
- Version logged after [PASS] (not before) across all scripts
- Pre-cache brew package lists with log_info progress
- Read brew version from git describe cache (skip Ruby startup)
- Batch mise use -g calls (single invocation for all tools)
- Replace mise verify step with mise ls --current
- Parallel vim plugin pulls
- Skip donut compile when binary is fresh
- Pre-check macOS defaults before writing (skip fsync when unchanged)
- Pre-check dock state before dockutil calls
- Remove redundant 'already installed' skip logs
- Remove meetingbar and wispr-flow install scripts
- Renumber scripts to fill gaps

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-24 18:09:38 +00:00
4324a3f449 fix(tmux): remove stale mouse focus hook
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-24 18:08:57 +00:00
a2b82b6aef fix(bash): auto-exec zsh in Codespaces, add .bashrc
.bash_profile execs into zsh when available (chsh doesn't persist
in containers). Shows amber warning if zsh not found.
.bashrc sources .bash_profile for non-login bash sessions (e.g.
iTerm2 profiles with 'bash' command).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-24 18:08:50 +00:00
ffd26e06d6 perf(zsh): cache tool init, lazy-load, remove plugins
Startup: 150ms → 40ms (native), projected 10-30s → <1s (iSH)

- Cache mise/fzf/zoxide init output keyed on binary mtime
- zcompile all sourced files to bytecode at install time
- Lazy-load compinit (first Tab), fzf+widgets (first keystroke)
- Remove autosuggestions and syntax-highlighting plugins
- Switch mise to shims mode (no per-prompt hook)
- Conditional mkdir (skip if dirs exist)
- Remove TRAPINT/flash handler, cache session info
- Eliminate per-prompt subshell forks (REPLY pattern)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-24 18:08:40 +00:00
53897ed9e9 feat(widgets): improve ^G ^E ^S keybindings
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-24 18:08:26 +00:00
440b5b9829 vscode: add brew cask script
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 18:13:01 +00:00
f07a524dc6 mise: add bun and rust runtimes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 18:13:01 +00:00
74d5f7cbe5 widgets: codespace enrichment with colors in ^G
- Cache codespace repo and branch from gh cs list
- Inline fallback fetch when cache is missing
- Color codespace names in teal, branches in amber (non-default only)
- SSH hosts in teal

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 18:12:55 +00:00
9281586527 aliases: copilot tmux wrap, cs simplification
- Add _copilot_tmux_wrap for tmux window renaming on copilot sessions
- Convert copilot/colby from aliases to wrapped functions
- Simplify cs() to use gh cs ssh interactive picker
- Background tmux automatic-rename on to avoid blocking

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 18:12:48 +00:00
5d28bb1b45 preview: zen mode, native images, glow rendering
- Add --zen flag for distraction-free markdown viewing
- iTerm2/WezTerm native inline image protocol with tmux passthrough
- Improved chafa fallback with format detection
- Glow-based markdown rendering with custom theme
- Fix is_fzf() to check stdout TTY
- Enable tmux allow-passthrough for image protocol

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-20 18:12:42 +00:00
296ad6c4eb fix: SIGPIPE (exit 141) in mise verification, remove redundant bat script
Replace head -1 with sed -n '1p' across all install scripts to
prevent SIGPIPE when commands produce multi-line output. head closes
the pipe after reading line 1, causing the writer to receive SIGPIPE
which propagates via pipefail (exit 141). sed reads all input,
avoiding the broken pipe.

Remove install.d/26-bat.sh — bat is already installed and managed
via mise in 30-mise.sh.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-18 18:53:19 +00:00
de5e296806 fix: CI log formatting and glow install on Debian
- Move glow install from apt/pacman/brew to mise (fixes Debian CI
  failure where glow is not in default apt repos)
- Suppress verbose Poetry installer banner with tail -1 in mise
  app install loop
- Add final log_pass to vim plugin script for consistent formatting
- Add version quote to cmatrix for completeness

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-18 18:39:10 +00:00
107b9723d5 donut: remove time-based degradation for consistent animation
Remove three mechanisms that intentionally degraded the screensaver
over time, causing it to appear frozen after extended runtime:

- Brightness dimming curve (faded palette to 30% over ~15min)
- Projection framerate skip (reduced 3D updates from 24fps to 6fps)
- Deep sleep after 2hr (dropped to 1fps)

The clock drift and matrix text changes already provide adequate
OLED burn-in protection.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-18 15:30:59 +00:00
cccffa8fae Unify installer colors with vim/shell palette and clean up output
- Replace BLUE/CYAN/CYAN_BOLD with TEAL/TEAL_BOLD (#2CB494) to match
  the primary accent used across vim, zsh prompt, tmux, and fzf
- Update BLUE (#0C48CC -> #4068D4) then merge into TEAL
- Update RED (#F40404 -> #F88C14) to match vim/shell error orange
- Rename GREEN to grey-blue (#7290B8) for [PASS] messages
- Format all raw echo output with log functions or log_quote
- Suppress sudo prompt when credentials are already cached
- Add missing log_pass to 22-zsh.sh and 23-stow.sh
- Convert raw 'already installed' echos to log_skip (7 scripts)
- Pipe SSH key and mise output through log_quote
- Suppress noisy bat cache and mise WARN output
- Match fastfetch colors to palette (teal logo, grey-blue keys)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-18 15:29:02 +00:00
4ec1ea9249 Add Wispr Flow install script for macOS
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-18 10:48:52 +00:00
f331bf8122 fix: always run apt-get update in 11-apt.sh
Move apt-get update before the 'already installed' check so the
package index is always refreshed. Previously, on environments like
Codespaces where base packages are pre-installed, the update was
skipped entirely, causing downstream scripts (e.g. 23-stow.sh) to
fail with 'Unable to locate package'.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-18 10:46:46 +00:00
8b2546a554 feat(tmux): inline tab-name format, remove script
Replace external tab-name.sh with a tmux format string that
shows pane_current_path for shell processes and
pane_current_command otherwise, truncated to 15 chars.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:17:37 +00:00
b438a9d776 feat(heartbeat): simplify to color-only lerp fade
Heartbeat now emits only a tmux fg color that interpolates
teal to gray based on activity score. Status-right supplies
the time display directly. Removes bar/pill/time rendering.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:17:30 +00:00
396de0003c feat(tmux): simplify copy-mode to OSC52, remove condensed toggle
Drop pbcopy/xclip/xsel pipe hacks — OSC52 via set-clipboard
handles system clipboard automatically. Remove @condensed
status bar toggle, simplify status click to lock-session.
Add client-focus-in mouse reset workaround.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:17:24 +00:00
b0368d85b6 fix(prompt): restore cursor visibility on every prompt
Emit \e[?25h in precmd to fix hidden cursor after abrupt SSH
disconnects or interrupted TUI applications.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:17:07 +00:00
1a2ccdbe2e feat(mise): add bat, rebuild theme cache
Add bat to mise tool list, rebuild bat theme cache after install
to keep delta syntax themes in sync. Handle delta version check
failure gracefully.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:17:03 +00:00
84ac65a62f fix(zsh): set autosuggest style before plugin load, tint paths
Set ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE before sourcing the plugin
so the style takes effect on first load. Add subtle green tint
to path syntax highlighting.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:16:58 +00:00
71748c2328 fix(git): graceful delta fallback when not installed
core.pager now checks for delta and falls back to less -R,
avoiding errors in environments where delta is not available.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:16:53 +00:00
69860d2e48 feat(fzf): use preview script in all workflows
Replace inline bat/head preview commands with the universal
preview script in the f() alias, file picker, and grep picker.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:16:49 +00:00
87235693c6 feat(preview): add universal file preview script and installer
Universal preview command handling text (bat), images (chafa),
PDFs (pdftotext), markdown (glow), and archives. Includes
install.d script for preview dependencies.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-13 17:16:43 +00:00
fe2c0c5a30 feat: codespace tab names and session widget improvements
Show friendly codespace name (without trailing random ID) in tmux tabs,
prefixed with cs:. Add ctrl-n to session widget to start a new copilot
session, and improve header labels and field display.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 17:15:31 +00:00
ffcaf71f82 tmux: add pressure-based activity tracker
Add heartbeat.sh that tracks session active time using three native
tmux signals: client input (+5), window output (+2), and copy mode
(+2), with -1 decay per tick. Score drives a block bar indicator
and accumulated active time counter. Resets on tmux server restart.

Status bar updates:
- Heartbeat pill with pressure bar right of clock
- Responsive breakpoints: hide network/battery <120 cols, date <80
- Click clock/date to toggle condensed view
- Click heartbeat to instant-lock session
- Static colon in clock (replaces shell-based blinker)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 17:14:30 +00:00
e686b6396d Add spinning donut screensaver with matrix rain
Terminal screensaver written in C, triggered by tmux lock-after-time
(180s idle), bind S, or `donut` alias. Features:

- Spinning torus with precomputed trig tables, randomized rotation
- Matrix rain overlay — donut luminance colors the rain characters
- 64-shade teal foreground palette with gradual dimming over time
- Chunky 7x5 clock with shadow, blinking colon, periodic drift
- Activity time display below clock (read from heartbeat state file)
- Rim lighting and ambient occlusion on donut edges
- RLE escape state machine — only emits SGR on shade transitions
- Row-skip rendering — empty/leading/trailing regions use cursor jumps
- Projection runs at adaptive rate (24fps bright, 6fps dim)
- select()-based frame pacing, deep sleep after 2hr (1fps)
- Resume detection — flushes stale PTY output after sleep/lock
- Mouse click to quit (SGR + X11 protocols, release filtered)
- write_all() retries partial writes, SIGPIPE handled gracefully
- Alternate screen buffer preserves shell scrollback

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-27 16:56:44 +00:00
5578bbd31f Fix tmux bell/selection rendering and mouse issues
Use 256-color codes for bell-style and mode-style to work around
tmux 3.6 hex color parsing bug that broke rendering and click targets.
Fix terminal-overrides accumulating on reload. Exit copy mode after
mouse selection. Update prefix indicator to amber.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-26 10:15:02 +00:00
8138d44c73 Replace red with amber, unify palette, add fetch/pull aliases
- Add git aliases: f (fetch), p (pull) and shell aliases: gf, gp
- Replace all #F40404 (red) with #F88C14 (amber) across prompt, gitconfig,
  vim, bat theme, and tmux scripts for colourblind-friendly palette
- Standardise hex case to uppercase throughout
- Unify #728cb8 → #7290B8 (fix blue inconsistency)
- Replace unique #8787AF with palette #7290B8 in gitconfig
- Remove unused red colour definition from prompt.zsh
- Update dark diff backgrounds from red-tinted to amber-tinted

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 17:38:47 +00:00
e7a2b3c10e Fix bat install on Debian: symlink batcat to bat
Debian's apt package installs the binary as 'batcat' due to a naming
conflict. Add a symlink to /usr/local/bin/bat after apt install so the
dotfiles can reference 'bat' consistently across all platforms.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 15:14:47 +00:00
dc6b117016 Enhance shell widgets, tmux status, and git colors
- Add frecency scoring + git status boost to ^E edit widget
- Add network latency indicator to tmux status bar (wifi/wired detection, 10s cache)
- Add powerline separators between tmux status sections
- Swap git status colors: modified=bluish grey, untracked=amber (prompt, gitconfig, widget)
- Remove bold from feature branch name in prompt
- Add gw (git show) and gdm (diff against default branch) aliases

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-25 14:45:21 +00:00
53bd2f49ef bat build and zsh widget perf 2026-02-24 20:26:04 +00:00
faad821c77 terminal tool colours 2026-02-24 20:00:53 +00:00
e8165041d9 fix: codespaces gitconfig override 2026-02-24 19:02:28 +00:00
76f61dc5fe tmux, vim, terminal theming 2026-02-24 18:57:23 +00:00
7d2825f9d1 profile: invalidate PATH cache when base PATH changes
Store the base PATH alongside the cached result so the cache is
only used when the pre-modification PATH still matches.  This
prevents stale entries when the shell inherits a different base
PATH (e.g. inside tmux or after system updates).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-02-24 16:10:12 +00:00
6fd897b8b5 Merge remote-tracking branch 'origin/master' 2026-02-24 16:08:51 +00:00
2acae0b4f2 vim: add plugins, tmux: status bar, fix Ctrl+A clash
- Add vim-gitgutter, vim-commentary, vim-surround via install
script
- Rebind git log widget from Ctrl+A to Ctrl+T (tmux prefix
clash)
- Add date, time, and battery indicator to tmux status
bar
- Set tmux clock colour to teal

Co-authored-by: Copilot
<223556219+Copilot@users.noreply.github.com>
2026-02-24 16:08:10 +00:00
409bc6fef5 fix: install outputs, mise keyrings, termcolor 2026-02-23 08:49:43 -08:00
b048694363 chore: bump .dockerignore 2026-02-13 15:25:26 +00:00
eb958a36e0 feat: install script re-org 2026-02-13 15:13:12 +00:00
faf3bf2dfc feat: re-organise files dir 2026-02-13 14:59:25 +00:00
6461654bff feat: zsh widgets, tmux session handling 2026-02-13 12:00:02 +00:00
61bf7b366b fix: ^F escape 2026-02-12 23:00:45 +00:00
6b47b82651 feat: prompt and widget 2026-02-12 22:39:55 +00:00
6cb7226273 feat: split zshrc, add mouse scrolling to vim/delta 2026-02-12 18:35:07 +00:00