Commit Graph
1085 Commits
Author SHA1 Message Date
can1357 386c4b2c8d fix(coding-agent): corrected context file preview to read from raw object
- Fixed context file preview in inspector panel to read content from raw object instead of async file reads.
- Added slash commands to extensions inspector panel for visibility and management.
- Extracted getContextFileContent helper method for type-safe content extraction.
2026-01-06 21:55:24 +00:00
can1357 f224ecb72a fix(coding-agent): avoided sharp hard dependency 2026-01-06 21:52:24 +00:00
can1357 f991cfa54d feat(coding-agent): added file-based slash commands with $ARGUMENTS placeholder
- Added file-based slash commands discovery from commands/ directories.
- Added $ARGUMENTS placeholder support for slash command argument substitution.
- Changed argument substitution order to process positional args before wildcards to prevent re-substitution bugs.
- Integrated slash command expansion into AgentSession initialization flow.
2026-01-06 21:49:24 +00:00
can1357 1d36816a59 chore: bump version to 3.20.1 2026-01-06 13:35:55 +01:00
can1357 66223c557d feat(coding-agent): added relative modification times to ls tool
Shows human-readable ages like "2d ago", "just now" for each entry.
2026-01-06 13:23:23 +01:00
can1357 e561435991 fix(find): enabled full-path matching for patterns with path separators
fd's --glob mode matches against filenames only, not paths. Patterns
like `reports/**` were failing because fd looked for entries literally
named `reports/**`. Now detects path separators and adds --full-path
flag with `**/` prefix to match correctly.
2026-01-06 13:22:58 +01:00
can1357 be5d7dd3a9 feat(coding-agent): added task descriptions to multi-task display for clarity
- Changed multi-task display to show task descriptions instead of agent names when available.
- Fixed indentation in worktree constants module for consistency.
2026-01-06 13:15:54 +01:00
can1357 d883b84be6 chore: bump version to 3.20.0 2026-01-06 01:26:37 +01:00
can1357 6da94c95ef fix(task): resolved race condition causing 0 tools/tokens display
The `resolved` flag was set synchronously before awaiting `proc.exited`,
causing the stdout reader to skip all JSON events via the `if (resolved)
return` guard. Now we await both process exit and stream reader completion
before setting `resolved = true`.
2026-01-06 00:34:39 +01:00
can1357 15fbe228b3 feat(monorepo): merged codex providers and extensions 2026-01-05 15:37:44 +01:00
can1357 56e760f2bc feat(git-tool): added git-tool package with 22 operations and safety guards
- Added new @oh-my-pi/pi-git-tool package with 22 git operations, safety guards, caching, and GitHub CLI integration.
- Added /wt slash command for git worktree management with create, list, merge, remove, spawn, and parallel operations.
- Added worktree library with collapse strategies (simple, merge-base, rebase) and session tracking for agent tasks.
- Added structured git tool with TypeBox schema exposing gitTool and createGitTool from SDK.
- Added safety policies blocking force push to protected branches and warning on destructive operations.
2026-01-05 15:37:44 +01:00
can1357 44b10b12d5 feat(coding-agent): added background execution with terminal notifications
- Added /background (or /bg) command to detach UI and continue agent execution in background.
- Added completion notification system with configurable methods (bell, osc99, osc9, auto, off).
- Added completionNotification setting and OMP_NOTIFICATIONS environment variable for notification control.
- Added terminal-notify module with protocol detection for terminal emulator notifications.
2026-01-05 15:37:44 +01:00
can1357 2baae16a34 fix(coding-agent): made browser opening cross-platform and non-failing
- Windows uses cmd /c start instead of raw start (shell builtin)
- macOS uses open, Linux uses xdg-open
- Wrapped in try-catch to fail silently when unavailable
2026-01-05 15:37:44 +01:00
can1357 8b38705146 feat(coding-agent): implemented OpenAI Realtime API voice mode
- Added VoiceSupervisor and VoiceController classes for realtime voice mode using OpenAI Realtime API.
- Added echo suppression, noise floor filtering, and fallback transcript handling for voice input.
- Changed voice mode toggle from Caps Lock to Ctrl+Y with auto-send on silence behavior.
- Changed default TTS model from gpt-4o-mini-tts to tts-1.
- Added kwaipilot/kat-coder-pro model and removed deprecated OpenRouter models.
2026-01-05 15:11:28 +01:00
can1357 c34e7cbc2f feat(coding-agent): added gemini image tool 2026-01-05 08:55:49 +01:00
can1357 f5251cce30 refactor(coding-agent): removed pendingVoiceResponses counter
- Removed pendingVoiceResponses counter to simplify voice response handling logic.
2026-01-05 08:12:58 +01:00
can1357 40586a8919 feat: added voice mode with push-to-talk for hands-free interaction
- Added voice mode with Caps Lock push-to-talk for speech-to-text and text-to-speech using OpenAI APIs.
- Added voice settings configuration for transcription model, TTS model, voice selection, and audio format.
- Added description field to task tool for user-facing progress summaries in subagent spawning.
- Added isCapsLock helper function to tui package for Kitty protocol key detection.
- Added getApiKeyForProvider() method to ModelRegistry for retrieving API keys by provider name.
2026-01-05 08:11:18 +01:00
can1357 0315cef75d refactor(coding-agent): extracted shared render-utils to eliminate duplication
- Added shared render-utils module with standardized formatting functions for truncation, bytes, tokens, duration, and tree rendering.
- Extracted resolveOmpCommand() helper to centralize cross-platform subprocess command resolution.
- Consolidated duplicate utility functions across grep, find, ls, notebook, ask, output, exa, lsp, and web search renderers.
- Updated web search tool to support 'auto' as explicit provider option for auto-detection.
2026-01-05 07:35:35 +01:00
can1357 8a5983be2d feat: added role-based model cycling with Ctrl+Y hotkey support
- Added cycleRoleModels() method to cycle through configured role-based models with deduplication.
- Added RoleModelCycleResult interface with model, thinkingLevel, and role properties.
- Added isCtrlY() helper function to detect Ctrl+Y input across raw byte and Kitty protocol.
2026-01-05 05:41:21 +01:00
can1357 b81869dc8d feat(coding-agent): added language-specific file icons to tool output
- Added language-specific file icons to LSP diagnostics output for improved file type recognition.
- Added language-specific file icon to edit tool header display for visual consistency.
2026-01-05 05:40:12 +01:00
can1357 a05852fe5a feat(coding-agent/core): added file icons to grep/find output for clarity
- Added language-specific file icons and folder icons to grep and find tool output renderers.
2026-01-05 05:37:05 +01:00
can1357 8cbf7aaf1b feat(coding-agent): added language-specific icons to file listings
- Updated file listing to display language-specific icons based on file extension instead of generic file icons.
2026-01-05 05:24:56 +01:00
can1357 50ecf5478e chore: bump version to 3.15.1 2026-01-05 05:20:35 +01:00
can1357 e880eec447 fix(coding-agent): corrected status line end cap background and separator rendering
- Fixed status line end cap rendering to apply background colors and use correct powerline separator characters.
2026-01-05 05:20:14 +01:00
can1357 36db3ff6fc feat(tui): added hardware cursor support for native terminal blinking
- Added terminal cursor mode support to Editor component with setUseTerminalCursor() and getCursorPosition() methods.
- Added getCursorPosition() method to Component interface and Container class for cursor position aggregation.
- Added hardware cursor positioning and visibility management to TUI class with change detection.
- Enabled terminal cursor mode in HookEditorComponent and CustomEditor for proper cursor blinking.
2026-01-05 05:16:39 +01:00
can1357 f26493824e feat(coding-agent): added 65 themes to expand user customization options
- Added 65 new built-in color themes including dark, light, and material variants.
- Added theme sync script to generate theme index from JSON files.
- Expanded default theme collection from approximately 30 to 96 themes.
2026-01-05 05:16:07 +01:00
can1357 4cc8270ad5 chore: bump version to 3.15.0 2026-01-05 04:52:31 +01:00
can1357 21192e2056 refactor: consolidated tool execution params into details object
- Changed isError property from required to optional across ToolResultMessage and tool event interfaces.
- Added SpinnerType variants with distinct animation frames per symbol preset.
- Fixed spinner animation crash when frames array is empty by adding guard clause.
- Refactored agent-loop tool execution to consolidate toolCallId, toolName, and isError into details object.
2026-01-05 04:44:43 +01:00
can1357 7f68705afa fix(coding-agent): corrected bash spinner syntax and removed redundant metadata
- Fixed string interpolation syntax error in bash execution spinner text.
- Removed redundant line count display from file read tool output metadata.
2026-01-05 04:32:22 +01:00
can1357 feb108d1db docs(coding-agent,web-ui): documented image attachment processing changes 2026-01-05 04:23:35 +01:00
can1357 fa726683b1 fix(coding-agent): used theme ellipsis in loading animation text
Replaced hardcoded "..." with theme.format.ellipsis in the "Working..."
loading message for consistent styling. Fixed template literal syntax.
2026-01-05 04:23:15 +01:00
can1357 d5dd582753 fix(coding-agent): used theme ellipsis in bash execution component
Replaced hardcoded "..." with theme.format.ellipsis for consistent styling.
2026-01-05 04:22:37 +01:00
can1357 2c7950d08e feat(coding-agent): added image processing for CLI file attachments
Added automatic resizing (>2048px triggers resize to max 1920x1080) and
JPEG conversion (>2MB) for image file attachments using sharp. Reduces
payload size when attaching large screenshots or high-resolution images.
2026-01-05 04:22:36 +01:00
can1357 58d9952f9b chore(coding-agent): added blank line before Theme class definition 2026-01-05 04:22:09 +01:00
can1357 f3bc4db78a feat(coding-agent): registered session flush in async cleanup registry
InteractiveMode now registers sessionManager.flush() with the async cleanup
registry, ensuring pending writes are flushed on SIGINT/SIGTERM/SIGHUP.
2026-01-05 04:22:00 +01:00
can1357 4b2215e35f docs(coding-agent): deduplicated changelog entries for unreleased changes 2026-01-05 04:21:34 +01:00
can1357 e7495a9b0e feat(coding-agent): added animated spinner and language icons for tool display
- Added animated spinner for task tool progress (spinnerFrame in render options)
- Added 35+ language/file type icons to theme (lang.* symbols for Unicode/Nerd/ASCII)
- Read tool now displays file type icons and metadata inline with path
- Added getFileType helper to detect image/binary/text files by extension
2026-01-05 04:21:18 +01:00
can1357 c4e26ee614 feat(coding-agent): added subagent token usage aggregation to task tool results
Task tool now parses NDJSON events from subagent execution and aggregates
token usage (input, output, cache read/write) and costs across all completed
message_end events. Usage is stored in tool result details and included in
session statistics via getUsageStatistics().

