Compare commits

..

16 Commits

Author SHA1 Message Date
Jim Myhrberg
919c5d48de feat(bin): add ollama-for-gitbutler wrapper script
Run a dedicated ollama instance for GitButler on a separate port
(11435) with permissive origins and long keep-alive, avoiding
conflicts with any primary ollama server.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 10:13:21 +00:00
d3ef296e84 feat(mise/tools): add convex CLI
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 23:29:33 +00:00
39f2d3094c feat(hammerspoon/noct): add ChatGPT toggle on Cmd+Ctrl+4
Move ChatGPT binding inline with other numbered hotkeys for
consistent ordering.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 23:28:54 +00:00
e2d2e4ec13 feat(install): add agentic repo clone command
Clone jimeh/agentic repo to ~/.config/agentic, following the same
pattern as the private dotfiles clone.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 23:28:12 +00:00
Jim Myhrberg
9bf0ffd5d7 chore(gitignore): add .claude/worktrees/ pattern
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 09:43:54 +00:00
Jim Myhrberg
ae207e49bd feat(zshenv): add ToolHive bin to PATH 2026-02-11 15:28:47 +00:00
a76c67542f chore(gitignore): add .vscode/settings.local.json pattern
Ignore VS Code local settings files across all projects, consistent
with the existing settings.json ignore pattern.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 09:25:44 +00:00
6900c31b3a feat(hammerspoon/noct): add Conductor app toggle on Cmd+Ctrl+3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 22:42:54 +00:00
Jim Myhrberg
83d043f186 feat(hammerspoon/hosts): update app toggle keybindings for improved access
Added keybinding for Codex and updated bindings for Conductor and ChatGPT Atlas. This enhances the app toggle functionality for better user experience.
2026-02-09 20:34:58 +00:00
eb3ecdce75 feat(hammerspoon/noct): prioritize VS Code over Insiders for Cmd+Ctrl+W
Switched to using regular VS Code as the primary app, with Insiders as
the fallback. Reflects shift to stable VS Code as primary editor.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 19:34:57 +00:00
9e5784d741 feat(mise/tools): add skills CLI tool
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 17:48:14 +00:00
051731d110 feat(zsh): add iTerm2 shell integration support
Source iTerm2 shell integration script when available, enabling
features like marks, badges, and status bar integration.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 17:47:44 +00:00
c83cd5e62b chore(hammerspoon): remove window management margins
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:40:24 +00:00
54fac673e0 feat(hammerspoon/noct): add Codex app toggle keybinding
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:39:58 +00:00
e542560a67 feat(mise/tools): add oxfmt, oxlint, and opencode
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:38:49 +00:00
ca42166e11 chore(mise/ruby): remove ruby-install backend setting
No longer needed; default ruby-build backend is sufficient.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 13:38:24 +00:00
10 changed files with 96 additions and 12 deletions

60
bin/ollama-for-gitbutler Executable file
View File

@@ -0,0 +1,60 @@
#!/usr/bin/env bash
# Defaults
DEFAULT_BIND="127.0.0.1"
DEFAULT_PORT="11435"
DEFAULT_ORIGINS="*"
DEFAULT_KEEP_ALIVE="6h"
print-help() {
cat <<EOF
Usage: ollama-for-gitbutler [options]
Options:
-b, --bind <addr> The address to bind to (default: "${DEFAULT_BIND}")
-p, --port <port> The port to listen on (default: "${DEFAULT_PORT}")
-m, --models <dir> Override ollama's default models directory
-k, --keep-alive <duration> The duration that models stay loaded in memory (default: "${DEFAULT_KEEP_ALIVE}")
-h, --help Print this help message
EOF
}
BIND="${DEFAULT_BIND}"
PORT="${DEFAULT_PORT}"
KEEP_ALIVE="${DEFAULT_KEEP_ALIVE}"
while [[ $# -gt 0 ]]; do
case "$1" in
-b | --bind)
BIND="$2"
shift 2
;;
-p | --port)
PORT="$2"
shift 2
;;
-m | --models)
export OLLAMA_MODELS="$2"
shift 2
;;
-k | --keep-alive)
KEEP_ALIVE="$2"
shift 2
;;
-h | --help)
print-help
exit 0
;;
*)
echo "Unknown option: $1" >&2
print-help >&2
exit 1
;;
esac
done
export OLLAMA_HOST="${BIND}:${PORT}"
export OLLAMA_KEEP_ALIVE="${KEEP_ALIVE}"
export OLLAMA_ORIGINS="${DEFAULT_ORIGINS}"
exec ollama serve "$@"

