Repository navigation
Pi Pocket 0.28.0: Pi 1.5, fast session switching, the Running now board
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-pocket folder 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
- Fast session switching. A session you opened before shows at once, where you left it, and only what is new comes down. The browser keeps your sessions for the next visit, and clears them when you sign out. (#199, by @vitalNohj)
- A fast session list with hundreds of sessions. With 800 sessions on a slowed phone CPU, the list shows its rows in under 100 ms instead of about 4 s, and most search keys take about 20 ms.
- The Running now board. Running now opens in the conversation's place, with a timeline of each session's scheduled messages beside what runs now, and Cancel and Stop. (#232, by @vitalNohj)
- PiP as a board. Appearance → PiP → Board opens PiP's conversation in the session's place, with one message box shared with the floating PiP. Floating stays the default. (#268, by @vitalNohj)
- Diagrams and math. Pi's replies draw Mermaid diagrams and LaTeX math in your theme's colors; prices like "$5 and $10" stay text. (#253, by @piromagnus)
New
- OpenAI-compatible endpoints. Menu → Providers → OpenAI Compatible → Add: a base URL (Ollama, LM Studio, vLLM, a proxy) and a key or no key; Find models lists its models. Owner only. (#255, by @vitalNohj)
- Tailscale Serve. A new access mode gives your phone an https address on your tailnet, so notifications and dictation work, with nothing public. (#217, #240, #244, by @Quintasan)
- Watch background tasks. The Background sheet shows what a dev server or a build prints, as it comes, and switches between tasks. (#227, by @wangbinyq)
- Ask PiP about a passage. Select words in one of Pi's replies, and PiP's orb beside Reply asks PiP about them, with the session they came from. (#271, by @vitalNohj)
- HEIC photos. A
.heicor.heifphoto reaches Pi as a JPEG it can see, and shows in the chat as that JPEG. (#228, from @zahradil's work in #221; #272, by @zahradil) - All artifacts. A rail button lists every artifact in every session you can see, with its latest version. (#237, by @Haichiu)
- Profile pictures. Add your own photo in Menu → Your name. (#205, by @Haichiu)
- Icons in your colors. The tab icon and the home-screen icon follow your palette. (#184, by @Haichiu)
- Session tabs. Appearance → Switch sessions with → Tabs puts your first nine sessions in a strip above the conversation. Off by default. (#206, by @Haichiu)
- Favorite models. Star models in Providers, and filter the model picker to them. (#169, by @piromagnus)
- Code in your messages. Backticks and fenced code blocks in what you type show as code. (#201, by @vitalNohj)
- Send the other way. While Pi works, Ctrl/⌘+Enter queues when Steer is chosen, and steers when Queue is. (#207, reported by @wangbinyq)
- Codemode Only mode. Menu → Extensions → Built in → Codemode → Mode → Only takes the other tools out of each request; Pi calls them from codemode scripts. (#260, requested by @wangbinyq)
- Instructions for PiP. PiP follows what you write in
~/.pi-pocket/pip.md, and the sessions it starts answer in your language. (#239, reported by @mikyan) - Design systems from more sources. A design system scan reads Figma
.figfiles offline, and resync brings a saved system up to date with code that changed, after you agree. (#212, #213, by @Haichiu) - Edit a webhook's prompt in place, in Menu → Webhooks and watches. (#243, by @lingmann)
- Each session remembers its side panel, and Notes keep an unsaved edit across a reload. (#274, #267, by @vitalNohj)
- Subagents show their model and thinking level. (#273, by @vitalNohj)
- Default workspace in the folder picker, and you can pin it as where new sessions start. (#216, #218, by @wangbinyq)
- A menu button on the wide home screen. (#256, by @vitalNohj)
Improved
- Pi 1.5. Fewer disk writes while Pi answers, and Pi's own fixes and newest models.
- Agent Teams answer by themselves. A linked session's final answer, failure, or stop comes back to the session that started it, and a message to a linked session lands at its next pause, in seconds.
- One turn for the whole queue. Everything waiting in a session's queue goes in together at its next pause.
- A smaller prompt. One
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. (#223, proposed by @Haichiu) - Faster image sends. Images get ready for the model while you write, and files you attached stay in the box across a reload. (#236, by @vitalNohj)
- Pi asks keeps your answers across a switch, a reload, or a restart, until you send or decline. A password field is never kept. (#282, by @vitalNohj)
- Drafts per person. Your message box, PiP's draft, and your ↑ history are kept for you, not for the browser, and leave at sign-out. Your 0.27 history moves to you. (#266, by @vitalNohj)
- One message for tasks that end together, and each person's background tasks get their own report. (#220, by @XYenon)
- Big Pi sessions. "Continue a Pi session" works at any size. (#261, by @vitalNohj)
- Stop during a provider-limit wait, beside Retry now. (#252, by @piromagnus)
- Linked sessions at work show as working while their lead waits on them.
- Claude subscription billing says its risk, and asks first with Anthropic's terms.
- Idle connections behind a reverse proxy.
PI_POCKET_KEEPALIVE_SECONDSkeeps them open longer, to stop the oddHTTP 502. (#284, by @vitalNohj) - Pi checks its work before it calls work done, and says what it did not check.
- Smaller things: Reply to a passage has an Appearance switch and a small popover; queued message buttons are a quiet row; a subagent's status line shows its own spend; archiving a session with repeating schedules says they keep running. (#209, #263, #208, #210, #215, by @vitalNohj, @Haichiu, reported by @caesarioshiddieq)
Fixed
- A message goes once, also after a lost answer or a reload.
- The app's memory stays flat as you switch sessions; it used to grow with each switch.
- The app starts behind a tracker blocker, and the boot screen says why when a file does not load. (#249, reported by @Wiselfx)
- Skill exclusions (
-path,+path,!patternin Pi'sskillssetting) now work as in Pi. (#219, reported by @dogagenc) - A folder Pi Pocket cannot read gets a clear 403, not a 500. (#265, reported by @OhiyoX)
- Nix package install: npm no longer refuses the package's undici override. (part of #230, reported by @aSapien)
- A resize drag let go outside the page now ends, and the list's tabs keep their scroll position.
For theme and extension authors
- Pi 1.5 for drop-ins.
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. - Start a session:
host.sessions.start. (experimental, #258, by @vitalNohj) - Linked sessions:
stopandarchive;sendsteers by default and returns{ answers };run.endedcarriesoutcomeandfailure. (experimental, #247, #248, by @vitalNohj) - Presented inputs:
web.presentEntryandpocket.entryPresentation. (experimental, #203, by @vitalNohj) - Fences and inline math:
pocket.fence()andpocket.mathInline(). (experimental, #253, by @piromagnus) - Token totals:
conversationUsage()on a conversation route. (experimental, #195, requested by @Haichiu) - Workspace providers: a session can work on another machine through an extension's scheme. (experimental, from #173, by @piromagnus)
- Embedders: an app around Pi Pocket can find it (
GET /api/pocket/info) and add a badge, a tray menu, and notifications throughwindow.pocketHost. Seedocs/embedders.md. (experimental, #251, #270, by @vitalNohj) - The
artifact_inlinetool is gone: look forartifactwithinline: true. Stored calls stay as they were. - New theme parts:
tabstrip*,presented-*,running-*,home-menu. The old Running now sheet is gone. See the theme surface reference.
Updating
- Back up first: stop Pi Pocket, then copy the whole
~/.pi-pocketfolder. This update changes the data one way. - From the app: Menu → Update Pi Pocket, and confirm. A git checkout runs
npm ci; a global npm install runsnpm install -g. Both restart by themselves. - By hand: a git checkout:
git pull && npm ci; a global npm install:npm install -g pi-pocket@latest. Then restart Pi Pocket. - Each session's next request misses the prompt cache once, because the prompt and the tools changed. The install grows by about 18 MB (KaTeX, Pele, and the HEIC decoder, which is LGPL-3.0).
- If you used Tailscale Serve in a 0.28 beta and now start in another mode, a beta 1 mount can stay. Remove it with
tailscale serve --https=443 --set-path=/ off.
How this release was checked
- Ten betas, each with its own reviews and live tests on throwaway copies, in use on the owner's server through the week; Greptile reviewed the release pull request through beta 10.
- A final review of the whole release against 0.27.0 by five reviewers, then fresh reviewers on the fixes: it found and fixed a memory growth in the session list, and smaller things.
- Live tests on throwaway copies at 320 to 1920 px in dark and light themes, a 0.27 data folder opened on 0.28, a real-model pass on the real launcher, and the owner's own testing of the final build on his server and his phone, PiP included.
npm test(1,746 tests),npm run check, lint, and Prettier pass; three browser tests that time out under load pass alone.- Not tested: desktop Safari, Firefox, Windows, a screen reader, the real
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