Commit Graph
100 Commits
Author SHA1 Message Date
Mario Zechner e4f1c0bb4d fix(coding-agent): display extension loading errors to user (#639) 2026-01-11 23:24:10 +01:00
Mario Zechner df3f5f41c0 Rename /branch command to /fork
- RPC: branch -> fork, get_branch_messages -> get_fork_messages
- SDK: branch() -> fork(), getBranchMessages() -> getForkMessages()
- AgentSession: branch() -> fork(), getUserMessagesForBranching() -> getUserMessagesForForking()
- Extension events: session_before_branch -> session_before_fork, session_branch -> session_fork
- Settings: doubleEscapeAction 'branch' -> 'fork'

fixes #641
2026-01-11 23:12:31 +01:00
Mario Zechner e7352a50bf Merge pull request #640 from patrick-kidger/patch-1
Fix install-from-source instructions
2026-01-11 23:03:32 +01:00
Mario Zechner c07126c0fd fix(tui): remove Kitty protocol query timeout
The 100ms timeout was causing Kitty protocol detection to fail when the
terminal response was delayed (e.g., due to event loop blocking during
startup). This resulted in shift+enter not working in some scenarios.

Changes:
- Remove timeout-based Kitty detection, process input immediately
- Detect Kitty response in stdinBuffer output (handles split data)
- Add modifyOtherKeys fallback for terminals without Kitty support
  (matches xterm format \x1b[27;modifier;keycode~)
2026-01-11 22:51:30 +01:00
Mario Zechner f1e225d9e7 Add /models command for enabling/disabling Ctrl+P model cycling (#626)
- New /models command with toggle UI for each available model
- Changes persist to enabledModels in settings.json
- Updates take effect immediately for Ctrl+P cycling
- Added documentation to README.md

closes #626
2026-01-11 19:36:42 +01:00
Mario Zechner 42ed0129ed Merge pull request #634 from ogulcancelik/fix/extension-context-model-getter
fix: custom footer extensions now see model changes
2026-01-11 19:31:09 +01:00
Mario Zechner 3eb91d223f fix(ai): Google thinking detection + remove unsupported id fields (#631) 2026-01-11 19:26:07 +01:00
Mario Zechner 667cf5aa6e docs(ai): add changelog entry for Google thinking fix 2026-01-11 19:26:00 +01:00
Mario Zechner f5e97427ce chore: add changelog entry for resume keybindings 2026-01-11 19:23:04 +01:00
Mario Zechner da6a2fb5ea test(tui): cover style reset cases 2026-01-11 19:01:16 +01:00
Mario Zechner ae134e7e02 Merge pull request #632 from thomasmhr/patch-1
Fix header level for tool usage rules
2026-01-11 18:59:16 +01:00
Mario Zechner 6d495348c5 fix(tui): reset styles per line 2026-01-11 18:36:48 +01:00
Mario Zechner 741262d89d Merge model-select-hook: add model_select extension hook (#628) 2026-01-11 18:12:54 +01:00
Mario Zechner a20c6efe17 feat(coding-agent): add model_select extension hook
Fires when the model changes via /model command, model cycling (Ctrl+P),
or session restore. Includes source field and previousModel.

Add model-status.ts example extension demonstrating status bar updates.

closes #628
2026-01-11 18:12:46 +01:00
Mario Zechner 5db7cc693b fix: Model selector fuzzy search matches id + provider
Restores original behavior from 3de8e075. Allows multi-token queries
like 'opus anthropic' to match Anthropic models.
2026-01-11 18:04:57 +01:00
Mario Zechner 3592f9b7c9 fix: Model selector fuzzy search matches provider + id
Allows queries like 'anthropic opus' to match Anthropic models.
Previously only matched against model ID, so 'anthropic' token failed.
2026-01-11 18:00:52 +01:00
Mario Zechner 9655907624 feat: Add skill slash commands and fuzzy matching for all commands
- Skills registered as /skill:name commands for quick access
- Toggle via /settings or skills.enableSkillCommands in settings.json
- Fuzzy matching for all slash command autocomplete (type /skbra for /skill:brave-search)
- Moved fuzzy module from coding-agent to tui package for reuse

Closes #630 by @Dwsy (reimplemented with fixes)
2026-01-11 17:56:11 +01:00
Mario Zechner 92486e026c Add session transcript analysis script
- Extracts user/assistant messages from session files for a given cwd
- Splits into ~100k char files to fit in context
- Spawns pi subagents to analyze each file for recurring patterns
- Compares against existing AGENTS.md to mark NEW vs EXISTING patterns
- Final aggregation step creates FINAL-SUMMARY.txt with consolidated findings
- Shows progress with tool call args during analysis
2026-01-11 17:28:39 +01:00
Mario Zechner 925ed89af1 Merge pull request #625 from nicobailon/feat/set-working-message
feat: add ctx.ui.setWorkingMessage() extension API
2026-01-11 12:36:50 +01:00
Mario Zechner 016a24e9a1 Add [Unreleased] section for next cycle 2026-01-11 04:11:34 +01:00
Mario Zechner 31fe16f2e7 Release v0.42.5 2026-01-11 04:10:49 +01:00
Mario Zechner fa8076bb3d docs(coding-agent): add tui fixes to changelog 2026-01-11 04:07:03 +01:00
Mario Zechner 178a3a563f fix(tui): handle split Shift+Enter in VS Code 2026-01-11 04:03:42 +01:00
Mario Zechner f0fd0a7d6a fix(mom): use coding-agent SessionManager instead of custom MomSessionManager
Removes MomSessionManager which was missing methods expected by AgentSession
(appendMessage, getBranch, etc.), causing runtime crashes.

Now uses the standard SessionManager from coding-agent with a fixed context.jsonl
path per channel. The syncLogToSessionManager function handles syncing messages
from log.jsonl using SessionManager's public API.

Ref #595
2026-01-11 04:03:42 +01:00
Mario Zechner 6db2d0770a Merge pull request #621 from kaofelix/fix-register-flag-docs
fix(coding-agent): remove -- from registerFlag calls
2026-01-11 03:19:29 +01:00
Mario Zechner 3bb115a39c fix(tui): cursor position tracking when content shrinks with unchanged lines 2026-01-11 03:00:23 +01:00
Mario Zechner d7394eb109 Fix TUI rendering with wrong dimensions after suspend/resume
- Send SIGWINCH to self on terminal start to refresh stale dimensions (Unix only)
- Change requestRender(true) to set previousWidth = -1 to trigger widthChanged
- Update first render condition to skip when widthChanged is true

Fixes #599
2026-01-11 02:47:28 +01:00
Mario Zechner 019ad0ec11 Fix /changelog adding 'What's New' to footer permanently
fixes #613
2026-01-11 02:23:04 +01:00
Mario Zechner 0d2731cf6b Remove built-in tool override warning, closes #615 2026-01-11 02:20:32 +01:00
Mario Zechner 2787638561 Remove built-in tool override warning, closes #615 2026-01-11 02:20:32 +01:00
Mario Zechner 65b72cc514 Merge pull request #618 from tmustier/fix-codex-stream-originator
fix(ai): update codex stream originator test
2026-01-11 01:58:54 +01:00
Mario Zechner bd82d06de2 Merge pull request #614 from mitsuhiko/auto-complete-model
Add support for /model autocomplete
2026-01-10 22:07:49 +01:00
Mario Zechner c95b132fcc Add [Unreleased] section for next cycle 2026-01-10 13:56:55 +01:00
Mario Zechner 345de59833 Release v0.42.4 2026-01-10 13:56:11 +01:00
Mario Zechner 7293d7cb82 fix(coding-agent): UTF-8 corruption in remote bash execution
Applied streaming TextDecoder fix to executeBashWithOperations(), matching
the fix in executeBash() from PR #433. Remote execution (SSH, containers)
was still using Buffer.toString() which corrupts multi-byte UTF-8 sequences
split across chunk boundaries.

fixes #608
2026-01-10 13:55:02 +01:00
Mario Zechner ec83d91473 fix(ai): resolve OAuth tool names via context 2026-01-10 13:45:08 +01:00
Mario Zechner 79ed50e0db chore(coding-agent): add changelog for bash hint 2026-01-10 13:36:13 +01:00
Mario Zechner 52e2b4e780 Merge pull request #610 from tallshort/fix/expand-hint
fix(coding-agent): show '(ctrl+o to collapse)' hint for bash output when expanded
2026-01-10 13:34:30 +01:00
Mario Zechner 3743ebc03d Add [Unreleased] section for next cycle 2026-01-10 13:28:10 +01:00
Mario Zechner 2a04b0fb28 Release v0.42.3 2026-01-10 13:27:28 +01:00
Mario Zechner 232749ee52 Remove copy-assets.js build step (prompt now bundled in .ts) 2026-01-10 13:26:46 +01:00
Mario Zechner 6dcb64565a Prepare for alternative Codex harness certification 2026-01-10 13:22:10 +01:00
Mario Zechner 11dd2f476b Add [Unreleased] section for next cycle 2026-01-10 01:43:32 +01:00
Mario Zechner 0c02f5c053 Release v0.42.2 2026-01-10 01:42:46 +01:00
Mario Zechner cf922b01b4 docs: update changelogs and clarify lockstep versioning in AGENTS.md 2026-01-10 01:41:48 +01:00
Mario Zechner d82df76222 docs: add supportsUsageInStreaming to compat table 2026-01-10 01:16:52 +01:00
Mario Zechner 14be8efba8 Merge PR #596: Add supportsUsageInStreaming compat flag 2026-01-10 00:34:29 +01:00
Mario Zechner 52ce113754 Add supportsUsageInStreaming compat flag for OpenAI-compatible providers
Renamed from supportsStreamOptions to clarify this controls stream_options: { include_usage: true }.
Defaults to true (no behavioral change for existing providers).
Providers like gatewayz.ai that reject this parameter can set supportsUsageInStreaming: false in model config.

Based on #596 by @XesGaDeus
2026-01-10 00:34:06 +01:00
Mario Zechner a613306e11 fix(ai): disable strict mode for OpenAI completions tool schemas
OpenRouter with models like openai/gpt-5.2 enforces strict mode which
requires all properties in the required array. Setting strict: false
allows optional parameters without null unions, matching the approach
already used in openai-responses.ts.
2026-01-10 00:19:02 +01:00
Mario Zechner fe98895706 Better error messages on OpenRouter via openai-completions 2026-01-10 00:09:51 +01:00
Mario Zechner c84f2f25de Fix lint warnings: use literal keys instead of bracket notation 2026-01-09 23:54:50 +01:00
Mario Zechner c39250d0df Fix Google Cloud Code Assist OAuth for paid subscriptions
- Properly handle long-running operations for project provisioning
- Support GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_PROJECT_ID env vars for paid tiers
- Handle VPC-SC affected users
- Update docs for paid subscription requirements

Closes #582
2026-01-09 23:32:46 +01:00
Mario Zechner 498958a92a Updated AGENTS.md 2026-01-09 23:15:14 +01:00
Mario Zechner dbd82df5af docs: add PR workflow rules 2026-01-09 23:11:19 +01:00
Mario Zechner 63f3e609e7 Merge pull request #606 from badlogic/chore/changelog-footer-data-provider
chore(coding-agent): add footer data provider changelog
2026-01-09 23:08:03 +01:00
Mario Zechner 4afbf4291f chore(coding-agent): add footer data provider changelog 2026-01-09 23:04:20 +01:00
Mario Zechner e8eb4c254a feat: add search parameter and auto-select to /model command
- /model <search> pre-filters selector or auto-selects on exact match
- Support provider/model syntax for disambiguation (e.g., /model openai/gpt-4)
- Auto-select logic moved to InteractiveMode to avoid selector UI flicker

Closes #587
2026-01-09 22:39:26 +01:00
Mario Zechner b4b9cc2a80 Rebuild prompt widget on resume 2026-01-09 22:19:55 +01:00
Mario Zechner 35690f6d1a Merge branch 'fix/lazy-homedir-env-first' 2026-01-09 22:09:27 +01:00
Mario Zechner 4c68ab6eab chore: update prompt-url widget 2026-01-09 22:09:05 +01:00
Mario Zechner e2d14cdc23 Add spacing before aborted messages 2026-01-09 21:48:43 +01:00
Mario Zechner 62a423a218 Adjust widget spacing with empty state 2026-01-09 21:42:44 +01:00
Mario Zechner b95cb7503e Add PR/issue widget metadata and spacing 2026-01-09 21:40:29 +01:00
Mario Zechner 32dd0d3cc4 Add changelog entries for PR 598 2026-01-09 20:50:23 +01:00
Mario Zechner 60f5a03576 Add [Unreleased] section for next cycle 2026-01-09 20:24:50 +01:00
Mario Zechner d856bb097c Release v0.42.1 2026-01-09 20:24:10 +01:00
Mario Zechner 5eb53cdb9e Add [Unreleased] section for next cycle 2026-01-09 07:00:09 +01:00
Mario Zechner 0752995424 Release v0.42.0 2026-01-09 06:59:26 +01:00
Mario Zechner 97d0189eae Add OpenCode Zen provider support 2026-01-09 06:58:20 +01:00
Mario Zechner 98b25baf4d Add [Unreleased] section for next cycle 2026-01-09 06:07:35 +01:00
Mario Zechner ec9def84ef Release v0.41.0 2026-01-09 06:06:54 +01:00
Mario Zechner 342d896881 Add changelog entry for Anthropic OAuth restoration 2026-01-09 06:02:20 +01:00
Mario Zechner 19b5663340 Revert "Remove Anthropic OAuth support"
This reverts commit f5e6bcac1b.
2026-01-09 06:00:20 +01:00
Mario Zechner f745321169 Clean-up. 2026-01-09 05:23:08 +01:00
Mario Zechner 439385afbc Add [Unreleased] section for next cycle 2026-01-09 05:12:52 +01:00
Mario Zechner ebd661fe13 Release v0.40.1 2026-01-09 05:11:49 +01:00
Mario Zechner f5e6bcac1b Remove Anthropic OAuth support 2026-01-09 05:10:33 +01:00
Mario Zechner 2e362fbfd2 Make mac-system-theme extension async to avoid blocking keyboard input 2026-01-09 00:49:31 +01:00
Mario Zechner 0cf4e1dbf9 Add [Unreleased] section for next cycle 2026-01-09 00:44:14 +01:00
Mario Zechner 070ef9c771 Release v0.40.0 2026-01-09 00:43:32 +01:00
Mario Zechner e0e66a3054 Add documentation on component invalidation and theme changes 2026-01-09 00:42:33 +01:00
Mario Zechner 45a6c394ca Fix components not rebuilding content on theme change 2026-01-09 00:40:57 +01:00
Mario Zechner 36fbce85c2 Add [Unreleased] section for next cycle 2026-01-09 00:34:20 +01:00
Mario Zechner 39bfbb125c Release v0.39.1 2026-01-09 00:33:39 +01:00
Mario Zechner 37378fb346 Fix setTheme not triggering rerender, improve mac-system-theme example 2026-01-09 00:32:41 +01:00
Mario Zechner e5e944475d Poll macOS system theme every 2 seconds in mac-system-theme extension 2026-01-09 00:18:59 +01:00
Mario Zechner 307f9b4169 Add [Unreleased] section for next cycle 2026-01-09 00:10:41 +01:00
Mario Zechner c25f1eab64 Release v0.39.0 2026-01-09 00:10:00 +01:00
Mario Zechner c5b97d7a2f feat(coding-agent): add interactive-shell.ts extension example
Demonstrates running interactive commands (vim, git rebase, htop, etc.)
with full terminal access using user_bash event and ctx.ui.custom().

- Auto-detects interactive commands from built-in list
- !i prefix to force interactive mode
- Configurable via INTERACTIVE_COMMANDS/INTERACTIVE_EXCLUDE env vars

closes #532
2026-01-09 00:08:52 +01:00
Mario Zechner ef7c52ffa1 chore: fix template literal lint, update AGENTS.md to require fixing all check output 2026-01-08 23:44:26 +01:00
Mario Zechner 2dfc13e455 chore: format 2026-01-08 23:41:58 +01:00
Mario Zechner a9ab7be92f chore(coding-agent): update shx to 0.4.0 to fix deprecated glob/inflight warnings 2026-01-08 23:41:58 +01:00
Mario Zechner af2d8509e6 Fix --no-skills flag not preventing skills from loading
The --no-skills flag set options.skills = [] in main.ts, but the
interactive mode UI would rediscover skills anyway because it called
loadSkills() directly instead of using the already-loaded skills.

Changes:
- Add AgentSession.skills and AgentSession.skillWarnings properties
- discoverSkills() now returns { skills, warnings } instead of Skill[]
- Interactive mode uses session.skills instead of calling loadSkills()
- Update SDK docs and examples for new return type

Fixes #577
2026-01-08 23:41:54 +01:00
Mario Zechner ec1ee7ddc6 docs: add overlay documentation, mark as experimental 2026-01-08 22:44:12 +01:00
Mario ZechnerandNico Bailon f9064c2f69 feat(tui): add overlay compositing for ctx.ui.custom() (#558)
Adds overlay rendering capability to the TUI, enabling floating modal
components that render on top of existing content without clearing the screen.

- Add showOverlay(), hideOverlay(), hasOverlay() methods to TUI
- Implement ANSI-aware line compositing via extractSegments()
- Support overlay stack (multiple overlays, later on top)
- Add { overlay: true } option to ctx.ui.custom()
- Add overlay-test.ts example extension

Also fixes pre-existing bug where bash tool output cached visual lines
at fixed terminal width, causing crashes on terminal resize.

Co-authored-by: Nico Bailon <nico.bailon@gmail.com>
2026-01-08 22:40:42 +01:00
Mario Zechner 121823c74d feat(coding-agent): add user_bash event and theme API extensions
- user_bash event for intercepting ! and !! commands (#528)
- Extensions can return { operations } or { result } to redirect/replace
- executeBashWithOperations() for custom BashOperations execution
- session.recordBashResult() for extensions handling bash themselves
- Theme API: getAllThemes(), getTheme(), setTheme() on ctx.ui
- mac-system-theme.ts example: sync with macOS dark/light mode
- Updated ssh.ts to use user_bash event
2026-01-08 21:50:56 +01:00
Mario Zechner 16e142ef7d fix(ai): remove <thinking> tag wrapping, convert to plain text on cross-model handoff
- Remove <thinking> tag generation from google-shared.ts, transorm-messages.ts, openai-completions.ts
- Thinking blocks now convert to plain text when switching models (prevents models mimicking tags)
- Skip empty thinking blocks to avoid API errors
- Keep thinking blocks only when same provider AND same model

fixes #561
2026-01-08 21:19:16 +01:00
Mario Zechner 8fda948866 fix(coding-agent): string systemPrompt now works as full replacement
When passing a string systemPrompt to createAgentSession(), it is now
used as-is without appending context files and skills. This matches the
documented behavior: 'String replaces default, function receives default
and returns final.'

Previously, string systemPrompt would have context files and skills
appended, causing duplication if they were already in the string.

fixes #543
2026-01-08 20:47:52 +01:00
Mario Zechner dc54c308a9 SSH extension: evaluate pwd on remote when no path given, use accent color for status 2026-01-08 20:37:56 +01:00
Mario Zechner b0e5954cf8 feat(coding-agent): default ssh extension remote cwd to ~ 2026-01-08 20:27:09 +01:00