View File

@@ -24,9 +24,6 @@ bun = true
uvx = true uvx = true
[settings.ruby] [settings.ruby]
# ruby-install supports new releases immediately, as opposed to ruby-build which
# requires an update before new releases are available.
ruby_install = true
# Precompiled binaries causes issues with Ruby LSP. # Precompiled binaries causes issues with Ruby LSP.
compile = true compile = true
@@ -58,6 +55,7 @@ compile = true
"npm:@openai/codex" = "latest" "npm:@openai/codex" = "latest"
"npm:@prettier/plugin-php" = "latest" "npm:@prettier/plugin-php" = "latest"
"npm:claude-plugins" = "latest" "npm:claude-plugins" = "latest"
"npm:convex" = "latest"
"npm:dockerfile-language-server-nodejs" = "latest" "npm:dockerfile-language-server-nodejs" = "latest"
"npm:eslint" = "latest" "npm:eslint" = "latest"
"npm:eslint-config-prettier" = "latest" "npm:eslint-config-prettier" = "latest"
@@ -69,9 +67,12 @@ compile = true
"npm:jsonlint" = "latest" "npm:jsonlint" = "latest"
"npm:localtunnel" = "latest" "npm:localtunnel" = "latest"
"npm:markdown-it" = "latest" "npm:markdown-it" = "latest"
"npm:oxfmt" = "latest"
"npm:oxlint" = "latest"
"npm:prettier" = "latest" "npm:prettier" = "latest"
"npm:prettier-plugin-toml" = "latest" "npm:prettier-plugin-toml" = "latest"
"npm:prettier-pnp" = "latest" "npm:prettier-pnp" = "latest"
"npm:skills" = "latest"
"npm:stylelint" = "latest" "npm:stylelint" = "latest"
"npm:svgo" = "latest" "npm:svgo" = "latest"
"npm:typescript" = "latest" "npm:typescript" = "latest"
@@ -139,6 +140,7 @@ lua = "latest"
lua-language-server = "latest" lua-language-server = "latest"
markdownlint-cli2 = "latest" markdownlint-cli2 = "latest"
node = "lts" node = "lts"
opencode = "latest"
opentofu = "latest" opentofu = "latest"
pnpm = "latest" pnpm = "latest"
python = "latest" python = "latest"

View File

@@ -6,7 +6,9 @@
**/.claude/plans/ **/.claude/plans/
**/.claude/reviews/ **/.claude/reviews/
**/.claude/settings.local.json **/.claude/settings.local.json
**/.claude/worktrees/
**/.vscode/settings.json **/.vscode/settings.json
**/.vscode/settings.local.json
**/chart/preprod-values.yaml **/chart/preprod-values.yaml
**/chart/production-values.yaml **/chart/production-values.yaml
**/chart/staging-values.yaml **/chart/staging-values.yaml

View File

