Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2529 commits
Select commit Hold shift + click to select a range
5a0d357
Merge pull request #1275 from haoqixu/feat-model-selector-show-name
badlogic Feb 5, 2026
f63c176
chore: approve contributor markusn
github-actions[bot] Feb 5, 2026
fba9a8a
feat(coding-agent): add SSH URL support for git packages
markusn Feb 5, 2026
d22a84f
chore: approve contributor SamFold
github-actions[bot] Feb 5, 2026
6c6d937
Merge pull request #1287 from markusn/feature/ssh-git-packages
badlogic Feb 5, 2026
5c41e5d
fix(coding-agent): exit early for help/version/export/list-models (fi…
ferologics Feb 5, 2026
6c741cb
Merge pull request #1285 from ferologics/exit-early
badlogic Feb 5, 2026
1614e95
fix(coding-agent): guard malformed tool args in renderers (fixes #1259)
badlogic Feb 5, 2026
91e0976
chore(ai): add claude opus 4.6 model
badlogic Feb 5, 2026
f89b49b
fix(coding-agent): respect ignore files in skill loader
badlogic Feb 5, 2026
b94c178
feat(ai): add Claude Opus 4.6 and GPT-5.3 Codex models
badlogic Feb 5, 2026
8fca53c
docs(coding-agent): add Opus 4.6 and GPT-5.3 Codex to New Features
badlogic Feb 5, 2026
150fdf3
Release v0.52.0
badlogic Feb 5, 2026
c4726e7
Add [Unreleased] section for next cycle
badlogic Feb 5, 2026
b07b72b
feat(ai): add xhigh thinking level support for gpt-5.3 models
badlogic Feb 5, 2026
4c4d787
feat(ai): add adaptive thinking support for Claude Opus 4.6
badlogic Feb 5, 2026
7f42e8a
Release v0.52.1
badlogic Feb 5, 2026
45f9d3a
Add [Unreleased] section for next cycle
badlogic Feb 5, 2026
028fff1
feat(coding-agent): update default models to Opus 4.6 and GPT-5.3 Codex
badlogic Feb 5, 2026
caf4e18
Release v0.52.2
badlogic Feb 5, 2026
898ad73
Add [Unreleased] section for next cycle
badlogic Feb 5, 2026
5a30e16
fix(coding-agent): fallback parse git URLs for unknown hosts
badlogic Feb 5, 2026
61fe132
fix(coding-agent): stabilize pinned git parsing and model default test
badlogic Feb 5, 2026
8abcb35
chore(coding-agent): add unreleased changelog entry for git host fall…
badlogic Feb 5, 2026
f33844f
fix(coding-agent): handle git @ref parsing edge cases and pinned upda…
badlogic Feb 5, 2026
62385e2
docs: forbid git commit --no-verify in agent rules
badlogic Feb 5, 2026
712d0c6
fix(ai,coding-agent): fix Bedrock Opus 4.6 model IDs, cache pricing, …
badlogic Feb 5, 2026
c07277b
fix(ai): set opus 4.6 context window to 200k
badlogic Feb 5, 2026
c3aef01
chore: update unreleased changelog entries
badlogic Feb 5, 2026
7310bcf
Release v0.52.3
badlogic Feb 5, 2026
d27df1a
Add [Unreleased] section for next cycle
badlogic Feb 5, 2026
5f5cd08
fix(coding-agent): respect package.json pi.extensions manifest in set…
badlogic Feb 5, 2026
f57e82f
Release v0.52.4
badlogic Feb 5, 2026
9494fa8
Add [Unreleased] section for next cycle
badlogic Feb 5, 2026
ee53b53
fix(ai): enable xhigh for anthropic opus 4.6
badlogic Feb 5, 2026
9b3ecd3
Release v0.52.5
badlogic Feb 5, 2026
9ce0007
Add [Unreleased] section for next cycle
badlogic Feb 5, 2026
8792ee2
fix(coding-agent): add /quit autocomplete and remove /exit fixes #1303
badlogic Feb 5, 2026
6b0f1fe
fix(coding-agent): centralize package source normalization and local …
badlogic Feb 5, 2026
2d70b8b
chore(coding-agent): classify /exit removal as breaking change in cha…
badlogic Feb 5, 2026
5fd6542
Release v0.52.6
badlogic Feb 5, 2026
abf96f3
Add [Unreleased] section for next cycle
badlogic Feb 5, 2026
c213cb5
chore: approve contributor Soleone
github-actions[bot] Feb 5, 2026
4c91c80
fix(coding-agent): remove extra spacer before tool executions
badlogic Feb 6, 2026
04bde9c
chore: approve contributor virtuald
github-actions[bot] Feb 6, 2026
d1fce2b
fix(ai): disable OpenAI Responses storage by default (closes #1308)
badlogic Feb 6, 2026
d3d3ef4
fix(ai): handle bedrock opus 4.6 adaptive thinking and interleaved beta
markusylisiurunen Feb 6, 2026
dc40774
Merge pull request #1323 from markusylisiurunen/fix/bedrock-opus-4-6-…
badlogic Feb 6, 2026
df527fb
fix(ai): provide mechanism to connect to unauthenticated bedrock prox…
virtuald Feb 6, 2026
a40bf5f
fix(ai): move AWS_BEDROCK_SKIP_AUTH inside Node.js environment check
badlogic Feb 6, 2026
703ee26
refactor(coding-agent): narrow ExtensionRunner emit event type
badlogic Feb 6, 2026
b050c58
fix(agent,coding-agent): resume queued messages after auto-compaction
badlogic Feb 6, 2026
961d3aa
docs: fix test command path for vitest via tsx
badlogic Feb 6, 2026
2668326
fix(coding-agent): chain tool_result extension patches
badlogic Feb 6, 2026
6822691
fix(coding-agent): tighten session_before emit typing and test env fi…
badlogic Feb 6, 2026
b170341
Closes #1328, initialize auto completion list at a later point in time
badlogic Feb 6, 2026
bd646ee
feat(coding-agent): support per-model overrides in models.json
charles-cooper Feb 6, 2026
e9f94ba
feat: better cache support in bedrock (#1326)
haoqixu Feb 6, 2026
fe6f4d3
fix(coding-agent): respect quietStartup on /reload while keeping diag…
badlogic Feb 6, 2026
0232c44
fix(ai,coding-agent): re-export typebox symbols and align docs closes…
badlogic Feb 6, 2026
b0a8d79
fix(ai): guard google oauth node http imports for browser bundlers cl…
badlogic Feb 6, 2026
f5b9eeb
fix(ai): clamp minimal reasoning for gpt-5.3-codex (fixes #1334)
badlogic Feb 6, 2026
6f897c3
fix(coding-agent): document modelOverrides and harden override mergin…
badlogic Feb 6, 2026
2cd55b2
feat(coding-agent): support per-model overrides in models.json
charles-cooper Feb 6, 2026
2f1ab36
fix(coding-agent): document modelOverrides and harden override mergin…
badlogic Feb 6, 2026
dc22b0e
chore(prompts): require independent issue analysis
badlogic Feb 6, 2026
98efcb3
fix(coding-agent): handle compromised auth lock without crashing
badlogic Feb 6, 2026
c35be66
feat(coding-agent): merge custom models with built-ins by id
badlogic Feb 6, 2026
e9749f3
docs(coding-agent): add unreleased new features summary
badlogic Feb 6, 2026
ddd5a65
fix(coding-agent): handle compromised auth lock without crashing
badlogic Feb 6, 2026
76a6a74
feat(coding-agent): merge custom models with built-ins by id
badlogic Feb 6, 2026
c855a77
docs(coding-agent): add unreleased new features summary
badlogic Feb 6, 2026
6b2d8a7
(chore) Changelog update
badlogic Feb 6, 2026
4238b07
Merge branch 'pr-1332-fixups'
badlogic Feb 6, 2026
4eb15a9
Release v0.52.7
badlogic Feb 6, 2026
d39faa7
Add [Unreleased] section for next cycle
badlogic Feb 6, 2026
5c87303
add test cases for interleaved thinking on Bedrock (#1340)
markusylisiurunen Feb 6, 2026
92fdb53
fix(coding-agent): run extension shutdown via clean TUI shutdown path
badlogic Feb 6, 2026
310da43
fix(coding-agent): refresh temporary git extension caches on cache hits
badlogic Feb 6, 2026
6a10a82
chore: approve contributor NateSmyth
github-actions[bot] Feb 6, 2026
2ae6688
feat(antigravity): replace Claude Opus 4.5 with 4.6 (#1345)
calvin-hpnet Feb 7, 2026
f9161c4
fix(coding-agent): add package subcommand help and friendly errors (#…
ferologics Feb 7, 2026
3fb33da
feat(ai): add openrouter "auto" model alias (#1361)
yogasanas Feb 7, 2026
4c582be
chore: approve contributor 7Sageer
github-actions[bot] Feb 7, 2026
228e35a
chore: approve contributor MatthieuBizien
github-actions[bot] Feb 7, 2026
da282f9
chore: approve contributor sumeet
github-actions[bot] Feb 7, 2026
4c2d78f
Add the kill ring and undo features to the Input component (#1373)
Perlence Feb 7, 2026
3cf5e23
fix(coding-agent): propagate autocomplete to custom editors (#1372)
Perlence Feb 7, 2026
08e88f1
fix(antigravity): fixes the tests for antigravitiy opus (#1369)
PriNova Feb 7, 2026
828c40c
Fix the issue of aborting retries when an extension customizes the ed…
Perlence Feb 7, 2026
6a3d6fe
feat(tui, coding-agent): add pasteToEditor to ExtensionUIContext (#1351)
kaofelix Feb 7, 2026
f1335e9
docs: add missing changelog entries for commits since v0.52.7
badlogic Feb 7, 2026
f06d31a
Release v0.52.8
badlogic Feb 7, 2026
d58d2c2
Add [Unreleased] section for next cycle
badlogic Feb 7, 2026
e10a831
fix(coding-agent): use ModelRegistry in custom-compaction example (fi…
Feb 8, 2026
2c3f624
fix(ai): correct opencode context windows for Claude Sonnet 4/4.5
badlogic Feb 8, 2026
0bd205a
chore: approve contributor OlivierBarbier
github-actions[bot] Feb 8, 2026
e1b56c1
feat(coding-agent): add ctx.reload and reload-runtime example closes …
badlogic Feb 8, 2026
82caf06
fix(coding-agent): use tar instead of unzip for .zip extraction on Wi…
badlogic Feb 8, 2026
1caadb2
fix(ai): use parametersJsonSchema for Google tool declarations, rever…
badlogic Feb 8, 2026
b627fe6
chore: approve contributor marchellodev
github-actions[bot] Feb 8, 2026
5d361f4
chore: audit and update changelog entries for v0.52.8..HEAD
badlogic Feb 8, 2026
a6cd254
fix(coding-agent): ensure rg is downloaded at startup alongside fd
badlogic Feb 8, 2026
83931c5
docs(coding-agent): add changelog entry for rg startup download
badlogic Feb 8, 2026
afb7e5e
feat(coding-agent): show tool input schema in /export HTML
badlogic Feb 8, 2026
5b36cac
feat(coding-agent): add -ne, -ns, -np aliases for --no-extensions, --…
badlogic Feb 8, 2026
dae2eb5
fix(subagent): list available agents in unknown-agent error (#1414)
dnouri Feb 8, 2026
9d6fced
docs: add auth.json keys to table and reference to envMap (#1412)
emanuelst Feb 8, 2026
0c9304a
docs(coding-agent): fix RPC mode ctx.hasUI and unsupported methods do…
aliou Feb 8, 2026
b95ae43
Remove OlivierBarbier from APPROVED_CONTRIBUTORS
badlogic Feb 8, 2026
919feb3
chore: approve contributor vedang
github-actions[bot] Feb 8, 2026
ed9255d
ai: update Antigravity system instruction to compact version, fix fla…
badlogic Feb 8, 2026
88ac5ca
fix(coding-agent): treat dot-prefixed extension paths as local
badlogic Feb 8, 2026
c85050b
docs(coding-agent): add changelog entry for local extension path pars…
badlogic Feb 8, 2026
f405018
docs(coding-agent): add custom provider example references
badlogic Feb 8, 2026
c26505c
chore(changelog): audit unreleased entries before patch release
badlogic Feb 8, 2026
cc3eaee
Release v0.52.9
badlogic Feb 8, 2026
fdcd9ab
Add [Unreleased] section for next cycle
badlogic Feb 8, 2026
a90e2fa
docs: add OSS vacation notice to README
Feb 9, 2026
ea9e6a8
chore: temporarily clear approved contributors for OSS vacation
Feb 9, 2026
f9a9120
docs: clarify PR auto-closure during vacation
Feb 9, 2026
ebe40ce
docs: move vacation notice to top with large heading
Feb 9, 2026
34878e7
docs: add vacation notice to coding-agent README
Feb 9, 2026
7ddb7c6
fix(coding-agent): correct Termux package name for fd (#1433)
PriNova Feb 12, 2026
28c0991
Extend interleaved thinking test to Anthropic first-party provider (#…
markusylisiurunen Feb 12, 2026
1e88c5e
feat(ai): add generic metadata field to StreamOptions, closes #1384
badlogic Feb 12, 2026
7eb969d
fix(coding-agent): show unknown context usage after compaction, fix m…
badlogic Feb 12, 2026
cf1353b
test(ai): cover copilot claude messages routing + headers
NateSmyth Feb 6, 2026
0a132a3
feat(ai): route copilot claude via anthropic messages api
NateSmyth Feb 6, 2026
2419412
refactor(ai): fix inconsistencies, trim ai code+replace tests, remove…
NateSmyth Feb 6, 2026
7ccf809
chore(ai): add changelog entry for copilot claude messages routing
badlogic Feb 12, 2026
5634225
fix(coding-agent): honor --model selection, thinking, and --api-key
mitsuhiko Feb 6, 2026
4793f7c
fix(coding-agent): make resolveCliModel sync, update docs and changelog
badlogic Feb 12, 2026
ff5148e
feat(extensions): forward message and tool execution events to extens…
sumeet Feb 12, 2026
6da488a
docs(coding-agent): add #1375 changelog entry and extension event doc…
badlogic Feb 12, 2026
30fd99b
feat: add terminal input hook for extensions
SamFold Feb 5, 2026
ce2ba29
fix(coding-agent): clear extension terminal input listeners on reset
badlogic Feb 12, 2026
fb83307
feat(ai): add gpt-5.3-codex-spark model definition
badlogic Feb 12, 2026
2a29a82
fix(web-ui): make model selector search case-insensitive (fixes #1443)
badlogic Feb 12, 2026
5ddb04f
chore: approve contributor barapa
github-actions[bot] Feb 12, 2026
ed0cfcb
fix(ai): tolerate malformed trailing tool-call JSON in OpenAI streams…
badlogic Feb 12, 2026
31f765f
fix(tui): scope @ fuzzy search to path prefixes\n\ncloses #1423
badlogic Feb 12, 2026
0adce69
fix(coding-agent): tighten git source parsing and local path normaliz…
badlogic Feb 12, 2026
460b891
chore(changelog): audit unreleased entries since v0.52.9
badlogic Feb 12, 2026
2668a11
Release v0.52.10
badlogic Feb 12, 2026
d0543d3
Add [Unreleased] section for next cycle
badlogic Feb 12, 2026
bd04007
Cleanup
badlogic Feb 12, 2026
130c23e
chore(models): add MiniMax M2.5 entries across providers
badlogic Feb 13, 2026
9537919
Release v0.52.11
badlogic Feb 13, 2026
a26a9cf
feat: add configurable transport and codex websocket session caching
badlogic Feb 13, 2026
479eedd
Release v0.52.12
badlogic Feb 13, 2026
6312fc2
Add [Unreleased] section for next cycle
badlogic Feb 13, 2026
9e22d39
fix(tui): enable VT input mode on Windows (#1495)
mrexodia Feb 14, 2026
5133697
Extend OSS vacation to February 23, 2026
badlogic Feb 16, 2026
de2736b
refactor(coding-agent): improve settings storage semantics and error …
badlogic Feb 16, 2026
0a6b0b8
merge: settings manager storage refactor
badlogic Feb 16, 2026
2977c14
refactor(coding-agent): move auth storage to backend abstraction
badlogic Feb 17, 2026
65a3b28
merge: auth storage backend refactor
badlogic Feb 17, 2026
0245b52
feat(ai): add claude sonnet 4.6 model fallback
badlogic Feb 17, 2026
b9a2b6c
docs(coding-agent): clarify AuthStorage constructor breaking change
badlogic Feb 17, 2026
6e4680d
docs(coding-agent): add claude sonnet 4.6 changelog note
badlogic Feb 17, 2026
312af81
docs(ai): add claude sonnet 4.6 unreleased changelog entry
badlogic Feb 17, 2026
ce1410b
Release v0.53.0
badlogic Feb 17, 2026
4ba3e5b
Add [Unreleased] section for next cycle
badlogic Feb 17, 2026
18c7ab8
chore(models): update Gemini 3.1 provider catalogs and antigravity op…
badlogic Feb 19, 2026
18ea1ed
Release v0.53.1
badlogic Feb 19, 2026
5706e66
Add [Unreleased] section for next cycle
badlogic Feb 19, 2026
7207c16
docs(coding-agent): fix 0.53.1 changelog model provider summary
badlogic Feb 19, 2026
39cbf47
feat(coding-agent): discover skills in .agents paths by default
badlogic Feb 19, 2026
76b02a8
Release v0.54.0
badlogic Feb 19, 2026
3a3e37d
Add [Unreleased] section for next cycle
badlogic Feb 19, 2026
cc03210
DCP: core types, store, interceptor, push-down DSL, session hook
nsluss Feb 19, 2026
8e46dff
Add DCP (Dynamic Compaction Protocol) spec
nsluss Feb 22, 2026
d1655da
Merge pull request #1 from hdresearch/dcp-spec
nsluss Feb 22, 2026
930983f
feat(dcp): wire tool interception into agent session
cartazio Feb 22, 2026
98cf7f1
feat: add build-local.sh and Lean/Agda style tool type signatures
cartazio Feb 22, 2026
68dd3ec
chore: gitignore builds/
cartazio Feb 22, 2026
3cb539b
feat: rebrand to punkin-pi
cartazio Feb 22, 2026
d7f308a
docs: add handoff doc, spec copies, provenance notes
cartazio Feb 22, 2026
9e3775a
fix(tui): prevent viewport jump when tool background color changes
cartazio Feb 24, 2026
df2dd35
feat(ai,tui): thinking blocks never hidden, cross-provider CoT persis…
cartazio Feb 24, 2026
7a41e73
fuck you pi, you need to learn to commit
cartazio Feb 24, 2026
aae1836
feat(resource-loader): check ~/.agent/ first for user agent context
cartazio Feb 24, 2026
ff16fc5
feat(resource-loader): ~/.agent/ is authoritative, skips all project …
cartazio Feb 24, 2026
51576b2
fix(dcp): include handle tools in active tools array
cartazio Feb 24, 2026
4ef41fb
fix(cot): strip thinkingSignature so model sees prior thinking
cartazio Feb 24, 2026
9faf508
spec: context manipulation DSL with versioning
cartazio Feb 24, 2026
3db5edd
docs: consolidate specs and docs structure
cartazio Feb 24, 2026
9cc4aba
docs: add root INDEX.md, update README without DCP jargon
cartazio Feb 24, 2026
42e1558
spec: clarify 影武士心 naming, add isekai transformation modes
cartazio Feb 24, 2026
3e9f377
docs+fix: handle prompt + isekai naming clarification
cartazio Feb 24, 2026
3272b58
refactor: rename dcp/ to carter_kit/, externalize prompts
cartazio Feb 24, 2026
087b509
refactor: toolsets by capability, codingTools is superset of readOnly…
cartazio Feb 24, 2026
3488c6e
docs: handoff session 3, add clone safety section to kage-no-bushin
cartazio Feb 24, 2026
2424f67
fix(prompts): load templates relative to execPath in Bun binary
cartazio Feb 24, 2026
4b35060
feat: PVP versioning (0.8.0.0), embed git hash + timestamp in --version
cartazio Feb 24, 2026
757aec4
refactor: generate build-info.ts on every build, gitignore it
cartazio Feb 24, 2026
ce1b9ee
fix(prompt): remove misleading ls/grep/find examples from bash descri…
cartazio Feb 24, 2026
b422069
feat: tool execution model, content-addressable IDs, squiggle tools
cartazio Feb 24, 2026
c92476f
docs: handoff session 4 + spec updates
cartazio Feb 24, 2026
cb280ee
wip staging
cartazio Feb 24, 2026
f0a428b
tweak in handle
cartazio Feb 24, 2026
08403dd
feat(carter-kit): assistant turn bracketing + embedded themes
cartazio Feb 24, 2026
867d00a
feat(resource-loader): ~/.agent/ authoritative skill + context loading
cartazio Feb 27, 2026
9aeedde
feat(carter-kit): content-addressed template loader + boot sequence
cartazio Feb 27, 2026
07f0339
feat: settings TOML support + enableContext1M + anthropic 1M context …
cartazio Feb 27, 2026
4177e1e
maybe this will need to be reverted, lalal
cartazio Feb 27, 2026
fda7355
bracket unification: single render site via bracketId + timing metadata
cartazio Feb 27, 2026
f92a8d2
fix: enableBrackets defaults to false — vanilla assistant brackets by…
cartazio Feb 27, 2026
e105c76
stuff and things
cartazio Feb 27, 2026
9ad31ea
fixed up a bunch of stuff, including turn sigials
cartazio Feb 28, 2026
0d22cb0
feat: XML-style turn brackets
cartazio Mar 1, 2026
f2ffe19
rename DCP → CarterKit/MMU across specs/ and docs/
cartazio Mar 1, 2026
41c1e84
fixed up a bunch of stuff, here it is
cartazio Mar 2, 2026
37ddf72
snapshottt!!!
cartazio Mar 3, 2026
7ad7605
i really should care more about commit discipline, but this is type s…
cartazio Mar 4, 2026
c39b8eb
stuff might work
cartazio Mar 4, 2026
b9e28a9
seems to work good
cartazio Mar 4, 2026
82f4b53
Delete .github directory
cartazio Mar 4, 2026
2d72361
fix: remove assistant message wrapping that caused model echoing
cartazio Mar 6, 2026
bd11fa7
fix: merge thinking into text with squiggle tags, no assistant wrapper
cartazio Mar 6, 2026
0b0ed92
docs: handoff for assistant wrapping fix session
cartazio Mar 6, 2026
103e546
feat: empty turns fix, turn counter persistence, footer + native-ui u…
cartazio Mar 6, 2026
a88e17e
updated ignore and tickles
cartazio Mar 7, 2026
681496f
fix: empty abort suppression, squiggle-wins display policy, abort deb…
cartazio Mar 7, 2026
07e832a
more notes
cartazio Mar 7, 2026
41db080
feat: OpenRouter reasoning format support (Phase 1 provider metadata)
cartazio Mar 7, 2026
8c401e7
feat: Extended sampling parameters (Phase 2 provider metadata)
cartazio Mar 7, 2026
64ab285
feat: Anthropic beta headers metadata (Phase 3 provider metadata)
cartazio Mar 7, 2026
7fcbe94
fix: suppress phantom turn boundaries and dedupe assistant messages
cartazio Mar 7, 2026
08eb0ff
style: strengthen turn boundary frame separators
cartazio Mar 7, 2026
6539cb4
docs: add handoff on provider metadata and turn boundaries
cartazio Mar 7, 2026
4e5df91
fix: stabilize turn brackets and empty-abort rendering
cartazio Mar 7, 2026
e6a935a
fix: suppress anchored empty aborted turn boundaries
cartazio Mar 7, 2026
327a6b7
feat: settings integration for sampling params and Anthropic features
cartazio Mar 7, 2026
28b9837
feat(model-selector): favorites/recents sorting and toggle
cartazio Mar 7, 2026
c430dfc
feat: settings UI for sampling params and Anthropic features
cartazio Mar 8, 2026
cf2c0b9
fix: remove interleaved thinking toggle from settings UI
cartazio Mar 8, 2026
a9cc6b0
docs: handoff for settings integration + stall bug investigation
cartazio Mar 8, 2026
241fdc0
feat: add PI_DEBUG_STREAM=1 instrumentation for stall debugging
cartazio Mar 8, 2026
3907157
fix: retry on empty assistant responses with configurable limits
cartazio Mar 8, 2026
560192a
fix: add Connection: close header to avoid connection reuse bugs
cartazio Mar 8, 2026
fecf9e7
docs: handoff for empty response fix
cartazio Mar 8, 2026
4b1e6a3
fix: force fresh TCP connections with fetchOptions + Connection header
cartazio Mar 8, 2026
b588757
fix: add Connection: close + fetchOptions to OpenAI provider
cartazio Mar 8, 2026
689ca65
docs: update handoff with full fix details and known issue
cartazio Mar 8, 2026
5af01c6
¡ now can have 1m anthropic contexts with correct calcs and toggles
cartazio Mar 8, 2026
995ecf7
fix: Anthropic max_tokens/budget_tokens defaults; add settings intros…
cartazio Mar 9, 2026
88748e9
i believe this is now a working repo
cartazio Mar 9, 2026
0844592
feat: expose maxEmptyRetries and maxEmptyRetryTimeMs settings
nsluss Mar 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
18 changes: 16 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ dist/
*.log
.DS_Store
*.tsbuildinfo
packages/*/node_modules/
# packages/*/node_modules/
packages/*/dist/
packages/*/dist-chrome/
packages/*/dist-firefox/
Expand All @@ -13,6 +13,7 @@ packages/*/dist-firefox/

# Editor files
.vscode/
.zed/
.idea/
*.swp
*.swo
Expand All @@ -23,4 +24,17 @@ packages/*/dist-firefox/
coverage/
.nyc_output/
.pi_config/
tui-debug.log
tui-debug.log
compaction-results/
.opencode/
syntax.jsonl
out.jsonl
pi-*.html
out.html
packages/coding-agent/binaries/
todo.md
builds/
packages/coding-agent/src/build-info.ts

.claude/
.pi/
21 changes: 0 additions & 21 deletions .husky/pre-commit

This file was deleted.

2 changes: 0 additions & 2 deletions .npmrc

This file was deleted.

174 changes: 174 additions & 0 deletions .pi/extensions/diff.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
/**
* Diff Extension
*
* /diff command shows modified/deleted/new files from git status and opens
* the selected file in VS Code's diff view.
*/

import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import { DynamicBorder } from "@mariozechner/pi-coding-agent";
import { Container, Key, matchesKey, type SelectItem, SelectList, Text } from "@mariozechner/pi-tui";

interface FileInfo {
status: string;
statusLabel: string;
file: string;
}

export default function (pi: ExtensionAPI) {
pi.registerCommand("diff", {
description: "Show git changes and open in VS Code diff view",
handler: async (_args, ctx) => {
if (!ctx.hasUI) {
ctx.ui.notify("No UI available", "error");
return;
}

// Get changed files from git status
const result = await pi.exec("git", ["status", "--porcelain"], { cwd: ctx.cwd });

if (result.code !== 0) {
ctx.ui.notify(`git status failed: ${result.stderr}`, "error");
return;
}

if (!result.stdout || !result.stdout.trim()) {
ctx.ui.notify("No changes in working tree", "info");
return;
}

// Parse git status output
// Format: XY filename (where XY is two-letter status, then space, then filename)
const lines = result.stdout.split("\n");
const files: FileInfo[] = [];

for (const line of lines) {
if (line.length < 4) continue; // Need at least "XY f"

const status = line.slice(0, 2);
const file = line.slice(2).trimStart();

// Translate status codes to short labels
let statusLabel: string;
if (status.includes("M")) statusLabel = "M";
else if (status.includes("A")) statusLabel = "A";
else if (status.includes("D")) statusLabel = "D";
else if (status.includes("?")) statusLabel = "?";
else if (status.includes("R")) statusLabel = "R";
else if (status.includes("C")) statusLabel = "C";
else statusLabel = status.trim() || "~";

files.push({ status: statusLabel, statusLabel, file });
}

if (files.length === 0) {
ctx.ui.notify("No changes found", "info");
return;
}

const openSelected = async (fileInfo: FileInfo): Promise<void> => {
try {
// Open in VS Code diff view.
// For untracked files, git difftool won't work, so fall back to just opening the file.
if (fileInfo.status === "?") {
await pi.exec("code", ["-g", fileInfo.file], { cwd: ctx.cwd });
return;
}

const diffResult = await pi.exec("git", ["difftool", "-y", "--tool=vscode", fileInfo.file], {
cwd: ctx.cwd,
});
if (diffResult.code !== 0) {
await pi.exec("code", ["-g", fileInfo.file], { cwd: ctx.cwd });
}
} catch (error) {
const message = error instanceof Error ? error.message : String(error);
ctx.ui.notify(`Failed to open ${fileInfo.file}: ${message}`, "error");
}
};

// Show file picker with SelectList
await ctx.ui.custom<void>((tui, theme, _kb, done) => {
const container = new Container();

// Top border
container.addChild(new DynamicBorder((s: string) => theme.fg("accent", s)));

// Title
container.addChild(new Text(theme.fg("accent", theme.bold(" Select file to diff")), 0, 0));

// Build select items with colored status
const items: SelectItem[] = files.map((f) => {
let statusColor: string;
switch (f.status) {
case "M":
statusColor = theme.fg("warning", f.status);
break;
case "A":
statusColor = theme.fg("success", f.status);
break;
case "D":
statusColor = theme.fg("error", f.status);
break;
case "?":
statusColor = theme.fg("muted", f.status);
break;
default:
statusColor = theme.fg("dim", f.status);
}
return {
value: f,
label: `${statusColor} ${f.file}`,
};
});

const visibleRows = Math.min(files.length, 15);
let currentIndex = 0;

const selectList = new SelectList(items, visibleRows, {
selectedPrefix: (t) => theme.fg("accent", t),
selectedText: (t) => t, // Keep existing colors
description: (t) => theme.fg("muted", t),
scrollInfo: (t) => theme.fg("dim", t),
noMatch: (t) => theme.fg("warning", t),
});
selectList.onSelect = (item) => {
void openSelected(item.value as FileInfo);
};
selectList.onCancel = () => done();
selectList.onSelectionChange = (item) => {
currentIndex = items.indexOf(item);
};
container.addChild(selectList);

// Help text
container.addChild(
new Text(theme.fg("dim", " ↑↓ navigate • ←→ page • enter open • esc close"), 0, 0),
);

// Bottom border
container.addChild(new DynamicBorder((s: string) => theme.fg("accent", s)));

return {
render: (w) => container.render(w),
invalidate: () => container.invalidate(),
handleInput: (data) => {
// Add paging with left/right
if (matchesKey(data, Key.left)) {
// Page up - clamp to 0
currentIndex = Math.max(0, currentIndex - visibleRows);
selectList.setSelectedIndex(currentIndex);
} else if (matchesKey(data, Key.right)) {
// Page down - clamp to last
currentIndex = Math.min(items.length - 1, currentIndex + visibleRows);
selectList.setSelectedIndex(currentIndex);
} else {
selectList.handleInput(data);
}
tui.requestRender();
},
};
});
},
});
}
Loading