Commit Graph
462 Commits
Author SHA1 Message Date
Mario Zechner 04ef6ccc1a Fix slash command autocomplete Enter behavior
When pressing Enter on a highlighted slash command suggestion (e.g., typing
`/mod` with `/model` highlighted), the completion is now applied before
submitting. Previously, the partial text was submitted instead of the
selected command.

Fixes #49
2025-11-21 21:50:19 +01:00
Mario Zechner 892905570d feat: enhance model cycling with thinking levels and --thinking flag
PR #47 enhancements:
- Add thinking level syntax to --models (e.g., --models sonnet:high,haiku:low)
- First model in scope used as initial model when starting new session
- Auto-apply thinking level when cycling models with Ctrl+P
- Save both model and thinking to session AND settings for persistence
- Simplify UX by removing autoThinkingDisabled flag
- Fix model matching to prioritize exact matches over partial
- Support provider/modelId format (e.g., openrouter/openai/gpt-5.1-codex)

Issue #45:
- Add --thinking CLI flag to set thinking level directly
- Takes highest priority over all other thinking level sources

Closes #45
2025-11-21 21:32:30 +01:00
Mario Zechner 6a67c73330 Merge remote-tracking branch 'origin/main' into feat/model-cycling-enhancements 2025-11-21 21:16:05 +01:00
Mario Zechner 09f14fd837 feat: add /clear command to reset context and start fresh session 2025-11-21 20:59:00 +01:00
Mario Zechner e12d4809cf fix: markdown link rendering for links with identical text and href 2025-11-21 20:14:32 +01:00
Mario Zechner ee990cee22 Release v0.8.5 2025-11-21 12:48:18 +01:00
Mario Zechner 5c3a491211 Fix path completion hanging and autocomplete arrow key behavior
- Fixed catastrophic regex backtracking in extractPathPrefix that caused
  terminal to hang when text contained many / characters (e.g., URLs).
  Replaced complex regex with simple lastIndexOf approach. (#18)
- Fixed arrow keys moving both autocomplete selection and editor cursor
  by adding missing return statement after handling arrow keys in
  autocomplete mode.

Closes #18
2025-11-21 12:47:23 +01:00
Tino Ehrich 898ae7958e feat: enhance model cycling with thinking level support
- Add exact match support with '/' prefix (/gpt-5.1-codex or /provider/model)
- Prefer exact ID matches over partial matches in fuzzy search
- Parse thinking levels from --models flag (pattern:level format)
- Use first scoped model as initial model with its thinking level
- Auto-apply thinking when cycling with Ctrl+P
- Track manual thinking changes to disable auto-switching
- Clear model scope when using /model command
- Support mixed configs: --models sonnet:high,haiku,opus:low
- Silently ignore thinking for models that don't support it
- Only allow Ctrl+P cycling when --models is explicitly provided
- Update help text with examples
- Improve code organization by resolving scope early
2025-11-21 12:02:56 +01:00
Mario Zechner f660fdd188 Release v0.8.4 2025-11-21 05:09:58 +01:00
Mario Zechner 6fdde180ee Release v0.8.3 2025-11-21 04:57:24 +01:00
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