@@ -11,8 +11,10 @@ local function init_hotkeys()
hs.hotkey.bind({ 'cmd', 'alt', 'ctrl' }, 'S', apptoggle.showAppInfo) hs.hotkey.bind({ 'cmd', 'alt', 'ctrl' }, 'S', apptoggle.showAppInfo)
apptoggle:bind({ 'cmd', 'alt', 'ctrl' }, 'A', { 'Activity Monitor' }) apptoggle:bind({ 'cmd', 'alt', 'ctrl' }, 'A', { 'Activity Monitor' })
apptoggle:bind({ 'cmd', 'ctrl' }, '1', { 'Codex' })
apptoggle:bind({ 'cmd', 'ctrl' }, '2', { 'Claude' }) apptoggle:bind({ 'cmd', 'ctrl' }, '2', { 'Claude' })
apptoggle:bind({ 'cmd', 'ctrl' }, '4', { 'Open WebUI' }) apptoggle:bind({ 'cmd', 'ctrl' }, '3', { 'Conductor' })
apptoggle:bind({ 'cmd', 'ctrl' }, '4', { 'ChatGPT Atlas' }, { 'ChatGPT' })
apptoggle:bind({ 'cmd', 'ctrl' }, 'A', { 'Argo CD' }) apptoggle:bind({ 'cmd', 'ctrl' }, 'A', { 'Argo CD' })
apptoggle:bind({ 'cmd', 'ctrl' }, 'B', { 'TablePlus' }, { 'Lens' }) apptoggle:bind({ 'cmd', 'ctrl' }, 'B', { 'TablePlus' }, { 'Lens' })
apptoggle:bind({ 'cmd', 'ctrl' }, 'D', { 'Mail+ for Gmail' }, { 'Notion Mail' }) apptoggle:bind({ 'cmd', 'ctrl' }, 'D', { 'Mail+ for Gmail' }, { 'Notion Mail' })

View File

