Commit Graph
455 Commits
Author SHA1 Message Date
Federico Jaramillo Martinez 58a7560e51 Merge pull request #35 from aromancev/fix/mobile-enter-newline
fix: keep Enter as newline in mobile chat composer
2026-06-26 00:15:12 +02:00
Federico Jaramillo Martinez a43c782043 feat: add configurable prompt Enter behavior 2026-06-25 23:34:41 +02:00
Federico Jaramillo Martinez fd386b2d6b feat: add prompt enter behavior setting 2026-06-25 22:55:09 +02:00
Federico Jaramillo Martinez 7e812aa7f5 feat: support general chat file attachments 2026-06-25 21:32:07 +02:00
Andrey Romantsev 32ea809adc fix: keep Enter as newline in mobile chat composer 2026-06-25 18:11:41 +02:00
Federico Jaramillo Martinez 790b36f0ea docs: improve screenshot gallery 2026-06-25 15:50:45 +02:00
Federico Jaramillo Martinez a4ad23545a docs: refresh README overview 2026-06-25 15:39:44 +02:00
Federico Jaramillo Martinez cd5843e8e5 chore: update package lock 2026-06-25 15:20:42 +02:00
Federico Jaramillo Martinez e46d9ecbf8 feat: add safe manual workspace uploads 2026-06-25 15:16:44 +02:00
Federico Jaramillo Martinez f0b779b062 Merge pull request #32 from gilbertwong96/fix/fish-doctor-version-check
fix: run doctor version checks under fish
2026-06-25 14:47:34 +02:00
Federico Jaramillo Martinez 5269a7a7d7 fix: support symlinked CLI entrypoint guard 2026-06-25 14:41:58 +02:00
Federico Jaramillo Martinez f4ae82ab25 Merge pull request #34 from jmfederico/improve-relay-context-containment
docs(relay): add context-contained status baton
2026-06-25 11:54:18 +02:00
Federico Jaramillo Martinez 53073ad01c Merge branch 'main' into improve-relay-context-containment 2026-06-25 11:53:49 +02:00
Federico Jaramillo Martinez fb9d444743 docs(relay): add context-contained status baton 2026-06-25 11:30:49 +02:00
Federico Jaramillo Martinez 3c09915638 Merge pull request #31 from jmfederico/fix/persist-subsession-links
fix: persist tracked subsession links
2026-06-25 11:09:46 +02:00
Federico Jaramillo Martinez 446f588324 Merge branch 'main' into fix/persist-subsession-links 2026-06-25 11:09:18 +02:00
Federico Jaramillo Martinez 56c1c1714e fix: treat missing subsession files as unavailable 2026-06-25 11:08:26 +02:00
Federico Jaramillo Martinez 729635d246 Merge pull request #33 from jmfederico/feat/git-inline-diff
feat: add inline Git diff highlights
2026-06-25 11:01:45 +02:00
Federico Jaramillo Martinez b14205e523 feat: add inline Git diff highlights 2026-06-25 10:57:28 +02:00
Federico Jaramillo Martinez b0b497d493 fix: require exact active subsession files 2026-06-25 09:47:41 +02:00
Federico Jaramillo Martinez 5550c60950 fix: enforce exact subsession recovery links 2026-06-25 09:27:10 +02:00
Gilbert 47c9b66819 fix: run doctor version checks under fish
The doctor "can find npm/pi" checks wrap the version command in a POSIX
subshell, `(cmd --version 2>&1 || true)`. Fish treats `( ... )` as command
substitution syntax and forbids it in command position, so every fish user saw
false-negative failures:

  fish: command substitutions not allowed in command position
  command -v npm && (npm --version 2>&1 || true)

Branch on the detected service shell and emit fish's `begin; ...; end`
grouping for fish, mirroring the existing fish-aware quoting in
serviceShellQuote. Bash and zsh keep the POSIX subshell.

Also guard the `main()` invocation with an ESM main-module check so the CLI
helpers can be imported by tests without side effects, and add a regression
test covering the bash, zsh, and fish command shapes.
2026-06-25 10:54:49 +08:00
Federico Jaramillo Martinez 417b04a23f fix: harden subsession recovery validation 2026-06-25 00:30:16 +02:00
Federico Jaramillo Martinez a99696bd09 fix: persist tracked subsession links 2026-06-25 00:20:19 +02:00
Federico Jaramillo Martinez deb4f9feca Merge pull request #30 from jmfederico/feat/plugin-panel-prompt-context
feat: expose prompt helper to workspace panels
2026-06-25 00:07:55 +02:00
Federico Jaramillo Martinez 9980027cee feat: expose prompt helper to workspace panels 2026-06-24 23:59:39 +02:00
Federico Jaramillo Martinez f6fbf6b851 Merge pull request #25 from jmfederico/cleanup/plugin-api-scope
feat: plugin API — workspace file mutations & prompt editor access
2026-06-24 09:23:53 +02:00
Federico Jaramillo Martinez 3134421652 chore(release): v1.202606.6 2026-06-24 09:17:26 +02:00
Federico Jaramillo Martinez c479a0d54d fix: support pi-ai provider compat entrypoint 2026-06-24 09:15:32 +02:00
Federico Jaramillo Martinez a0dd9e1cd7 Merge branch 'main' into cleanup/plugin-api-scope 2026-06-24 08:49:49 +02:00
Federico Jaramillo Martinez bf36df24fd chore(release): v1.202606.5 2026-06-23 21:37:02 +02:00
Federico Jaramillo Martinez 2bb6e48a8b fix: normalize Windows path suggestions 2026-06-23 20:03:44 +02:00
Federico Jaramillo Martinez c2e2a29847 docs: add PI WEB configuration reference 2026-06-23 19:58:36 +02:00
Federico Jaramillo Martinez 6933d3aa88 fix: guard stale mobile navigation focus 2026-06-23 15:01:05 +02:00
Federico Jaramillo Martinez 4f4c6fa794 fix: proxy remote session reloads 2026-06-23 14:44:24 +02:00
Federico Jaramillo Martinez 8ceadb2a62 docs: replace demo animation with screenshots 2026-06-23 14:12:09 +02:00
Federico Jaramillo Martinez 9cc20d65fb feat: add external path access allowlist 2026-06-23 12:30:30 +02:00
Federico Jaramillo Martinez 997b821717 feat: add check_subsession and an exploratory read_subsession transcript reader
Split subsession inspection into two tools: check_subsession gives a quick
glance (status + latest assistant output), while read_subsession reads through
a child's transcript with role/content filters, full-content substring search
(including tool-call args), optional per-value maxChars truncation that flags
clipped parts, includeToolArgs, and pagination.

