Update fallback models from GLM-4.6 to GLM-4.7 and
DeepSeek-V3.1-Terminus to MiniMax-M2 across all agent definitions
(aider, claude, llxprt, qwen) in both fish and zsh implementations.
Assisted-by: GLM 4.7 via Crush
d3e3cb7
fix(demo): correct function paths and model flow
Click to expand commit body
Assisted-by: Kimi K2 Thinking via Crush
Amolith
created
1bd5b6f
docs(readme): add links to agent install sections
Click to expand commit body
Assisted-by: Kimi K2 Thinking via Crush
Amolith
created
0090729
refactor(claude): add medium tier to model groups
Click to expand commit body
- Heavy (-H/--heavy): Opus only
- Medium (-M/--medium): Sonnet + Subagent
- Light (-l/--light): Haiku
Individual slot overrides unchanged except -H/--haiku → -k/--haiku to
avoid conflict with new -H/--heavy flag.
Assisted-by: Claude Sonnet 4 via Crush
Show correct interactive vs non-interactive usage for each agent. Add
install commands and fix table formatting.
Assisted-by: Claude Sonnet 4 via Crush
Aider uses -m for --message and -e for --env-file. synu was using
-m/--model and -e/--editor-model, causing ambiguity.
Now synu only accepts --model and --editor-model (long form) for aider.
Assisted-by: Claude Sonnet 4 via Crush
Ports the entire synu wrapper to Zsh with equivalent functionality:
- Plugin entry point (synu.plugin.zsh) with standard $0 handling
- Main wrapper function with quota tracking and agent dispatch
- Cache system for model preferences (models.conf format)
- All five agent configurations: claude, opencode, aider, llxprt, qwen
- Interactive model selection using gum
- Shell completions for agents and flags
- Taskfile for testing both shell implementations
Updates documentation to reflect multi-shell support.
Assisted-by: Claude Opus 4.5 via Crush
Amolith
created
b147f74
fix(agents): remove --selected from gum filter
llxprt doesn't support setting credentials via environment variables.
Users must run `/key {api_key}` once at the llxprt prompt.
Assisted-by: Claude Opus 4.5 via Crush
Amolith
created
28e0e02
fix(agents): preserve flag arrays in output
Click to expand commit body
echo $flags concatenates array elements with spaces, causing all flags
to be passed as a single argument. Using printf '%s\n' outputs one flag
per line, which shells properly capture as separate array elements.
Assisted-by: Claude Sonnet 4 via Crush
aa601e7
refactor(fish): move plugin to fish/ subdirectory
Click to expand commit body
Prepares for multi-shell support by isolating Fish-specific files.
Fundle users should add --path 'fish' to their plugin declaration.
Assisted-by: Claude Opus 4.5 via Crush
Clarify that both shell reload and fundle install are required steps
rather than alternative options.
Assisted-by: GLM-4.6 via Crush <crush@charm.land>
Amolith
created
cd4aca1
docs(readme): add demo GIF and table formatting
0a6a5ad
feat(agents): display current model in selection
Click to expand commit body
Show current model ID in header and pre-select current model name in gum
filter for all agent interactive functions.
Assisted-by: Claude Sonnet 4 via Crush
7075208
docs(readme): improve project description and formatting
Click to expand commit body
Improved the project description to better explain synu's purpose as a
universal wrapper for LLM agents that tracks Synthetic usage and
interactively preconfigures supported agents. Fixed line wrapping and
formatting throughout the document.
Assisted-by: GLM 4.6 via Crush
9690014
feat(agents): add aider, llxprt, and qwen agents
Click to expand commit body
- Add aider agent with dual model support (architect + editor)
- Add llxprt agent with openai-compatible config
- Add qwen agent with environment variable config
- Update shell completions to include all new agents
- Follow established agent configuration patterns
Assisted-by: GLM 4.6 via Crush
Change "Session usage" to "Session" and "Usage" to "Overall" for clearer
distinction between session and overall quota usage display.
Assisted-by: GLM-4.6 via Crush
Amolith
created
16f4b47
fix(quota): round usage percentage to integer
Click to expand commit body
Assisted-by: Claude Opus 4.5 via Crush
Amolith
created
15c2fe6
refactor(synu): show usage percentage in quota
Click to expand commit body
Display 'Usage: N% (X/Y remaining)' instead of 'Remaining: X/Y requests'
Assisted-by: Claude Opus 4.5 via Crush
c12e933
feat(agents/opencode): add synthetic/ model prefix
Click to expand commit body
Assisted-by: Claude Sonnet 4.5 via Crush
Amolith
created
5e49f26
feat(synu): clean up agent env vars after exit
Click to expand commit body
Agents can now declare which environment variables they set via a
_synu_agent_<name>_env_vars function. The main wrapper automatically
unsets these variables after the agent exits, preventing pollution of
the parent shell environment.
Changes:
- Added _synu_agent_claude_env_vars to declare ANTHROPIC_* and
CLAUDE_CODE_* vars
- Added cleanup logic in synu.fish to call _env_vars and erase variables
- Fixed string match bug in claude.fish interactive mode (missing --
separator)
- Updated AGENTS.md to document the new _env_vars function pattern
Assisted-by: Claude Sonnet 4.5 via Crush
Amolith
created
5c5739e
feat(core): support agents requiring CLI args
Click to expand commit body
Some agents (like OpenCode) accept model configuration via CLI flags
instead of environment variables. Added _synu_agent_{agent}_args hook
that returns additional arguments to pass during execution.
Fixed flag extraction loop in main wrapper to handle arbitrary flag
names (including new -m/model for OpenCode). Adds OpenCode agent
definition that uses both cache system and CLI args feature.
Assisted-by: Claude Sonnet 4.5 via Crush
Amolith
created
aa29f28
feat(cache): add persistent model preferences
Click to expand commit body
Introduces XDG-compliant cache for storing user model preferences across
sessions. Cache is stored in $XDG_CONFIG_HOME/synu/models.conf using
simple key=value format (agent.slot = model_id).
Claude agent now checks cache before falling back to hardcoded defaults,
and interactive mode can save selections. Defaults renamed to "fallback"
to clarify they're only used when no cache entry exists.
Assisted-by: Claude Sonnet 4.5 via Crush
Amolith
created
16cc892
feat(synu): add universal AI agent wrapper with Synthetic API quota tracking
Click to expand commit body
Implement a Fish shell utility that wraps AI agents while tracking usage
through the Synthetic API. Features include:
- Universal agent wrapper supporting passthrough execution
- Quota tracking and display for Synthetic API calls
- Claude Code integration with configurable model routing
- Interactive model selection using gum for user-friendly experience
- Shell completions for improved usability
- Agent plugin architecture for extensibility
Initial implementation includes core synu functionality, quota management,
and Claude-specific configuration for routing through Synthetic API tiers.
Closes:
Assisted-by: Claude Sonnet 4.5 via OpenCode