v0.7.0
Upgrade notes
Breaking changes
None.
Upgrade notes
The standard flow applies:
cd /opt/pinchy
sed -i 's/PINCHY_VERSION=v0.6.0/PINCHY_VERSION=v0.7.0/' .env
docker compose pull && docker compose up -d && docker image prune -fOne last sign-in, then your session survives updates
Until now, every update could silently sign you out. On HTTPS/domain-locked instances the session cookie's name depended on a value that was computed nondeterministically at startup, so it sometimes changed between container versions and orphaned your existing login. v0.7.0 pins that decision to the domain-lock state via a stable, persisted flag, so the cookie name no longer changes across restarts.
One transitional effect: this upgrade may sign you out one final time as the cookie name settles onto the stable value. The flag is reconciled before the server starts, so the very first boot already uses the stable cookie name — no second sign-out, and Secure cookies are never briefly downgraded. After that, logins persist across updates as expected. Nothing to configure — just sign back in once if prompted.
One-click deploys: DigitalOcean Marketplace and CapRover
Spinning up a fresh Pinchy is now a one-click affair on two more platforms: a DigitalOcean Marketplace 1-Click image and a CapRover one-click app template. Existing installs need nothing here — this only adds new install paths. Both templates are version-pinned to the release.
Agent skills
Agents now carry a skills allowlist (migration 0042 adds the column, defaulting to none). This release lays the foundation plus a web-search skill pilot and a market-monitor template. Existing agents are unaffected until you assign skills in their settings.
Pinchy-owned chat transcript
Pinchy now mirrors conversations into its own store (channel_messages) via the pinchy-transcript plugin, instead of relying solely on OpenClaw's session-scoped history. The transcript is immune to /new, daily resets, and compaction, and backs the read-only channel views. Nothing to configure; the mirror starts filling from the upgrade onward.
Durable "paused" error banner
When an agent run fails, the chat now shows a persistent banner above the composer with honest, cause-specific wording, instead of a transient message that vanishes on reload. The active error is stored (chat_session_errors), exposed via GET/dismiss endpoints, and swept once resolved. Reload-safe; nothing to configure.
Audit detail sheet
The audit entry-detail sheet is wider and its JSON payload is now one-click copyable — easier to pull a full audit record for review or an incident report.
Dependencies
- OpenClaw 2026.6.8 (was 2026.6.5) — picked up via
Dockerfile.openclaw, surfaced inGET /api/version. Same protocol train; backward-compatible patch bump. The runtime image is now a slimmer multi-stage build (faster pulls), with no behavioural change.
Database migrations
Three additive migrations run automatically on startup — no manual steps, nothing you'd miss:
0040—channel_messagestable (the Pinchy-owned transcript mirror).0041—chat_session_errorstable (the durable paused-error banner).0042— adds theskillscolumn toagents(defaults to empty) for the agent-skills allowlist.
What's Changed
- fix(test): make upgrade-prune check survive the release auto-finalize (red main) by @clemenshelm in #540
- feat(marketplace): DigitalOcean + CapRover 1-Click listings + version sync by @clemenshelm in #539
- fix(screenshots): clean marketing captures — hide banners, single-row usage stats, realistic seed by @clemenshelm in #538
- feat(release): release:preflight — bespoke staging checklist from upgrade notes by @clemenshelm in #542
- fix(deps): bump undici → 7.28.0 / 8.5.0 and dompurify → 3.4.11 (osv-scan) by @clemenshelm in #554
- feat(transcript): Pinchy-owned conversation transcript (robust Telegram mirror) by @clemenshelm in #553
- fix(openclaw): bump runtime 2026.6.5 → 2026.6.8 (latest) by @clemenshelm in #541
- fix(test): bind fake-ollama context-window test to an ephemeral port by @clemenshelm in #557
- feat(audit): widen entry-detail sheet and make JSON copyable by @clemenshelm in #548
- docs(release): note .env.example bump in release.mjs docstring by @clemenshelm in #564
- docs(glossary): add sourced authority signals to GEO target-query pages by @clemenshelm in #562
- chore: gitignore .agents/ marketing context by @clemenshelm in #565
- fix(release): auto-bump README quick-start pin + fix it to v0.6.0 by @clemenshelm in #566
- perf(docker): multi-stage Pinchy image — fix intermittent CapRover one-click 504 by @clemenshelm in #561
- docs(glossary): link the two free tools from the matching glossary pages by @clemenshelm in #568
- fix(ollama): accept OrbStack host aliases; frame ollama.local as deliberate decoupling by @clemenshelm in #560
- feat(chat): durable, honest agent-error visibility (paused banner) by @clemenshelm in #555
- Use vectorized Pinchy logo (clean SVG) in docs and app by @clemenshelm in #573
- perf(docker): multi-stage Dockerfile.openclaw, drop toolchain + npm cache (−38.6%) by @clemenshelm in #567
- feat(skills): foundation + web-search pilot + market-monitor template (#543) by @clemenshelm in #552
- feat(chat): re-enable the stop button via chatAbort (#550) by @clemenshelm in #563
- fix(openclaw): converge device-pairing approval on the live requestId (setup-wizard E2E flake) by @clemenshelm in #574
- chore(release): v0.7.0 prep — upgrade notes + cut-release runbook hardening by @clemenshelm in #575
- fix(auth): stop logging users out on every update (stable Secure-cookie decision) by @clemenshelm in #559
- fix(skills): resolve SKILL.md from process.cwd(), not __dirname (prod agent-create crash) by @clemenshelm in #576
- test(web): guard the SKILL.md prod-bundle read regression (PR #576) by @clemenshelm in #577
- fix(auth): reconcile the Secure-cookie flag before the server boots by @clemenshelm in #578
- fix(plugins): preserve plugin node_modules across a pinchy-only restart by @clemenshelm in #580
- chore(docs): self-host Umami analytics (tracker → analytics.helmcraft.ai) by @clemenshelm in #581
- fix(chat): refresh conversation title immediately when the first run completes by @clemenshelm in #582
Full Changelog: v0.6.0...v0.7.0