Repository navigation
Pi Pocket 0.28.0: Pi 1.5, fast session switching, the Running now board - #269
Merged
Merged
Conversation
…ertion Follow-up to #251 by @vitalNohj.
Follow-up to b474df5 (#173 by @piromagnus).
Follow-up to #253 by @piromagnus and #228.
Comment-only. Follow-up to #251 by @vitalNohj, #253 by @piromagnus, and #228.
Comment-only. Follow-up to #251 by @vitalNohj and #228.
…umns Follow-up to #253 by @piromagnus.
… prompt editor The Desktop group reads its items above the markup instead of in an arrow function inside it, and the webhooks sheet uses the editing flag it already has. Follow-up to #251 by @vitalNohj and #243 by @lingmann.
Follow-up to #253 by @piromagnus. Owner decision: $HOME/bin:$PATH and "$value" and "$type" were set as math, because only a digit after the closing $ kept it open. A letter after it now keeps it text too; $x^2$, $a+b$, "$x$, and" and "($y$)" still render.
…he box and PiP show a HEIC as a file A review of the fix round: the queue moved on at the worker's answer, so two workers ran side by side for a moment; it now waits for the exit. The message box (a restored draft) and PiP still asked the server to show a HEIC as a picture, which it cannot (415).
…a folder here
In a session on a workspace URI, design_system (scan, init, read, and the
rest), design_export, the export route, and the design system routes took
the URI ("ssh://host/work") as a relative path on this machine: a scan
read below the server's folder, and init could make .pi there. They now
refuse with "not available for remote workspaces". design_preview, the
canvas check, the prompt's design section, and an artifact's ds/ links
use no design system there. A test covers the tool's refusal.
Follow-up to #173 by @piromagnus.
An audit of the places that turn a session's folder into a local path. In a session on a workspace URI these used it as a relative path on this machine: the browser opened file paths (and ./x resolved below the server's folder), prompt templates read ./.pi/prompts there, project memory ran git there and keyed lessons to that path, a PR watch ran gh there, and PiP's checkout search tested it. Now the browser refuses file URLs there, templates come only from Pi's folder and whole paths, the URI is its own memory project, a PR watch refuses, and PiP skips it. The workspace hook docs list what is blocked. A test covers the watch and the memory project. Follow-up to #173 by @piromagnus.
The built-in modules were folded at the bottom, below the themes, under one line. They are now the first section of Installed, open, with how many are on; your extensions and themes follow.
…g running A ! command in a session whose workspace provider is off threw when the shell task asked for its environment. No entry was written, so the card showed "running" until a reload and then went away. The command now ends as a failed command with the provider's message, as Pi's tool calls do. A test covers it. Follow-up to #173 by @piromagnus.
Recent listed every session folder, workspace URIs too. The picker showed fake://box/work as "box/work", like a local folder, and a tap asked /api/fs for it and got a 400 with developer text. The picker browses this machine only, and the provider's module starts sessions on its addresses, so /api/fs now leaves URIs out of Recent. A test covers it. Follow-up to #173 by @piromagnus.
The stricter closing rule kept "设$z$为实数" and "$x$です" as text: those scripts put no space between words and math. A letter of Han, kana, or Thai after the closing $ no longer counts. Found by the post-fix check.
A linked start without a cwd took the source's folder with no owner check, so an all-session guest could start a session in the owner's remote workspace. Follow-up to #173 by @piromagnus.
A fork, and an edit or retry sent again, starts a session in the source's folder. With a remote folder that let an all-session guest start one with no owner check. Follow-up to #173 by @piromagnus.
…n conversation A fence component now draws under a Guard, with the fence's source as the fallback; it tries again when the source changes (streaming). Follow-up to #253 by @piromagnus.
…English #239: a person who talks to PiP in Chinese opened a session PiP had worked in and found it in English, because every message between agents was Simplified Technical English. The beta 5 fix tied the language to pip.md, which that person does not need and has no reason to write. Now the language is the person's own, with no setting. PiP writes what agents read in the language its person writes to it in (pip.md can still name another). A session writes to its linked sessions and subagents in the language of the person it works for. An agent answers a message from another agent in the language of that message. English stays ASD-STE100; another language keeps the same short, plain style. pip.md no longer carries a language rule of its own. Reported by @mikyan.
…tab kept keptAsks dropped the answers of asks missing from the session's view, also when that view was the copy the tab kept, which may be old. Back in a session whose ask ended while another tab answered a later one, the kept copy's card dropped the later ask's answers from the shared storage. Answers of ended asks now go only by a view the server sent since the session showed (viewSynced in store.js): as it comes, and as a card leaves it. A kept view drops nothing. Follow-up to #282 by @vitalNohj.
… unused Follow-up to #282 by @vitalNohj.
|
Your organization has run out of review credits. Add credits to resume code reviews. |
… mode Follow-up to #244 (@Quintasan). Only tailscale-serve needs tailscaled; the Nix module already adds it only for that mode. Final review R1-A1.
…te never sets it Final review R1-D2. Follow-up to #248 (@vitalNohj).
…s, fences and inline math, and answers Final review R1-H3.
…he pi-ai shim, session tabs, the Background sheet, and Find Final review R1-H4.
…en, over the now line Follow-up to #232 (@vitalNohj). Final review R1-W4.
A draw's closures held the rows of the draw before, so each row element kept the tree it was first drawn in, and each tree kept the one before. Switching sessions or a minute tick left a whole app tree behind each time. The rows of the draw before now live on the ref only while the draw runs, and a layout effect clears them.
Some browsers never answer an IndexedDB open (old WebKit, storage being deleted). The app waited for it before it connected, so the page stayed on "connecting" and Sign out never ended. The open now gives up after one second, like a failed open, and a later call opens it again.
0.27 kept sent text (the up-arrow and Ctrl+R recall) in one key whose records name their person. The first load of 0.28 removed that key, so everybody lost it. When a person signs in, their records now move, before any they already have, to their own key (up to 200). The records of other people stay until they sign in, or until a sign-out removes everything. The old drafts, pastes, and other unscoped keys still go. Follow-up to #266 (@vitalNohj)
Goes with the R1-W2 fix on r028/fix-web.
htm keeps each element that a template makes with no values, and gives the same one again. Such an element keeps the app's tree it was first drawn in. When that tree had session rows (a page that starts on the list), the rows' memo bail-outs linked it to every later tree, so each switch left one behind. `this[0] = 3` in `html` stops htm from keeping elements; templates stay parsed once. The leak test now also starts on the list.
Round 2 R2-R1: the trim of 6b90126 dropped this case. Test by r2-rest; it fails when the cleanup runs off with nothing mounted.
…not start it Round 2 nit from r2-rest.
…ist reads in order Follow-up to #232 (@vitalNohj). Live test live-b N2.
Round 2 nit from r2-web.
… axis is Follow-up to #232 (@vitalNohj). Post-fix check pf-final minor; the tooltip and aria-label keep the schedule's own zone.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pi Pocket 0.28.0 moves to Pi 1.5 and makes the app fast with many sessions: switching sessions is instant, the session list stays quick with hundreds of them, and a Running now board shows what runs and what is scheduled. PiP can be a board in the session's place, Pi's replies draw diagrams and math, and you can add any OpenAI-compatible endpoint.
Warning
This release upgrades your data one way. Pi Pocket 0.28 runs on Pi 1.5. As soon as a session runs on it, Pi Pocket 0.27 can no longer open the data folder. Stop Pi Pocket and back up the whole
~/.pi-pocketfolder first, and do not go back to 0.27 with the same folder. Menu → Update Pi Pocket asks you to confirm, and does not roll back after this update.Important
To update: back up first (above), then Menu → Update Pi Pocket. It installs and restarts by itself. Details under Updating.
Highlights
New
.heicor.heifphoto reaches Pi as a JPEG it can see, and shows in the chat as that JPEG. (HEIC/HEIF attachments: convert to JPEG and note image changes #228, from @zahradil's work in Image attachments: HEIC support and notes for the model #221; Sent HEIC photos show the JPEG the model got, not a file chip #272, by @zahradil)spansand ``` fences #201, by @vitalNohj)onlymode that hides the tools scripts call, as Pi'scodemode.modedoes #260, requested by @wangbinyq)~/.pi-pocket/pip.md, and the sessions it starts answer in your language. (PiP has no AGENTS.md or prompt extension point: shared instructions (e.g. language) don't reach PiP or the sessions it messages #239, reported by @mikyan).figfiles offline, and resync brings a saved system up to date with code that changed, after you agree. (Design system: scan reads Figma .fig files offline #212, Design system: resync a system with changed code #213, by @Haichiu)Improved
artifacttool does pages and cards, andsubagentloads when Pi needs it: Pi Pocket's first request of a new session is about 25% smaller than in 0.27. (artifact and artifact_inline send almost the same schema twice #223, proposed by @Haichiu)PI_POCKET_KEEPALIVE_SECONDSkeeps them open longer, to stop the oddHTTP 502. (Server: configurable idle keep-alive (PI_POCKET_KEEPALIVE_SECONDS) for reverse proxies #284, by @vitalNohj)Fixed
-path,+path,!patternin Pi'sskillssetting) now work as in Pi. (Exclusions in Pi'sskillssetting (-path,!pattern) are ignored #219, reported by @dogagenc)For theme and extension authors
import { Type } from "@earendil-works/pi-ai"still works. Tool arguments are checked with@earendil-works/pi-schema, so validation messages read differently. Watch listeners take one change object, as Pi Durable 1.5 says.host.sessions.start. (experimental, Let an extension start a new session #258, by @vitalNohj)stopandarchive;sendsteers by default and returns{ answers };run.endedcarriesoutcomeandfailure. (experimental, Let an extension stop or archive a linked session #247, Extensions: a run that gives up says so #248, by @vitalNohj)web.presentEntryandpocket.entryPresentation. (experimental, Let an extension present its own inputs in the transcript (web.presentEntry) #203, by @vitalNohj)pocket.fence()andpocket.mathInline(). (experimental, Render Mermaid diagrams and LaTeX in conversations #253, by @piromagnus)conversationUsage()on a conversation route. (experimental, Extension point: read-only token usage totals for a conversation and its subagents #195, requested by @Haichiu)GET /api/pocket/info) and add a badge, a tray menu, and notifications throughwindow.pocketHost. Seedocs/embedders.md. (experimental, Desktop apps: a bridge for badge, tray and notifications, and room for the window's buttons #251, Embedders: Pi Pocket knows nothing of the app around it, and the embedder names its own menu group #270, by @vitalNohj)artifact_inlinetool is gone: look forartifactwithinline: true. Stored calls stay as they were.tabstrip*,presented-*,running-*,home-menu. The old Running now sheet is gone. See the theme surface reference.Updating
~/.pi-pocketfolder. This update changes the data one way.npm ci; a global npm install runsnpm install -g. Both restart by themselves.git pull && npm ci; a global npm install:npm install -g pi-pocket@latest. Then restart Pi Pocket.tailscale serve --https=443 --set-path=/ off.How this release was checked
npm test(1,746 tests),npm run check, lint, and Prettier pass; three browser tests that time out under load pass alone.tailscalecommand, and Nix on macOS.Thanks to @vitalNohj for session switching, the Running now board, PiP as a board, endpoints, and many extension APIs; @Haichiu for icons, avatars, tabs, All artifacts, and Figma scans and resync; @piromagnus for diagrams and math, favorite models, workspace hooks, and Stop on limit waits; @Quintasan for Tailscale Serve; @wangbinyq for background output and the default workspace; @XYenon for grouped task reports; @zahradil for HEIC; @lingmann for webhook prompts; and @aSapien, @dogagenc, @caesarioshiddieq, @mikyan, @krittaprot, @Wiselfx, and @OhiyoX for their reports.
Full changes: v0.27.0...v0.28.0
Closes #183, closes #195, closes #207, closes #215, closes #219, closes #223, closes #239, closes #249, closes #257, closes #260, closes #265, closes #281. Refs #230.