Skip to content

Releases: spongioblast/spopi

SPOPI v0.7.2

Choose a tag to compare

@github-actions github-actions released this 04 Oct 22:11

Features

  • Review comments stay as drafts and go to Pi as one review. Add to review keeps a comment, Send review sends them all, and they survive a restart.
  • A git worktree is a project in the sidebar. New worktree creates one, and its menu can merge it back or remove it.
  • Embedded Pi is 1.0.2. Built-in MCP and codemode are available. Settings → MCP adds, removes, and lists servers through pi mcp. Sign-in uses /mcp in the session. Enable, disable, and exposure use Pi's manager in the terminal.
  • An MCP server that a project's .pi/mcp.json turns on, off, or re-exposes says so on its row in Settings → MCP, with the file's path.
  • Tool cards show PNG, JPEG, GIF, and WebP results as thumbnails.
  • Calls a script makes stay grouped under that script's card. A file the script changes still shows in Review.
  • Auto-edit allows codemode and tool search. Each nested call is still gated.
  • The ChatGPT button stays the Codex device-code sign-in, with a hint to run /login in the Pi terminal for ChatGPT on OpenAI.
  • Phone access on Windows has Allow through firewall, which writes one inbound rule for the phone port and the allowed sources after the Windows admin prompt.
  • The chat column stays between 280 px and 600 px.
  • Think and attach live in the composer's More menu so the model name stays visible.
  • The terminal shortcut is Mod+` (backtick) on every platform, including Mac.
  • Settings → General → Language includes Deutsch and Italiano. A German or Italian system language selects them when the choice is System Default.
  • The commit dialog shows who Git will record as the author. If none is set, it asks for a name and email and writes them to Git's config. Settings → General has the same fields.
  • The Git panel can connect a repository to a remote. Add remote… takes a GitHub (or any Git host) URL and can push the branch right away; ↑ publish pushes a branch that has no upstream yet; the branch menu changes or removes a remote. Pull without an upstream now says so instead of showing Git's message.

Fixes

  • Settings pages share one layout: titled cards with the same spacing on every page. Terminal, Dependencies, Models, Advanced Configuration, and the permission mode no longer sit as loose rows, theme swatches show their names, and the Recommended packages banner keeps its buttons on one line. A narrow window keeps those cards instead of shrinking their padding and corners.
  • The Working tree diff keeps its place while Pi is still working. A running turn used to rebuild it on every update, which threw the scroll position back to the top.
  • The commit dialog uses the shared dialog look. When Git has no name or email, it asks for them instead of showing the raw "Author identity unknown" error.
  • Opening another file highlights that file's tab and scrolls the tab strip to it. The editor already showed the file, but the previous tab stayed marked as current, and a tab past the edge of a full strip stayed out of sight.
  • On Windows the interface uses Segoe UI instead of falling back to Arial. The chat input uses the interface font instead of the browser's monospace, and Git diffs use the code font instead of Courier New.
  • Review's empty message lines up with the heading in the secondary text colour, and the @ file menu no longer repeats a root file's name as its path.
  • A new chat's Review says Pi has not changed files yet until Pi edits a file in it. It used to show the changes of another chat in the same project.
  • The code editor and terminal use the regular weight of the bundled Fira Code again instead of drawing all text in bold.
  • The embedded Pi download uses the earendil-works/pi release URL.
  • A scratch profile (SPOPI_APP_DATA_DIR) no longer removes unused projects from the real projects folder at start.
  • On Windows, a terminal whose shell exits is now marked exited instead of staying open with no process.
  • Resume in terminal works in Git Bash when Pi's path has backslashes.
  • Opening a terminal from a narrow window or from Focus now shows it.
  • The top-right Pi button works again. It used to start a new project, so the window flashed and nothing opened. It now shows π and opens the bundled Pi on a new session of the project in a dock tab, and the chat stays put. That tab, like the MCP manager's, is named "Pi" and closes when Pi quits, and closing it reloads SPOPI's Pi so packages and settings changed there apply.
  • Phone access could show only 127.0.0.1 with "No network interface was found". The page asked for the computer's addresses once at startup, often before the host connection was open. It now asks each time the Phone access tab opens, and again when the host connection comes back.
  • Phone access picked the first address it found, often a WSL or Hyper-V adapter a phone cannot reach. It now selects the main network, names each adapter, lists virtual and VPN adapters last, leaves out 169.254 addresses, and remembers the choice.
  • After Pair this phone, the desktop never showed the approval, so pairing could not finish. The prompt was added below the bottom edge of the window, where nothing scrolls. It is now a Pair a phone? dialog on top of everything, with the phone's name, address, and a tier described in plain words. Paired phones no longer receive pairing requests.
  • An allowed phone showed up in Devices only after reloading the window. The list now updates when the request is answered, and the used QR code is cleared.
  • Phone pairing used the same QR code every time, with no secret in it, and anyone on the network could request pairing. Claim numbers counted up, and the device token went to anyone who asked for a claim's result, so another device could pick up the token you approved for your phone. Each Pair click now makes a new secret that works once for 5 minutes. Requests without it are refused, claim ids are random, and the token goes once, only to the address that asked.
  • Turning phone access off left the HTTPS listener running, and changing the interface or port started a second one next to it. Turning it off now closes the listener, a change moves it, and a port that cannot be bound is reported.
  • Allowed sources accepted anything (for example 192.168.8g0.1/32), so one typo silently blocked every phone, and an empty list let every address in. Each entry is now checked as an IPv4 address or range in the page and in the host, and an empty list is refused. The list follows the chosen interface until you type your own, so a saved 127.0.0.1/32 no longer blocks a phone on the LAN. It is applied when you leave the field instead of on every keystroke.
  • The firewall row said "The firewall lets phones in" whenever SPOPI's rule covered the port, even when the rule allowed other addresses (such as an earlier 127.0.0.1), so Windows blocked the phone with no button to fix it. It now compares the rule's addresses with the allowed sources and offers Update firewall rule when they differ. An empty or invalid list no longer writes a rule.
  • A paired phone could list sessions but not chat, even at Full: opening a project, starting a runtime, new chats, and Pi's state were refused or answered with the desktop page, so the composer stayed disabled or a send failed with "UnknownInstance". The phone listener now serves the session routes, and the tiers say what each allows: Control chats (open projects, new chats, send, steer, abort, pick the model), and Full adds the terminal, Git changes, settings, packages, and project management. Phone access, opening things on the desktop, and folder pickers stay desktop only, and a phone's Settings → Phone access page says so instead of showing controls that fail.
  • Phone access turned itself off whenever SPOPI restarted, so a paired phone stopped working until you opened Settings and switched it on again. It now comes back on with the saved interface, port, and sources.
  • A phone without terminal rights no longer sends terminal requests that are always refused.
  • A revoked phone no longer stays in the Devices list with a Revoke button.
  • The tier list in the Pair a phone? dialog opened as a white system list with unreadable text. It uses SPOPI's dark list now, and answering a request in one desktop window closes it in the others.
  • After you allowed a phone in Firefox, it still showed "A paired device is required". Over HTTP/2 Firefox sends each cookie in its own header, and the phone listener read only the first one, so it never saw the device cookie behind an earlier SPOPI cookie. It now reads them all. The cookie is also SameSite=Lax instead of Strict (which iOS browsers withhold on a page opened from the camera's QR scan), lasts 400 days or until the device is revoked instead of ending with the browser session, and is set on a normal page load through a one-time link. A phone without a valid cookie gets a page that says to pair it again.
  • Accept for phones is gone. Every SPOPI update and every UI customization made phones wait until someone accepted the change on the desktop, so asking Pi to change the UI from the phone locked the phone out. The gate protected nothing: the same files run on the desktop, and the host enforces each phone's tier. Phones now load the current UI.
  • The phone's pairing page and its status pages (not paired, link expired, address not allowed) were plain unstyled HTML. They now use SPOPI's dark card and blue accent, show a spinner while the desktop decides, and show errors in red.
  • In Firefox the phone UI stayed a blank dark page. Firefox ignores an import map that comes after a module preload, so the app's imports failed to resolve. The import map now comes first. The phone also no longer probes 127.0.0.1 for local model servers (that is the phone itself), and the web manifest is fetched with the device cookie.
  • After the host connection dropped (a host restart, or a phone switching networks), a window could stay disconnected: the reply to the reconnect threw while writ...
Read more

SPOPI v0.7.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 16:34

First release, and the base the next ones build on. SPOPI runs Pi (pi --mode rpc) with an editor, a terminal, Git, and per-turn review. What each feature does: docs/FEATURES.md.

Download the installer for your platform from the assets below.