feat(mux): herdr support - #333
Conversation
* render-markdown: default icons * misc * sidekick: remove <leader>aa, not worth to fix * sidekick.nvim * tmux * snacks input * herdr * feat(tmux): add tmux-agent-sidebar plugin * zsh: add cargo env * tmux-agent-sidebar customize icons * misc * lazygit: fallback to delta's set styling * delta: add padding for line-numbers * tmux: hide tmux-agent-sidebar when leaving sidekick.nvim sessions * sesh: chezmoi session also spawns nvim window * feat(bat lci): add everforest theme) * fix(git-delta): update labels, hunk-header-style, and line number formatting * misc * delta: merge conflict symbols * haunt.nvim * sidekick: add a picker to delete CLI sessions * tmux * nvim(treewalker): fallback for arrow keys to default * lazygit: split main panel to side-by-side * misc * tmux: move agent sidebar into a floating popup The agent-sidebar plugin was injecting a sidebar into every new window, which split into the floating-tmux popup and fought tmux-resurrect restores. Run it in a background agent-sidebar session shown in a centered popup (prefix + e) instead, keeping the per-agent sidebar only while browsing in that popup. Renumber the config files so hooks (03) load before plugins (04), replace sidekick-hide-sidebar.sh with agent-sidebar-hide-outside.sh, and blacklist the agent-sidebar session in sesh so it isn't offered as a pick. * tmux: set the prefix key in settings instead of bindings Establish C-Space as the prefix in 01-settings.conf so it is set before any bindings load, removing the old C-w intermediary that only existed to swap the prefix over inside the bindings file. * tmux: start a fresh opencode session from prefix + M-/ Drop --continue so the shortcut opens a new opencode session rather than resuming the previous one. * clean up unnecessary keybinds * revert agent-sidebar floating tmux * feat(tmux): agent-manager manager for sesh-like fzf popup to jump between running AI agents * remove agent-manager * tmux: copy tmux-agent-sidebar agent-state; update to detect agent start instead of waiting for first prompt * tmux: enable sound notification for tmux-agent-sidebar (need to fork repo to add this feature) * remove herdr * misc * tmux: flash-copy.tmux for searching/copying text on current tmux pane * nvim: fix conflict-marker, clean up unused plugins, group pull requests keybinds * ghostty+wezterm: swap to "Blazer" theme * git-delta: remove unused themes and update everforest theme * tmux-agent-sidebar: return-to-work-session - track and jump back to the work session you were in before diving into agents * delta: remove bold from diff * zsh: Set ZSH_TMUX_AUTOQUIT to false, does not auto close terminal when tmux exits * lazygit: revert horizontal main panel split (gets too crowded with delta side-by-side enabled) * delta: use default line numbers format separators * lazygit: everforest theme * opencode: add everforest-theme skill and palette reference * snacks.nvim: don't use neovim's colorscheme for lazygit * delta: update colors * zshrc: add `cm` alias to run chezmoi with dotfiles-work if it exists * move starship to ~/.config/starship * misc * matugen: auto-generate bat and delta themes for .gitconfig * matugen: generate theme for gh-dash * matugen: auto-generate lazygit theme config * matugen: auto-generate opencode theme * matugen: auto-generate yazi theme * matugen: auto-generate everforest.nvim color overrides * matugen: auto-generate starship theme * opencode: remove everforest-theme skill * feat: matugen * matugen: auto-generate tmux theme * remove tmux-agent-sidebar * remove tmux-agent-sidebar * add Brewfile? * add `epilande/ccmux` - Add to brewfile - Add ~/.config/ccmux/ccmux.json - Add matugen template for ccmux.json - Add opencode plugin for ccmux - Add tmux bindings for ccmux * matugen: add script to merge generated palette into starship.toml * matugen: create theme templates for ghostty and wezterm * ghostty: matugen * wezterm: matugen * matugen: add bg colors in palette * matugen: generate new colors * lazygit: use --remote for edit commands; also removed snacks lazygit config since it was redundant with lazygit's own config * misc * matugen: update everforest colors for better contrast around bg red * lua_ls: expand hover preview fields and enums limit * matugen: ccmux update * Revert "remove herdr" This reverts commit 156cb6e. * sidekick.nvim: remove session_picker * nvim: <CR> and <BS> for LSP Selection Ranges instead of <M-o> and <M-i> * zsh: remove tmux from plugins; it's added elsewhere in config after it checks if not in a specific environment, like vscode/zed/etc * herdr: config, plugins, script for popup Plugins: - herdr-navigator: jump to anything, like sesh - vim-herdr-navigation: navigate panes between vim/herdr - herdr-plus: project templates for dotfiles, downloads, and more like sesh config Scripts: - herdr-popup: run a popup terminal like tmux display-popup * remove herdr until sidekick.nvim supports herdr See: folke/sidekick.nvim#333 * misc: add `go's /bin` to PATH * ccmux: enable notifications with sound * tmux: ccmux-return-track also recognizes agents started in ordinary tmux sessions, not just those in sidekick| sessions
* render-markdown: default icons * misc * sidekick: remove <leader>aa, not worth to fix * sidekick.nvim * tmux * snacks input * herdr * feat(tmux): add tmux-agent-sidebar plugin * zsh: add cargo env * tmux-agent-sidebar customize icons * misc * lazygit: fallback to delta's set styling * delta: add padding for line-numbers * tmux: hide tmux-agent-sidebar when leaving sidekick.nvim sessions * sesh: chezmoi session also spawns nvim window * feat(bat lci): add everforest theme) * fix(git-delta): update labels, hunk-header-style, and line number formatting * misc * delta: merge conflict symbols * haunt.nvim * sidekick: add a picker to delete CLI sessions * tmux * nvim(treewalker): fallback for arrow keys to default * lazygit: split main panel to side-by-side * misc * tmux: move agent sidebar into a floating popup The agent-sidebar plugin was injecting a sidebar into every new window, which split into the floating-tmux popup and fought tmux-resurrect restores. Run it in a background agent-sidebar session shown in a centered popup (prefix + e) instead, keeping the per-agent sidebar only while browsing in that popup. Renumber the config files so hooks (03) load before plugins (04), replace sidekick-hide-sidebar.sh with agent-sidebar-hide-outside.sh, and blacklist the agent-sidebar session in sesh so it isn't offered as a pick. * tmux: set the prefix key in settings instead of bindings Establish C-Space as the prefix in 01-settings.conf so it is set before any bindings load, removing the old C-w intermediary that only existed to swap the prefix over inside the bindings file. * tmux: start a fresh opencode session from prefix + M-/ Drop --continue so the shortcut opens a new opencode session rather than resuming the previous one. * clean up unnecessary keybinds * revert agent-sidebar floating tmux * feat(tmux): agent-manager manager for sesh-like fzf popup to jump between running AI agents * remove agent-manager * tmux: copy tmux-agent-sidebar agent-state; update to detect agent start instead of waiting for first prompt * tmux: enable sound notification for tmux-agent-sidebar (need to fork repo to add this feature) * remove herdr * misc * tmux: flash-copy.tmux for searching/copying text on current tmux pane * nvim: fix conflict-marker, clean up unused plugins, group pull requests keybinds * ghostty+wezterm: swap to "Blazer" theme * git-delta: remove unused themes and update everforest theme * tmux-agent-sidebar: return-to-work-session - track and jump back to the work session you were in before diving into agents * delta: remove bold from diff * zsh: Set ZSH_TMUX_AUTOQUIT to false, does not auto close terminal when tmux exits * lazygit: revert horizontal main panel split (gets too crowded with delta side-by-side enabled) * delta: use default line numbers format separators * lazygit: everforest theme * opencode: add everforest-theme skill and palette reference * snacks.nvim: don't use neovim's colorscheme for lazygit * delta: update colors * zshrc: add `cm` alias to run chezmoi with dotfiles-work if it exists * move starship to ~/.config/starship * misc * matugen: auto-generate bat and delta themes for .gitconfig * matugen: generate theme for gh-dash * matugen: auto-generate lazygit theme config * matugen: auto-generate opencode theme * matugen: auto-generate yazi theme * matugen: auto-generate everforest.nvim color overrides * matugen: auto-generate starship theme * opencode: remove everforest-theme skill * feat: matugen * matugen: auto-generate tmux theme * remove tmux-agent-sidebar * remove tmux-agent-sidebar * add Brewfile? * add `epilande/ccmux` - Add to brewfile - Add ~/.config/ccmux/ccmux.json - Add matugen template for ccmux.json - Add opencode plugin for ccmux - Add tmux bindings for ccmux * matugen: add script to merge generated palette into starship.toml * matugen: create theme templates for ghostty and wezterm * ghostty: matugen * wezterm: matugen * matugen: add bg colors in palette * matugen: generate new colors * lazygit: use --remote for edit commands; also removed snacks lazygit config since it was redundant with lazygit's own config * misc * matugen: update everforest colors for better contrast around bg red * lua_ls: expand hover preview fields and enums limit * matugen: ccmux update * Revert "remove herdr" This reverts commit 156cb6e. * sidekick.nvim: remove session_picker * nvim: <CR> and <BS> for LSP Selection Ranges instead of <M-o> and <M-i> * zsh: remove tmux from plugins; it's added elsewhere in config after it checks if not in a specific environment, like vscode/zed/etc * herdr: config, plugins, script for popup Plugins: - herdr-navigator: jump to anything, like sesh - vim-herdr-navigation: navigate panes between vim/herdr - herdr-plus: project templates for dotfiles, downloads, and more like sesh config Scripts: - herdr-popup: run a popup terminal like tmux display-popup * remove herdr until sidekick.nvim supports herdr See: folke/sidekick.nvim#333 * misc: add `go's /bin` to PATH * ccmux: enable notifications with sound * tmux: ccmux-return-track also recognizes agents started in ordinary tmux sessions, not just those in sidekick| sessions
|
Hi @rmarganti, thanks for working on this. I tested the flow against Homebrew Herdr 0.8.0 and mapped the current CLI contract. The breakage mentioned above goes beyond
The backend architecture in this PR still looks right. I think the launch path can be adapted to 0.8.0 as a two-step flow:
A few related 0.8.0 details I verified:
This Sidekick backend work is independent of herdrdev/herdr#803, which is the more general problem of detecting and reporting state for agents that remain embedded behind Neovim or another PTY wrapper. I'm happy to implement the 0.8.0 changes against your branch if that would help keep this as one PR. If you do not have capacity to continue it right now, I can instead open a new Sidekick PR based on #333, with explicit credit and preserved attribution. Let me know which route you prefer. |
|
Thanks guys for addressing this. I'm putting this out there only as a reference if it can help, but here is my working implementation in my config until mainstream supports herdr properly: https://github.com/calops/nix/blob/df50d100021894151fae164242e16d48915cbae9/modules/programs/neovim/_config/lua/plugins/ai.lua#L5-L141 I was planning on contributing to this PR properly but not much time for it lately. I'm sure I'm missing a lot of corner cases anyway. Note though that herdr isn't perfect as a multiplexer for this, as this workaround is needed: https://github.com/calops/nix/blob/df50d100021894151fae164242e16d48915cbae9/modules/programs/neovim/_config/lua/plugins/ai.lua#L169-L177 The method used to view a single pane is sending raw input where some things get lost in translation, while the proper frontend interprets some keybindings properly (in this case, |
|
Sorry for delay getting this updated. I've been entrenched in a work meetup all week. I've updated my original PR to support modern Herdr APIs. A couple notes:
|
Description
This adds
herdras a supportedcli.mux.backendChanges include:
create = "window")create = "split")README.mdanddoc/sidekick.nvim.txtRelated Issue(s)
Screenshots