Commit Graph

1783 Commits

Author SHA1 Message Date
Armin Ronacher d93b92baca fix(coding-agent): show changelog URL in update notice 2026-06-20 22:23:25 +02:00
Armin Ronacher 5505316ea2 fix(coding-agent): cache extension imports for session switches
Closes #5905.
2026-06-20 21:07:45 +02:00
Armin Ronacher a1da88aed4 fix(coding-agent): make session path traversal linear
Avoid quadratic path construction when walking deep session branches. On a 600k-entry pathological session, path construction improved from about 20.3s with Array.unshift() to about 35ms with push() plus reverse().

Refs #5804.
2026-06-20 20:29:15 +02:00
Armin Ronacher 8b97e75c6b feat(ai): add chat-template thinking compat
closes #5673
2026-06-19 23:34:17 +02:00
Armin Ronacher 128330e36f fix(coding-agent): preserve untouched lines in fuzzy edit
closes #5899
2026-06-19 20:16:47 +02:00
Vegard Stikbakke 1287b69fe0 fix(coding-agent): run legacy WSL bash commands via stdin
closes #5893
2026-06-19 15:08:25 +02:00
Vegard Stikbakke 373cd6ae52 fix(coding-agent): prioritize provider matches in model selector
closes #5892
2026-06-19 12:25:02 +02:00
Armin Ronacher c60f6a8ab3 feat(coding-agent): expose post-compaction token estimates
closes #5877
2026-06-18 23:01:10 +02:00
Armin Ronacher 7d08c81a09 fix(coding-agent): avoid empty compaction summaries
closes #4811
2026-06-18 22:17:57 +02:00
Armin Ronacher 6b9f3f492f fix(coding-agent): avoid retrying successful overflow compaction
closes #5720
2026-06-18 19:30:14 +02:00
Armin Ronacher aae62dfa87 feat(coding-agent): make bare update self-only 2026-06-18 18:09:03 +02:00
Alexey Zaytsev 2b46f38863 feat(coding-agent): Expose edit-diff for extensions (#5756) 2026-06-18 17:14:39 +02:00
Armin Ronacher d0b46764b1 feat(coding-agent): add automatic theme mode (#5874) 2026-06-18 17:13:47 +02:00
Vegard Stikbakke 51f7523587 fix(coding-agent): include RPC request id on unknown commands
closes #5868
2026-06-18 10:44:59 +02:00
Vegard Stikbakke 008c76f955 feat(coding-agent): export project config dir name 2026-06-18 10:27:11 +02:00
Armin Ronacher 6d5ede31c8 fix(coding-agent): match provider-first model searches 2026-06-17 17:16:39 +02:00
Vegard Stikbakke 068ab5d19b fix(coding-agent): horizontally pan tree selector
Fixes #5830
2026-06-17 14:41:39 +02:00
Armin Ronacher a93f066607 fix(coding-agent): preserve fetch overrides 2026-06-16 20:04:53 +02:00
Armin Ronacher 910508595a feat(coding-agent): add settings http proxy
closes #5790
2026-06-16 18:53:19 +02:00
Armin Ronacher 0680726ac4 fix: upgrade marked to 18.0.5 2026-06-16 17:41:59 +02:00
Armin Ronacher 8f0e9251b9 fix(coding-agent): do not open browser for device code login 2026-06-16 17:35:50 +02:00
Armin Ronacher 7f29e7a369 feat: add provider-scoped environment overrides (#5807) 2026-06-16 17:19:08 +02:00
Armin Ronacher 06d8c54de2 fix(coding-agent): avoid Windows pi update exit assertion
closes #5805
2026-06-16 15:10:23 +02:00
Ramiz Wachtler f8a77f47f2 feat(coding-agent): add Vercel AI Gateway attribution (#5798) 2026-06-16 09:37:37 +02:00
Armin Ronacher 7cfd1af395 fix(coding-agent): keep empty session selector open
closes #5747
2026-06-16 00:39:44 +02:00
Armin Ronacher bee8e9c805 feat(coding-agent): mark experimental sessions in footer 2026-06-15 23:22:23 +02:00
Sviatoslav Abakumov ebdf9b65e7 fix(coding-agent): sort threaded sessions by latest activity in the subtree 2026-06-16 00:39:30 +04:00
Joseph Mearman 3fa4095629 fix: drain stdout before resolving when a child holds the pipe past exit (#5753) 2026-06-15 09:55:45 +02:00
Armin Ronacher bb959aae01 fix(coding-agent): wrap tree help on narrow terminals
closes #5055
2026-06-15 01:25:46 +02:00
Armin Ronacher ba0ec61563 fix(coding-agent): restore terminal on SIGTERM
closes #5724
2026-06-15 00:47:35 +02:00
Armin Ronacher 11b5403fad fix(coding-agent): exit after package commands
closes #5687
2026-06-14 10:53:00 +02:00
Vegard Stikbakke f0989800cb feat: detect first-run terminal theme (#5385) 2026-06-14 07:14:42 +02:00
Armin Ronacher c48f656f88 fix(coding-agent): handle npm package semver ranges
closes #5695
2026-06-14 01:38:51 +02:00
Armin Ronacher 2fbdff9dab fix(coding-agent): fix pnpm self-update bin-dir
closes #5689
2026-06-14 01:31:50 +02:00
Armin Ronacher 9e9fc79478 fix(coding-agent): treat uppercase config values as literals
closes #5661
2026-06-13 21:24:22 +02:00
Armin Ronacher b4bff7f0d0 fix(coding-agent): avoid project trust prompt for update (#5674) 2026-06-12 23:37:16 +02:00
Armin Ronacher adf567c1c6 fix(coding-agent): rechain fork paths without labels
closes #5669
2026-06-12 18:50:31 +02:00
Armin Ronacher 1b2c32c653 fix(coding-agent): resolve authenticated slash model ids
closes #5643
2026-06-12 18:32:42 +02:00
Armin Ronacher 6102dd2084 fix(coding-agent): handle missing export themes
closes #5596
2026-06-12 17:56:43 +02:00
Armin Ronacher 1fc80f4f6c fix(coding-agent): preserve custom fallback thinking
closes #5552
2026-06-12 17:26:42 +02:00
Vegard Stikbakke 1da903983a fix(coding-agent): skip first-time setup for forks (#5627) 2026-06-11 21:36:26 +02:00
Mario Zechner 019b022068 Merge remote-tracking branch 'origin/main' into model-registry 2026-06-11 00:43:04 +02:00
Mario Zechner 6e98573f24 feat(ai): sync model reads, explicit async refresh
Provider.getModels() is sync-only (last-known list; must not throw) with
an optional refreshModels() where dynamic providers fetch. The
sync-or-async union invited latent sync assumptions that would detonate
on the first dynamic provider; async-only reads would force sync
consumer surfaces (extension find/getAll) through Promises. Sync reads
plus an explicit refresh verb keeps the contract single and the
staleness visible.

Models.getModels()/getModel() are sync best-effort reads;
Models.refresh(provider?) rejects with ModelsError(model_source) for a
single provider and is concurrent best-effort across all providers.
createProvider() takes a models array plus an optional refreshModels
fetcher (stored on success, in-flight calls deduped, list unchanged on
rejection). forceRefresh options are gone.

Also finishes the in-progress AuthStorage fallbackResolver removal
(drops the now-unused includeFallback option from getApiKey).
2026-06-10 23:30:04 +02:00
Mario Zechner 8a0903ebf2 feat(ai): compat entrypoint, core-only root barrel (phase 5)
The root barrel is now core-only and side-effect free: types,
createModels/createProvider, auth substrate, lazyStream/lazyApi, faux,
utils. Generated catalogs, api-registry, env-api-keys, images, global
stream functions, and per-API lazy wrappers leave the root.

New @earendil-works/pi-ai/compat preserves the old surface verbatim as
a strict superset of the root: api-dispatch stream/complete with env
key injection, the builtin registration side effect (skip-if-present so
it cannot clobber earlier overrides), deprecated getModel/getModels/
getProviders aliases of the new getBuiltin* reads in providers/all,
lazy api wrappers + setBedrockProviderModule, and image generation.
Compat dies with the coding-agent ModelManager migration.

Packaging: exports map gains ./compat, ./providers/*, ./api/*;
sideEffects array lists only the effectful modules.

Old-global imports across agent/coding-agent/examples and pi-ai tests
switch to /compat (path-only; compat is a superset). The coding-agent
extension loader resolves the pi-ai ROOT specifier to compat, so
existing user extensions using the old global API keep working at
runtime until compat is removed. vitest configs alias /compat to src;
browser smoke imports old globals from /compat.
2026-06-10 21:17:12 +02:00
Vegard Stikbakke 406a2214aa fix(coding-agent): refine setup copy 2026-06-10 19:55:19 +02:00
Vegard Stikbakke 0ab2aa86af feat(coding-agent): add experimental first-time setup flow (#5587)
Behind PI_EXPERIMENTAL=1, show a first-time setup dialog on interactive startup when the default agent directory is used and settings.json does not exist. The dialog preselects the detected terminal appearance with an explicit dark/light choice (live preview) and asks for opt-in analytics data sharing. Submitting writes settings.json, which serves as the completion marker; opting in stores a generated trackingId. Escape at any point skips out of setup.
2026-06-10 12:11:49 +02:00
haoqixu aa03982169 fix(coding-agent): parse :thinking suffix from custom model IDs in fallback path
Fixes #5552
2026-06-10 02:01:35 +08:00
Mario Zechner 143b251e77 Merge branch 'main' into prompt-template-defaults 2026-06-09 14:23:00 +02:00
Mario Zechner ae7a885da2 Closes #5045, /new should not persist if original session was ephemeral 2026-06-09 14:17:33 +02:00
Mario Zechner b7e721cb38 feat(tui): support autocomplete trigger characters
closes #4703
2026-06-09 14:15:39 +02:00