452 Commits
Author SHA1 Message Date
Mario Zechner 45ffe0a0de Release v0.8.0 2025-11-21 03:12:42 +01:00
Mario Zechner 4c12daffb9 WIP: Add theming system with /theme command
- Consolidated theme system into single src/theme/ directory
- Created Theme class with fg(), bg(), bold(), italic(), underline()
- Added dark and light built-in themes with 36 color tokens
- Support for custom themes in ~/.pi/agent/themes/*.json
- JSON schema for theme validation
- Theme selector UI with /theme command
- Save theme preference to settings
- Uses chalk for text formatting to preserve colors

TODO:
- Replace hardcoded colors throughout TUI components
- Apply markdown theming to Markdown components
- Add theme support to all TUI elements
2025-11-20 23:16:59 +01:00
Mario Zechner 17d213ac14 Downgrade Biome to 2.3.5 to fix false positive noUnusedPrivateClassMembers warnings 2025-11-20 22:32:45 +01:00
Mario Zechner 7b29b5136c Updated README.md 2025-11-20 21:17:32 +01:00
Mario Zechner 15e260308b Release v0.7.29
- Show offset/limit in read tool display (e.g., read src/main.ts:100-200)
- Fix PI_CODING_AGENT_DIR env var name in help and code
- Add all API key env vars to help text
2025-11-20 20:48:25 +01:00
Mario Zechner 7408ae3907 Release v0.7.28
- Add message queuing with configurable modes (one-at-a-time/all) (#15)
- Add /queue command to select queue mode
- Add TruncatedText component for proper viewport-aware text truncation
- Queue mode setting persists in ~/.pi/agent/settings.json
- Visual feedback for queued messages with proper ANSI handling
- Press Escape to abort and restore queued messages to editor
2025-11-20 20:39:43 +01:00
Mario Zechner 1889869e9e Release v0.7.27
- Fix slash command submission requiring two Enter presses (#30)
- Fix slash command autocomplete not re-triggering after typos (#29)
2025-11-20 18:56:27 +01:00
Mario Zechner 00142c5c76 Release v0.7.26 2025-11-20 17:29:24 +01:00
Mario Zechner e696d9da3c Fix up prompt for image-tool-result for Gemini 2025-11-20 17:09:32 +01:00
Mario Zechner 6c707ab906 Add custom headers support for models.json
Fixes #39

- Added headers field to Model type (provider and model level)
- Model headers override provider headers when merged
- Supported in all APIs:
  - Anthropic: defaultHeaders
  - OpenAI (completions/responses): defaultHeaders
  - Google: httpOptions.headers
- Enables bypassing Cloudflare bot detection for proxied endpoints
- Updated documentation with examples

Also fixed:
- Mistral/Chutes syntax error (iif -> if)
- process.env.ANTHROPIC_API_KEY bug (use delete instead of = undefined)
2025-11-20 17:05:31 +01:00
buteloandGitHub 5e1c930151 Merge branch 'main' into fix/chutes-ai-provider-400-error 2025-11-20 15:04:29 +01:00
buteloandGitHub 3069b28c92 fix 400 error when trying to use chutes ai provider 2025-11-20 14:56:22 +01:00
Mario Zechner 00decc2634 Release v0.7.25 2025-11-20 13:41:38 +01:00
Mario Zechner 995099da32 Add PR and contributor credits to CHANGELOG 2025-11-20 13:41:19 +01:00
Mario Zechner 320abe1140 Add table of contents to README 2025-11-20 13:20:48 +01:00
Mario Zechner 73b67e62e2 Fix help text to use 'pi' instead of 'coding-agent' 2025-11-20 13:00:38 +01:00
Mario Zechner cc32c45fa5 Add documentation for model cycling feature 2025-11-20 12:58:31 +01:00
Mario ZechnerandTino Ehrich 86997322db Add --models parameter for quick model cycling with Ctrl+P
- Add --models CLI arg accepting comma-separated patterns
- Implement smart matching: prefers aliases over dated versions
- Add Ctrl+P to cycle through scoped models (or all if no scope)
- Show model scope hint at startup
- Update help text with examples

Co-authored-by: Tino Ehrich <tino.ehrich@hey.com>
2025-11-20 12:57:20 +01:00
Mario Zechner a08d8f5f7c Release v0.7.24 2025-11-20 12:41:00 +01:00
Mario Zechner 4852a26a35 Simplify thinking level display in footer (remove 'Thinking:' prefix) 2025-11-20 12:38:55 +01:00
Mario Zechner f914697bed Don't show 'Thinking: off' in footer when thinking is disabled 2025-11-20 12:37:17 +01:00
Mario Zechner bc47add093 Add CHANGELOG and README docs for thinking level cycling feature 2025-11-20 12:35:54 +01:00
Mario Zechner aed141a026 Merge PR #36: Add Shift+Tab thinking level cycling with visual border feedback 2025-11-20 12:34:12 +01:00
Mario Zechner 2de9fb4ef5 Fix superfluous newline in update notification 2025-11-20 12:28:18 +01:00
Mario Zechner d8fb065f1b Fix TypeScript error in version check 2025-11-20 12:00:51 +01:00
Mario Zechner 44b0f43eeb Release v0.7.23 2025-11-20 11:59:17 +01:00
Mario Zechner 686454aa0b Remove the garbage the agent left behind and commited 2025-11-20 11:03:01 +01:00
Tino Ehrich 5a3fa7a873 fix: change thinking level cycling from Ctrl+T to Shift+Tab 2025-11-19 18:07:53 +01:00
Tino Ehrich 401702fda9 fix: change thinking level cycling from Tab to Ctrl+T
Tab key was preventing file path autocomplete from working.
Changed to Ctrl+T to avoid conflict with Tab completion.

- Tab now works normally for file/path autocomplete
- Ctrl+T cycles through thinking levels
- Shows message if model doesn't support thinking
2025-11-19 12:12:23 +01:00
Tino Ehrich f6a2fd805e refactor: improve thinking level display in footer
Change from 'off (tab to cycle)' to 'Thinking: off' for better clarity.
Format: 'model-id • Thinking: [level]'
2025-11-19 12:12:10 +01:00
Tino Ehrich af0f67a0b4 feat: add visual thinking level indicator via border colors
The horizontal borders around the input editor now change color based on
the current thinking level, providing immediate visual feedback:

- off: gray (default)
- minimal: dim blue
- low: blue
- medium: cyan
- high: magenta

The more thinking, the brighter/more vibrant the color.

Changes:
- Add public borderColor property to Editor component (packages/tui)
- Use borderColor instead of hardcoded chalk.gray for borders
- Add getThinkingBorderColor() helper in TuiRenderer
- Add updateEditorBorderColor() to apply color changes
- Update border color when:
  - Cycling with Tab key
  - Selecting via /thinking command
  - Restoring session with thinking level set
2025-11-19 12:12:10 +01:00
Tino Ehrich 52dc7a3e57 feat: add Tab key to cycle through thinking levels
- Add onTab callback to CustomEditor
- Implement cycleThinkingLevel() in TuiRenderer
- Only works when model supports reasoning
- Cycles through: off → minimal → low → medium → high → off
- Update footer to show current thinking level with '(tab to cycle)' hint
- Update header instructions to mention tab for thinking
- Show notification when thinking level changes
2025-11-19 12:12:10 +01:00
Mario Zechner 90cf028218 Release v0.7.22 2025-11-19 01:50:45 +01:00
Mario Zechner f7279d6b47 Release v0.7.21 2025-11-19 00:56:16 +01:00
Mario Zechner 41f51bd93e Release v0.7.20 2025-11-18 22:52:49 +01:00
Mario Zechner 5703a3bf2d Add ANSI-aware word wrapping to TUI components
- Created shared wrapTextWithAnsi() function in utils.ts
- Handles word-based wrapping while preserving ANSI escape codes
- Properly tracks active ANSI codes across wrapped lines
- Supports multi-byte characters (emoji, surrogate pairs)
- Updated Markdown and Text components to use shared wrapping
- Removed duplicate wrapping logic (158 lines total)
2025-11-18 22:26:24 +01:00
Mario Zechner e1381ff21d Release v0.7.18 2025-11-18 22:08:44 +01:00
Mario Zechner 1fa7d1cd73 Release v0.7.17 2025-11-18 17:49:12 +01:00
Mario Zechner 117f0db17e feat(coding-agent): add OAuth authentication for Claude Pro/Max
- Add /login and /logout commands for OAuth flow
- OAuth tokens stored in ~/.pi/agent/oauth.json with 0600 permissions
- Auto-refresh tokens when expired (5min buffer)
- Priority: OAuth > ANTHROPIC_OAUTH_TOKEN env > ANTHROPIC_API_KEY env
- Fix model selector async loading and re-render
- Add bracketed paste support to Input component for long codes
- Update README.md with OAuth documentation
- Add implementation docs and testing checklist
2025-11-18 17:33:33 +01:00
Mario Zechner 433e7a2e6e Fix Anthropic API rejection when resubmitting aborted thinking blocks
- Convert thinking blocks with missing/empty signatures to text blocks
- Prevents 400 error: 'Invalid signature in thinking block'
- Occurs when stream is aborted mid-thinking and message is resubmitted
2025-11-18 14:36:57 +01:00
Mario Zechner f77dfbe173 Release v0.7.16 2025-11-17 14:12:04 +01:00
Mario Zechner acfd1de53f v0.7.15: Anthropic OAuth support 2025-11-17 12:53:57 +01:00
Mario Zechner c28ce3ee03 chore: bump coding-agent to 0.7.14 - fix Anthropic OAuth and Mistral API compatibility 2025-11-17 12:46:59 +01:00
Mario Zechner ed53fcec95 v0.7.13: Unicode input support for TUI editor 2025-11-16 23:08:10 +01:00
Mario Zechner a032d41893 Merge branch 'fix/support-umlauts-and-unicode' 2025-11-16 23:06:06 +01:00
Mario Zechner adc8b0e6fb refactor(tui): Use explicit charCode check for unicode filtering
- Use 'charCodeAt(0) >= 32' instead of open 'else' in handleInput()
- Use same filter in handlePaste() for consistency
- Prevents control characters while allowing all unicode
- More explicit and safer than accepting everything
2025-11-16 23:05:19 +01:00
Mario Zechner b2491aac23 v0.7.12: Custom models/providers support via models.json
- Add ~/.pi/agent/models.json config for custom providers (Ollama, vLLM, etc.)
- Support all 4 API types (openai-completions, openai-responses, anthropic-messages, google-generative-ai)
- Live reload models.json on /model selector open
- Smart model defaults per provider (claude-sonnet-4-5, gpt-5.1-codex, etc.)
- Graceful session fallback when saved model missing or no API key
- Validation errors show precise file/field info in CLI and TUI
- Agent knows its own README.md path for self-documentation
- Added gpt-5.1-codex (400k context, 128k output, reasoning)

Fixes #21
2025-11-16 22:56:24 +01:00
Mario Zechner 8c0a585308 Footer shouldn't explode when no model is given. 2025-11-16 22:35:27 +01:00
Mario Zechner b25db56ea1 Add gpt-5.1-codex to model list 2025-11-16 22:35:09 +01:00
Mario Rodler 8a3eac47c7 Merge branch 'main' into fix/support-umlauts-and-unicode 2025-11-16 21:08:31 +01:00