diff --git a/.gitignore b/.gitignore index 9fd1b08b7..d47738010 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,7 @@ banks/ ### Merge backups ### *.orig .empryo + +### no-mistakes (config only; runtime state stays in ~/.no-mistakes) ### +dots/.no-mistakes/* +!dots/.no-mistakes/config.yaml diff --git a/README.md b/README.md index 52a96037a..adaecb192 100755 --- a/README.md +++ b/README.md @@ -9,12 +9,9 @@ # E.Dots -> [!NOTE] -> EdHeltzel's Dotfiles - -### My personal setup for 🐠 Fish shell on macOS - `v3` +### My personal setup for 🐠 Fish shell on macOS - `v3` -Hey there πŸ‘‹, I'm EdHeltzel and you've found my dotfiles setup for working with [fish shell](https://fishshell.com/) on macOS, managed with [GNU Stow](https://www.gnu.org/software/stow/). You'll also find the scripts I use to provision a new machine. [Neovim](https://neovim.io/) (via [NEO.ED](https://github.com/edheltzel/neoed)), [WezTerm](https://wezterm.org), [Herdr](https://herdr.dev/), and [Oh-My-Pi](https://omp.sh/) make up my ADE (AI/Agent Development Environment). The Zed config is kept for occasional use and is not part of the regular workflow. +Hey there πŸ‘‹, I'm EdHeltzel and you've found my dotfiles setup for working with [fish shell](https://fishshell.com/) on macOS, managed with [GNU Stow](https://www.gnu.org/software/stow/). You'll also find the scripts I use to provision a new machine. [Neovim](https://neovim.io/) (via [NEO.ED](https://github.com/edheltzel/neoed)), [Term](https://wezterm.org), [Herdr](https://herdr.dev/), and [Oh-My-Pi](https://omp.sh/) make up my ADE (AI/Agent Development Environment). The Zed config is kept for occasional use and is not part of the regular workflow. > [!WARNING] > This is my personal setup and **changes often**. Don't blindly fork and run `install.sh` without reading it first. The script uses subcommands - see `./install.sh help`. @@ -24,13 +21,13 @@ But get **inspired**, take what you want, and leave the rest to make it your own - [NEO.ED - Neovim Config](https://github.com/edheltzel/neoed) - [E.Defy - Dygma Defy keyboard](https://github.com/edheltzel/DygmaDefy) -| Screenshots | Screenshots | -| --- | --- | -| ![1-aerospace+sketchbar](./local/.local/__repoImages/2026/1-aerospace+sketchbar.png) | ![2-bat](./local/.local/__repoImages/2026/2-bat.png) | -| ![3-btop](./local/.local/__repoImages/2026/3-btop.png) | ![4-fastfetch-fish](./local/.local/__repoImages/2026/4-fastfetch-fish.png) | -| ![5-lazygit](./local/.local/__repoImages/2026/5-lazygit.png) | ![6-nvim-neoed-picker](./local/.local/__repoImages/2026/6-nvim-neoed-picker.jpeg) | -| ![7-nvim-neoed-dash](./local/.local/__repoImages/2026/7-nvim-neoed-dash.png) | ![8-theme-switcher](./local/.local/__repoImages/2026/8-theme-switcher.png) | -| ![9-vscode](./local/.local/__repoImages/2026/9-vscode.png) | ![10-yazi](./local/.local/__repoImages/2026/10-yazi.png) | +| Screenshots | Screenshots | +| ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | +| ![1-aerospace+sketchbar](./local/.local/__repoImages/2026/1-aerospace+sketchbar.png) | ![2-bat](./local/.local/__repoImages/2026/2-bat.png) | +| ![3-btop](./local/.local/__repoImages/2026/3-btop.png) | ![4-fastfetch-fish](./local/.local/__repoImages/2026/4-fastfetch-fish.png) | +| ![5-lazygit](./local/.local/__repoImages/2026/5-lazygit.png) | ![6-nvim-neoed-picker](./local/.local/__repoImages/2026/6-nvim-neoed-picker.jpeg) | +| ![7-nvim-neoed-dash](./local/.local/__repoImages/2026/7-nvim-neoed-dash.png) | ![8-theme-switcher](./local/.local/__repoImages/2026/8-theme-switcher.png) | +| ![9-vscode](./local/.local/__repoImages/2026/9-vscode.png) | ![10-yazi](./local/.local/__repoImages/2026/10-yazi.png) |
Different Versions @@ -249,7 +246,7 @@ The package list is `stow_packages` in the `justfile`: `dots git fish zsh config - **config** (`config/`) - `~/.config` for 20+ applications, so they don't clutter the repo root. Currently: bat, borders, btop, fastfetch, gh, gh-changelog, gh-dash, ghostty, herdr, jj, karabiner, kitty, lazygit, leaderkey, markdownlint-cli2, raycast, starship, superfile, theme-switcher, topgrade, wezterm, yazi, zed. - **Terminals**: WezTerm (primary, modular Lua, see [its README](./config/.config/wezterm/README.md)), Kitty, Ghostty. - - **Theme switcher**: run `theme` for an fzf picker with preview, `theme ` to switch directly, `theme --list` / `--current`. Thirteen themes (Eldritch, Eldritch Dusk, Tokyo Night, RosΓ© Pine x3, Vesper, Catppuccin x4, Dracula, Gruvbox) applied across Ghostty, Kitty, WezTerm, Neovim, bat, btop, starship, lazygit, Claude Code, herdr, gh-dash, Superfile, and Yazi. Neovim skips Eldritch Dusk. Yazi has a flavor for every switcher theme. Details in [theme-switcher/README.md](./config/.config/theme-switcher/README.md). + - **Theme switcher**: run `theme` for an fzf picker with preview, `theme ` to switch directly, `theme --list` / `--current`. Thirteen themes (Eldritch, Eldritch Dusk, Tokyo Night, RosΓ© Pine x3, Vesper, Catppuccin x4, Dracula, Gruvbox) applied across Ghostty, Kitty, WezTerm, Neovim, bat, btop, starship, lazygit, Claude Code, pi, omp, herdr, gh-dash, Superfile, Yazi, and mdterm (light/dark only). Yazi has a flavor for every switcher theme. Details in [theme-switcher/README.md](./config/.config/theme-switcher/README.md). - **Keyboard**: `leaderkey` (current) and `karabiner` (legacy TypeScript config, see [its README](./config/.config/karabiner/README.md)). - **Editors**: `zed` (Vim mode), kept for occasional use. diff --git a/config/.config/bat/config b/config/.config/bat/config index 797107e80..206d1da2d 100644 --- a/config/.config/bat/config +++ b/config/.config/bat/config @@ -5,7 +5,7 @@ # Specify desired highlighting theme (e.g. "TwoDark"). Run `bat --list-themes` # for a list of all available themes # Dark theme ---theme="eldritch" +--theme="Catppuccin Latte" # Enable this to use italic text on the terminal. This is not supported on all # terminal emulators (like tmux, by default): diff --git a/config/.config/bat/themes/eldritch-dusk.tmTheme b/config/.config/bat/themes/eldritch-dusk.tmTheme index a35930c98..6a6327d38 100644 --- a/config/.config/bat/themes/eldritch-dusk.tmTheme +++ b/config/.config/bat/themes/eldritch-dusk.tmTheme @@ -66,7 +66,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -77,7 +77,7 @@ settings foreground - #fb5b66 + #df0514 @@ -88,7 +88,7 @@ settings foreground - #0ad6ff + #007992 @@ -99,7 +99,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -149,7 +149,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -160,7 +160,7 @@ settings foreground - #fb5b66 + #df0514 @@ -173,7 +173,7 @@ fontStyle foreground - #ffaf4d + #a75c00 @@ -186,7 +186,7 @@ fontStyle foreground - #ffaf4d + #a75c00 @@ -197,7 +197,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -208,7 +208,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -221,7 +221,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -234,7 +234,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -247,7 +247,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -260,7 +260,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -273,7 +273,7 @@ fontStyle underline foreground - #ffaf4d + #a75c00 @@ -286,7 +286,7 @@ fontStyle underline foreground - #0ad6ff + #007992 @@ -299,7 +299,7 @@ fontStyle italic underline foreground - #ffaf4d + #a75c00 @@ -312,7 +312,7 @@ fontStyle foreground - #fb5bb6 + #d5057c @@ -325,7 +325,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -338,7 +338,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -351,7 +351,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -364,7 +364,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -377,7 +377,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -390,7 +390,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -403,7 +403,7 @@ fontStyle italic foreground - #0ad6ff + #007992 @@ -418,7 +418,7 @@ fontStyle foreground - #f0f3f4 + #1e2029 @@ -431,7 +431,7 @@ background #0ad6ff foreground - #f0f3f4 + #1e2029 @@ -442,7 +442,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -464,7 +464,7 @@ settings foreground - #fb5b66 + #df0514 @@ -475,7 +475,7 @@ settings foreground - #38ff9f + #007f42 @@ -495,7 +495,7 @@ settings foreground - #0ad6ff + #007992 @@ -504,7 +504,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -513,7 +513,7 @@ settings foreground - #0ad6ff + #007992 @@ -524,7 +524,7 @@ settings foreground - #0ad6ff + #007992 @@ -535,7 +535,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -546,7 +546,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -557,7 +557,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -568,7 +568,7 @@ settings foreground - #38ff9f + #007f42 @@ -579,7 +579,7 @@ settings foreground - #0ad6ff + #007992 @@ -590,7 +590,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -601,7 +601,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -615,7 +615,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -628,7 +628,7 @@ fontStyle bold foreground - #ffaf4d + #a75c00 @@ -641,7 +641,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -652,7 +652,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -663,7 +663,7 @@ settings foreground - #0ad6ff + #007992 @@ -713,7 +713,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -726,7 +726,7 @@ fontStyle underline foreground - #0ad6ff + #007992 @@ -737,7 +737,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -748,7 +748,7 @@ settings foreground - #0ad6ff + #007992 @@ -785,7 +785,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -796,7 +796,7 @@ settings foreground - #0ad6ff + #007992 @@ -807,7 +807,7 @@ settings foreground - #0ad6ff + #007992 @@ -818,7 +818,7 @@ settings foreground - #0ad6ff + #007992 @@ -829,7 +829,7 @@ settings foreground - #0ad6ff + #007992 @@ -840,7 +840,7 @@ settings foreground - #0ad6ff + #007992 @@ -851,7 +851,7 @@ settings foreground - #0ad6ff + #007992 @@ -862,7 +862,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -873,7 +873,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -884,7 +884,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -895,7 +895,7 @@ settings foreground - #0ad6ff + #007992 fontStyle @@ -908,7 +908,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -919,7 +919,7 @@ settings foreground - #ffaf4d + #a75c00 diff --git a/config/.config/borders/bordersrc b/config/.config/borders/bordersrc index 5c2bd41e6..253b67424 100755 --- a/config/.config/borders/bordersrc +++ b/config/.config/borders/bordersrc @@ -13,7 +13,7 @@ # 0xfff1fc79 = #f1fc79 # 0xffbd93f9 = #bd93f9 # 0xffE50A69 = #E50A69 - +# 0xff7200F3 = #7200F3 options=( style=round width=5.0 diff --git a/config/.config/btop/btop.conf b/config/.config/btop/btop.conf index aa1ab5956..3fd454289 100644 --- a/config/.config/btop/btop.conf +++ b/config/.config/btop/btop.conf @@ -2,7 +2,7 @@ #* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. #* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" -color_theme = "eldritch" +color_theme = "catppuccin-latte" #* If the theme set background should be shown, set to False if you want terminal background transparency. theme_background = true diff --git a/config/.config/btop/themes/eldritch-dusk.theme b/config/.config/btop/themes/eldritch-dusk.theme index 60c4d2985..e358da2c2 100644 --- a/config/.config/btop/themes/eldritch-dusk.theme +++ b/config/.config/btop/themes/eldritch-dusk.theme @@ -16,8 +16,8 @@ theme[selected_bg]="#0ad6ff" # Foreground color of selected item in processes box theme[selected_fg]="#1e2029" -# Color of inactive/disabled text -theme[inactive_fg]="#e2e6e8" +# Color of inactive/disabled text (dusk overlay hue darkened to 3:1; upstream #e2e6e8 is invisible) +theme[inactive_fg]="#888d91" # Color of text appearing on top of graphs, i.e uptime and current network graph scaling theme[graph_text]="#1e2029" @@ -26,7 +26,8 @@ theme[graph_text]="#1e2029" theme[meter_bg]="#e2e6e8" # Misc colors for processes box including mini cpu graphs, details memory graph and details status text -theme[proc_misc]="#38ff9f" +# Dusk text roles below are darkened to >= 4.5:1; graphs/meters/boxes keep upstream neons. +theme[proc_misc]="#007f42" # Cpu box outline color theme[cpu_box]="#38ff9f" @@ -84,6 +85,6 @@ theme[upload_mid]="#0ad6ff" theme[upload_end]="#fb5bb6" # Process box color gradient for threads, mem and cpu usage -theme[process_start]="#8a69f7" -theme[process_mid]="#38ff9f" -theme[process_end]="#5b73dc" +theme[process_start]="#754ef6" +theme[process_mid]="#007f42" +theme[process_end]="#4b65d9" diff --git a/config/.config/flashspace/profiles.json b/config/.config/flashspace/profiles.json index e2a4c3e09..256cf3279 100644 --- a/config/.config/flashspace/profiles.json +++ b/config/.config/flashspace/profiles.json @@ -161,16 +161,26 @@ "iconPath" : "/Applications/DesignCraft.app/Contents/Resources/DesignCraft.icns", "name" : "DesignCraft" }, - { - "bundleIdentifier" : "ai.storyteller.printcraft", - "iconPath" : "/Applications/PrintCraft.app/Contents/Resources/PrintCraft.icns", - "name" : "PrintCraft" - }, { "bundleIdentifier" : "ai.storyteller.vectorcraft", "iconPath" : "/Applications/VectorCraft.app/Contents/Resources/VectorCraft.icns", "name" : "VectorCraft" }, + { + "bundleIdentifier" : "ai.storyteller.figcraft", + "iconPath" : "/Applications/FigCraft.app/Contents/Resources/FigCraft.icns", + "name" : "FigCraft" + }, + { + "bundleIdentifier" : "ai.storyteller.cadcraft", + "iconPath" : "/Applications/CADCraft.app/Contents/Resources/CADCraft.icns", + "name" : "CADCraft" + }, + { + "bundleIdentifier" : "ai.storyteller.pdfcraft", + "iconPath" : "/Applications/PdfCraft.app/Contents/Resources/PdfCraft.icns", + "name" : "PdfCraft" + }, { "bundleIdentifier" : "ai.storyteller.photocraft", "iconPath" : "/Applications/PhotoCraft.app/Contents/Resources/PhotoCraft.icns", @@ -255,6 +265,11 @@ "bundleIdentifier" : "com.apple.AddressBook", "iconPath" : "/System/Applications/Contacts.app/Contents/Resources/Contacts.icns", "name" : "Contacts" + }, + { + "bundleIdentifier" : "com.clickup.desktop-app", + "iconPath" : "/Applications/ClickUp.app/Contents/Resources/icon.icns", + "name" : "ClickUp" } ], "display" : "PA278QV", diff --git a/config/.config/flashspace/settings.json b/config/.config/flashspace/settings.json index 73b120195..09fc47245 100644 --- a/config/.config/flashspace/settings.json +++ b/config/.config/flashspace/settings.json @@ -44,8 +44,8 @@ ], "focusFrontmostWindow" : false, "focusNextWorkspaceApp" : "ctrl+opt+shift+a", - "focusNextWorkspaceWindow" : "ctrl+opt+shift+]", - "focusPreviousWorkspaceWindow" : "ctrl+opt+shift+[", + "focusNextWorkspaceWindow" : "cmd+ctrl+]", + "focusPreviousWorkspaceWindow" : "cmd+ctrl+[", "keepUnassignedAppsOnSwitch" : false, "loopWorkspaces" : true, "loopWorkspacesOnAllDisplays" : false, diff --git a/config/.config/gh-dash/config.yml b/config/.config/gh-dash/config.yml index ac9b5b4f4..ec3756b58 100644 --- a/config/.config/gh-dash/config.yml +++ b/config/.config/gh-dash/config.yml @@ -96,19 +96,19 @@ keybindings: theme: colors: text: - primary: "#ebfafa" - secondary: "#a48cf2" - inverted: "#212337" - faint: "#7081d0" - warning: "#e9f941" - success: "#37f499" - error: "#f9515d" + primary: "#4c4f69" + secondary: "#8839ef" + inverted: "#eff1f5" + faint: "#8c8fa1" + warning: "#df8e1d" + success: "#40a02b" + error: "#d20f39" background: - selected: "#2a2c48" + selected: "#ccd0da" border: - primary: "#a48cf2" - secondary: "#7081d0" - faint: "#2a2c48" + primary: "#8839ef" + secondary: "#8c8fa1" + faint: "#dce0e8" ui: sectionsShowCount: true table: diff --git a/config/.config/ghostty/config b/config/.config/ghostty/config index 00e6b34aa..14b6110a9 100644 --- a/config/.config/ghostty/config +++ b/config/.config/ghostty/config @@ -3,7 +3,7 @@ confirm-close-surface = false shell-integration-features = true alpha-blending = linear-corrected -#theme = Dracula +#theme = Rose Pine Dawn cursor-style = block term = xterm-256color unfocused-split-fill = "black" @@ -94,4 +94,4 @@ keybind = super+ctrl+r=text:\x12 keybind = super+ctrl+p=text:\x1b\x10 # variables keybind = super+ctrl+v=text:\x16 -config-file = "themes/eldritch" +config-file = "themes/catppuccin-latte" diff --git a/config/.config/ghostty/themes/eldritch-dusk b/config/.config/ghostty/themes/eldritch-dusk index 8f3687947..0fb8ed119 100644 --- a/config/.config/ghostty/themes/eldritch-dusk +++ b/config/.config/ghostty/themes/eldritch-dusk @@ -1,32 +1,34 @@ background = #f0f3f4 foreground = #1e2029 -cursor-color = #38ff9f +cursor-color = #ffaf4d selection-background = #e2e6e8 selection-foreground = #1e2029 +# Slots follow upstream eldritch-dusk (alacritty port / SPEC.md); accents +# darkened for Pale Shore: normal >= 4.5:1, bright >= 3:1. black = ink. # black -palette = 0=#c9cbcd +palette = 0=#1e2029 palette = 8=#5b73dc # red -palette = 9=#fb5b66 -palette = 1=#fb5b66 +palette = 1=#df0514 +palette = 9=#fb4c58 # green -palette = 2=#38ff9f -palette = 10=#38ff9f -# yellow -palette = 11=#ffaf4d -palette = 3=#fff952 +palette = 2=#007f42 +palette = 10=#00a153 +# yellow (Dusk: orange carries yellow text roles) +palette = 3=#a75c00 +palette = 11=#d37400 # blue -palette = 12=#8a69f7 -palette = 4=#8a69f7 +palette = 4=#4b65d9 +palette = 12=#5b73dc # fuchsia -palette = 13=#fb5bb6 -palette = 5=#fb5bb6 +palette = 5=#754ef6 +palette = 13=#8a69f7 # aqua -palette = 14=#0ad6ff -palette = 6=#0ad6ff +palette = 6=#007992 +palette = 14=#0099b7 # white -palette = 7=#1e2029 -palette = 15=#1e2029 +palette = 7=#353746 +palette = 15=#474852 diff --git a/config/.config/herdr/config.toml b/config/.config/herdr/config.toml index 1361f50ca..283ff25ca 100644 --- a/config/.config/herdr/config.toml +++ b/config/.config/herdr/config.toml @@ -69,7 +69,7 @@ delivery = "herdr" position = "top-right" [theme] -name = "terminal" +name = "catppuccin-latte" auto_switch = false ### keybindings ### diff --git a/config/.config/herdr/plugins/config/vjeantet.palette/config.toml b/config/.config/herdr/plugins/config/vjeantet.palette/config.toml index 9e05f998b..85fef82e3 100644 --- a/config/.config/herdr/plugins/config/vjeantet.palette/config.toml +++ b/config/.config/herdr/plugins/config/vjeantet.palette/config.toml @@ -46,6 +46,12 @@ title = "GH Project Board" argv = ["gh", "board", "--owner", "edheltzel"] placement = "split" +[[command]] +id = "theme" +title = "Theme Switcher" +argv = ["fish", "-c", "theme"] # fish function wraps theme-switcher.sh; no $HOME expansion in argv +placement = "split" + [[command]] id = "edit" title = "Edit a file" diff --git a/config/.config/kitty/kitty.conf b/config/.config/kitty/kitty.conf index c0f255e62..5a50495d3 100644 --- a/config/.config/kitty/kitty.conf +++ b/config/.config/kitty/kitty.conf @@ -42,6 +42,6 @@ tab_bar_filter session:~ or session:^$ inactive_text_alpha 0.35 background_opacity 1.0 background_blur 25 -include ./themes/eldritch-neoed.conf +include ./themes/catppuccin-latte.conf #: include ./themes/rose-pine-moon.conf #: END_KITTY_THEME diff --git a/config/.config/kitty/themes/eldritch-dusk.conf b/config/.config/kitty/themes/eldritch-dusk.conf index d009a8480..4d3433e00 100644 --- a/config/.config/kitty/themes/eldritch-dusk.conf +++ b/config/.config/kitty/themes/eldritch-dusk.conf @@ -3,59 +3,61 @@ ## author: jacobrreed ## license: MIT ## upstream: https://github.com/eldritch-theme/eldritch -## blurb: Eldritch light (Dusk) variant +## blurb: Eldritch light (Dusk) variant. Slots follow upstream eldritch-dusk +## (alacritty port / SPEC.md); accents darkened so text stays readable on +## Pale Shore: normal >= 4.5:1, bright >= 3:1. black = ink, not background. foreground #1e2029 background #f0f3f4 selection_foreground #1e2029 selection_background #e2e6e8 -url_color #0ad6ff +url_color #007992 # black -color0 #c9cbcd +color0 #1e2029 color8 #5b73dc # red -color1 #fb5b66 -color9 #fb5b66 +color1 #df0514 +color9 #fb4c58 # green -color2 #38ff9f -color10 #38ff9f +color2 #007f42 +color10 #00a153 -# yellow -color3 #fff952 -color11 #ffaf4d +# yellow (Dusk: orange carries yellow text roles) +color3 #a75c00 +color11 #d37400 # blue -color4 #8a69f7 -color12 #8a69f7 +color4 #4b65d9 +color12 #5b73dc # magenta -color5 #fb5bb6 -color13 #fb5bb6 +color5 #754ef6 +color13 #8a69f7 # cyan -color6 #0ad6ff -color14 #0ad6ff +color6 #007992 +color14 #0099b7 # white -color7 #1e2029 -color15 #1e2029 +color7 #353746 +color15 #474852 # Cursor colors -cursor #38ff9f +cursor #ffaf4d cursor_text_color #f0f3f4 # Tab bar colors -active_tab_foreground #f0f3f4 +active_tab_foreground #1e2029 active_tab_background #38ff9f inactive_tab_foreground #5b73dc inactive_tab_background #e2e6e8 # Marks mark1_foreground #f0f3f4 -mark1_background #fb5b66 +mark1_background #df0514 # Splits/Windows active_border_color #8a69f7 diff --git a/config/.config/lazygit/config.yml b/config/.config/lazygit/config.yml index f62374332..748236b5e 100644 --- a/config/.config/lazygit/config.yml +++ b/config/.config/lazygit/config.yml @@ -7,28 +7,27 @@ git: gui: theme: activeBorderColor: - - "#37f499" + - "#1e66f5" - bold inactiveBorderColor: - - "#747BA2" + - "#6c6f85" searchingActiveBorderColor: - - "#f265b5" - - bold + - "#df8e1d" optionsTextColor: - - blue + - "#1e66f5" selectedLineBgColor: - - "#323449" + - "#ccd0da" inactiveViewSelectedLineBgColor: - - bold + - "#9ca0b0" cherryPickedCommitFgColor: - - "#a48cf2" + - "#1e66f5" cherryPickedCommitBgColor: - - cyan + - "#bcc0cc" markedBaseCommitFgColor: - - blue + - "#1e66f5" markedBaseCommitBgColor: - - "#f1fc79" + - "#df8e1d" unstagedChangesColor: - - "#f16c75" + - "#d20f39" defaultFgColor: - - "#ebfafa" + - "#4c4f69" diff --git a/config/.config/leaderkey/config.json b/config/.config/leaderkey/config.json index 214152938..3bc28253d 100644 --- a/config/.config/leaderkey/config.json +++ b/config/.config/leaderkey/config.json @@ -13,15 +13,36 @@ "value" : "/System/Applications/Passwords.app" }, { - "key" : "a", + "key" : "1", "type" : "application", - "value" : "/Applications/Affinity.app" + "value" : "/Applications/Bitwarden.app" }, { - "key" : "G", - "label" : "β™­β™­", - "type" : "application", - "value" : "/Applications/GIMP.app" + "actions" : [ + { + "key" : "i", + "type" : "application", + "value" : "/Applications/Inkscape.app" + }, + { + "key" : "G", + "label" : "β™­β™­", + "type" : "application", + "value" : "/Applications/GIMP.app" + }, + { + "key" : "f", + "type" : "application", + "value" : "/Applications/Figma.app" + }, + { + "key" : "a", + "type" : "application", + "value" : "/Applications/Affinity.app" + } + ], + "key" : "D", + "type" : "group" }, { "iconPath" : "/Applications/Cursor.app", @@ -30,34 +51,11 @@ "type" : "application", "value" : "/Applications/Cursor.app" }, - { - "key" : "v", - "label" : "Claude Desktop", - "type" : "application", - "value" : "/Applications/Claude.app" - }, - { - "key" : "f", - "type" : "application", - "value" : "/Applications/Figma.app" - }, - { - "iconPath" : "/Applications/Grok Bot.app", - "key" : "g", - "label" : "Grok Bot", - "type" : "application", - "value" : "/Applications/Grok Bot.app" - }, { "key" : "I", "type" : "application", "value" : "/Applications/Invoice Ninja.app" }, - { - "key" : "i", - "type" : "application", - "value" : "/Applications/Inkscape.app" - }, { "key" : "k", "label" : "Markdown Preview", diff --git a/config/.config/mdterm/config.toml b/config/.config/mdterm/config.toml index 0dbad19fe..829c6312b 100644 --- a/config/.config/mdterm/config.toml +++ b/config/.config/mdterm/config.toml @@ -1,3 +1,3 @@ -theme = "dark" # "dark" or "light" +theme = "light" # "dark" or "light" line_numbers = false # show line numbers in code blocks width = 0 # display width (0 = auto) diff --git a/config/.config/starship.toml b/config/.config/starship.toml index 202a9a842..a0fa0aa8d 100644 --- a/config/.config/starship.toml +++ b/config/.config/starship.toml @@ -25,7 +25,7 @@ command_timeout = 500 scan_timeout = 100 # Set by theme-switcher. Names match theme-switcher/current. -palette = "eldritch" +palette = "catppuccin-latte" [battery] disabled = true @@ -204,15 +204,17 @@ orange = "#f7c67f" comment = "#7081d0" foreground = "#ebfafa" +# Dusk neons fail on Pale Shore; text roles darkened to >= 4.5:1 per hue. +# Per eldritch SPEC.md, Dusk yellow text roles use orange. [palettes."eldritch-dusk"] -green = "#38ff9f" -red = "#fb5b66" -cyan = "#0ad6ff" -blue = "#0ad6ff" -pink = "#fb5bb6" -purple = "#8a69f7" -yellow = "#fff952" -orange = "#ffaf4d" +green = "#007f42" +red = "#df0514" +cyan = "#007992" +blue = "#4b65d9" +pink = "#d5057c" +purple = "#754ef6" +yellow = "#a75c00" +orange = "#d37400" comment = "#5b73dc" foreground = "#1e2029" diff --git a/config/.config/superfile/config.toml b/config/.config/superfile/config.toml index 2932e6eab..2f1bd1911 100644 --- a/config/.config/superfile/config.toml +++ b/config/.config/superfile/config.toml @@ -94,7 +94,7 @@ file_panel_name_percent = 50 #-- Theme # Put your theme's name here! -theme = "eldritch" +theme = "catppuccin-latte" #-- Code Previewer # Whether to use the builtin syntax highlighting with chroma or use bat. Values: "" for builtin chroma, "bat" for bat diff --git a/config/.config/superfile/theme/eldritch-dusk.toml b/config/.config/superfile/theme/eldritch-dusk.toml new file mode 100644 index 000000000..004638f01 --- /dev/null +++ b/config/.config/superfile/theme/eldritch-dusk.toml @@ -0,0 +1,74 @@ +############################################## +# # +# Eldritch Dusk Theme # +# # +############################################## + +# Light recolor of eldritch.toml. Text accents are the Dusk palette darkened +# to >= 4.5:1 on #f0f3f4 (official neons are decorative-only per SPEC.md). +# https://superfile.dev/configure/custom-theme/ + +############################################################################### +# Code Syntax Highlighting # +############################################################################### + +# No Eldritch chroma style exists; closest light style. +code_syntax_highlight = "catppuccin-latte" + +############################################################################### +# Base Colors # +############################################################################### + +#-- Full Screen +full_screen_fg = "#1e2029" +full_screen_bg = "#f0f3f4" + +#-- Gradient +# Note: This currently only supports two colors. +gradient_color = ["#007f42", "#754ef6"] + +#-- File Panel +file_panel_fg = "#1e2029" +file_panel_bg = "#f0f3f4" +file_panel_border = "#5b73dc" +file_panel_border_active = "#007f42" +file_panel_top_directory_icon = "#007f42" +file_panel_top_path = "#007992" +file_panel_item_selected_fg = "#a75c00" +file_panel_item_selected_bg = "#e2e6e8" + +#-- Footer +footer_fg = "#1e2029" +footer_bg = "#f0f3f4" +footer_border = "#5b73dc" +footer_border_active = "#007f42" + +#-- Sidebar +sidebar_fg = "#1e2029" +sidebar_bg = "#f0f3f4" +sidebar_title = "#754ef6" +sidebar_border = "#e2e6e8" +sidebar_border_active = "#007f42" +sidebar_item_selected_fg = "#a75c00" +sidebar_item_selected_bg = "#e2e6e8" +sidebar_divider = "#5b73dc" + +#-- Modals +modal_fg = "#1e2029" +modal_bg = "#e2e6e8" +modal_border_active = "#007f42" +modal_cancel_fg = "#f0f3f4" +modal_cancel_bg = "#df0514" +modal_confirm_fg = "#f0f3f4" +modal_confirm_bg = "#007f42" + +#-- Help Menu +help_menu_hotkey = "#a75c00" +help_menu_title = "#754ef6" + +#-- Special +cursor = "#d5057c" +correct = "#007f42" +error = "#df0514" +hint = "#007992" +cancel = "#5b73dc" diff --git a/config/.config/theme-switcher/README.md b/config/.config/theme-switcher/README.md index f520ea89b..5d10f5f37 100644 --- a/config/.config/theme-switcher/README.md +++ b/config/.config/theme-switcher/README.md @@ -7,7 +7,7 @@ Unified theme switching system for all applications in dotfiles. ## Supported Themes - `eldritch` - Eldritch -- `eldritch-dusk` - Eldritch Dusk (official light) +- `eldritch-dusk` - Eldritch Dusk (official light). ANSI slots follow upstream's Dusk alacritty port; accents used as text are darkened per hue (normal β‰₯4.5:1, bright β‰₯3:1 on `#f0f3f4`) because the official neons are decorative-only on light surfaces (SPEC.md). `color0` is ink, not background. bat and btop start from the upstream Dusk ports with only text foregrounds darkened (graphs, meters, borders keep the neons); re-diff against upstream before syncing. - `tokyonight` - Tokyo Night - `rose-pine` - RosΓ© Pine - `rose-pine-dawn` - RosΓ© Pine Dawn (light theme) @@ -37,15 +37,17 @@ Unified theme switching system for all applications in dotfiles. | starship | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | | SuperfileΒΆ | βœ“ | | | | | | latte | βœ“ | | | Yaziβˆ₯ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | βœ“ | +| mdterm# | dark | dark | dark | light | dark | dark | latte light | dark | dark | † All four Catppuccin flavors (Latte, FrappΓ©, Macchiato, Mocha) are supported identically. Terminals (Ghostty, WezTerm) and bat use built-in Catppuccin themes; Neovim uses the `catppuccin/nvim` plugin; Kitty and btop use the official port theme files; lazygit uses generated palettes from the official Catppuccin color spec. ‑ herdr switches `name` under `[theme]` in `herdr/config.toml` and reloads the running server live β€” themes without a herdr built-in (Eldritch, Rose Pine Moon, Catppuccin FrappΓ©/Macchiato) use herdr's `terminal` theme, which follows the host terminal palette this switcher just set. Β§ gh-dash (`gh dash`) has no external theme-file support β€” colors are an inline `theme.colors` key-value block in `gh-dash/config.yml`. Like lazygit, the switcher keeps a per-theme snippet in `gh-dash/[theme].yml` and injects it, replacing only `theme.colors` and leaving `theme.ui` and every other config section untouched. gh-dash validates strictly, so each snippet carries the full color set. Palettes are derived from the matching Kitty theme for cross-app consistency. -Starship follows `palette =` in `starship.toml` for every switcher theme, including `eldritch-dusk`. Neovim skips `eldritch-dusk` β€” `eldritch.nvim` has no light palette yet. -ΒΆ Superfile uses local files in `superfile/theme/.toml`; missing file β†’ skipped. Catppuccin Latte only. +Starship follows `palette =` in `starship.toml` for every switcher theme, including `eldritch-dusk`. Neovim's `eldritch-dusk` is local (`nvim/colors/eldritch-dusk.lua`): it registers a Dusk palette with `eldritch.nvim`, which ships none. +ΒΆ Superfile uses local files in `superfile/theme/.toml`; missing file β†’ skipped. New theme files need `just stow config` to link into `~/.config/superfile/theme/`. βˆ₯ Yazi sets both `dark` and `light` in `yazi/theme.toml` to the same flavor, so the pick wins regardless of terminal luminance. `tokyonight` maps to `tokyo-night`. Gruvbox is the upstream dark port, stored as `gruvbox`. Eldritch Dusk is a local recolor of the Eldritch flavor from the kitty/ghostty palette. +\# mdterm only has `dark`/`light`. The switcher writes `theme` in `mdterm/config.toml`: `light` for Eldritch Dusk, RosΓ© Pine Dawn, and Catppuccin Latte; `dark` otherwise. The yazi markdown previewer reads that config (no `-T` flag). ## Usage diff --git a/config/.config/theme-switcher/claude/eldritch-dusk.json b/config/.config/theme-switcher/claude/eldritch-dusk.json index 173530118..814275070 100644 --- a/config/.config/theme-switcher/claude/eldritch-dusk.json +++ b/config/.config/theme-switcher/claude/eldritch-dusk.json @@ -9,29 +9,29 @@ "subtle": "#5b73dc", "background": "#38ff9f", - "claude": "#8a69f7", - "claudeShimmer": "#ffaf4d", - "claudeBlue_FOR_SYSTEM_SPINNER": "#0ad6ff", + "claude": "#754ef6", + "claudeShimmer": "#d37400", + "claudeBlue_FOR_SYSTEM_SPINNER": "#007992", "claudeBlueShimmer_FOR_SYSTEM_SPINNER": "#5b73dc", - "permission": "#0ad6ff", + "permission": "#007992", "permissionShimmer": "#5b73dc", - "suggestion": "#0ad6ff", - "remember": "#0ad6ff", + "suggestion": "#007992", + "remember": "#007992", - "autoAccept": "#fb5bb6", - "bashBorder": "#fb5bb6", - "planMode": "#0ad6ff", - "ide": "#8a69f7", + "autoAccept": "#d5057c", + "bashBorder": "#d5057c", + "planMode": "#007992", + "ide": "#754ef6", "promptBorder": "#5b73dc", "promptBorderShimmer": "#8a69f7", - "success": "#38ff9f", - "error": "#fb5b66", - "warning": "#ffaf4d", - "warningShimmer": "#fff952", - "merged": "#8a69f7", + "success": "#007f42", + "error": "#df0514", + "warning": "#a75c00", + "warningShimmer": "#d37400", + "merged": "#754ef6", "diffAdded": "#38ff9f", "diffRemoved": "#fb5b66", @@ -46,13 +46,13 @@ "messageActionsBackground": "#e2e6e8", "bashMessageBackgroundColor": "#e2e6e8", - "red_FOR_SUBAGENTS_ONLY": "#fb5b66", - "blue_FOR_SUBAGENTS_ONLY": "#0ad6ff", - "green_FOR_SUBAGENTS_ONLY": "#38ff9f", - "yellow_FOR_SUBAGENTS_ONLY": "#fff952", - "purple_FOR_SUBAGENTS_ONLY": "#8a69f7", - "orange_FOR_SUBAGENTS_ONLY": "#ffaf4d", - "pink_FOR_SUBAGENTS_ONLY": "#fb5bb6", - "cyan_FOR_SUBAGENTS_ONLY": "#0ad6ff" + "red_FOR_SUBAGENTS_ONLY": "#df0514", + "blue_FOR_SUBAGENTS_ONLY": "#4b65d9", + "green_FOR_SUBAGENTS_ONLY": "#007f42", + "yellow_FOR_SUBAGENTS_ONLY": "#767200", + "purple_FOR_SUBAGENTS_ONLY": "#754ef6", + "orange_FOR_SUBAGENTS_ONLY": "#a75c00", + "pink_FOR_SUBAGENTS_ONLY": "#d5057c", + "cyan_FOR_SUBAGENTS_ONLY": "#007992" } } diff --git a/config/.config/theme-switcher/current b/config/.config/theme-switcher/current index 949813018..365670c79 100644 --- a/config/.config/theme-switcher/current +++ b/config/.config/theme-switcher/current @@ -1 +1 @@ -eldritch +catppuccin-latte diff --git a/config/.config/theme-switcher/gh-dash/eldritch-dusk.yml b/config/.config/theme-switcher/gh-dash/eldritch-dusk.yml index f76fce503..ac57cd9d2 100644 --- a/config/.config/theme-switcher/gh-dash/eldritch-dusk.yml +++ b/config/.config/theme-switcher/gh-dash/eldritch-dusk.yml @@ -1,12 +1,12 @@ colors: text: primary: "#1e2029" - secondary: "#8a69f7" + secondary: "#754ef6" inverted: "#f0f3f4" faint: "#5b73dc" - warning: "#fff952" - success: "#38ff9f" - error: "#fb5b66" + warning: "#a75c00" + success: "#007f42" + error: "#df0514" background: selected: "#e2e6e8" border: diff --git a/config/.config/theme-switcher/lazygit/eldritch-dusk.yml b/config/.config/theme-switcher/lazygit/eldritch-dusk.yml index 91e4d7ec8..257a28139 100644 --- a/config/.config/theme-switcher/lazygit/eldritch-dusk.yml +++ b/config/.config/theme-switcher/lazygit/eldritch-dusk.yml @@ -14,7 +14,7 @@ inactiveViewSelectedLineBgColor: - bold cherryPickedCommitFgColor: - - "#8a69f7" + - "#f0f3f4" cherryPickedCommitBgColor: - cyan markedBaseCommitFgColor: @@ -22,6 +22,6 @@ markedBaseCommitBgColor: - "#fff952" unstagedChangesColor: - - "#fb5b66" + - "#df0514" defaultFgColor: - "#1e2029" diff --git a/config/.config/theme-switcher/pi/eldritch-dusk.json b/config/.config/theme-switcher/pi/eldritch-dusk.json new file mode 100644 index 000000000..d66966f7a --- /dev/null +++ b/config/.config/theme-switcher/pi/eldritch-dusk.json @@ -0,0 +1,82 @@ +{ + "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json", + "name": "eldritch-dusk", + "vars": { + "abyss": "#e2e6e8", + "depths": "#d5d9db", + "background": "#f0f3f4", + "line": "#c9cbcd", + "foreground": "#1e2029", + "muted": "#5b73dc", + "dim": "#888d91", + "cyan": "#007992", + "green": "#007f42", + "purple": "#754ef6", + "orange": "#d37400", + "pink": "#d5057c", + "red": "#df0514", + "yellow": "#a75c00", + "toolPendingBg": "#e2e6e8", + "toolSuccessBg": "#d4f8e8", + "toolErrorBg": "#f8d4d6" + }, + "colors": { + "accent": "purple", + "border": "muted", + "borderAccent": "pink", + "borderMuted": "line", + "success": "green", + "error": "red", + "warning": "yellow", + "muted": "muted", + "dim": "dim", + "text": "foreground", + "thinkingText": "muted", + "selectedBg": "abyss", + "userMessageBg": "abyss", + "userMessageText": "foreground", + "customMessageBg": "depths", + "customMessageText": "foreground", + "customMessageLabel": "purple", + "toolPendingBg": "toolPendingBg", + "toolSuccessBg": "toolSuccessBg", + "toolErrorBg": "toolErrorBg", + "toolTitle": "cyan", + "toolOutput": "muted", + "mdHeading": "purple", + "mdLink": "cyan", + "mdLinkUrl": "muted", + "mdCode": "pink", + "mdCodeBlock": "green", + "mdCodeBlockBorder": "line", + "mdQuote": "muted", + "mdQuoteBorder": "line", + "mdHr": "line", + "mdListBullet": "pink", + "toolDiffAdded": "green", + "toolDiffRemoved": "red", + "toolDiffContext": "muted", + "syntaxComment": "purple", + "syntaxKeyword": "pink", + "syntaxFunction": "pink", + "syntaxVariable": "muted", + "syntaxString": "yellow", + "syntaxNumber": "red", + "syntaxType": "orange", + "syntaxOperator": "pink", + "syntaxPunctuation": "foreground", + "thinkingOff": "dim", + "thinkingMinimal": "muted", + "thinkingLow": "cyan", + "thinkingMedium": "purple", + "thinkingHigh": "pink", + "thinkingXhigh": "orange", + "thinkingMax": "red", + "bashMode": "pink" + }, + "export": { + "pageBg": "abyss", + "cardBg": "background", + "infoBg": "depths" + } +} diff --git a/config/.config/theme-switcher/theme-preview.sh b/config/.config/theme-switcher/theme-preview.sh index 8b0b2f1a4..8d5b942c8 100755 --- a/config/.config/theme-switcher/theme-preview.sh +++ b/config/.config/theme-switcher/theme-preview.sh @@ -210,11 +210,7 @@ show_support() { echo " βœ“ ξ»Ύ ghostty" echo " βœ“ σ°„› kitty" echo " βœ“ ξž• wezterm" - if [[ "$theme" == "eldritch-dusk" ]]; then - echo " βœ—  neovim (no dusk palette)" - else - echo " βœ“  neovim" - fi + echo " βœ“  neovim" echo " βœ“ 󰭟 bat" echo " βœ“ σ°„§ btop" echo " βœ“ ο„΅ starship" @@ -261,6 +257,7 @@ show_support() { else echo " βœ— 󰝰 yazi" fi + echo " βœ“ 󰍔 mdterm ($([[ "$theme" =~ ^(eldritch-dusk|rose-pine-dawn|catppuccin-latte)$ ]] && echo light || echo dark))" } # Main diff --git a/config/.config/theme-switcher/theme-switcher.sh b/config/.config/theme-switcher/theme-switcher.sh index 932043879..cc8c26ba4 100755 --- a/config/.config/theme-switcher/theme-switcher.sh +++ b/config/.config/theme-switcher/theme-switcher.sh @@ -117,7 +117,7 @@ get_wezterm_theme() { get_neovim_theme() { case "$1" in eldritch) echo "eldritch" ;; - eldritch-dusk) echo "" ;; # eldritch.nvim has no dusk palette yet + eldritch-dusk) echo "eldritch-dusk" ;; # local nvim/colors/eldritch-dusk.lua tokyonight) echo "tokyonight" ;; rose-pine) echo "rose-pine" ;; rose-pine-dawn) echo "rose-pine-dawn" ;; @@ -227,6 +227,14 @@ get_yazi_theme() { fi } +# mdterm has no custom themes, only dark/light. +get_mdterm_theme() { + case "$1" in + eldritch-dusk | rose-pine-dawn | catppuccin-latte) echo "light" ;; + *) echo "dark" ;; + esac +} + get_pi_theme() { local name="$1" if [[ -f "$THEMES_DIR/pi/${name}.json" ]] || [[ -f "$HOME/.pi/agent/themes/${name}.json" ]]; then @@ -665,6 +673,22 @@ update_yazi() { success "yazi β†’ $yazi_theme" } +update_mdterm() { + local theme="$1" + + if ! is_installed mdterm; then + MISSING_APPS+=("mdterm") + info "mdterm β†’ not installed, skipped" + return + fi + + local mdterm_theme + mdterm_theme=$(get_mdterm_theme "$theme") + sed -i '' -E "s/^theme = \"[a-z]+\"/theme = \"$mdterm_theme\"/" "$CONFIG/mdterm/config.toml" + UPDATED_APPS+=("mdterm β†’ $mdterm_theme") + success "mdterm β†’ $mdterm_theme" +} + update_pi() { local theme="$1" @@ -852,6 +876,7 @@ apply_theme() { update_ghdash "$theme" update_superfile "$theme" update_yazi "$theme" + update_mdterm "$theme" # Save current theme echo "$theme" >"$THEMES_DIR/current" diff --git a/config/.config/wezterm/colors/eldritch-dusk.toml b/config/.config/wezterm/colors/eldritch-dusk.toml index 061bdbdd3..a57e1dd5e 100644 --- a/config/.config/wezterm/colors/eldritch-dusk.toml +++ b/config/.config/wezterm/colors/eldritch-dusk.toml @@ -1,30 +1,32 @@ # Eldritch Dusk (official light) # https://github.com/eldritch-theme/eldritch +# Slots follow upstream eldritch-dusk (alacritty port / SPEC.md); accents +# darkened for Pale Shore: ansi >= 4.5:1, brights >= 3:1. black = ink. [colors] ansi = [ - '#c9cbcd', - '#fb5b66', - '#38ff9f', - '#fff952', - '#8a69f7', - '#fb5bb6', - '#0ad6ff', '#1e2029', + '#df0514', + '#007f42', + '#a75c00', + '#4b65d9', + '#754ef6', + '#007992', + '#353746', ] background = '#f0f3f4' brights = [ '#5b73dc', - '#fb5b66', - '#38ff9f', - '#ffaf4d', + '#fb4c58', + '#00a153', + '#d37400', + '#5b73dc', '#8a69f7', - '#fb5bb6', - '#0ad6ff', - '#1e2029', + '#0099b7', + '#474852', ] -compose_cursor = '#fff952' -cursor_bg = '#38ff9f' -cursor_border = '#0ad6ff' +compose_cursor = '#8a69f7' +cursor_bg = '#ffaf4d' +cursor_border = '#ffaf4d' cursor_fg = '#f0f3f4' foreground = '#1e2029' scrollbar_thumb = '#38ff9f' diff --git a/config/.config/wezterm/theme.lua b/config/.config/wezterm/theme.lua index cbd1cd22d..bb6b12d9b 100644 --- a/config/.config/wezterm/theme.lua +++ b/config/.config/wezterm/theme.lua @@ -10,7 +10,7 @@ function M.basename(s) end -- Theme selection: set by theme-switcher, must match a WezTerm color_scheme name -M.name = "Eldritch" +M.name = "Catppuccin Latte" -- Theme data lookup table (colors + tab_bar per theme) local themes = { @@ -83,28 +83,30 @@ local themes = { }, }, ["Eldritch Dusk"] = { + -- Accents darkened to >= 4.5:1 on Pale Shore (official Dusk neons are + -- decorative-only per eldritch SPEC.md); active pill text uses background. colors = { - red = "#FB5B66", - red2 = "#E14A55", - red3 = "#C43A45", - purple = "#8A69F7", + red = "#DF0514", + red2 = "#B8040F", + red3 = "#93030C", + purple = "#754EF6", purple_alt = "#5B73DC", - cyan = "#0AD6FF", - yellow = "#FFF952", - pink = "#FB5BB6", + cyan = "#007992", + yellow = "#767200", + pink = "#D5057C", white = "#1E2029", - green = "#38FF9F", - orange = "#FFAF4D", + green = "#007F42", + orange = "#A75C00", dark = "#E2E6E8", black = "#F0F3F4", }, tab_bar = { bg = "#E2E6E8", - active_bg = "#38FF9F", - active_fg = "#1E2029", + active_bg = "#007F42", + active_fg = "#F0F3F4", inactive_bg = "#E2E6E8", inactive_fg = "#5B73DC", - agent_activity = "#FFAF4D", + agent_activity = "#A75C00", }, }, ["rose-pine"] = { diff --git a/config/.config/yazi/flavors/eldritch-dusk.yazi/flavor.toml b/config/.config/yazi/flavors/eldritch-dusk.yazi/flavor.toml index 8912134b3..97534037c 100644 --- a/config/.config/yazi/flavors/eldritch-dusk.yazi/flavor.toml +++ b/config/.config/yazi/flavors/eldritch-dusk.yazi/flavor.toml @@ -5,19 +5,26 @@ # # bg #f0f3f4 surface #e2e6e8 muted #c9cbcd # fg #1e2029 comment #5b73dc +# +# Official accents (backgrounds, markers, borders only): # cyan #0ad6ff green #38ff9f purple #8a69f7 # pink #fb5bb6 yellow #fff952 orange #ffaf4d # red #fb5b66 # +# Text accents, darkened to >= 4.5:1 on bg (SPEC.md: Dusk yellow text -> orange): +# cyan #007992 green #007f42 purple #754ef6 +# pink #d5057c orange #a75c00 red #df0514 +# orange-lt #d37400 (3:1, secondary orange) +# # : Manager {{{ [mgr] -cwd = { fg = "#0ad6ff" } +cwd = { fg = "#007992" } # Find -find_keyword = { fg = "#fb5b66", bold = true, italic = true, underline = true } -find_position = { fg = "#ffaf4d", bg = "reset", bold = true, italic = true } +find_keyword = { fg = "#df0514", bold = true, italic = true, underline = true } +find_position = { fg = "#a75c00", bg = "reset", bold = true, italic = true } # Marker marker_copied = { fg = "#38ff9f", bg = "#38ff9f" } @@ -41,7 +48,7 @@ border_style = { fg = "#5b73dc" } [tabs] active = { fg = "#1e2029", bg = "#0ad6ff", bold = true } -inactive = { fg = "#0ad6ff", bg = "#e2e6e8" } +inactive = { fg = "#007992", bg = "#e2e6e8" } # : }}} @@ -51,15 +58,15 @@ inactive = { fg = "#0ad6ff", bg = "#e2e6e8" } [mode] normal_main = { fg = "#1e2029", bg = "#0ad6ff", bold = true } -normal_alt = { fg = "#0ad6ff", bg = "#e2e6e8" } +normal_alt = { fg = "#007992", bg = "#e2e6e8" } # Select mode select_main = { fg = "#1e2029", bg = "#38ff9f", bold = true } -select_alt = { fg = "#38ff9f", bg = "#e2e6e8" } +select_alt = { fg = "#007f42", bg = "#e2e6e8" } # Unset mode unset_main = { fg = "#1e2029", bg = "#8a69f7", bold = true } -unset_alt = { fg = "#8a69f7", bg = "#e2e6e8" } +unset_alt = { fg = "#754ef6", bg = "#e2e6e8" } # : }}} @@ -67,21 +74,21 @@ unset_alt = { fg = "#8a69f7", bg = "#e2e6e8" } # : Status bar {{{ [status] -overall = { fg = "#0ad6ff" } +overall = { fg = "#007992" } sep_left = { open = "", close = "" } sep_right = { open = "", close = "" } # Progress progress_label = { fg = "#1e2029", bold = true } -progress_normal = { fg = "#0ad6ff", bg = "#e2e6e8" } -progress_error = { fg = "#fb5b66", bg = "#e2e6e8" } +progress_normal = { fg = "#007992", bg = "#e2e6e8" } +progress_error = { fg = "#df0514", bg = "#e2e6e8" } # Permissions perm_sep = { fg = "#5b73dc" } -perm_type = { fg = "#0ad6ff" } -perm_read = { fg = "#38ff9f" } -perm_write = { fg = "#fb5b66" } -perm_exec = { fg = "#ffaf4d" } +perm_type = { fg = "#007992" } +perm_read = { fg = "#007f42" } +perm_write = { fg = "#df0514" } +perm_exec = { fg = "#a75c00" } # : }}} @@ -90,7 +97,7 @@ perm_exec = { fg = "#ffaf4d" } [pick] border = { fg = "#0ad6ff" } -active = { fg = "#fb5bb6", bold = true } +active = { fg = "#d5057c", bold = true } inactive = {} # : }}} @@ -120,7 +127,7 @@ border = { fg = "#0ad6ff" } [tasks] border = { fg = "#0ad6ff" } title = {} -hovered = { fg = "#fb5bb6", underline = true } +hovered = { fg = "#d5057c", underline = true } # : }}} @@ -129,9 +136,9 @@ hovered = { fg = "#fb5bb6", underline = true } [which] mask = { bg = "#e2e6e8" } -cand = { fg = "#38ff9f" } +cand = { fg = "#007f42" } rest = { fg = "#5b73dc" } -desc = { fg = "#8a69f7" } +desc = { fg = "#754ef6" } separator = " " separator_style = { fg = "#5b73dc" } @@ -141,8 +148,8 @@ separator_style = { fg = "#5b73dc" } # : Help {{{ [help] -chord = { fg = "#38ff9f" } -action = { fg = "#8a69f7" } +chord = { fg = "#007f42" } +action = { fg = "#754ef6" } hovered = { reversed = true, bold = true } # : }}} @@ -152,9 +159,9 @@ hovered = { reversed = true, bold = true } [spot] border = { fg = "#0ad6ff" } -title = { fg = "#0ad6ff" } -tbl_col = { fg = "#38ff9f" } -tbl_cell = { fg = "#fb5bb6", bg = "#e2e6e8" } +title = { fg = "#007992" } +tbl_col = { fg = "#007f42" } +tbl_cell = { fg = "#d5057c", bg = "#e2e6e8" } # : }}} @@ -162,9 +169,9 @@ tbl_cell = { fg = "#fb5bb6", bg = "#e2e6e8" } # : Notify {{{ [notify] -title_info = { fg = "#38ff9f" } -title_warn = { fg = "#fff952" } -title_error = { fg = "#fb5b66" } +title_info = { fg = "#007f42" } +title_warn = { fg = "#a75c00" } +title_error = { fg = "#df0514" } # : }}} @@ -175,33 +182,33 @@ title_error = { fg = "#fb5b66" } rules = [ # Images - { mime = "image/*", fg = "#ffaf4d" }, + { mime = "image/*", fg = "#d37400" }, # Media - { mime = "video/*", fg = "#fb5b66" }, - { mime = "audio/*", fg = "#fb5b66" }, + { mime = "video/*", fg = "#df0514" }, + { mime = "audio/*", fg = "#df0514" }, # Archives - { mime = "application/zip", fg = "#fff952" }, - { mime = "application/x-tar", fg = "#fff952" }, - { mime = "application/x-bzip*", fg = "#fff952" }, - { mime = "application/x-bzip2", fg = "#fff952" }, - { mime = "application/x-7z-compressed", fg = "#fff952" }, - { mime = "application/x-rar", fg = "#fff952" }, - { mime = "application/x-xz", fg = "#fff952" }, + { mime = "application/zip", fg = "#a75c00" }, + { mime = "application/x-tar", fg = "#a75c00" }, + { mime = "application/x-bzip*", fg = "#a75c00" }, + { mime = "application/x-bzip2", fg = "#a75c00" }, + { mime = "application/x-7z-compressed", fg = "#a75c00" }, + { mime = "application/x-rar", fg = "#a75c00" }, + { mime = "application/x-xz", fg = "#a75c00" }, # Documents - { mime = "application/doc", fg = "#38ff9f" }, - { mime = "application/epub+zip", fg = "#38ff9f" }, - { mime = "application/pdf", fg = "#38ff9f" }, - { mime = "application/rtf", fg = "#38ff9f" }, - { mime = "application/vnd.*", fg = "#38ff9f" }, + { mime = "application/doc", fg = "#007f42" }, + { mime = "application/epub+zip", fg = "#007f42" }, + { mime = "application/pdf", fg = "#007f42" }, + { mime = "application/rtf", fg = "#007f42" }, + { mime = "application/vnd.*", fg = "#007f42" }, # Special files { mime = "*", is = "orphan", fg = "#1e2029", bg = "#fb5b66" }, - { mime = "application/*exec*", fg = "#fb5b66" }, + { mime = "application/*exec*", fg = "#df0514" }, - # Fallback β€” directories follow the terminal's blue (ANSI 4 β†’ Eldritch #8a69f7), files use fg + # Fallback β€” directories follow the terminal's blue (ANSI 4 β†’ Dusk #4b65d9), files use fg { url = "*", fg = "#1e2029" }, { url = "*/", fg = "blue" }, ] @@ -962,11 +969,11 @@ conds = [ # : Git status signs {{{ [git] -modified = { fg = "#0ad6ff", bold = true } -added = { fg = "#38ff9f", bold = true } -untracked = { fg = "#ffaf4d", bold = true } -deleted = { fg = "#fb5b66", bold = true } -updated = { fg = "#fff952", bold = true } +modified = { fg = "#007992", bold = true } +added = { fg = "#007f42", bold = true } +untracked = { fg = "#a75c00", bold = true } +deleted = { fg = "#df0514", bold = true } +updated = { fg = "#767200", bold = true } ignored = { fg = "#5b73dc" } # : }}} diff --git a/config/.config/yazi/flavors/eldritch-dusk.yazi/tmtheme.xml b/config/.config/yazi/flavors/eldritch-dusk.yazi/tmtheme.xml index a35930c98..6a6327d38 100644 --- a/config/.config/yazi/flavors/eldritch-dusk.yazi/tmtheme.xml +++ b/config/.config/yazi/flavors/eldritch-dusk.yazi/tmtheme.xml @@ -66,7 +66,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -77,7 +77,7 @@ settings foreground - #fb5b66 + #df0514 @@ -88,7 +88,7 @@ settings foreground - #0ad6ff + #007992 @@ -99,7 +99,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -149,7 +149,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -160,7 +160,7 @@ settings foreground - #fb5b66 + #df0514 @@ -173,7 +173,7 @@ fontStyle foreground - #ffaf4d + #a75c00 @@ -186,7 +186,7 @@ fontStyle foreground - #ffaf4d + #a75c00 @@ -197,7 +197,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -208,7 +208,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -221,7 +221,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -234,7 +234,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -247,7 +247,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -260,7 +260,7 @@ fontStyle italic foreground - #8a69f7 + #754ef6 @@ -273,7 +273,7 @@ fontStyle underline foreground - #ffaf4d + #a75c00 @@ -286,7 +286,7 @@ fontStyle underline foreground - #0ad6ff + #007992 @@ -299,7 +299,7 @@ fontStyle italic underline foreground - #ffaf4d + #a75c00 @@ -312,7 +312,7 @@ fontStyle foreground - #fb5bb6 + #d5057c @@ -325,7 +325,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -338,7 +338,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -351,7 +351,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -364,7 +364,7 @@ fontStyle foreground - #8a69f7 + #754ef6 @@ -377,7 +377,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -390,7 +390,7 @@ fontStyle foreground - #0ad6ff + #007992 @@ -403,7 +403,7 @@ fontStyle italic foreground - #0ad6ff + #007992 @@ -418,7 +418,7 @@ fontStyle foreground - #f0f3f4 + #1e2029 @@ -431,7 +431,7 @@ background #0ad6ff foreground - #f0f3f4 + #1e2029 @@ -442,7 +442,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -464,7 +464,7 @@ settings foreground - #fb5b66 + #df0514 @@ -475,7 +475,7 @@ settings foreground - #38ff9f + #007f42 @@ -495,7 +495,7 @@ settings foreground - #0ad6ff + #007992 @@ -504,7 +504,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -513,7 +513,7 @@ settings foreground - #0ad6ff + #007992 @@ -524,7 +524,7 @@ settings foreground - #0ad6ff + #007992 @@ -535,7 +535,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -546,7 +546,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -557,7 +557,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -568,7 +568,7 @@ settings foreground - #38ff9f + #007f42 @@ -579,7 +579,7 @@ settings foreground - #0ad6ff + #007992 @@ -590,7 +590,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -601,7 +601,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -615,7 +615,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -628,7 +628,7 @@ fontStyle bold foreground - #ffaf4d + #a75c00 @@ -641,7 +641,7 @@ fontStyle italic foreground - #ffaf4d + #a75c00 @@ -652,7 +652,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -663,7 +663,7 @@ settings foreground - #0ad6ff + #007992 @@ -713,7 +713,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -726,7 +726,7 @@ fontStyle underline foreground - #0ad6ff + #007992 @@ -737,7 +737,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -748,7 +748,7 @@ settings foreground - #0ad6ff + #007992 @@ -785,7 +785,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -796,7 +796,7 @@ settings foreground - #0ad6ff + #007992 @@ -807,7 +807,7 @@ settings foreground - #0ad6ff + #007992 @@ -818,7 +818,7 @@ settings foreground - #0ad6ff + #007992 @@ -829,7 +829,7 @@ settings foreground - #0ad6ff + #007992 @@ -840,7 +840,7 @@ settings foreground - #0ad6ff + #007992 @@ -851,7 +851,7 @@ settings foreground - #0ad6ff + #007992 @@ -862,7 +862,7 @@ settings foreground - #fb5bb6 + #d5057c @@ -873,7 +873,7 @@ settings foreground - #ffaf4d + #a75c00 @@ -884,7 +884,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -895,7 +895,7 @@ settings foreground - #0ad6ff + #007992 fontStyle @@ -908,7 +908,7 @@ settings foreground - #8a69f7 + #754ef6 @@ -919,7 +919,7 @@ settings foreground - #ffaf4d + #a75c00 diff --git a/config/.config/yazi/package.toml b/config/.config/yazi/package.toml index 152f7b89d..d43a37db4 100644 --- a/config/.config/yazi/package.toml +++ b/config/.config/yazi/package.toml @@ -10,12 +10,12 @@ hash = "c2f4f4aca257dcceafa9e3b828dbf1c9" [[plugin.deps]] use = "yazi-rs/plugins:vcs-files" -rev = "6229767" +rev = "603fa36" hash = "4f2a05edce73aef2bceb2ee2c134c8f2" [[plugin.deps]] use = "yazi-rs/plugins:piper" -rev = "6229767" +rev = "603fa36" hash = "d1e0499cae5f3aeb628c267616d4b682" [[plugin.deps]] diff --git a/config/.config/yazi/theme.toml b/config/.config/yazi/theme.toml index 3937849fd..94c98b865 100644 --- a/config/.config/yazi/theme.toml +++ b/config/.config/yazi/theme.toml @@ -2,5 +2,5 @@ # Switcher owns both slots so a light theme still applies when the terminal reports dark. [flavor] -dark = "eldritch" -light = "eldritch" +dark = "catppuccin-latte" +light = "catppuccin-latte" diff --git a/config/.config/yazi/yazi.toml b/config/.config/yazi/yazi.toml index 1d0bbf9e9..bda9662bf 100644 --- a/config/.config/yazi/yazi.toml +++ b/config/.config/yazi/yazi.toml @@ -14,7 +14,7 @@ group = "git" [[plugin.prepend_previewers]] url = "*.{md,markdown}" -run = 'piper -- mdterm -T dark -w=$w "$1"' +run = 'piper -- mdterm -w=$w "$1"' [[plugin.prepend_previewers]] url = "*/" diff --git a/config/AGENTS.md b/config/AGENTS.md index b08911636..ecd38e961 100644 --- a/config/AGENTS.md +++ b/config/AGENTS.md @@ -14,7 +14,7 @@ Per-app config dirs under `.config/`: bat, borders, btop, fastfetch, gh, gh-chan - `AGENTS.md` files are excluded from stow by `.stow-local-ignore` β€” they stay repo-only and are never symlinked into `~`. - Never hardcode machine-specific or absolute home paths in app configs. - Add a new app: drop its config under `.config//`, then `just stow config`. -- `theme-switcher/`: `theme-switcher.sh` applies one of 13 themes across terminals, Neovim, bat, btop, starship, lazygit, Claude Code, herdr, gh-dash, and yazi; the fish/zsh `theme` function wraps it. Per-app snippets live in `theme-switcher//.yml`; `current` holds the active name. See `theme-switcher/README.md`. Neovim skips `eldritch-dusk` (plugin has no light palette). Yazi has a flavor for every switcher theme (`tokyonight` β†’ `tokyo-night`) and writes both `dark` and `light`. +- `theme-switcher/`: `theme-switcher.sh` applies one of 13 themes across terminals, Neovim, bat, btop, starship, lazygit, Claude Code, herdr, gh-dash, yazi, and mdterm (`dark`/`light` only); the fish/zsh `theme` function wraps it. Per-app snippets live in `theme-switcher//.yml`; `current` holds the active name. See `theme-switcher/README.md`. Neovim's `eldritch-dusk` is a local colorscheme (`neovim/.config/nvim/colors/eldritch-dusk.lua`) on top of `eldritch.nvim`. Yazi has a flavor for every switcher theme (`tokyonight` β†’ `tokyo-night`) and writes both `dark` and `light`. Eldritch Dusk text colors are darkened per hue (ANSI normal β‰₯4.5:1, bright β‰₯3:1); official neon Dusk accents stay for backgrounds/borders only, per upstream SPEC.md. - `karabiner/` is legacy (LeaderKey replaced it); keep it buildable but do not extend it. - `superfile`: `theme/eldritch.toml` and `hotkeys.toml` are tracked (stow symlinks them into superfile's real, app-owned dir). `hotkeys.toml` is the upstream vim preset (vim nav: `-` parent, `enter` confirm, `m` select, `p` paste, `ctrl+c` quit, `q` close-panel). The bundled themes and `config.toml` (mode 600, private) stay untracked; the active-theme line is set live in `~/.config/superfile/config.toml`. - Starship (`starship.toml` + `.config/starship/`): branch display is `${custom.gitbutler}` from vendored [starship-gitbutler](https://github.com/1stvamp/starship-gitbutler) (`gitbutler-branch.sh`, Apache-2.0). Keep `[git_branch]` disabled while that module is active, or `$all` will also print `gitbutler/workspace`. Local patches: `but status --json` (GitButler CLI 0.22 dropped `--format json`); butler glyph/stack names use the active Starship palette's `pink` (`format = "[$output](pink)"`). Keep that if you refresh the script from upstream. ` ↑N` is that applied branch's commit count, not upstream-ahead. ` +N` is extra applied stacks. `` is `upstreamState.behind` when nonzero. `` marks a conflicted applied commit or merge base. Status JSON has no ahead, diverged, or uncommitted-file conflict field. The same segment appends file counts (untracked ``, tracked `ο‘ˆ`, deleted `ο“–`) from `uncommittedChanges` plus stack `assignedChanges`, colored from the active palette. `$git_commit`, `$git_state`, `$git_metrics`, and `$git_status` stay disabled in the main prompt so `$all` cannot print workspace noise; `${custom.git_plain}` renders those four, and `${custom.git_ahead_behind}` restores ahead/behind, only when `.git/gitbutler` is absent. Theme switcher sets `palette =` in `starship.toml`. diff --git a/dots/.no-mistakes/config.yaml b/dots/.no-mistakes/config.yaml new file mode 100644 index 000000000..c19deeace --- /dev/null +++ b/dots/.no-mistakes/config.yaml @@ -0,0 +1,107 @@ +# no-mistakes global configuration + +# Agent to use for code generation. This may also be an ordered fallback list, +# for example: agent: [codex, claude] +# Options: auto, claude, codex, rovodev, opencode, pi, copilot, acp: +# "auto" detects the first available native agent on your system +# Use acp: to run an optional user-installed acpx target, for example acp:gemini +agent: [codex, claude] + +# Per-identity GitHub routing. Recall's origin uses the github-atlas SSH alias so +# its PRs are opened as Atlas-Key; every other github.com repo keeps edheltzel. +forge_profiles: + github-atlas: + gh_config_dir: ~/.config/gh-atlas-key + expected_login: Atlas-Key + github.com: + gh_config_dir: ~/.config/gh + expected_login: edheltzel + +# Optional path to the user-installed acpx binary for acp: agents +# acpx_path: acpx + +# Optional ACP target command overrides for acp: agents +# acp_registry_overrides: +# local-gemini: node /opt/mock-acp-agent.mjs + +# Maximum time the CI monitor babysits an open PR with no base-branch movement +# before giving up. The monitor watches CI and auto-rebases when the base branch +# advances; each base advance re-arms this timer, so an actively-updated green PR +# keeps its monitor. Set to "unlimited", "none", "off", "never", or any +# non-positive duration to monitor until the PR is merged, closed, or the run is +# aborted with: no-mistakes axi abort --run +ci_timeout: "168h" + +# AXI status marks a running/fixing step as quiet when no step log or native +# agent lifecycle activity has appeared for this long. This is observability +# only; it never cancels work. +step_quiet_warning: "10m" + +# Maximum time a CLI client waits for an existing daemon socket to accept a +# connection before failing instead of hanging. +daemon_connect_timeout: "3s" + +# Reuse one durable agent session per run for the review loop: the reviewer +# keeps a single session across the initial review and every full rereview, +# and review fixes keep a separate fixer session. Roles never share a session. +# Supported for claude and codex; other agents run cold. Set false to force +# every agent invocation cold. +session_reuse: true + +# Log level for daemon output +# Options: debug, info, warn, error +log_level: info + +# Override native agent binary paths (optional) +# agent_path_override: +# claude: /usr/local/bin/claude +# codex: /opt/codex + +# Extra native agent CLI flags (optional, global only) +# Codex service_tier controls speed/priority; model_reasoning_effort controls reasoning depth. +# agent_args_override: +# codex: +# - -m +# - gpt-5.4 +# - -c +# - service_tier="priority" +# - -c +# - model_reasoning_effort="low" +# +agent_args_override: + codex: + - -m + - gpt-6.1-sol + - -c + - model_reasoning_effort="xhigh" + +# Maximum follow-up auto-fix attempts per step (0 = disabled after the initial pass) +# Document fixes are attempted during the initial document pass. +auto_fix: + rebase: 3 + lint: 3 + test: 3 + review: 0 + document: 3 + ci: 3 + +# User-intent extraction. When you push a branch, no-mistakes can read recent +# transcripts from your local agent (Claude Code, Codex, OpenCode, Rovo Dev, Pi, +# Copilot CLI), pick the session that produced the change, summarize the user +# intent, and feed it to review, test, document, lint, and PR agents so they +# understand what you were trying to do - not just the diff. +intent: + enabled: true + threshold: 0.2 + slack_days: 3 + # disabled_readers: [codex] + + # Test-step evidence artifacts (screenshots, recordings, logs the test step + # gathers to demonstrate the change works). By default they are kept in a + # temporary directory and referenced by local path. Opt in to store_in_repo to + # commit them into the repo under a readable, branch-named directory so they are + # pushed and render directly on the PR. + # test: + # evidence: + # store_in_repo: true + # dir: .no-mistakes/evidence diff --git a/dots/AGENTS.md b/dots/AGENTS.md index a77248092..55a725aa3 100644 --- a/dots/AGENTS.md +++ b/dots/AGENTS.md @@ -6,12 +6,13 @@ Loose top-level dotfiles that live directly in `~`. Maps `dots/*` β†’ `~`. ## Ownership -Tool rc/config files: `.npmrc`, `.curlrc`, `.wgetrc`, `.tmux.conf`, `.tigrc`, `.ackrc`, `.biome.json`, `.gemrc`, `.gitnow`, `.hushlogin`, `.maccleanerrc`, `.profile`, `.warp/`, and similar. Owns `dots/.stow-global-ignore`, which is symlinked to `~/.stow-global-ignore` and used by stow packages that have no local ignore. +Tool rc/config files: `.npmrc`, `.curlrc`, `.wgetrc`, `.tmux.conf`, `.tigrc`, `.ackrc`, `.biome.json`, `.gemrc`, `.gitnow`, `.hushlogin`, `.maccleanerrc`, `.no-mistakes/config.yaml`, `.profile`, `.warp/`, and similar. Owns `dots/.stow-global-ignore`, which is symlinked to `~/.stow-global-ignore` and used by stow packages that have no local ignore. ## Local Contracts - Files map straight into `~`; keep this package to genuinely home-rooted dotfiles. - `AGENTS.md` is excluded from stow via `.stow-global-ignore` (the shared global ignore). +- `.no-mistakes/` tracks only `config.yaml`; `install.sh` and `just update` pre-create `~/.no-mistakes` so stow never folds the runtime dir (repos, sqlite, logs) into this repo. ## Work Guidance diff --git a/fish/.config/fish/completions/cf.fish b/fish/.config/fish/completions/cf.fish new file mode 100644 index 000000000..688d21d50 --- /dev/null +++ b/fish/.config/fish/completions/cf.fish @@ -0,0 +1,233 @@ +# fish completion for cf -*- shell-script -*- + +function __cf_debug + set -l file "$BASH_COMP_DEBUG_FILE" + if test -n "$file" + echo "$argv" >> $file + end +end + +function __cf_perform_completion + __cf_debug "Starting __cf_perform_completion" + + # Extract all args except the last one + set -l args (commandline -opc) + # Extract the token currently being completed (may be empty on a trailing space) + set -l lastArg (commandline -ct) + + __cf_debug "args: $args" + __cf_debug "last arg: $lastArg" + + # Pass each arg as its own token (no string join/eval, which would collapse multi-segment paths); quote "$lastArg" so an empty trailing token is still sent. + __cf_debug "Calling cf complete -- $args[2..-1] $lastArg" + set -l results (cf complete -- $args[2..-1] "$lastArg" 2> /dev/null) + + # Some programs may output extra empty lines after the directive. + # Let's ignore them or else it will break completion. + # Ref: https://github.com/spf13/cobra/issues/1279 + for line in $results[-1..1] + if test (string trim -- $line) = "" + # Found an empty line, remove it + set results $results[1..-2] + else + # Found non-empty line, we have our proper output + break + end + end + + set -l comps $results[1..-2] + set -l directiveLine $results[-1] + + # For Fish, when completing a flag with an = (e.g., -n=) + # completions must be prefixed with the flag + set -l flagPrefix (string match -r -- '-.*=' "$lastArg") + + __cf_debug "Comps: $comps" + __cf_debug "DirectiveLine: $directiveLine" + __cf_debug "flagPrefix: $flagPrefix" + + for comp in $comps + printf "%s%s\n" "$flagPrefix" "$comp" + end + + printf "%s\n" "$directiveLine" +end + +# This function limits calls to __cf_perform_completion, by caching the result +function __cf_perform_completion_once + __cf_debug "Starting __cf_perform_completion_once" + + if test -n "$__cf_perform_completion_once_result" + __cf_debug "Seems like a valid result already exists, skipping __cf_perform_completion" + return 0 + end + + set --global __cf_perform_completion_once_result (__cf_perform_completion) + if test -z "$__cf_perform_completion_once_result" + __cf_debug "No completions, probably due to a failure" + return 1 + end + + __cf_debug "Performed completions and set __cf_perform_completion_once_result" + return 0 +end + +# This function is used to clear the cached result after completions are run +function __cf_clear_perform_completion_once_result + __cf_debug "" + __cf_debug "========= clearing previously set __cf_perform_completion_once_result variable ==========" + set --erase __cf_perform_completion_once_result + __cf_debug "Successfully erased the variable __cf_perform_completion_once_result" +end + +function __cf_requires_order_preservation + __cf_debug "" + __cf_debug "========= checking if order preservation is required ==========" + + __cf_perform_completion_once + if test -z "$__cf_perform_completion_once_result" + __cf_debug "Error determining if order preservation is required" + return 1 + end + + set -l directive (string sub --start 2 $__cf_perform_completion_once_result[-1]) + __cf_debug "Directive is: $directive" + + set -l shellCompDirectiveKeepOrder 32 + set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2) + __cf_debug "Keeporder is: $keeporder" + + if test $keeporder -ne 0 + __cf_debug "This does require order preservation" + return 0 + end + + __cf_debug "This doesn't require order preservation" + return 1 +end + +# This function does two things: +# - Obtain the completions and store them in the global __cf_comp_results +# - Return false if file completion should be performed +function __cf_prepare_completions + __cf_debug "" + __cf_debug "========= starting completion logic ==========" + + # Start fresh + set --erase __cf_comp_results + + __cf_perform_completion_once + __cf_debug "Completion results: $__cf_perform_completion_once_result" + + if test -z "$__cf_perform_completion_once_result" + __cf_debug "No completion, probably due to a failure" + # Might as well do file completion, in case it helps + return 1 + end + + set -l directive (string sub --start 2 $__cf_perform_completion_once_result[-1]) + set --global __cf_comp_results $__cf_perform_completion_once_result[1..-2] + + __cf_debug "Completions are: $__cf_comp_results" + __cf_debug "Directive is: $directive" + + set -l shellCompDirectiveError 1 + set -l shellCompDirectiveNoSpace 2 + set -l shellCompDirectiveNoFileComp 4 + set -l shellCompDirectiveFilterFileExt 8 + set -l shellCompDirectiveFilterDirs 16 + + if test -z "$directive" + set directive 0 + end + + set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2) + if test $compErr -eq 1 + __cf_debug "Received error directive: aborting." + # Might as well do file completion, in case it helps + return 1 + end + + set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2) + set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2) + if test $filefilter -eq 1; or test $dirfilter -eq 1 + __cf_debug "File extension filtering or directory filtering not supported" + # Do full file completion instead + return 1 + end + + set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2) + set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2) + + __cf_debug "nospace: $nospace, nofiles: $nofiles" + + # If we want to prevent a space, or if file completion is NOT disabled, + # we need to count the number of valid completions. + # To do so, we will filter on prefix as the completions we have received + # may not already be filtered so as to allow fish to match on different + # criteria than the prefix. + if test $nospace -ne 0; or test $nofiles -eq 0 + set -l prefix (commandline -t | string escape --style=regex) + __cf_debug "prefix: $prefix" + + set -l completions (string match -r -- "^$prefix.*" $__cf_comp_results) + set --global __cf_comp_results $completions + __cf_debug "Filtered completions are: $__cf_comp_results" + + # Important not to quote the variable for count to work + set -l numComps (count $__cf_comp_results) + __cf_debug "numComps: $numComps" + + if test $numComps -eq 1; and test $nospace -ne 0 + # We must first split on \t to get rid of the descriptions to be + # able to check what the actual completion will be. + # We don't need descriptions anyway since there is only a single + # real completion which the shell will expand immediately. + set -l split (string split --max 1 "\t" $__cf_comp_results[1]) + + # Fish won't add a space if the completion ends with any + # of the following characters: @=/:., + set -l lastChar (string sub -s -1 -- $split) + if not string match -r -q "[@=/:.,]" -- "$lastChar" + # In other cases, to support the "nospace" directive we trick the shell + # by outputting an extra, longer completion. + __cf_debug "Adding second completion to perform nospace directive" + set --global __cf_comp_results $split[1] $split[1]. + __cf_debug "Completions are now: $__cf_comp_results" + end + end + + if test $numComps -eq 0; and test $nofiles -eq 0 + # To be consistent with bash and zsh, we only trigger file + # completion when there are no other completions + __cf_debug "Requesting file completion" + return 1 + end + end + + return 0 +end + +# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves +# so we can properly delete any completions provided by another script. +# Only do this if the program can be found, or else fish may print some errors; besides, +# the existing completions will only be loaded if the program can be found. +if type -q "cf" + # The space after the program name is essential to trigger completion for the program + # and not completion of the program name itself. + # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. + complete --do-complete "cf " > /dev/null 2>&1 +end + +# Remove any pre-existing completions for the program since we will be handling all of them. +complete -c cf -e + +# This will get called after the two calls below and clear the cached result +complete -c cf -n '__cf_clear_perform_completion_once_result' +# The call to __cf_prepare_completions will setup __cf_comp_results +# which provides the program's completion choices. +# If this doesn't require order preservation, we don't use the -k flag +complete -c cf -n 'not __cf_requires_order_preservation && __cf_prepare_completions' -f -a '$__cf_comp_results' +# Otherwise we use the -k flag +complete -k -c cf -n '__cf_requires_order_preservation && __cf_prepare_completions' -f -a '$__cf_comp_results' + diff --git a/fish/.config/fish/conf.d/theme_colors.fish b/fish/.config/fish/conf.d/theme_colors.fish index e74e068db..5f1e55a8f 100644 --- a/fish/.config/fish/conf.d/theme_colors.fish +++ b/fish/.config/fish/conf.d/theme_colors.fish @@ -20,8 +20,8 @@ if test -r $current_theme_file # Rose Pine Dawn `muted` β€” canonical "subdued" swatch on the cream base. set --global fish_color_autosuggestion 9893a5 case eldritch-dusk - # Dusk overlay β€” muted on Pale Shore without disappearing. - set --global fish_color_autosuggestion c9cbcd + # Dusk comment (SPEC secondary text) β€” overlay #c9cbcd was 1.5:1 on Pale Shore. + set --global fish_color_autosuggestion 5b73dc case catppuccin-latte # Fish highlights package names/arguments as params; keep them bold on Latte # so typed command text has enough contrast on the light background. diff --git a/install.sh b/install.sh index dd7b2949c..c223e9bcd 100755 --- a/install.sh +++ b/install.sh @@ -106,6 +106,8 @@ die() { _run_stow() { local mode="$1" shift + # Pre-create runtime dirs so stow links files inside, not the whole dir + mkdir -p "$HOME/.no-mistakes" info "Linking dotfiles with GNU Stow..." for pkg in "$@"; do if [ ! -d "$SCRIPT_DIR/$pkg" ]; then diff --git a/justfile b/justfile index 76c70d435..dd1fc8203 100644 --- a/justfile +++ b/justfile @@ -54,6 +54,7 @@ unstow pkg: # Restow all dotfiles packages update: + @mkdir -p ~/.no-mistakes @for pkg in {{stow_packages}}; do \ if [ "$pkg" = "fish" ]; then \ rm -f ~/.config/fish/conf.d/brew.fish ~/.config/fish/conf.d/fish-ssh-agent.fish; \ diff --git a/neovim/.config/nvim/colors/eldritch-dusk.lua b/neovim/.config/nvim/colors/eldritch-dusk.lua new file mode 100644 index 000000000..a8ed8ceb6 --- /dev/null +++ b/neovim/.config/nvim/colors/eldritch-dusk.lua @@ -0,0 +1,60 @@ +-- Eldritch Dusk (light). eldritch.nvim ships no Dusk palette, so register one. +-- Text accents are the Dusk palette darkened to >= 4.5:1 on #f0f3f4; the +-- official neons are decorative-only on light surfaces (eldritch SPEC.md). +-- Plugin slots map to SPEC Dusk roles: `green` (keywords) -> pink, +-- `yellow` (strings) -> orange, `comment` -> purple. +-- ponytail: rides eldritch.nvim's palette table; drop when upstream ships Dusk. +local util = require("eldritch.util") +local colors = require("eldritch.colors") + +local git = { change = "#5b73dc", add = "#007f42", delete = "#df0514" } + +colors.dusk = { + none = "NONE", + bg_dark = "#e2e6e8", + bg = "#f0f3f4", + bg_highlight = "#e2e6e8", + terminal_black = "#888d91", + fg = "#1e2029", + fg_dark = "#353746", + fg_gutter = "#888d91", + fg_gutter_light = "#888d91", + dark3 = "#5b73dc", + comment = "#754ef6", + dark5 = "#888d91", + bright_cyan = "#0099b7", + visual = "#d5d9db", + bg_visual = "#d5d9db", + cyan = "#007992", + dark_cyan = "#007992", + magenta = "#754ef6", + magenta2 = "#d5057c", + magenta3 = "#f3c6dd", + pink = "#d5057c", + purple = "#754ef6", + orange = "#d37400", + yellow = "#a75c00", + dark_yellow = "#767200", + green = "#d5057c", + bright_green = "#00a153", + dark_green = "#007f42", + red = "#df0514", + bright_red = "#df0514", + git = git, + gitSigns = vim.deepcopy(git), +} + +vim.o.background = "light" +vim.g.colors_name = "eldritch-dusk" +require("eldritch").load({ + palette = "dusk", + -- Persists in eldritch's config across loads, so no-op for other palettes. + on_colors = function(c) + if require("eldritch.config").options.palette ~= "dusk" then + return + end + c.diff.add = util.darken(git.add, 0.15) + c.delta.add = util.darken(git.add, 0.45) + c.todo = c.purple + end, +}) diff --git a/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua b/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua index ee2f4c2a0..eef1bf0ee 100644 --- a/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua +++ b/neovim/.config/nvim/lua/plugins/ui/colorscheme.lua @@ -102,7 +102,7 @@ return { { "LazyVim/LazyVim", opts = { - colorscheme = "eldritch", + colorscheme = "catppuccin-latte", }, }, } diff --git a/neovim/.config/nvim/lua/plugins/ui/lualine/eldritch.lua b/neovim/.config/nvim/lua/plugins/ui/lualine/eldritch.lua index 177a5331a..621fd4fa5 100644 --- a/neovim/.config/nvim/lua/plugins/ui/lualine/eldritch.lua +++ b/neovim/.config/nvim/lua/plugins/ui/lualine/eldritch.lua @@ -27,6 +27,21 @@ M.palettes = { -- } -- end, }, + -- Dusk (light): text accents darkened to >= 4.5:1 on Pale Shore. + ["eldritch-dusk"] = { + colors = { + darker = "#E2E6E8", + bg = "#F0F3F4", + darkGray = "#D5D9DB", + fg = "#353746", + gray = "#888D91", + green = "#007F42", + blue = "#007992", + purple = "#754EF6", + red = "#DF0514", + magenta = "#D5057C", + }, + }, } function M.get_colors(variant) diff --git a/neovim/.config/nvim/lua/plugins/ui/lualine/neoed.lua b/neovim/.config/nvim/lua/plugins/ui/lualine/neoed.lua index f4415aca7..0de795447 100644 --- a/neovim/.config/nvim/lua/plugins/ui/lualine/neoed.lua +++ b/neovim/.config/nvim/lua/plugins/ui/lualine/neoed.lua @@ -4,7 +4,7 @@ -- matching color palettes from separate palette files. -- -- SUPPORTED COLORSCHEMES: --- - eldritch +-- - eldritch, eldritch-dusk -- - tokyonight -- - rose-pine, rose-pine-moon, rose-pine-dawn -- - catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha @@ -82,7 +82,7 @@ local function get_colors(colorscheme) if colorscheme:match("^rose%-pine") then local rose_pine = require("plugins.ui.lualine.rose-pine") return rose_pine.get_colors(colorscheme) - elseif colorscheme == "eldritch" then + elseif colorscheme == "eldritch" or colorscheme == "eldritch-dusk" then local eldritch = require("plugins.ui.lualine.eldritch") return eldritch.get_colors(colorscheme) elseif colorscheme == "tokyonight" or colorscheme:match("^tokyonight") then diff --git a/packages/Brewfile b/packages/Brewfile index 40eddf7e9..8cc034121 100755 --- a/packages/Brewfile +++ b/packages/Brewfile @@ -109,6 +109,8 @@ brew 'procs' # better ps - Rust # CLI Productivity Apps brew 'rclone' # Manage cloud storage brew 'mole' # Deep clean and optimize +brew 'tuxedo' # TUI for todo.txt +brew 'todo-txt' # CLI Development Suits brew 'lazydocker' # Full Docker management app - Go