Also changed AgentSession.dispose() to async to properly flush pending writes.
2026-01-05 04:21:02 +01:00
can1357 7f1d071843 feat(coding-agent): added streaming NDJSON session persistence with crash-safe writes
Rewrote SessionManager to use streaming NDJSON writes with proper backpressure
handling instead of synchronous file appends. Key changes:

- SessionManager.open() and continueRecent() are now async for proper init
- Session writes use atomic rename pattern with fsync for crash safety
- Added flush() method for explicit control over pending write completion
- Large content blocks (>500KB) are truncated before writing to prevent OOM
- Images are replaced with placeholder thumbnails during persistence
2026-01-05 04:20:44 +01:00
can1357 fef71188ff feat(coding-agent): added async cleanup registry for graceful signal handling
Introduced registerAsyncCleanup() for registering async callbacks that run
on SIGINT, SIGTERM, and SIGHUP. This enables proper session flushing before
exit without blocking synchronous signal handlers.
2026-01-05 04:20:22 +01:00
can1357 1b70f4c796 build(coding-agent): added sharp and @types/ndjson dependencies
Added sharp for image processing (placeholder thumbnails in session persistence)
and @types/ndjson for type definitions.
2026-01-05 04:20:04 +01:00
can1357 27d56f39f8 refactor(coding-agent): simplified tool output rendering with collapsible content
- Changed read tool result display to hide content by default with expand hint, showing only metadata until expanded.
- Changed diagnostics display to group messages by file with tree structure and severity icons.
- Changed diff stats formatting to use colored +/- indicators with slash separators.
- Removed custom renderers for ls, find, and grep tools in favor of generic tool display.
- Simplified truncation warning formatting for read tool output.
2026-01-05 03:13:24 +01:00
can1357 fd67003028 feat(coding-agent): added streaming persistence with backpressure control
- Added streaming NDJSON writer with backpressure handling for session persistence.
- Added SessionManager.flush() method for explicit write synchronization before session operations.
- Added content truncation for oversized blocks (500K char limit) to prevent memory exhaustion.
- Replaced synchronous file appends with streaming NDJSON writer in session persistence.
2026-01-05 02:23:36 +01:00
can1357 f693c285ef feat(coding-agent): added /exit command for interactive mode termination
- Added /exit slash command to exit the application from interactive mode.
2026-01-05 02:20:46 +01:00
can1357 af05f81bde feat(coding-agent/core): added fuzzy path suggestions to read tool
- Added fuzzy path matching suggestions when read tool encounters file-not-found errors, showing closest matches using Levenshtein distance.
- Changed read tool to automatically redirect to ls when given a directory path instead of a file.
- Implemented Levenshtein distance algorithm for computing path similarity scores.
- Added fd-based file candidate listing with gitignore support for fuzzy matching.
2026-01-05 02:18:38 +01:00
can1357 3aa17d9d1a docs(coding-agent/prompts): restructured tool docs for clarity and usability
- Rewrote tool documentation with structured sections and clearer usage guidelines.
- Added explicit guidance on when to use and avoid each tool.
- Simplified examples and removed implementation details from tool prompts.
- Added best practices for read, write, and bash tools.
2026-01-05 02:17:32 +01:00
can1357 71b59649b5 refactor(coding-agent): externalized tool prompts to markdown files
- Extracted tool description prompts from inline strings to external markdown files in src/prompts/tools/.
- Moved descriptions for 12 tools (ask, bash, edit, find, grep, lsp, output, read, web-fetch, web-search, write) to dedicated .md files.
- Updated tool implementations to import descriptions from external markdown files.
2026-01-05 01:50:35 +01:00
can1357 cd73708831 feat(coding-agent/core): added crates.io API handler with parallel fetching
- Added crates.io API handler for fetching Rust crate metadata, versions, and README content.
- Added weekly download statistics to npm package fetch results.
- Parallelized npm registry and download stats fetches for improved performance.
2026-01-05 01:46:38 +01:00
can1357 885f59c4a0 fix(coding-agent/core): resolved type narrowing by binding array items locally
- Bound array items to local variables to enable TypeScript union type narrowing in diagnostic rendering.
2026-01-05 01:37:29 +01:00
can1357 1bf6621b69 refactor(coding-agent/core): migrated Exa provider to REST API for simpler integration
- Migrated Exa web search provider from MCP protocol to direct REST API for simpler integration.
- Added defensive handling for malformed response data with fallback text display in web search rendering.
- Replaced SSE parsing and markdown response handling with direct JSON API responses.
- Added type guards and null coalescing throughout render.ts to prevent runtime errors on unexpected data.
- Normalized search type parameter to map deprecated 'keyword' to 'fast' for API compatibility.
2026-01-05 01:34:16 +01:00