Commit Graph

33 Commits

Author SHA1 Message Date
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
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
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
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
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
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
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
faf3bf2dfc feat: re-organise files dir 2026-02-13 14:59:25 +00:00