Filtering and search run on full untruncated content; truncation is an explicit,
caller-owned final projection (no default) so a narrow read never silently hides
a match. Empty page-windows are distinguished from zero-match results.
2026-06-19 23:48:12 +02:00
Federico Jaramillo Martinez 62c2234b85 fix: avoid duplicate skill loading cards 2026-06-19 23:44:58 +02:00
Federico Jaramillo Martinez 1e8cfe9073 chore(deps): refresh dependencies to latest in-range versions
Ran npm update to refresh the lockfile to the latest versions allowed by
the existing package.json ranges; no declared ranges changed.

Notable bumps:
- @earendil-works/pi-coding-agent 0.79.1 -> 0.79.8
- @earendil-works/pi-agent-core 0.79.3 -> 0.79.8
- @earendil-works/pi-ai 0.79.3 -> 0.79.8
- eslint 10.3.0 -> 10.5.0, typescript-eslint 8.59.2 -> 8.61.1
- vitest 4.1.5 -> 4.1.9, tsx 4.21.0 -> 4.22.4, vite 7.3.3 -> 7.3.5, ws 8.20.1 -> 8.21.0

Out-of-range majors left for a deliberate upgrade. npm audit --omit=dev: 0 vulnerabilities.
2026-06-19 12:59:26 +02:00
Federico Jaramillo Martinez 27bc924d4c fix: persist subsessions setting 2026-06-18 22:17:56 +02:00
Federico Jaramillo Martinez d93110135b fix: dead-key/IME input in terminal (e.g. Swedish ~) 2026-06-18 12:00:03 +02:00
Federico Jaramillo Martinez ab46d7addc feat: add relay skill and distributable skills folder
Add the Relay method skill (execute a long plan as a chain of independent
sessions handing off via spawn_session) under a top-level skills/ folder that
follows the open agent-skills convention, installable with the skills CLI.

Also clarify the changeset-changelog skill: no changeset is needed for changes
outside the npm release allowlist (package.json files), such as repo-only
agent skills under .agents/ and skills/.
2026-06-17 12:17:11 +02:00
Federico Jaramillo Martinez 355ebe8cf8 feat(sessions): add tracked subsessions behind a beta flag
Add spawn_subsession / list_subsessions / read_subsession tools that let an
agent start child sessions it stays attached to: the child records its parent
in the session tree, the parent is notified (as a system-authored custom
message that wakes an idle parent and queues behind in-flight work) when the
child stops working, and the parent can inspect children's status and result.

Gated behind a beta flag, off by default, mirroring spawnSessions: enable via
PI_WEB_SUBSESSIONS, the subsessions config key, or the Settings toggle. Also
requires spawnSessions.

Also fix the release skill so the version step resyncs package-lock.json
(npm install --package-lock-only) and the commit step refuses a release where
package.json and package-lock.json versions disagree.
2026-06-17 12:13:23 +02:00
Federico Jaramillo Martinez ef454f2b65 chore: sync package-lock.json to 1.202606.4
The v1.202606.4 release bumped package.json but left package-lock.json at
1.202606.3, surfacing as a phantom diff after npm install. Sync it.
2026-06-17 12:12:37 +02:00
Federico Jaramillo Martinez ebe65b7565 chore(release): v1.202606.4 2026-06-17 01:11:12 +02:00
Federico Jaramillo Martinez 82db7caeac docs: update changeset to drop removed message accent stripe 2026-06-17 01:04:05 +02:00
Federico Jaramillo Martinez 32d11de38c Rename attachment folder from .pi-web/paste to .pi-web/attachments
Attachments can be pasted, dropped, or uploaded, so 'paste' was too
narrow. Rename the default folder and filename prefix accordingly and
update the changeset reference.
2026-06-17 01:02:33 +02:00
Federico Jaramillo Martinez 81dba2abc9 fix: remove 3px left border on chat bubbles 2026-06-17 00:57:17 +02:00
Federico Jaramillo Martinez 3930505450 Fix stuck "Catching up…" badge after session goes idle
The stream catch-up mode was represented by two fields that could drift:
the private catchupStreamSessionId guard (which suppresses live transcript
events while the in-flight message prefix is missing) and the public
isReceivingPartialStream flag (which drives the badge). The socket reconnect
path (refreshSelectedSession) set the flag from status without updating the
guard, so a later idle status.update was skipped by the guard check and the
badge never cleared.

Route every mutation of the mode through a single setStreamCatchup helper so
the guard and badge can't disagree, and clear the mode on any non-streaming
status for the selected session.
2026-06-17 00:43:53 +02:00