Commit Graph

368 Commits

Author SHA1 Message Date
Anton Volnuhin
74b7f27c06 pi: capture the cursorapi provider and reformat models.json
Local drift that was never added: a cursorapi provider pointing at
http://127.0.0.1:8788/v1, plus the formatting pi itself writes. No key
material -- the apiKey fields hold env var names or the local
placeholder.
2026-08-06 01:59:18 +03:00
Anton Volnuhin
f7baca7b3b kitty: pin the theme mode to dark
Captures the current mode. The two generated theme files now hold the
dark theme because the mode is pinned; themes/light.conf still has the
light theme, so `theme light` and `theme auto` restore it.
2026-08-06 01:59:12 +03:00
Anton Volnuhin
addce489b4 kitty: remember the light/dark mode across restarts
kitty gives *-theme.auto.conf priority over everything -- includes and
even --override -- and has no option to stop following the OS. So the
only way to start in a chosen mode is to control what those files
contain. Make them generated:

  themes/{light,dark,no-preference}.conf  canonical, the real themes
  theme-mode                              auto | light | dark
  apply-theme-mode.sh                      writes the three .auto.conf

Under `auto` each appearance keeps its own theme, so kitty follows the
OS as before. Pinned, all three get the pinned theme, so kitty starts in
it whatever the OS says and a config reload no longer resets it.

`theme` now records the mode and reloads instead of calling set-colors,
which is why the setting survives restarts. A bare `theme` records
`auto` rather than pinning when the toggle lands on the macOS
appearance, so nothing is pinned unless it actually differs.

The kitten shim hashes the automatic theme files before running `kitten
themes` and copies whichever changed into themes/, so picking a new
light theme while pinned to dark is kept and applied on the next switch.
Covered by tests/test_theme_mode.sh.

conf.d/kitty_theme.fish is gone: theme-mode is now the source of truth,
so the universal-variable tracker it maintained is redundant.
2026-08-06 01:49:45 +03:00
Anton Volnuhin
f66ee4d845 kitty: give active ssh tabs the same foreground as every other tab
__kitty_tab_set sent a luminance-picked black/white active_fg, so a
tinted tab's title looked different from a normal one. Send NONE
instead: tab_fg() then falls back to the shared active foreground (the
theme background) while active_bg keeps the per-host tint.

Covered by a new case in tests/test_tab_bar_colors.py matching what
__kitty_tab_set actually sends — host background, no fg override.
2026-08-06 01:35:25 +03:00
Anton Volnuhin
31d3048abe fix(kitty): restore per-host tab colors in the custom tab bar
a68b138 made draw_tab() derive all four color roles from tab_colors(),
so it stopped reading the per-tab colors that `kitten @ set-tab-color`
sets. The ssh wrapper (__kitty_tab_set) still set them, but the renderer
discarded them and every remote tab drew in the #2e84e6 accent.

Resolve the drawn colors through DrawData.tab_fg/tab_bg on the already
role-substituted title_draw_data: those return the per-tab override when
one is set and the accent roles otherwise. Theme-provided tab colors
still cannot leak in, so the theme-independence fix is preserved.

Extend tests/test_tab_bar_colors.py with the override case; it fails
against the old renderer (got the accent, wanted the host color).
2026-08-06 01:31:40 +03:00
Anton Volnuhin
739e906080 fish: only read the keychain PAT on systems that have security
The bare command substitution ran on every shell start regardless of
platform, so Linux/WSL printed "fish: Unknown command: security" at
login — the 2>/dev/null only redirects the command's own stderr, not
fish's command-not-found diagnostic.

Guard with `type -q security`, matching conf.d/codex-github-mcp.fish,
and skip the export when the lookup returns nothing so a missing
keychain item no longer exports an empty GITHUB_PERSONAL_ACCESS_TOKEN.
2026-08-06 01:23:07 +03:00
Anton Volnuhin
384bfe57b3 fish: add theme command to toggle kitty light/dark
`theme` switches kitty between the existing dark-theme.auto.conf and
light-theme.auto.conf via `kitty @ set-colors --all --configured`, so it
stays in sync with whatever `kitten themes --light/--dark` selects.
Subcommands: light, dark, auto (hand control back to the OS appearance
via load-config), status.