@@ -11,7 +11,10 @@ local function init_hotkeys()
hs.hotkey.bind({ 'cmd', 'alt', 'ctrl' }, 'S', apptoggle.showAppInfo) hs.hotkey.bind({ 'cmd', 'alt', 'ctrl' }, 'S', apptoggle.showAppInfo)
apptoggle:bind({ 'cmd', 'alt', 'ctrl' }, 'A', { 'Activity Monitor' }) apptoggle:bind({ 'cmd', 'alt', 'ctrl' }, 'A', { 'Activity Monitor' })
apptoggle:bind({ 'cmd', 'ctrl' }, '1', { 'Codex' })
apptoggle:bind({ 'cmd', 'ctrl' }, '2', { 'Claude' }) apptoggle:bind({ 'cmd', 'ctrl' }, '2', { 'Claude' })
apptoggle:bind({ 'cmd', 'ctrl' }, '3', { 'Conductor' })
apptoggle:bind({ 'cmd', 'ctrl' }, '4', { 'ChatGPT' }, { 'ChatGPT Atlas' })
apptoggle:bind({ 'cmd', 'ctrl' }, 'A', { 'Messages' }) apptoggle:bind({ 'cmd', 'ctrl' }, 'A', { 'Messages' })
apptoggle:bind({ 'cmd', 'ctrl' }, 'B', { 'TablePlus' }, { 'Sequel Pro' }, { 'Lens' }) apptoggle:bind({ 'cmd', 'ctrl' }, 'B', { 'TablePlus' }, { 'Sequel Pro' }, { 'Lens' })
apptoggle:bind({ 'cmd', 'ctrl' }, 'D', { 'Mail+ for Gmail' }, { 'Mimestream' }) apptoggle:bind({ 'cmd', 'ctrl' }, 'D', { 'Mail+ for Gmail' }, { 'Mimestream' })
@@ -22,14 +25,9 @@ local function init_hotkeys()
apptoggle:bind({ 'cmd', 'ctrl' }, 'X', { 'Notion' }, { 'Obsidian' }) apptoggle:bind({ 'cmd', 'ctrl' }, 'X', { 'Notion' }, { 'Obsidian' })
apptoggle:bind({ 'cmd', 'ctrl' }, 'Z', { 'WhatsApp' }) apptoggle:bind({ 'cmd', 'ctrl' }, 'Z', { 'WhatsApp' })
apptoggle:bind({ 'cmd', 'ctrl' }, '4',
{ 'ChatGPT' },
{ 'ChatGPT Atlas' }
)
apptoggle:bind({ 'cmd', 'ctrl' }, 'W', apptoggle:bind({ 'cmd', 'ctrl' }, 'W',
{ 'Code - Insiders', '/Applications/Visual Studio Code - Insiders.app' }, { 'Code', '/Applications/Visual Studio Code.app' },
{ 'Code', '/Applications/Visual Studio Code.app' } { 'Code - Insiders', '/Applications/Visual Studio Code - Insiders.app' }
) )
apptoggle:bind({ 'cmd', 'ctrl' }, 'C', apptoggle:bind({ 'cmd', 'ctrl' }, 'C',

View File

@@ -12,7 +12,7 @@ local wm = {
animationDuration = 0.0, animationDuration = 0.0,
gridSizes = { default = '30x20', interactive = '8x4' }, gridSizes = { default = '30x20', interactive = '8x4' },
gridTextSize = 50, gridTextSize = 50,
margins = { w = 4, h = 4 } margins = { w = 0, h = 0 }
} }
-- Initialize and register keybindings -- Initialize and register keybindings

View File

@@ -87,6 +87,11 @@ install_private() {
"$ROOT_PATH/$PRIVATE_PATH" "$ROOT_PATH/$PRIVATE_PATH"
} }
install_agentic() {
git_clone "git@github.com:jimeh/agentic.git" \
"$HOME/.config/agentic"
}
install_launch_agents() { install_launch_agents() {
mkdir -p "$HOME/Library/LaunchAgents" mkdir -p "$HOME/Library/LaunchAgents"
for file in $ROOT_PATH/launch_agents/*.plist; do for file in $ROOT_PATH/launch_agents/*.plist; do
@@ -256,6 +261,7 @@ display_help() {
echo ' info: Display target and source directory information.' echo ' info: Display target and source directory information.'
echo ' emacs_config: Install Emacs configuration.' echo ' emacs_config: Install Emacs configuration.'
echo ' private: Install private dotfiles.' echo ' private: Install private dotfiles.'
echo ' agentic: Clone agentic repo to ~/.config/agentic.'
echo ' homebrew: Install Homebrew (Mac OS X only).' echo ' homebrew: Install Homebrew (Mac OS X only).'
echo ' rbenv: Install rbenv, a Ruby version manager.' echo ' rbenv: Install rbenv, a Ruby version manager.'
echo ' launch_agents: Install launchd plists to ~/Library/LaunchAgents/' echo ' launch_agents: Install launchd plists to ~/Library/LaunchAgents/'
@@ -278,6 +284,9 @@ case "$1" in
private) private)
install_private install_private
;; ;;
agentic)
install_agentic
;;
homebrew | brew) homebrew | brew)
install_homebrew install_homebrew
;; ;;

7
zsh/iterm2.zsh Normal file
View File

@@ -0,0 +1,7 @@
#
# iTerm2 environment setup.
#
if [ -f "${HOME}/.iterm2_shell_integration.zsh" ]; then
source "${HOME}/.iterm2_shell_integration.zsh"
fi

3
zshenv
View File

@@ -396,6 +396,9 @@ path_prepend "$HOME/.codeium/windsurf/bin"
# LM Studio setup # LM Studio setup
path_prepend "$HOME/.cache/lm-studio/bin" path_prepend "$HOME/.cache/lm-studio/bin"
# ToolHive setup
path_prepend "$HOME/.toolhive/bin"
# ============================================================================== # ==============================================================================
# Local Overrides # Local Overrides
# ============================================================================== # ==============================================================================

1
zshrc
View File

@@ -334,6 +334,7 @@ source "$DOTZSH/nix.zsh"
source "$DOTZSH/restish.zsh" source "$DOTZSH/restish.zsh"
source "$DOTZSH/tldr.zsh" source "$DOTZSH/tldr.zsh"
source "$DOTZSH/tmux.zsh" source "$DOTZSH/tmux.zsh"
source "$DOTZSH/iterm2.zsh"
source "$DOTZSH/vscode.zsh" source "$DOTZSH/vscode.zsh"
source "$DOTZSH/zoxide.zsh" source "$DOTZSH/zoxide.zsh"