Commit Graph
349 Commits
Author SHA1 Message Date
can1357 9b7596c4aa feat(coding-agent): added theme system with 30+ presets and status line editor
- Added 30+ built-in color themes and comprehensive symbol customization via theme presets and overrides.
- Added status line segment editor with presets, separators, and customizable left/right segments.
- Added Biome CLI-based linter client as alternative to LSP for diagnostics and formatting.
- Added 20MB file size limit for image files to prevent memory issues during serialization.
- Replaced hardcoded Unicode symbols throughout codebase with theme-configurable symbol system.
2026-01-05 00:57:16 +01:00
can1357 9feb1ca97f chore: bump version to 3.14.0 2026-01-04 19:18:29 +01:00
can1357 3ba0315b6f chore: bump version to 3.13.1337 2026-01-04 16:16:35 +01:00
can1357 a13d20b5a3 chore: bump version to 3.9.1337 2026-01-04 16:03:27 +01:00
can1357 4811403bed feat(tui): changed cursor to thin blinking bar, updated status line icons 2026-01-04 15:48:46 +01:00
can1357 eba38cfa6e feat(coding-agent): introduced powerline status bar with git integration
- Replaced FooterComponent with new StatusLineComponent featuring powerline-style segments and Nerd Font icons.
- Added git branch detection with file watching and status tracking with 1-second TTL cache.
- Added setTopBorder() method to Editor component for custom status content in top border.
- Changed Editor component to use rounded box-drawing characters for borders.
- Renamed footer theme properties to statusLine prefix across dark and light themes.
2026-01-04 15:24:39 +01:00
can1357 61a4b52853 chore: bump version to 3.8.1337 2026-01-04 14:24:58 +01:00
can1357 21842d65e4 chore: bump version to 3.7.1337 2026-01-04 04:31:29 +01:00
can1357 0e9bf88e4d chore: bump version to 3.6.1337 2026-01-03 23:30:22 +01:00
can1357 67ad18c4af chore: bump version to 3.5.1337 2026-01-03 21:53:56 +01:00
can1357 6c00216aa8 chore: bump version to 3.4.1337 2026-01-03 19:44:11 +01:00
can1357 13f3eae8c0 feat: introduced TTSR for real-time pattern matching during streaming
- Added Time Traveling Streamed Rules (TTSR) feature for real-time pattern matching and rule injection during streaming.
- Added TtsrManager with configurable settings for context mode, repeat mode, and repeat gap.
- Added TTSR trigger support across all rule discovery sources (builtin, cline, cursor, windsurf).
- Added abort signal handling in agent loop to support stream interruption for TTSR.
- Added TtsrNotificationComponent for displaying rule violation notifications in interactive mode.
2026-01-03 19:43:17 +01:00
can1357 0e7092c21c chore: bump version to 3.3.1337 2026-01-03 18:39:47 +01:00
can1357 a135b65fe8 chore: bump version to 3.1.1337 2026-01-03 18:33:15 +01:00
can1357 bfb5cb13b7 chore: bump version to 3.0.1337 2026-01-03 18:27:32 +01:00
can1357 790a5370bb feat: renamed binary from pi to omp with config migration support
- Renamed CLI binary and package from 'pi' to 'omp' across all platforms and installers.
- Changed environment variable prefix from PI_* to OMP_* with automatic migration support.
- Changed configuration directory from ~/.pi/ to ~/.omp/ with multi-path fallback discovery.
- Added getConfigDirPaths(), findConfigFile(), and readConfigFile() functions for config resolution across .omp, .pi, and .claude directories.
2026-01-03 15:54:45 +01:00
can1357 a8fa0db830 chore: bump version to 2.3.1337 2026-01-03 14:53:38 +01:00
can1357 b3e7e52e6c chore: bump version to 2.2.1337 2026-01-03 14:43:33 +01:00
can1357 937646d0e1 chore: bump version to 2.1.1337 2026-01-03 14:24:01 +01:00
can1357 d657e2cf04 chore: bump version to 2.0.1337 2026-01-03 11:10:57 +01:00
can1357 c8585eae9e chore: bump version to 1.5.1 2026-01-03 11:07:54 +01:00
can1357 257e165aea chore: bump version to 1.5.0 2026-01-03 10:25:51 +01:00
can1357 4aaebfe5a8 fix: resolved race conditions and resource leaks with mutex locks
- Added mutex-based synchronization to prevent race conditions in LSP client, session context, and RPC mode.
- Fixed resource leaks by ensuring stream reader locks are released in try/finally blocks.
- Fixed duplicate processing issues by tracking in-flight operations in runner creation and message writes.
- Fixed event listener mutation during iteration by copying array before emitting.
- Added abort controller cleanup to prevent memory leaks in auto-compaction and retry logic.
2026-01-03 08:00:55 +01:00
can1357 0836b6d12d feat: added centralized winston logger with daily rotation for debugging
- Added centralized file logger with winston and daily rotation to ~/.pi/logs/ directory.
- Exposed logger property to hook and custom tool APIs for extension logging.
- Replaced silent error suppression with debug/warning logging across 20+ catch blocks.
- Removed separate Exa error logger in favor of centralized logging system.
2026-01-03 07:45:23 +01:00
can1357 754da171a4 feat: added interactive /review command with multi-mode selection
- Added interactive /review command with mode selection for base
branch, uncommitted changes, specific commit, or custom
instructions.
- Added subprocess tool registry for extracting and rendering tool
data from subprocess agents.
- Added combined review result rendering with verdict and findings
tree structure.
- Changed bundled commands to be overridable by user/project
commands with same name.
- Removed findings_count parameter from submit_review tool in
favor of automatic counting.
- Added fix npm script for auto-fixable lint issues with unsafe
fixes.
2026-01-03 06:39:04 +01:00
can1357 50ab6b8b1b style: removed .js extension from imports and added node: prefix to builtins 2026-01-03 05:12:25 +01:00
can1357 776ab5eb24 chore: bump version to 1.341.0 2026-01-03 04:00:16 +01:00
can1357 2ee73541e0 chore: add [Unreleased] section for next cycle 2026-01-03 00:31:51 +01:00
can1357 720aae421f chore: bump version to 1.338.0 and update changelogs 2026-01-03 00:30:33 +01:00
can1357 73efb9b520 chore: bump version to 1.337.1 and update changelogs 2026-01-02 23:05:37 +01:00
can1357 e43e6bc236 feat(tui): added TabBar component for horizontal tab navigation
- Added TabBar component to enable horizontal tab navigation with keyboard support.
- Refactored settings selector to use tabbed interface for better organization of Config, Exa, and Plugins sections.
- Added Shift+Space handling via Kitty protocol to fix space insertion in editor.
- Removed redundant LSP explanation text from system prompt for conciseness.
2026-01-02 22:31:27 +01:00
can1357 2be354322d chore: renamed package scope to @oh-my-pi for consistent branding
- Renamed npm package scope from @mariozechner to @oh-my-pi across all packages for consistent branding.
- Removed packages/pods directory and all related pod management functionality.
- Updated import paths and module declarations throughout codebase to reflect new package names.
- Reformatted code with consistent trailing comma removal and ternary operator alignment.
2026-01-02 18:08:23 +01:00
can1357 560c9670a8 feat: added MCP support and plugin system for external tool integration
- Added MCP (Model Context Protocol) support with stdio and HTTP transports for external tool integration.
- Implemented plugin system with install, enable, configure, and doctor commands for extensibility.
- Added 22 Exa MCP tools for web search, LinkedIn, company research, and websets operations.
- Introduced LSP tool with rust-analyzer support for code intelligence (diagnostics, hover, references, code actions).
- Added task tool for delegating work to specialized subagents with parallel execution support.
- Implemented web_search and web_fetch tools with Anthropic and Perplexity provider support.
2026-01-02 17:54:42 +01:00
can1357 47c6849a5a feat(tui): added emergency terminal restore to prevent corrupted state on crashes
- Added emergency terminal restore function to reset terminal state on crashes without requiring instance access.
- Implemented crash handlers for SIGTERM, SIGHUP, uncaught exceptions, and unhandled rejections to ensure clean terminal exit.
- Added active terminal tracking to enable blind restore when no instance is available.
2026-01-02 15:10:14 +01:00
can1357 b85d3f6aa4 merge(pi/main): integrate upstream changes through v0.31.1
Merged 53 commits from pi/main including:
- Export HTML rewrite with tree sidebar and /share command
- Hooks API enhancements (custom status, editor, session management)
- Edit diff preview before tool execution
- TUI fixes (Unicode format chars, OSC 8 hyperlinks, emoji optimization)
- Gemini CLI rate limit retry with server-provided delay
- Various bug fixes and documentation updates

