Table of Contents
Release Notes Index
Every Scarf release in chronological order. The notes themselves live in releases/v<version>/RELEASE_NOTES.md in the main repo, attached to each GitHub Release as the release body.
Highlights by major
2.7.1 — Patch bundling three bug reports filed against 2.7.0 plus follow-up cleanups in the same neighborhood. #77 Sessions screen empty — pipe-buffer deadlock in SSHScriptRunner (v2.7's batched sessionListSnapshot payload finally crossed macOS's 16–64 KB pipe-buffer threshold for any user with ~150+ sessions); fixed by draining stdout/stderr concurrently via readabilityHandler. #78 Skills "What's New" pill schizophrenia — pill (local file deltas) and Updates tab (upstream version availability) both said "update"; pill scoped to Installed sub-tab and reworded "updated" → "changed". #79 hub search returns nothing visible in Browse — Hermes's "all sources" search routes through the centralized index and skips API sources; "All Sources" search now filters the cached Browse list client-side. Plus narrower pgrep for the gateway probe and port-anchored stop-dashboard (replacing broad pkill -f). New scripts/local-build.sh + BUILDING.md for unsigned Debug builds without an Apple Developer account. Doc fix: BUILDING.md and CONTRIBUTING.md runtime min restored to macOS 14.6 (Sonoma) / Xcode 16.0. Cherry-picked from #76 — thanks to @unixwzrd and @bricelb.
2.7 — The largest perf-focused release since 2.6 (36 commits, no schema bump, no Hermes capability bump). Skeleton-then-hydrate chat + Activity loaders make slow-remote contexts usable: a fetchSkeletonMessages / fetchRecentToolCallSkeleton pair selects only the columns needed to render placeholder rows (NULLs the heavy ones at SQL level), then paged background hydration fills tool calls in 5-id batches; tool-result CONTENT is opt-in via Settings → Display, with per-card lazy-fetch in the inspector pane. L1 single-id whale recovery when a 5-id batch trips the 30s timeout. SSH cancellation propagation through SSHScriptRunner.run + RemoteSQLiteBackend.query via withTaskCancellationHandler — kills abandoned ssh subprocesses within 100ms instead of pinning them to the 30s deadline (fixes "third chat hangs" / "dashboard spins" after rapid switching). In-flight coalescing for loadRecentSessions drops the 2-3× contention seen during file-watcher streams. Loading-state UX hardening: synchronous greying of the chat sidebar on click; phase-typed status ("Spawning hermes acp…" → "Authenticating…" → "Loading session…" → "Loading history…" → "Ready"). Partial-result + mismatch + pinned-model banners replace silent empty-states. New Project from Scratch wizard scaffolds a Scarf-standard skeleton + AGENTS.md marker block, registers it, and hands off to a chat session that auto-activates the bundled scarf-template-author skill. Cron + Keychain mirrors resolved Keychain values into ~/.hermes/.env under marker-bounded $SCARF_<UPPER_SLUG>_<UPPER_FIELD> env vars (cron prompts can finally use secret-typed config fields without the literal keychain:// URI surfacing). Five new dashboard widgets (markdown_file, log_tail, cron_status, image, status_grid) with project-wide auto-refresh; stat gains inline sparklines; typed status enum with lenient decode; structured widget error card. OAuth keepalive cron prevents weeks-of-inactivity expiry; remote OAuth re-auth unblocked; OAuth remove button; resolve_provider_client errors classified into a clear hint. ScarfMon — perf instrumentation harness: 4096-entry in-memory ring buffer + os.Logger backend + signpost-only mode; new measure points across chat / transport / sqlite / sessionLoad / diskIO with payload bytes recorded. In-app release notes via inline <description> HTML in the Sparkle appcast (rendered from releases/v<ver>/RELEASE_NOTES.md by tools/render-release-notes.py).
2.6 — Catch up to Hermes v2026.4.30 (v0.12.0), the largest single Hermes update Scarf has had to follow since v0.10's Tool Gateway. New surfaces — all capability-gated so v0.11 hosts see the v2.5.2 surface unchanged: autonomous Curator (Mac sidebar + iOS panel) — pin / unpin skills, run / pause / resume, three leaderboards, restore archived; multimodal image input in chat (drag/drop + paste on Mac, PhotosPicker on iOS, 1568px JPEG q=0.85 detached); 5 new inference providers in the model picker (GMI Cloud, Azure AI Foundry, LM Studio first-class, MiniMax OAuth, Tencent TokenHub); Microsoft Teams + Yuanbao gateway platforms; read-only Kanban with 5s polling; Skills v0.12 surface (URL install, reload, OFF pill for disabled skills, curator pin badge); cron --workdir field; Settings deltas (cache TTL picker, redaction toggle, runtime metadata footer, Piper TTS, Vercel terminal); ScarfGo gains read-only Webhooks / Plugins / Profiles plus a pre-v0.12 Hermes-version banner. auxiliary.curator aux task replaces flush_memories on v0.12 hosts (preserved on v0.11). Plus a post-merge bug-fix round driven by GitHub issue triage: chat composer typing lag (#67), font-size slider now actually scales rich chat (#68), placeholder ghosting on first keystroke (#65), draft text bleeding between sessions (#62), sent message rendering blank after navigation (#63), background completion notifications (#64), per-message TTS playback (#66), ACP control-message timeout 30s→60s for gateway-contended hosts (#61).
2.5.2 — Patch release with one substantial new feature (iOS chat resilience) plus a stack of fixes. ScarfGo gains 5-attempt exponential reconnect via session/resume/session/load, a NetworkReachabilityService that suspends reconnect attempts while offline, scene-phase aware reconnect on foreground, and per-session draft persistence — phone-sleep, network handoffs, and SSH socket drops no longer cost the agent's work. Cross-platform cached-snapshot fallback (ServerTransport.cachedSnapshotPath) lets Dashboard / Sessions / Activity stay readable while the connection is down. Bounded message-history paging via HermesDataService.fetchMessages(limit:before:) + loadEarlier() replaces the prior unbounded fetch — long sessions stay smooth. Mac fixes: Settings → Model and Credential Pools no longer freeze for 1–2 minutes on remote contexts (#59) — loadProvidersAsync() / loadModelsAsync(for:) dispatch off MainActor. Diagnostics tri-state — missing config.yaml is informational on a fresh Hermes v0.11 install (Hermes lazy-creates it), reads "12/12 passing (2 optional skipped)" instead of "12/14". Credential Pools surfaces OAuth-authed providers (Nous, Spotify, Copilot, Qwen, Gemini) in a parallel section. New ProjectHermesShadowDetector warns when a project-local .hermes/ shadows the server-level config. iOS fixes: #56 Citadel snapshot path now uses executeCommandStream + Citadel-friendly PATH= prefix so missing-sqlite3 errors surface meaningfully; #57 keyboard-dismiss chevron moved to the leading edge so it doesn't stack over the send button. New: chat-start model preflight (ChatModelPreflightSheet) catches missing model/provider before the ACP session opens; Nous Portal live model catalog (NousModelCatalogService); remote-aware admin sheets for profile import/export, backup restore, and template install destination — all mirroring the Add Project pattern from #54.
2.5.1 — Patch release bundling every reported issue against 2.5.0 plus TestFlight-driven iOS fixes. Mac chat O(n)-per-token rendering bog-down on long sessions (#46) — settled bubbles now short-circuit body re-eval via Equatable, trailing-group patch helper replaces full buildMessageGroups() per chunk. Hermes v0.11 profile awareness (#50) — new HermesProfileResolver reads ~/.hermes/active_profile, every derived path follows automatically, SessionInfoBar gains a profile chip. Granular reasons + actionable hint popover on the "Connected — can't read Hermes state" pill (#53). Pill probe and Run Diagnostics no longer disagree (#44) — both now go through a shared SSHScriptRunner that bypasses runProcess's argument quoting. New chat density preferences in Settings → Display (#47 + #48) — Tool calls Full / Compact / Hidden, Reasoning Disclosure / Inline / Hidden, chat font size 85–130%. iOS keyboard now dismissable via swipe + accessory toolbar (#51); first-run Cancel button hidden when there's nothing to cancel back to (#55); opt-in iCloud Keychain sync for SSH keys (#52) — pair iPhone + iPad without onboarding twice. Add Project on remote contexts now hides the local Browse button and shows a Verify-against-remote affordance (#54). Release pipeline gains a post-package codesign / spctl gate (#49). No data migrations.
2.5 — ScarfGo iOS companion ships in public TestFlight + full Hermes v2026.4.23 (v0.11.0) support: /steer non-interruptive guidance, per-turn stopwatch, numbered approval shortcuts, git branch chip in chat header, messages.reasoning_content + sessions.api_call_count columns surfaced. Portable project-scoped slash commands — author at <project>/.scarf/slash-commands/<name>.md and ship via .scarftemplate (schemaVersion 3); Mac authoring tab + iOS read-only browser. New skills: in-app Spotify OAuth sheet + design-md npx prereq check. SKILL.md frontmatter chips (allowed_tools, related_skills, dependencies). "What's New" pill on the Skills tab tracks per-server skill deltas. Mac global Sessions gets project filter + badges (parity with ScarfGo). Cross-platform CronScheduleFormatter, GitBranchService, SkillSnapshotService, SkillPrereqService, ProjectSlashCommandService, SpotifyAuthFlow consolidate into ScarfCore. See Platform Differences for the Mac↔iOS feature matrix.
2.3 — Projects sidebar grows up: folders, rename, archive, search, ⌘1-9 keyboard jumps, per-project Sessions tab, and Scarf-managed AGENTS.md context block injected at chat-start so the agent always knows what project it's in. Catches up to Hermes v0.10.0's Tool Gateway — Nous Portal subscription routing, in-app sign-in, Health-tab visibility for tool routing.
2.2 — Project Templates: shareable .scarftemplate bundles with typed configuration schemas, Keychain-backed secrets, a public template catalog at awizemann.github.io/scarf/templates/, scarf://install?url=… deep links, CI-enforced PR validator, and a Site tab for webview-bearing dashboards. Cross-agent by default via the AGENTS.md standard — works in Claude Code, Cursor, Codex, Aider, and every other agent that reads it. v2.2.1 adds the awizemann/template-author scaffolding-skill template and fixes the Configuration sheet's segmented-picker overflow on schemas with long enum labels.
2.1 — Full UI translations for six locales on top of English (Simplified Chinese, German, French, Spanish, Japanese, Brazilian Portuguese); locale-aware currency / byte-size / compact-number formatting; chat slash-command menu with filtering and argument hints; auto-scroll polish and loading state for chat session reconnects.
2.0 — Multi-server, remote Hermes over SSH, chat UX overhaul (no more flash, no scroll jumping, real error explanations), and a correctness pass that fixed remote WAL spam, stale-snapshot session resume, auto-resume of dead cron sessions, and 230+ Swift 6 concurrency warnings.
1.6 — Configure section: native GUI for all 13 messaging platforms, Credential Pools with proper OAuth, Model Picker backed by models.dev's 111-provider catalog, 10-tab Settings exposing ~60 previously hidden config fields, plus Personalities, Quick Commands, Plugins, Webhooks, Profiles.
1.5 — Initial public release series; foundation for everything above.
After a release
When scripts/release.sh <version> completes a full (non-draft) release, this page should be updated:
- Add a row at the top of the table.
- Bump the Latest release line on Home.
- Run
./scripts/wiki.sh commit "docs: index v<version> release"thenpush.
This is one of the wiki update triggers that future Claude Code sessions will follow automatically.
Last updated: 2026-04-29 — Scarf v2.5.2 patch (iOS chat resilience + remote-aware admin sheets + Nous live catalog)
Getting Started
ScarfGo (iOS)
User Guide
- Dashboard
- Insights & Activity
- Chat
- Slash Commands
- Memory & Skills
- Projects & Profiles
- Project Templates
- Template Catalog
- Template Ideas
- Platforms / Personalities / Quick Commands
- Servers & Remote
- MCP, Plugins, Webhooks, Tools
- Gateway / Cron / Health / Logs
Architecture
- Overview
- Core Services
- Design System
- Data Model
- Transport Layer
- ScarfCore Package
- Sidebar & Navigation
- ACP Subprocess
Developer Guide
Reference
Troubleshooting
Contributing
- Contributing
- Wiki Maintenance
- ScarfGo Roadmap (dev reference)
Release History
Legal & Support
Wiki edited via the local .wiki-worktree/ clone. See Wiki Maintenance for the workflow. Last sync: 2026-04-20.