Skip to content

v0.5.2

Choose a tag to compare

@github-actions github-actions released this 03 Oct 13:57
· 1722 commits to main since this release
ac8a7b8

ShipIt v0.5.2

78 commits since v0.5.1. This release keeps a session inside its own network, Compose setup and repository, gives the memory and disk of finished sessions back, supports Git LFS on a server that is not GitHub, makes a session page open faster, and adds the newest models.

Read this before you update

  • Kept files now have a retention period. ShipIt deletes the /persist files and the uploads of an archived or finished session after 60 days, or after 14 days when they use 100 MB or more. For an archived sandbox session that has no remote, it also deletes the checkout. For a session that exists now, the period starts when you install this update. The session row shows the deletion date, and the conversation gets a notice when the files are deleted. Set SESSION_DATA_RETENTION_DAYS=0 to keep the files of every session.
  • A session can no longer reach the ShipIt machine, private networks or the tailnet. This applies in both network modes. A granted SSH destination stays reachable. On a host that cannot run this firewall (for example rootless Docker), ShipIt listens on loopback only.
  • A local install that updates from v0.5.1 with update.sh must run it a second time. From this version on, one run completes the update.
  • ShipIt refuses to run session containers without WORKSPACE_VOLUME. Every shipped deployment sets it.

Sessions stay inside their boundaries

  • A project's Compose setup can no longer read or mount paths outside its own session, through symlinks, ${VAR}, extends, relative sources or settings that reach the Docker host.
  • Only you can give a project's services the Docker socket. The switch is under Project Settings → Deployments → Agent permissions.
  • Repository trust, repository secrets and the Docker socket grant use only the repository address that ShipIt recorded, never one that the workspace supplies.
  • Each browser tab has its own new-session draft, so a grant made in one tab cannot land on the session of another tab.
  • A child session can no longer see its sibling sessions.
  • A secret reaches a Compose service exactly as you stored it, including a value with $ or a trailing newline.

Finished sessions give back memory and disk

  • A session whose pull request is merged or closed moves under Recently resolved at once, and ShipIt stops it about 10 minutes later.
  • A new-session draft that nobody uses stops after 10 minutes.
  • Disk reclaim now also removes orphan session directories, the Codex caches of evicted sessions and old plugin versions. The network sidecars of removed services are stopped.
  • The repository prefetcher no longer clones again the caches that disk cleanup removed. On a busy host this was the largest source of CPU load.

Compose services and plugins

  • A service can mount the session's /persist (persist:/data, or persist/sub:/data for one subdirectory), so it has a writable place that ShipIt keeps.
  • The agent reaches its own Compose services again, by the listed URL and by name. A container left by docker compose run is no longer taken for the service.
  • A plugin command's 2 GiB memory limit can be raised, by the project in shipit.yaml or by the plugin in its own manifest.
  • A dev preview no longer stops loading code when a tool renames a directory in the shared dependency base (Vite's EXDEV error).

Git LFS

  • A project that keeps its LFS objects on its own server can declare the host and a secret in shipit.yaml (lfs: { host, credential }). ShipIt presents that secret to that host only, and the GitHub token stays on github.com.
  • ShipIt does not push a branch whose LFS objects did not upload, and it stops an upload that does not finish in time.
  • A fork takes its LFS objects from the shared store and downloads only what the store does not hold.

Agent and conversation

  • Automatic turns (a rebase, a CI fix, a merge notice, a child's report) wait while the agent waits for your answer to a question or a plan.
  • The agent can restart its own agent container after its turn and continue on the new one. Restart after turn on the update banner now schedules the restart. The restart buttons are named Restart agent container and Restart all, and each restart instruction says where they are.
  • The cross-repository session card and the session-message card have a Decline button, and the agent is told what you did.
  • A permission card that the agent no longer waits for shows Denied, also after a ShipIt restart. A turn that ended during a restart keeps its transcript.
  • A session stays on its subscription account. It moves only when that account cannot serve it, and it never moves back. Sessions no longer switch accounts under Spread evenly while their account has quota.
  • Session settings open from the composer, so a new session can get SSH destinations before its first message.
  • Status card: the conversation scrolls to the end when the pull request merges, manual steps and descriptions can be longer, and the agent can remove finished follow-ups.
  • Stop ends a resident agent process, so a background task cannot start a stopped agent again.
  • A failed Sync with main says what the cause is, and the "Rebasing onto main…" banner no longer stays on the screen.
  • A message sent to a child session immediately after its creation no longer fails the child's first turn.
  • The branch guard judges only the git commands that run in the session container, not commands sent to an SSH destination or text in a prompt.
  • The file viewer shows the file size. On mobile, dictation continues when you tap the mic immediately after you open New Session.

Faster session page

  • A session page no longer downloads every pull request ever made (about 10 MB) on each connection, and it connects once.
  • A status card goes only to the tab that shows its session, and a change in another session no longer renders the whole app again.

Models and agent CLIs

  • Sonnet 5.5 and GPT-6.1 Sol are available to choose. Claude Code is updated to 2.1.284 and the Codex CLI to 0.159.2.
  • ShipIt now reads its model list from the main branch, at startup and every 30 minutes, so a new model needs no release.

Install and maintenance

  • The stable copy of setup.sh now carries the fix for the fresh local install that failed with no such service: compose-helper.
  • A local install replaces idle worker containers from an older build after an update, and contained sessions kept across an update find ShipIt again.
  • Fastify is updated to 5.12.5 (security releases), and the pinned transitive dependencies with new advisories are raised.

Full Changelog: v0.5.1...v0.5.2