Tide is resynced by calling __tide_apply_terminal_appearance directly,
so the prompt recolors even if kitty sends no palette-change
notification for a dynamic color change. conf.d/kitty_theme.fish tracks
$fish_terminal_color_theme into $kitty_theme_mode so the toggle still
reads the real state after kitty follows an OS appearance change.

light-theme.auto.conf had no tab colors, which left the dark tab bar on
a light background after switching; add a matching tab style block.
2026-08-06 01:15:47 +03:00
Anton Volnuhin
0defab964d tab strategy + font size 15 2026-07-28 17:17:48 +03:00
Anton Volnuhin
9c339fb730 theme small changes and fixes 2026-07-28 04:57:07 +03:00
Anton Volnuhin
a68b138d38 fix(kitty): preserve tab styling across themes 2026-07-28 04:53:48 +03:00
Anton Volnuhin
a4eb8ae75d Sync Kitty automatic themes from maxwell 2026-07-27 22:44:57 +03:00
Anton Volnuhin
92d4bbd7d5 Preserve local Karabiner and Pi preferences 2026-07-27 22:33:34 +03:00
Anton Volnuhin
296bd3af80 Small combined changes 2026-07-27 20:23:32 +03:00
Anton Volnuhin
73176c2bfb fish, kitty: follow terminal light theme 2026-07-27 20:20:38 +03:00
Anton Volnuhin
781c86d80a Add pi agent config (models, settings)
Manage ~/.pi/agent/models.json and settings.json via chezmoi.
Exclude auth.json (real secrets) and sessions/ (ephemeral logs).
2026-06-21 18:49:33 +03:00
Anton Volnuhin
6c7e0eabfc terminfo: cursor reset restores terminal default (beam), not block 2026-06-12 01:28:40 +03:00
Anton Volnuhin
e3c9f4edd5 fish: smarter SSH_AUTH_SOCK refresh, reading tmux session env over stale global 2026-06-12 01:25:16 +03:00
Anton Volnuhin
497cbce0c6 kitty: add ctrl+shift detach_window keybindings 2026-06-12 01:25:16 +03:00
Anton Volnuhin
c6159eb278 tmux: use session name as kitty tab title, with @host over SSH 2026-06-12 01:12:04 +03:00
Anton Volnuhin
a967a4981e tmux: show session name in status bar
Add a nova 'session' segment (#S) on the right side, styled with the
same colors as the window tabs (#6272a4 bg / #f8f8f2 fg).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-30 02:13:55 +03:00
Anton Volnuhin
fdc149e9ec small updates to tabs, agy 2026-05-22 03:11:32 +03:00
Anton Volnuhin
771d30c136 Add tmux option tab bindings 2026-05-22 02:00:21 +03:00
Anton Volnuhin
b12882aa80 Make tmux tabs theme-aware 2026-05-22 01:57:56 +03:00
Anton Volnuhin
ca06e649c9 Update tmux tab labels 2026-05-22 01:27:11 +03:00
Anton Volnuhin
edc02d1bb5 Use Ctrl-Shift brackets for tmux windows 2026-05-20 02:46:44 +03:00
Anton Volnuhin
b59b0335c8 Add tmux CSI-u bracket bindings 2026-05-20 02:42:42 +03:00
Anton Volnuhin
1590a272aa kitty: color terminal tabs by ssh/mosh host
Tint the kitty tab background by target host so local vs remote (and
which remote) is visible at a glance.

- __kitty_host_color: explicit color table for known hosts (routers,
  resolvers, ryzen/mini, personal cloud, geo VPS) + stable hashed
  palette fallback; auto-picks readable fg by luminance
- __kitty_ssh_host: parse target host from ssh/mosh-style argv
- __kitty_tab_set/__kitty_tab_reset: active tab = full host-color bg,
  inactive tab = dark theme bg with host-color text; revert on exit
- ssh wrapper + s (kitten ssh) and m (mosh) wired to tint/reset

Also includes unrelated pending dotfile changes (GH MCP PAT from
keychain in fish/zsh, kitty/wezterm font_size 15->14, kitty
colorspace displayp3) committed together at user request.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 23:08:32 +03:00
Anton Volnuhin
fe835de7f1 double kitty integration fix -> no more brick cursor bug after switching to kitty and back 2026-04-10 15:11:30 +03:00
Anton Volnuhin
de32b5f5d6 m for mosh and s for ssh, both with second arg for tmux session 2026-04-09 02:24:45 +03:00
Anton Volnuhin
87bcad6c6d clipboard fixes for tmux and nvim 2026-04-09 02:21:29 +03:00
Anton Volnuhin
10c759e3a9 kitty fish to chezmoi 2026-04-07 23:56:28 +03:00
Anton Volnuhin
83e26550d0 wrong cursor stuff fix 2026-04-07 23:52:35 +03:00
Anton Volnuhin
5274042036 experimental fish cursor fixes 2026-04-07 23:39:17 +03:00
Anton Volnuhin
b0dbb8e0b2 working shift+enter everywhere 2026-04-07 23:34:01 +03:00
Anton Volnuhin
4bab71f9ab dark kitten icon for kitty 2026-04-06 14:46:04 +03:00
Anton Volnuhin
bfafb03296 switch tide to plttn/tide@v7, as my fix was merged in there 2026-04-05 19:42:28 +03:00
Anton Volnuhin
118666409d new tide config, cmd+N for kitty, slightly bigger font in kitty 2026-04-05 19:36:34 +03:00
Anton Volnuhin
556f26441e Modernize Neovim treesitter bootstrap 2026-03-31 01:45:02 +03:00
Anton Volnuhin
fe659f4386 mosh wrapper for kitty with forked mosh 2026-03-31 01:04:13 +03:00
Anton Volnuhin
d141d480bc remove missing git credential manager helper 2026-03-28 13:26:39 +03:00
Anton Volnuhin
074c8732f2 more tmux copy mode configs: v starts selection, square back to C-v 2026-03-28 13:25:59 +03:00
Anton Volnuhin
1fccc1e05e tmux configuration update for colors, copy and shift-enter 2026-03-28 13:25:59 +03:00
Anton Volnuhin
ce547fe18d skip atuin init when encryption key is missing or empty
Prevents panic on fresh installs where atuin has no key yet.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:46:16 +03:00
Anton Volnuhin
3a429fa4b7 upgrade fish shell repos from 3.x to 4.x for Ubuntu and Debian
Fish 4.x is needed for puffer-fish plugin compatibility
(commandline --search-field).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:41:39 +03:00
Anton Volnuhin
948d862bb6 scroll past env.lat output before starting TUI
When running via env.lat, push the cursor to the bottom of the screen
before print_block sets up the TUI, so we don't overwrite env.lat output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:23:52 +03:00
Anton Volnuhin
95c88c3ce1 add tide-reset function, fix treesitter config for stable nvim
Extract tide configuration into a reusable fish function (tide-reset)
and call it from the chezmoi onchange script. Also revert treesitter
config to the stable API (nvim-treesitter.configs).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 18:13:21 +03:00
Anton Volnuhin
dfdd5b7dae fix Tide context in OrbStack: set SSH_TTY when SSH_CONNECTION is present
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:39:59 +03:00
Anton Volnuhin
07a50ab0a3 add .gitignore to exclude nvimlog and pycache from repo
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:30:32 +03:00
Anton Volnuhin
1181ef68ad revert to last working env.lat integration
Restore the dotfiles script to the state before the fold/exec
experiments that broke TUI formatting and Ctrl-C handling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:25:30 +03:00
Anton Volnuhin
34fbf49eca simplify: remove env.lat step tracking from dotfiles script
The extra step counting and summary pre-fill was causing scroll region
calculation issues. Keep ENVLAT only for TTY detection bypass.
env.lat now uses exec and quiet flags instead of piping.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 23:22:20 +03:00