- Fixed Google provider schema sanitization to collapse anyOf/oneOf with const values into enum arrays.
- Fixed const-to-enum conversion to infer type from const value when type is not specified.
- Changed review finding priority format from numeric (0-3) to string labels (P0-P3).
- Replaced Type.Union with Type.Literal patterns with StringEnum helper across tool schemas.
- Added const modifier to StringEnum generic type parameter for improved TypeScript type inference.
- Consolidated priority metadata into single PRIORITY_INFO record with exported getPriorityInfo function.
- Exported sanitizeSchemaForGoogle utility function for public use.
- Added filtering of unsupported JSON Schema fields ($schema, $ref, $defs, format, examples, etc.) in Google provider schema sanitization.
- Added handling to ignore unsupported additionalProperties: false in Google provider.
- Removed format: date-time from timestamp type conversion in JTD to JSON Schema transformation.
- Added schema validation tests to verify tool schemas don't contain problematic JSON Schema features.
- Reorganized system prompt to display context, environment, and tools sections before discipline guidelines.
- Added FrontmatterError custom error class and FrontmatterOptions interface for improved error handling.
- Enhanced parseFrontmatter function with source, fallback, normalize, and fatal options for better error context.
- Updated all parseFrontmatter call sites to include source file information for better error messages.
- Fixed frontmatter parsing to properly report source location when YAML parsing fails.
- Updated system prompt to show file paths more clearly in output.
- Added template sections for systemPromptCustomization, environment, and tools in system prompt.
- Added todo_write tool for creating and managing structured task lists during coding sessions.
- Added persistent todo panel above the editor that displays task progress with Ctrl+T toggle.
- Added grouped display for consecutive Read tool calls in a compact tree view.
- Changed system prompt to use more direct, field-oriented language with emphasis on verification and assumptions.
- Changed Ctrl+Enter to insert newline when not streaming, and Ctrl+T from toggling thinking blocks to toggling todo list.
- Replaced yaml package dependency with Bun's built-in YAML parser and extracted frontmatter parsing to dedicated module.
- Changed temporary model selector keybinding from Ctrl+Y to Alt+P to avoid conflicts.
- Fixed Alt+Enter to insert newline when not streaming instead of submitting.
- Fixed Cursor provider to avoid advertising Edit tool, using full-file Write instead.
- Added Ctrl+Enter support for inserting newlines in TUI editor using Kitty and legacy terminal formats.
- Removed duplicate Ctrl+Y handler and refactored input controller to use trimmedText variable.
- Added grouped display for consecutive Read tool calls, showing multiple file reads in a compact tree view.
- Changed Read tool result display to hide content by default, showing only file path and status.
- Changed expand hint text from 'Ctrl+O to expand' to 'Ctrl+O for more'.
- Added ReadToolGroupComponent class to group multiple Read tool executions together in a single display.
- Renamed getStyledStatusIcon to formatStatusIcon for consistency with other format functions.
- Refactored formatExpandHint function signature to put theme parameter first and make expanded/hasMore optional.
- Increased default bash output preview from 5 to 10 lines when collapsed.
- Updated expanded bash output view to show full untruncated output when available.
- Added fullOutput field to BashToolDetails to preserve complete output for expanded view.
- Exported BASH_DEFAULT_PREVIEW_LINES constant for consistent preview line configuration.
- Added thinkingLevel field to agent frontmatter allowing subagents to override thinking level with clamping to model capabilities.
- Added structured output schema to reviewer agent ensuring consistent review output format with findings, correctness verdict, and confidence.
- Expanded system prompt with defensive reasoning guidance including assumption checks, edge case awareness, and completion reflex inhibition.
- Consolidated expandPath, parseFrontmatter, and parseAgentFields utilities into discovery/helpers module eliminating code duplication across loaders.
- Replaced silent error handling with logger.warn calls across config parsing, migrations, extension loading, and OAuth refresh failures.
- Added Cursor AI provider with HTTP/2 streaming support using Connect protocol and protobuf binary serialization.
- Added OAuth authentication flow for Cursor including browser-based login, token refresh, and expiry detection.
- Added 14 Cursor model definitions including Claude 4.5, GPT 5.x, Gemini 3, and Grok variants.
- Added execution bridge for Cursor tool calls supporting read, ls, grep, write, delete, shell, diagnostics, and MCP operations.
- Added cursorExecHandlers and cursorOnToolResult options to Agent for local tool execution with cursor-based streaming.
- Added emitExternalEvent method to Agent class for external event injection into agent state.
- Added fallback matching without indent depth when file and target have inconsistent indentation patterns.
- Refactored fuzzy matching logic into findBestFuzzyMatchCore helper function.
- Added comprehensive test suite for findEditMatch covering exact matching, tab/space normalization, and edge cases.
- Changed default for `hidden` option in find tool from `false` to `true`, now including hidden files by default.
- Added test job to publish workflow that runs before build.
- Added persistent cache storage table with expiry support to AgentStorage.
- Added getCache, setCache, and cleanExpiredCache methods for cache operations.
- Added persistent DB caching for Codex usage data that survives application restarts.
- Updated AuthStorage to use two-tier caching (memory + DB) for Codex usage.
- Converted SettingsManager.create(), loadSettings(), discoverSkills(), loadSlashCommands(), buildSystemPrompt(), loadSkills(), loadProjectContextFiles(), and getShellConfig() from synchronous to asynchronous APIs.
- Changed capability provider load() method from supporting both sync and async to async-only by removing loadSync().
- Removed fs property from LoadContext interface in capability types.
- Added new fs.ts module with caching layer for filesystem operations using readFile, readDirEntries, readDir, walkUp, and cache management functions.
- Refactored all discovery providers (builtin, claude, cline, codex, cursor, gemini, github, mcp-json, ssh, vscode, windsurf) to use async file operations with Promise.all for parallel loading.
- Added serialize()/fromSerialized() to AuthStorage and ModelRegistry for
passing credentials and models to subagent workers without re-discovery
- Extended worker protocol with MCP tool call proxying (mcp_tool_call request,
mcp_tool_result response) enabling subagents to use parent's MCP connections
- Added MCPToolMetadata to pass tool schemas from parent to worker
- Updated executor to handle MCP proxy calls and pass serialized data in payload
- Updated worker to use serialized auth/models when available and create MCP
proxy tools that route calls through parent
- Extended ToolSession with authStorage, modelRegistry, and mcpManager fields
- Threaded context from sdk.ts through task tool to executor
Benefits:
- Reduced ~200-500ms startup latency per subagent (skips auth/model discovery)
- Single MCP connection pool (no redundant MCP server processes)
- Clean bidirectional protocol with timeout and abort support for MCP calls
- Added `--no-lsp` CLI flag to disable LSP tools, formatting, diagnostics, and warmup for a session.
- Added `enableLsp` option to session configuration for programmatic control of LSP features.
- Added `enableLsp` property to ToolSession interface to propagate LSP state to tools.
- Modified tool filtering logic to exclude LSP tool when disabled.
- Disabled LSP for subtasks spawned via the task tool.
- Added automatic discovery and pre-listing of AGENTS.md files in the system prompt.
- Eliminated runtime searching for AGENTS.md files by providing an authoritative list upfront.
- Added buildAgentsMdSearch function to scan for AGENTS.md files at prompt build time.
- Added listAgentsMdFiles helper with glob pattern matching and node_modules filtering.
- Switched OpenAI Codex to use bundled system prompt matching opencode upstream.
- Changed OpenAI Codex originator identifier from 'codex_cli_rs' to 'opencode'.
- Added User-Agent header with version, platform, and architecture information to Codex requests.
- Removed dynamic GitHub-based instruction fetching and caching logic in favor of static inline instructions.
- Removed buildCodexPiBridge function and pi-codex-bridge module, replacing with inline BRIDGE constant.
- Removed Codex injection info from HTML session exports.
- Removed built-in agent commands: 'architect-plan', 'implement', and 'implement-with-critic' from coding-agent.
- Improved file autocomplete to show directory listing when typing '@' with no query.
- Added fallback to prefix matching when fuzzy search returns no results for file autocomplete.
- Fixed 'fd' tool detection to automatically find 'fd' or 'fdfind' in PATH when not explicitly configured.
- Removed rulebook tool and migrated rules loading to use read tool instead.
- Reorganized prompt files into subdirectories: agents/, compaction/, and system/.
- Added Handlebars helpers for template rendering including list, join, table, codeblock, xml, when, pluralize, and arithmetic operations.
- Migrated prompt template rendering from simple string replacement to Handlebars-style templating with structured data objects.
- Refactored system prompt generation to pass structured data instead of pre-formatted strings.
- Removed rulebookRules property from ToolSession interface and updated all test files accordingly.
- Added automatic Nerd Fonts detection for iTerm, WezTerm, Kitty, Ghostty, and Alacritty terminals.
- Added NERD_FONTS environment variable override to manually control Nerd Fonts symbol preset with '1' or '0' values.
- Changed symbolPreset default to automatically use 'nerd' when Nerd Fonts are detected, otherwise 'unicode'.
- Added hasNerdFonts() function with caching to detect terminal Nerd Fonts support.
- Changed CustomShareFn return type from void to undefined in union type.
- Integrated Handlebars templating engine with custom {{arg}} helper for positional arguments in prompt templates.
- Changed prompt template rendering to use Handlebars instead of simple string replacement.
- Added prompt layout optimization that normalizes indentation and collapses excessive blank lines.
- Added conditional rendering support in system prompt to hide empty context blocks.
- Updated all tool descriptions and prompt templates to use centralized renderPromptTemplate function.
- Added handlebars@4.7.8 as a new dependency with neo-async, source-map, and wordwrap transitive dependencies.
- Added hardened file permissions on agent database directory (700) and database file (600) for improved security.
- Changed auth migration to merge credentials per-provider instead of skipping when any credentials exist.
- Added migration of settings from legacy settings.json file to SQLite database storage.
- Added fallback to legacy auth.json for OAuth credentials when not found in primary storage.
- Added hardenPermissions method to set restrictive chmod on database directory and file.
- Added custom share script support at ~/.omp/agent/share.ts to replace default GitHub Gist sharing.
- Renamed Glob tool to Find tool throughout prompts and documentation.
- Updated project context formatting to use XML-style tags for clearer structure.
- Refined bash tool guidance to prefer dedicated tools over bash for file operations.
- Updated system prompt with clearer tone guidelines emphasizing directness and conciseness.
- Enhanced verification guidance to prefer external feedback loops like tests and linters.
- Added persistent prompt history with SQLite-backed storage using FTS5 for efficient text searching.
- Added Ctrl+R keybinding to search through prompt history in interactive mode.
- Added HistoryStorage class with singleton pattern, deduplication, and prepared statements for database operations.
- Added HistorySearchComponent with scrollable results list, keyboard navigation, and selection highlighting.
- Added setHistoryStorage() method to Editor class for saving and restoring history across sessions.
- Added setFooter(), setHeader(), and setEditorComponent() methods to ExtensionUIContext for custom UI components.
- Exported InteractiveModeOptions type and numerous UI components for programmatic SDK usage.
- Added --no-tools flag to disable all built-in tools and --no-extensions flag to disable extension discovery.
- Changed bash tool output truncation to recalculate on terminal resize instead of using cached width.
- Fixed Wayland clipboard copy (wl-copy) no longer blocking when the process doesn't exit promptly.
- Updated model pricing and renamed nex-agi/deepseek-v3.1-nex-n1 model removing :free suffix.
- Enabled type coercion in JSON schema validation to automatically convert compatible types.
- Improved bash command display to show relative paths for working directories.
- Hidden redundant 'cd' prefix when working directory matches current directory.
- Added calc tool supporting basic mathematical calculations with arithmetic operators, parentheses, and hex/binary/octal literals.
- Added support for multiple API credentials per provider with round-robin distribution across sessions.
- Added file locking on auth.json to prevent concurrent write corruption.
- Added clickable OAuth login URL display in terminal with plain text fallback.
- Updated ask tool prompt to emphasize exhausting other options before asking users.
- Refactored OAuth credential storage to append new credentials instead of replacing existing ones.
- Added `workdir` parameter to bash tool to execute commands in a specific directory without requiring `cd` commands.
- Updated bash tool rendering to display working directory context when `workdir` parameter is used.
- Updated bash tool documentation to recommend using `workdir` parameter instead of `cd dir && ...` pattern.
- Added retry logic with exponential backoff and model fallback for auto-compaction failures.
- Added support for pi/<role> model aliases and automatic model inheritance for subtasks.
- Enhanced error messages with retry-after timing from rate limit headers across all providers.
- Fixed image attachments being dropped when steering messages are queued during streaming.
- Changed edit tool to merge call and result displays into single block.
- Changed model override behavior to persist in settings when explicitly set via CLI.
- Port pi-ai from upstream with Bun-first approach (source files, no dist)
- Add cli_ prefix to tool names in OAuth mode to avoid collisions
- Improve beta header handling with proper deduplication
- Convert codex-instructions.md to Bun text embed
- Strip .js extensions from all imports
- Added caching for system environment detection to improve startup performance.
- Changed GPU detection on Linux to prioritize discrete GPUs (NVIDIA, AMD) over integrated graphics and skip server management adapters.
- Implemented SystemInfoCache interface and file-based persistence in ~/.omp/system_info.json.
- Added disk usage information to automatic environment detection.
- Added versioned SSH host info cache format for automatic schema refresh on version mismatch.
- Added SSH compat shell detection to probe for bash/sh on Windows hosts.
- Expanded SSH tool documentation with shell-specific command examples for Unix, PowerShell, and CMD.
- Refactored buildCompatCommand to sync function with explicit shell type parameter.
- Added automatic remote host OS and shell detection with disk-based caching.
- Added compat mode option for SSH hosts to use POSIX shell compatibility wrapping.
- Added Windows shell support with PowerShell and CMD path escaping functions.
- Updated SSH tool description to display detected shell type per host.
- Simplified SSH tool documentation by removing OS-specific command examples.
- Added automatic environment detection to system prompt including OS, distro, kernel, CPU, GPU, shell, terminal, desktop environment, and window manager information.
- Implemented cross-platform detection functions for Windows, macOS, and Linux environments.
- Added SSH tool for executing commands on remote hosts with project config discovery from ssh.json files.
- Added persistent SSH connection manager with master socket support and automatic cleanup.
- Added SSHFS mount utilities for mounting remote filesystems with automatic unmount on session end.
- Added SSH capability definition with host validation and discovery provider registration.