Resolved conflicts by preserving Bun migration (spawn→Bun.spawn,
fs→Bun.file) while accepting upstream's new features and APIs.
2026-01-02 14:34:27 +01:00
can1357 1cee37cf92 build: migrated from Node.js to Bun for native TypeScript support
- Migrated from Node.js to Bun runtime to leverage native TypeScript execution and faster startup times.
- Replaced npm with bun package manager and updated lockfile format.
- Converted Node.js APIs (child_process, fs, readline) to Bun equivalents across all packages.
- Updated shebang lines from node/tsx to bun for CLI entry points.
- Removed TypeScript build step by using source files directly as package entry points.
- Updated CI workflows to use Bun instead of Node.js for installation and testing.
2026-01-02 13:46:05 +01:00
Mario Zechner 0298084a97 Add [Unreleased] section for next cycle 2026-01-02 10:39:42 +01:00
Mario Zechner e32667781b Release v0.31.1 2026-01-02 10:39:08 +01:00
Mario Zechner 7396b1e3c4 fix: export type guard functions at runtime, fixes #397 2026-01-02 10:37:28 +01:00
cursiveandGitHub 19dad587b8 fix(tui): Strip OSC 8 hyperlink sequences in visibleWidth (#396) 2026-01-02 10:32:36 +01:00
Mario Zechner d572cd2886 Add [Unreleased] section for next cycle 2026-01-02 02:00:36 +01:00
Mario Zechner d301eabe13 Release v0.31.0 2026-01-02 01:59:59 +01:00
nathyongandMario Zechner 32ddfe684a tui: only check for emojis in visibleWidth when necessary
The initial render of a session, and any re-draws caused by terminal
resizing are noticeably slow, especially on conversations with 20+
turns and many tool calls.

From profiling with `bun --cpu-prof` (available since bun 1.3.2), the
majority of the rendering (90%) is spent on detection of emojis in the
string-width library, running the expensive `/\p{RGI_Emoji}$/v`
regular expression on every individual grapheme cluster in the entire
scrollback. I believe it essentially expands to a fixed search against
every possible emoji sequence, hence the amount of CPU time spent in it.

This change replaces the `stringWidth` from string-width with a
`graphemeWidth` function that performs a similar check, but avoids
running the `/\p{RGI_Emoji}$/v` regex for emoji detection unless it
contains codepoints that could be emojis.

The `visibleWidth` function also has two more optimisations:
- Short-circuits string length detection for strings that are entirely
  printable ASCII characters
- Adds a cache for non-ASCII segments to avoid recomputing string length
  when resizing
2026-01-02 01:56:11 +01:00
Mario Zechner 33cea88fca Fix crash on Unicode format characters in visibleWidth
Strip all Unicode format characters (category Cf) before passing to
string-width. These are invisible control characters that crash
string-width but have no visible width anyway.

Closes #390
2026-01-01 22:33:09 +01:00
can1357 d00dc33aa3 fix(tui): strip Format chars that crash string-width 2026-01-01 08:41:40 +01:00
Mario Zechner 5d82609578 Add changelog entries for #372 2026-01-01 02:16:51 +01:00
Mr. RcandGitHub a21d1b266f Fix characters (#372)
* Fix cat command

* Fix text rendering crash from undefined code points in bash output

* Revert unintentional model parameter changes from fix cat command commit
2026-01-01 02:16:29 +01:00
Mario Zechner b849a76a07 Add setEditorText/getEditorText to hook UI context, improve custom() API
- Add setEditorText() and getEditorText() to HookUIContext for prompt generator pattern
- custom() now accepts async factories for fire-and-forget work
- Add CancellableLoader component to tui package
- Add BorderedLoader component for hooks with cancel UI
- Export HookAPI, HookContext, HookFactory from main package
- Update all examples to import from packages instead of relative paths
- Update hooks.md and custom-tools.md documentation

fixes #350
2026-01-01 00:04:56 +01:00
Mario Zechner a44660c509 Export wrapTextWithAnsi utility and add handleInput docs
- Export wrapTextWithAnsi from tui package
- Add 'Handling Input' section to README with key detection example
- Document wrapTextWithAnsi in utilities section
2025-12-30 23:28:38 +01:00
Mario Zechner eda73575b1 Expand tui README: Component interface docs and custom component guide
- Document render/handleInput/invalidate methods in Component interface
- Add 'Creating Custom Components' section with:
  - Width constraint warning (lines must not exceed width)
  - Examples using truncateToWidth and visibleWidth
  - ANSI code handling explanation
  - Caching pattern for performance
2025-12-30 23:26:21 +01:00