Commit Graph
564 Commits
Author SHA1 Message Date
Federico Jaramillo Martinez 8ade238228 feat: add Pi package management settings 2026-07-01 15:34:34 +02:00
Federico Jaramillo Martinez 3f36394c17 fix: wait for git file suggestion probes before fallback 2026-07-01 09:39:59 +02:00
Pi Web Agent 01c75298f9 fix: keep federated docker updates tab visible 2026-06-29 16:12:40 +00:00
Pi Web Agent 4885aa0dd5 fix: clarify Docker checkout runtime guidance 2026-06-29 14:43:53 +00:00
Federico Jaramillo Martinez d165d69f73 feat: add bulk session mutations 2026-06-29 13:34:03 +02:00
Pi Web Agent bd28c93cfe feat: unify Docker entrypoint 2026-06-29 11:27:47 +00:00
Federico Jaramillo Martinez 1edebb1b04 fix: require explicit alternate agent state 2026-06-29 07:56:01 +02:00
Federico Jaramillo Martinez a87479815a fix: inherit dispatcher model for spawned sessions 2026-06-28 16:46:37 +02:00
Federico Jaramillo Martinez 75e2377756 feat: generalize agent runtime config 2026-06-28 16:36:40 +02:00
Federico Jaramillo Martinez 7063c2c3b1 fix: prevent iOS input zoom 2026-06-28 16:11:18 +02:00
Federico Jaramillo Martinez 2009e6a883 fix: keep chat prompt input stable during streaming
Coalesce session status/activity updates into one render per animation
frame instead of one per token, ignore prompt-editor status changes that
do not affect what it displays, and stop per-keystroke draft state from
re-rendering the surrounding template. This prevents streaming-driven
re-renders from interrupting in-progress touch gestures such as the iOS
long-press paste/edit callout.
2026-06-27 08:12:01 +02:00
Jeff Scott Ward 84a485d62e feat: add OMP runtime support 2026-06-26 12:49:58 -04:00
Jeff Scott Ward 4605a4f1d8 refactor: add session route service seam 2026-06-26 12:32:13 -04:00
Federico Jaramillo Martinez cb13af4b88 feat: add manual session cleanup 2026-06-26 15:57:12 +02:00
Federico Jaramillo Martinez 7bcd807867 Merge branch 'main' into chat-bidi-rtl-support 2026-06-26 00:16:01 +02:00
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 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 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 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 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 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
TheOneironaut 801428bc22 Add BiDi support to chat text 2026-06-24 00:07:12 +03: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 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 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 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 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
Federico Jaramillo Martinez e77ab98361 fix(sessions): stop duplicating user message for slash commands
A slash command sent as the first (or any idle) message showed the raw
command text twice until reload: once from the client's optimistic insert
and once from the server's message.append echo, neither of which converges
with the agent's canonical expanded message (e.g. a /skill:* block).

Make commands obey the same source-of-truth contract as prompts:
- client no longer inserts the raw command text optimistically; it shows
  the existing per-session sending indicator instead
- forwarded runtime/skill commands return a bare done result rather than a
  synthetic "Accepted ..." line
- server suppresses the raw message.append echo for command-forwarded
  prompts (threaded through the compaction queue too)

Result: pre-reload state matches reload, with no transient duplicate.
2026-06-17 00:02:04 +02:00