Commit Graph

1654 Commits

Author SHA1 Message Date
Mario Zechner 8eae92cbb7 docs(coding-agent): tighten authentication section in README 2026-01-25 21:42:55 +01:00
Mario Zechner 726e0a4b5b docs(coding-agent): rewrite authentication.md with proper structure
- Subscriptions first (OAuth providers)
- Clear API keys table
- Auth file format
- Cloud providers section (Azure, Bedrock, Vertex)
- Resolution order
- Troubleshooting
2026-01-25 21:42:20 +01:00
Mario Zechner 8d11d1e2f3 docs(coding-agent): remove incorrect prompt cache note from OpenAI Codex 2026-01-25 21:40:45 +01:00
Mario Zechner d9e87d26c4 docs(coding-agent): reorder auth section - subscriptions first, then API keys 2026-01-25 21:39:41 +01:00
Mario Zechner 5946c8211c docs(coding-agent): rename API Keys to Authentication 2026-01-25 21:37:56 +01:00
Mario Zechner 1b705a92b8 docs(coding-agent): move OAuth details to docs/authentication.md, simplify README 2026-01-25 21:37:25 +01:00
Mario Zechner e112d2a917 docs(coding-agent): move terminal setup to docs/terminal-setup.md 2026-01-25 21:34:07 +01:00
Mario Zechner d7410fafc0 docs(coding-agent): show how to run pi after install 2026-01-25 21:32:34 +01:00
Mario Zechner 455d576d70 docs(coding-agent): move shell aliases to its own section (not Windows-specific) 2026-01-25 21:31:41 +01:00
Mario Zechner 10f530f605 docs(coding-agent): remove binary mentions from installation 2026-01-25 21:30:46 +01:00
Mario Zechner 1a8842e355 docs(coding-agent): simplify installation, link to releases for binaries 2026-01-25 21:29:31 +01:00
Mario Zechner 0be68c9b4b docs(coding-agent): clarify that missing description prevents skill loading 2026-01-25 20:58:02 +01:00
Mario Zechner 6cc370c446 docs(coding-agent): clarify how to toggle settings and invoke templates
- skills.md: mention /settings and settings.json for toggling skill commands
- prompt-templates.md: add Usage section with examples
2026-01-25 20:56:24 +01:00
Mario Zechner c12d18483d docs(coding-agent): clarify skill invocation is model behavior 2026-01-25 20:55:10 +01:00
Mario Zechner a4cb9ff02a docs(coding-agent): mention /skill:name as alternative to model invocation 2026-01-25 20:54:39 +01:00
Mario Zechner b29de1c73d docs(coding-agent): note that models often need prompting to use skills 2026-01-25 20:54:10 +01:00
Mario Zechner 77469e1599 docs(coding-agent): link to agentskills.io integration spec for XML format 2026-01-25 20:53:43 +01:00
Mario Zechner ff50d45c04 docs(coding-agent): add instructions for using skills from other harnesses 2026-01-25 20:52:42 +01:00
Mario Zechner dbbb658628 docs(coding-agent): clarify lenient Agent Skills standard compliance 2026-01-25 20:50:55 +01:00
Mario Zechner 3dca4979e4 docs(coding-agent): fix token count in themes.md, rewrite skills.md
- Fixed themes.md: 50 -> 51 color tokens
- Rewrote skills.md to match structure of other docs (TOC, concise sections)
- Removed redundant content from skills.md while keeping all essential info
2026-01-25 20:48:47 +01:00
Mario Zechner 728dc86d49 fix(coding-agent): correct theme schema URL path 2026-01-25 20:46:22 +01:00
Mario Zechner d79eb99cd2 docs(coding-agent): merge theme.md into themes.md, add hot reload info
- Merged theme.md content into themes.md
- Added hot reload documentation
- Updated all references from theme.md to themes.md
- Fixed outdated info (vars not defs, complete example with all 50 tokens)
- Removed dev-focused Implementation section
2026-01-25 20:39:49 +01:00
Mario Zechner 94952bd6c0 docs(coding-agent): update README intro, add packages/prompt-templates/themes docs
- Rewrote README intro to emphasize extensibility and pi packages
- Added Pi Packages section to README
- Created docs/packages.md covering install, sources, manifest, filtering
- Created docs/prompt-templates.md covering format and arguments
- Created docs/themes.md with overview linking to theme.md
2026-01-25 20:33:19 +01:00
Sviatoslav Abakumov 27b27d9441 fix(coding-agent): restore the correct editor after /reload (#949)
This issue occurs when extension uses setEditorComponent. The
restoreEditor() callback was capturing this.editor AFTER
resetExtensionUI() (which restores defaultEditor), then adding that
captured editor back to the container - ignoring any new editor created
by extensions during session_start.

On success, use this.editor (may be custom editor from extension).
On failure, restore the fallback editor (safe defaultEditor state).

Rename restoreEditor to dismissLoader to reflect its actual purpose.
2026-01-25 20:11:09 +01:00
aos 225fcb3830 feat: make session selector keybindings configurable (#948)
I lost my ability to select up and down in the session selector because
of some hardcoded keybindings again... So, I am adding these
configurable keybindings so I can `ctrl+p` to select up :-)

### Changes

Adds 4 new keybinding actions for the session picker (/resume):
- `toggleSessionPath` (ctrl+p) - toggle path display
- `toggleSessionSort` (ctrl+r) - toggle sort mode
- `deleteSession` (ctrl+d) - delete selected session
- `deleteSessionNoninvasive` (ctrl+backspace) - delete when query empty

Refactors session-selector to use `kb.matches()` instead of hardcoded key checks.
2026-01-25 20:08:11 +01:00
Mario Zechner 4bb21b7f5f fix(coding-agent): change sort keybinding from Ctrl+N to Ctrl+S in /resume picker
Also add changelog entries for #863 session rename feature.
2026-01-25 19:43:16 +01:00
Sergii Kozak b5873507c1 Rename session from /resume session list (#863)
* Add session renaming in interactive mode resume picker

Session list now displays last message timestamp as modified time
instead of file mtime. Ctrl+N enters rename mode in the interactive
resume picker, allowing quick session renaming without leaving the
selector. Rename hint is shown only in interactive mode, not in the
CLI --resume picker./

* Add docs entry for renaming in picker

* Update shortcut to ctrl+r for session renaming
2026-01-25 19:42:34 +01:00
Armin Ronacher 5555864c57 Fixes distributed themes breaking /export (#946)
Thanks
2026-01-25 19:26:54 +01:00
Li Yang 1675824ed3 Add active path highlighting in html exports (#929)
* fix(coding-agent): HTML export sidebar click scrolls instead of truncating branch

Previously, clicking a message in the sidebar tree would set that message
as the new leaf, causing getPath() to only return messages up to that point
and hiding all messages below it.

Now handleTreeNodeClick() checks if the clicked entry is on the current path:
- If yes: just scrolls to it without re-rendering
- If no: finds the actual leaf of that branch and navigates to it, then
  scrolls to the clicked message

Added childrenMap for parent->children lookup and findBranchLeaf() to
traverse down to a branch's leaf.

* fix(coding-agent): HTML export sidebar click scrolls instead of truncating branch

Previously, clicking a message in the sidebar tree would set that message
as the new leaf, causing getPath() to only return messages up to that point
and hiding all messages below it.

Now handleTreeNodeClick() checks if the clicked entry is on the current path:
- If yes: scrolls to it and updates the active marker
- If no: finds the branch's leaf, navigates to it, then scrolls to clicked message

Adds currentTargetId to track the selected entry separately from currentLeafId
(which branch to display), so the active marker follows user selection.

* most recent path wins

* reuse method

* revert

* feat(coding-agent): highlight active path in HTML export sidebar

- Add subtle accent background tint to in-path nodes
- Dim off-path nodes to 50% opacity (restore on hover)
- Makes current branch visually distinct in tree navigation

* docs(coding-agent): move changelog entry to Unreleased and add attribution

* chore(coding-agent): remove dead code and fix changelog attribution

- Remove unused childrenMap, findBranchLeaf, handleTreeNodeClick, scrollToEntry
- Split changelog entry: navigation (#853 by @mitsuhiko), highlighting (#929 by @hewliyang)
2026-01-25 19:25:44 +01:00
Mario Zechner b1211261be docs(coding-agent): add changelog entry for extension shortcut fix (#947) 2026-01-25 19:21:18 +01:00
Sviatoslav Abakumov f1b1d54955 fix(coding-agent): delegate extension shortcuts instead of copying (#947)
Extension shortcuts registered via registerShortcut() were not firing
when the extension also used setEditorComponent(). This happened because
setEditorComponent() copied onExtensionShortcut from defaultEditor at
creation time, capturing undefined if setupExtensionShortcuts() hadn't
run yet.

The fix is to delegate to defaultEditor.onExtensionShortcut at call
time.
2026-01-25 19:20:51 +01:00
Mario Zechner 0faba293e6 fix(coding-agent): truncate bash hint line to terminal width
Fixes TUI crash on narrow terminals (< 40 chars) when displaying
collapsed bash output with 'earlier lines' hint.

fixes #941
2026-01-25 19:19:41 +01:00
Mario Zechner b0c050582a fix(coding-agent): update test expectations for trailing period in read tool messages 2026-01-25 19:08:52 +01:00
jake dac7474da2 feat(ai): add OpenRouter provider routing support
Allows custom models to specify which upstream providers OpenRouter
should route requests to via the `openRouterRouting` field in model
definitions.

Supported fields:
- `only`: list of provider slugs to exclusively use
- `order`: list of provider slugs to try in order
2026-01-25 03:34:49 +01:00
Mario Zechner d74fd82673 docs(coding-agent): add pi config to CLI Reference 2026-01-25 03:13:58 +01:00
Mario Zechner 150128fd2c feat(coding-agent): add pi config TUI to manage resources
Adds a new 'pi config' command with a TUI to list and toggle package
resources (extensions, skills, prompts, themes).

- Displays resources grouped by source (packages, user, project)
- Subgroups by resource type (Extensions, Skills, Prompts, Themes)
- Toggle enabled/disabled state with space
- Filter resources by typing
- Supports +pattern for force-include, !pattern for exclude
- Properly reads exclusion patterns from settings.json

fixes #938
2026-01-25 03:12:21 +01:00
Mario Zechner ef5149fdf6 Fixes #933 2026-01-25 02:51:05 +01:00
Mario Zechner 6b4188fa0b Fixes #933 2026-01-25 02:47:17 +01:00
Mario Zechner 349c6420c7 fix(coding-agent): setWorkingMessage() now works in agent_start handlers
Extensions calling setWorkingMessage() in agent_start handlers previously
had no effect because the loading animation didn't exist yet. Now the
message is queued and applied once the loader is created.

Fixes #935
2026-01-25 02:37:12 +01:00
Mario Zechner 3e8eb956b3 feat(coding-agent): resolve resources with enabled state 2026-01-25 02:13:24 +01:00
Mario Zechner 9dc2b9b163 docs(coding-agent): document pi-package keyword for npm discoverability 2026-01-25 01:40:26 +01:00
Mario Zechner 353ac792eb chore(gitlab-duo): use pi's own GitLab OAuth client ID 2026-01-25 01:12:50 +01:00
Mario Zechner 7b920f27d2 fix(coding-agent): check npm package version before using cached copy
For temporary npm extensions (-e npm:...):
- Unpinned packages: fetch latest version from registry and reinstall if newer
- Pinned packages: reinstall if cached version doesn't match
2026-01-25 00:57:58 +01:00
Mario Zechner 0d24ddbb03 fix(ai): use model.api instead of hardcoding api type in streaming functions
- anthropic.ts: use model.api instead of hardcoding 'anthropic-messages'
- openai-responses.ts: use model.api instead of hardcoding 'openai-responses'
- gitlab-duo: simplify to use actual model IDs, export MODELS array
2026-01-25 00:52:34 +01:00
Mario Zechner 7019fdb92b fix(gitlab-duo): use Responses API for all GPT models
Ensures consistent tool call ID format when switching between models.
2026-01-25 00:29:05 +01:00
Mario Zechner 758baa9fec refactor: rename custom provider examples
- custom-provider -> custom-provider-anthropic
- gitlab-duo -> custom-provider-gitlab-duo
- Update READMEs with custom provider section
2026-01-25 00:18:13 +01:00
Mario Zechner 7caa08999e fix: use template literal in test.ts 2026-01-25 00:13:44 +01:00
Mario Zechner 7a5cfdaed0 fix: apply extension provider registrations before model resolution
- Extensions register providers via pendingProviderRegistrations
- These were only applied in bindCore() during AgentSession creation
- But model resolution in main.ts happens before session creation
- Fix: apply pending registrations immediately after loading extensions
- Also fix gitlab-duo to pass Authorization header instead of apiKey
2026-01-25 00:13:20 +01:00
Mario Zechner dd01d83e64 fix: use opencode's OAuth client ID for localhost redirects 2026-01-24 23:53:56 +01:00
Mario Zechner 639d706156 fix: use correct GitLab OAuth redirect URI with port 8080 2026-01-24 23:52:04 +01:00