mirror of
https://github.com/awizemann/scarf.git
synced 2026-05-08 02:14:37 +00:00
docs: index v2.6.0 release + document v0.12 surfaces (Curator/Kanban/multimodal/Skills)
+21
-1
@@ -37,13 +37,33 @@ Streams tokens, thoughts, and tool calls live via the [ACP subprocess](ACP-Subpr
|
||||
|
||||
**Voice mode controls:** PTT (push-to-talk), TTS playback, STT transcription preferences live in **Settings → Voice**. The chat toolbar exposes the basic toggles.
|
||||
|
||||
## Multimodal image input _(v2.6+, Hermes v0.12+)_
|
||||
|
||||
Hermes v0.12 advertises `prompt_capabilities.image = true` on ACP and accepts image content blocks in `session/prompt`. Scarf wires the producer side on both targets — capability-gated on `HermesCapabilities.hasACPImagePrompts` so v0.11 hosts never see the attachment surface.
|
||||
|
||||
- **Mac** — paperclip toolbar button on the composer opens NSOpenPanel multi-pick. Drag-and-drop and paste also work — drop an image (or a Finder file URL) onto the composer and it attaches.
|
||||
- **iOS** — paperclip opens PhotosPicker (multi-select up to 5 photos).
|
||||
- **`ImageEncoder`** (ScarfCore) downsamples to 1568px long-edge JPEG q=0.85, **detached only** so encoding never blocks MainActor. A 12 MP screenshot lands under ~300 KB on the wire. Total payload stays under ~2 MB so cellular sends don't time out.
|
||||
- **Per-attachment chips** above the input field with thumbnail + filename tooltip + X to remove. Hard cap of 5 images per message.
|
||||
- **Image-only sends are valid** — once at least one attachment is queued, the send button enables even with empty text. Vision models accept "describe this" with no caption.
|
||||
|
||||
Hermes routes the prompt to a vision-capable model automatically — no extra Scarf-side work to pick the right aux model. The wire shape is `[{"type":"text","text":...}, {"type":"image","data":"<base64>","mimeType":"image/jpeg"}]` matching `acp.schema.ImageContentBlock`.
|
||||
|
||||
## Per-message TTS playback _(v2.6+, Mac)_
|
||||
|
||||
Small speaker glyph in each settled assistant bubble's metadata footer. Tap to read the reply aloud through `AVSpeechSynthesizer` with the user's macOS Spoken Content default voice — works offline. Tap again (or any other bubble's button) to stop. Markdown control characters (`**`, ` ` ` `, `[text](url)`) are stripped before speech so the user doesn't hear "asterisk asterisk bold". The deeper Settings → Voice provider integration (Edge / ElevenLabs / OpenAI / NeuTTS / Piper) is queued as a v2.7 follow-up. Issue [#66](https://github.com/awizemann/scarf/issues/66).
|
||||
|
||||
## Background completion notifications _(v2.6+, Mac)_
|
||||
|
||||
Sending a long prompt and switching to other work no longer requires polling the chat. New `ChatNotificationService` fires a local `UNUserNotificationCenter` banner on prompt completion when Scarf isn't the foreground app. Body is the assistant reply's first line trimmed to ~140 chars; heading is the active session title. Settings → Display → Feedback → "Notify when Hermes finishes" toggle (default on). `/steer`-style mid-run sends don't notify — they don't end a turn. Issue [#64](https://github.com/awizemann/scarf/issues/64).
|
||||
|
||||
## Chat density preferences _(v2.5.1+, Mac)_
|
||||
|
||||
**Settings → Display → Chat density** has three Scarf-local controls that change how the chat is rendered. They're independent of the Hermes config flags one section below (`Show Reasoning`, `Show Cost`, `Compact`) — those gate what Hermes EMITS, these gate how Scarf RENDERS what was emitted.
|
||||
|
||||
- **Tool calls** — `Full card` (today's expandable card per call), `Compact chip` (one-line tappable chip per call — kind icon + function name + status dot — opening the right-pane inspector with the same details), `Hidden` (per-call rows skipped; the always-visible group summary pill stays and becomes tappable so the inspector is still one click away).
|
||||
- **Reasoning** — `Disclosure box` (today's yellow box), `Inline (italic)` (italic faded caption text inline above the reply with a small brain prefix — same data, far less vertical space), `Hidden` (reasoning text not rendered; per-message token count stays visible in the bubble's metadata footer).
|
||||
- **Chat font size** — 85% to 130% slider (5% step) applied at the chat root via `.environment(\.dynamicTypeSize, ...)` so the message list, input bar, session info bar, and inspector pane scale together.
|
||||
- **Chat font size** — 85% to 130% slider (5% step). Originally set only `\.dynamicTypeSize`, but ScarfFont tokens are fixed-point so dynamic type didn't reach bubble text, reasoning, tool chips, code blocks, or markdown headings on Mac. v2.6 introduces a separate `\.chatFontScale` env value plumbed from `RichChatView` through `RichMessageBubble`, `MarkdownContentView`, and `CodeBlockView`; `ChatFontScale.{body, caption, captionStrong, caption2, mono, monoSmall, codeBlock, codeInline}(_:)` helpers mirror the ScarfFont base sizes so 100% is byte-for-byte identical to today's UI. The slider now actually moves the visible chat content. Issue [#68](https://github.com/awizemann/scarf/issues/68).
|
||||
|
||||
Defaults match today's UI exactly so existing users see no change until they opt in. Per-turn stopwatch, per-message tokens, finish reason, and timestamp stay in the bubble metadata footer in every density mode; SessionInfoBar's input/output/reasoning tokens, USD cost, model, project, and git branch are unaffected. See issues [#47](https://github.com/awizemann/scarf/issues/47) and [#48](https://github.com/awizemann/scarf/issues/48) for the original asks and the full preservation audit.
|
||||
|
||||
|
||||
@@ -4,7 +4,9 @@ Scarf reads Hermes's SQLite database directly and parses CLI output from `hermes
|
||||
|
||||
## Currently targeted
|
||||
|
||||
**Scarf 2.5.x targets Hermes v0.11.0 (v2026.4.23)**, bumped from Scarf 2.3's v0.10.0 target. v0.11.0 is the recommended minimum to get every feature working — the new `/steer` slash command, the `messages.reasoning_content` / `sessions.api_call_count` columns, the SKILL.md frontmatter chips (`allowed_tools` / `related_skills` / `dependencies`), and the `hermes memory reset` toolbar action all require v0.11.0+. On earlier Hermes releases, Scarf 2.5 still runs — `/steer` is harmless on older agents (they treat it as an unknown command), v0.11 DB columns silently degrade to nil/0 via `HermesDataService.hasV011Schema`, and the new skills (`design-md`, `spotify`) only appear if they're actually installed on the host.
|
||||
**Scarf 2.6.x targets Hermes v0.12.0 (v2026.4.30)**, bumped from Scarf 2.5's v0.11.0 target. v0.12.0 is the recommended minimum to get every v2.6 feature lit up: the autonomous **Curator** (sidebar / panel) needs `hermes curator`, **multimodal image input** in chat needs ACP's `prompt_capabilities.image`, the **5 new inference providers** (GMI Cloud, Azure AI Foundry, LM Studio first-class, MiniMax OAuth, Tencent TokenHub) need their entries in the v0.12 `HERMES_OVERLAYS` map, the **read-only Kanban** needs `hermes kanban list --json`, the **Skills v0.12 surface** (URL install, reload, OFF pill) needs `hermes skills install <url>` / `audit` and `skills.disabled` in config.yaml, cron `--workdir` needs the v0.12 cron schema, and `auxiliary.curator` is a new aux task that replaces the removed `flush_memories` task. Every one of these surfaces is **capability-gated** through `HermesCapabilities` (parses semver + `YYYY.M.D` from `hermes --version` once per server) — on a v0.11 host, Scarf 2.6 looks identical to Scarf 2.5.2 and the new affordances are hidden. `auxiliary.flush_memories` is preserved on v0.11 hosts (inverse gate via `hasFlushMemoriesAux`).
|
||||
|
||||
The v2.5 baseline still applies: `/steer`, `messages.reasoning_content` / `sessions.api_call_count` columns, SKILL.md frontmatter chips, and `hermes memory reset` all require v0.11+. On earlier Hermes releases, Scarf 2.6 still runs — `/steer` is harmless on older agents (treated as an unknown command), v0.11 DB columns silently degrade to nil/0 via `HermesDataService.hasV011Schema`, and the new skills (`design-md`, `spotify`) only appear if installed.
|
||||
|
||||
## Verified versions
|
||||
|
||||
@@ -15,7 +17,8 @@ Scarf reads Hermes's SQLite database directly and parses CLI output from `hermes
|
||||
| v0.8.0 | 2026-04-08 | Verified |
|
||||
| v0.9.0 | 2026-04-13 | Verified |
|
||||
| v0.10.0 | 2026-04-16 | Verified (Tool Gateway introduced) |
|
||||
| v0.11.0 | 2026-04-23 | **Verified — current target** |
|
||||
| v0.11.0 | 2026-04-23 | Verified |
|
||||
| v0.12.0 | 2026-04-30 | **Verified — current target** (Curator, multimodal ACP, 5 new providers, Teams + Yuanbao, Kanban, Skills URL install / disable / curator pin, cron --workdir, auxiliary.curator, prompt_caching.cache_ttl, redaction toggle, runtime metadata footer, Piper TTS, Vercel terminal) |
|
||||
|
||||
## How compatibility is maintained
|
||||
|
||||
|
||||
+3
-3
@@ -2,9 +2,9 @@
|
||||
|
||||
A native macOS companion app for the [Hermes AI agent](https://github.com/hermes-ai/hermes-agent). Full visibility into what Hermes is doing, when, and what it creates — across one local install or many remote ones.
|
||||
|
||||
**Latest release:** [v2.5.0](https://github.com/awizemann/scarf/releases/tag/v2.5.0) — ScarfGo iOS companion + ScarfDesign overhaul + Hermes v0.11 chat parity. Patched in [v2.5.1](https://github.com/awizemann/scarf/releases/tag/v2.5.1) (Mac chat performance, Hermes v0.11 profile awareness, iOS keyboard dismissal, opt-in iCloud Keychain sync, chat density preferences) and [v2.5.2](https://github.com/awizemann/scarf/releases/tag/v2.5.2) (iOS chat resilience + reconnect, cached snapshot fallback, history paging, chat-start model preflight, Nous Portal live catalog, remote-aware admin sheets — see [release notes](https://github.com/awizemann/scarf/blob/main/releases/v2.5.2/RELEASE_NOTES.md)).
|
||||
**Latest release:** [v2.6.0](https://github.com/awizemann/scarf/releases/tag/v2.6.0) — catches up to **Hermes v2026.4.30 (v0.12.0)** with the autonomous **Curator** (Mac sidebar + iOS panel), **multimodal image input** in chat (Mac drag/drop + paste, iOS PhotosPicker), **5 new inference providers** (GMI Cloud, Azure AI Foundry, LM Studio first-class, MiniMax OAuth, Tencent TokenHub), **Microsoft Teams + Yuanbao** gateway platforms, a **read-only Kanban**, Skills v0.12 surface (URL install / reload / OFF pill / curator pin badge), cron `--workdir`, Settings deltas (cache TTL, redaction toggle, runtime metadata footer, Piper TTS, Vercel terminal), and ScarfGo read-only **Webhooks / Plugins / Profiles**. Every new surface is capability-gated — v0.11 hosts see the v2.5.2 surface unchanged. Plus a chat post-merge bug-fix round: typing lag ([#67](https://github.com/awizemann/scarf/issues/67)), font-size slider scaling ([#68](https://github.com/awizemann/scarf/issues/68)), placeholder ghosting ([#65](https://github.com/awizemann/scarf/issues/65)), per-session draft scoping ([#62](https://github.com/awizemann/scarf/issues/62)), sent-message blank after nav ([#63](https://github.com/awizemann/scarf/issues/63)), background completion notifications ([#64](https://github.com/awizemann/scarf/issues/64)), per-message TTS ([#66](https://github.com/awizemann/scarf/issues/66)), ACP control-message timeout 30s→60s ([#61](https://github.com/awizemann/scarf/issues/61)). See [v2.6.0 release notes](https://github.com/awizemann/scarf/blob/main/releases/v2.6.0/RELEASE_NOTES.md).
|
||||
**Latest mobile:** [Join the public TestFlight](https://testflight.apple.com/join/qCrRpcTz). The link is live now but only accepts new beta testers once Apple's Beta Review approves the first build — see [ScarfGo](ScarfGo) for the full feature tour.
|
||||
**Targets Hermes:** v0.11.0 (v2026.4.23) — `/steer`, new state.db columns, design-md/spotify skills, SKILL.md frontmatter chips. v0.10.0 still works for everything that didn't change.
|
||||
**Targets Hermes:** v0.12.0 (v2026.4.30) — autonomous Curator, multimodal ACP image content blocks, 5 new providers, Microsoft Teams + Yuanbao gateways, Kanban CLI, Skills URL install / reload / disable, cron `--workdir`, `auxiliary.curator`, prompt-cache TTL, Piper TTS, Vercel terminal. v0.11.0 / v0.10.0 still work for everything that didn't change — Scarf detects the host's Hermes version and hides v0.12-only surfaces gracefully.
|
||||
**Available in:** English, Simplified Chinese (zh-Hans), German (de), French (fr), Spanish (es), Japanese (ja), Brazilian Portuguese (pt-BR). See [Localization](Localization). _ScarfGo is English-only in v1._
|
||||
|
||||
## Quick links
|
||||
@@ -40,4 +40,4 @@ Scarf 2.0 is a multi-window app — one window per Hermes server, local or remot
|
||||
Open-source (MIT), 160+ stars, actively maintained. See [Roadmap](Roadmap) for what's coming.
|
||||
|
||||
---
|
||||
_Last updated: 2026-04-29 — Scarf v2.5.2 patch (iOS chat resilience + remote-aware admin sheets + Nous live catalog)_
|
||||
_Last updated: 2026-05-01 — Scarf v2.6.0 (Hermes v0.12 catch-up: Curator, multimodal images, 5 new providers, Kanban, Skills v0.12 surface, ScarfGo Webhooks/Plugins/Profiles, post-merge chat bug fixes)_
|
||||
|
||||
+13
-1
@@ -28,6 +28,18 @@ Browse and manage Hermes skills:
|
||||
|
||||
Operations are wrappers around the `hermes skills` CLI invoked via `context.runHermes(...)`, so they work identically against local and remote servers.
|
||||
|
||||
### v2.6 additions _(Hermes v0.12+)_
|
||||
|
||||
All four are gated on `HermesCapabilities.hasCurator` / `hasSkillURLInstall` so a v0.11 host sees the v2.5 surface unchanged.
|
||||
|
||||
- **Autonomous Curator (Mac sidebar + iOS panel).** `hermes curator` self-prunes / -consolidates the skill library on a 7-day cycle. Reports land at `~/.hermes/logs/curator/run.json` + `REPORT.md`; the run path is resolved at runtime from the `last_report_path` field on `~/.hermes/skills/.curator_state`. Mac gets a dedicated **Curator** sidebar item under Interact (between Memory and Skills); iOS gets a Curator nav row under System with **Run Now / Pause / Resume** actions and inline pin toggles. Status panel shows enabled/paused/disabled badge, last-run timestamp, last summary, run count, scheduling cadence (interval / stale-after / archive-after). Three leaderboards (least-recently-active / most-active / least-active) with activity / use / view / patch counters. **Restore archived** sheet calls `hermes curator restore <name>`. Last-run REPORT.md renders inline in mono.
|
||||
- **`auxiliary.curator` aux task.** Curator's review fork can run on a separate model from the main agent. New row in Settings → Auxiliary, gated on `hasCuratorAux`. Hermes removed `auxiliary.flush_memories` entirely in v0.12, so Scarf hides that row on v0.12 hosts (inverse gate via `hasFlushMemoriesAux`). The Tool Gateway health view in HealthView lost the flushMemories-routes-through-Nous row and gained a curator row to match.
|
||||
- **Skills v0.12 surface.**
|
||||
- **Direct-URL install** via `hermes skills install <https-url>` — Mac SkillsView gains an "Install from URL…" toolbar button opening a sheet with URL field plus optional `--category` / `--name` overrides.
|
||||
- **Reload** via `hermes skills audit` — toolbar button next to install on Mac. Equivalent to the `/reload-skills` slash command for non-ACP contexts.
|
||||
- **Enabled / disabled state** — `skills.disabled` in config.yaml is read at scan time; disabled skills render strikethrough + an "OFF" pill on Mac and iOS rows. iOS detail view explains the state in plain text. The disable-toggle write path is deferred to v2.7 — Hermes only exposes `hermes skills config` as an interactive verb today, and we'd rather read accurately than risk clobbering a half-tested write.
|
||||
- **Curator pin badge.** Pinned skills are protected from auto-archive and rewrites. Pin state is read from `~/.hermes/skills/.curator_state` and surfaced as a pin glyph on each row across Mac sidebar and iOS list, plus an explanatory chip on iOS detail view.
|
||||
|
||||
### v2.5 additions
|
||||
|
||||
- **SKILL.md frontmatter chips.** Hermes v0.11 SKILL.md files carry richer YAML frontmatter (`allowed_tools`, `related_skills`, `dependencies`). Scarf parses it on both platforms and renders chip rows in the skill detail view. Old skills without these fields stay nil and the rows hide themselves.
|
||||
@@ -42,4 +54,4 @@ Operations are wrappers around the `hermes skills` CLI invoked via `context.runH
|
||||
- [Settings — Memory tab](Gateway-Cron-Health-Logs) for `memory_enabled`, `memory_char_limit`, `memory_provider`.
|
||||
|
||||
---
|
||||
_Last updated: 2026-04-25 — Scarf v2.5.0 (memory reset, frontmatter chips, "What's New" pill, design-md/spotify prereqs)_
|
||||
_Last updated: 2026-05-01 — Scarf v2.6.0 (autonomous Curator, auxiliary.curator aux task, Skills v0.12 surface — URL install / reload / OFF pill / curator pin badge)_
|
||||
|
||||
@@ -4,6 +4,7 @@ Every Scarf release in chronological order. The notes themselves live in `releas
|
||||
|
||||
| Version | Date | GitHub release | Notes file |
|
||||
|---|---|---|---|
|
||||
| **v2.6.0** | 2026-05-01 | [v2.6.0](https://github.com/awizemann/scarf/releases/tag/v2.6.0) | [`releases/v2.6.0/RELEASE_NOTES.md`](https://github.com/awizemann/scarf/blob/main/releases/v2.6.0/RELEASE_NOTES.md) |
|
||||
| **v2.5.2** | 2026-04-29 | [v2.5.2](https://github.com/awizemann/scarf/releases/tag/v2.5.2) | [`releases/v2.5.2/RELEASE_NOTES.md`](https://github.com/awizemann/scarf/blob/main/releases/v2.5.2/RELEASE_NOTES.md) |
|
||||
| **v2.5.1** | 2026-04-27 | [v2.5.1](https://github.com/awizemann/scarf/releases/tag/v2.5.1) | [`releases/v2.5.1/RELEASE_NOTES.md`](https://github.com/awizemann/scarf/blob/main/releases/v2.5.1/RELEASE_NOTES.md) |
|
||||
| **v2.5.0** | 2026-04-25 | [v2.5.0](https://github.com/awizemann/scarf/releases/tag/v2.5.0) | [`releases/v2.5.0/RELEASE_NOTES.md`](https://github.com/awizemann/scarf/blob/main/releases/v2.5.0/RELEASE_NOTES.md) |
|
||||
@@ -21,6 +22,8 @@ Every Scarf release in chronological order. The notes themselves live in `releas
|
||||
|
||||
## Highlights by major
|
||||
|
||||
**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](https://github.com/awizemann/scarf/issues/67)), font-size slider now actually scales rich chat ([#68](https://github.com/awizemann/scarf/issues/68)), placeholder ghosting on first keystroke ([#65](https://github.com/awizemann/scarf/issues/65)), draft text bleeding between sessions ([#62](https://github.com/awizemann/scarf/issues/62)), sent message rendering blank after navigation ([#63](https://github.com/awizemann/scarf/issues/63)), background completion notifications ([#64](https://github.com/awizemann/scarf/issues/64)), per-message TTS playback ([#66](https://github.com/awizemann/scarf/issues/66)), ACP control-message timeout 30s→60s for gateway-contended hosts ([#61](https://github.com/awizemann/scarf/issues/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](https://github.com/awizemann/scarf/issues/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](https://github.com/awizemann/scarf/issues/56) Citadel snapshot path now uses `executeCommandStream` + Citadel-friendly `PATH=` prefix so missing-sqlite3 errors surface meaningfully; [#57](https://github.com/awizemann/scarf/issues/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](https://github.com/awizemann/scarf/issues/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](https://github.com/awizemann/scarf/issues/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](https://github.com/awizemann/scarf/issues/53)). Pill probe and Run Diagnostics no longer disagree ([#44](https://github.com/awizemann/scarf/issues/44)) — both now go through a shared `SSHScriptRunner` that bypasses `runProcess`'s argument quoting. New chat density preferences in Settings → Display ([#47](https://github.com/awizemann/scarf/issues/47) + [#48](https://github.com/awizemann/scarf/issues/48)) — Tool calls Full / Compact / Hidden, Reasoning Disclosure / Inline / Hidden, chat font size 85–130%. iOS keyboard now dismissable via swipe + accessory toolbar ([#51](https://github.com/awizemann/scarf/issues/51)); first-run Cancel button hidden when there's nothing to cancel back to ([#55](https://github.com/awizemann/scarf/issues/55)); opt-in iCloud Keychain sync for SSH keys ([#52](https://github.com/awizemann/scarf/issues/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](https://github.com/awizemann/scarf/issues/54)). Release pipeline gains a post-package codesign / spctl gate ([#49](https://github.com/awizemann/scarf/issues/49)). No data migrations.
|
||||
|
||||
@@ -16,7 +16,7 @@ Each Scarf window has its **own** `AppCoordinator` — selection in one window d
|
||||
|
||||
## SidebarSection
|
||||
|
||||
`SidebarSection` ([`AppCoordinator.swift`](https://github.com/awizemann/scarf/blob/main/scarf/scarf/Navigation/AppCoordinator.swift)) is the source of truth for every sidebar item. Each case has a `rawValue` (display name) and an `icon` (SF Symbol name). **22 cases** grouped into **5 sidebar headers** (the order is hardcoded in `SidebarView.swift`):
|
||||
`SidebarSection` ([`AppCoordinator.swift`](https://github.com/awizemann/scarf/blob/main/scarf/scarf/Navigation/AppCoordinator.swift)) is the source of truth for every sidebar item. Each case has a `rawValue` (display name) and an `icon` (SF Symbol name). **24 cases** grouped into **5 sidebar headers** (the order is hardcoded in `SidebarView.swift`). Two new items in v2.6: **Curator** (under Interact) and **Kanban** (under Manage), both capability-gated on Hermes v0.12 and hidden on older hosts.
|
||||
|
||||
### Monitor (4)
|
||||
|
||||
@@ -35,14 +35,17 @@ Each Scarf window has its **own** `AppCoordinator` — selection in one window d
|
||||
|
||||
Projects has its own header — not a Manage sub-item — because per-project work (Dashboard / Sessions / Site / Slash Commands tabs, template install) is a top-level workflow surface in v2.5.
|
||||
|
||||
### Interact (3)
|
||||
### Interact (4)
|
||||
|
||||
| Section | Icon |
|
||||
|---|---|
|
||||
| Chat | `text.bubble` |
|
||||
| Memory | `brain` |
|
||||
| Curator | `wand.and.stars` |
|
||||
| Skills | `lightbulb` |
|
||||
|
||||
**Curator** (v2.6, Hermes v0.12+ only) wraps `hermes curator` — status panel, run / pause / resume, three leaderboards (least-recently-active / most-active / least-active), inline pin toggle, restore-archived sheet, last-run REPORT.md inline. Capability-gated on `HermesCapabilities.hasCurator` so the row disappears entirely on pre-v0.12 hosts.
|
||||
|
||||
### Configure (7)
|
||||
|
||||
| Section | Icon |
|
||||
@@ -55,18 +58,21 @@ Projects has its own header — not a Manage sub-item — because per-project wo
|
||||
| Webhooks | `arrow.up.right.square` |
|
||||
| Profiles | `person.2.crop.square.stack` |
|
||||
|
||||
### Manage (7)
|
||||
### Manage (8)
|
||||
|
||||
| Section | Icon |
|
||||
|---|---|
|
||||
| Tools | `wrench.and.screwdriver` |
|
||||
| MCP Servers | `puzzlepiece.extension` |
|
||||
| Messaging Gateway | `antenna.radiowaves.left.and.right` |
|
||||
| Kanban | `rectangle.stack` |
|
||||
| Cron | `clock.arrow.2.circlepath` |
|
||||
| Health | `stethoscope` |
|
||||
| Logs | `doc.text` |
|
||||
| Settings | `gearshape` |
|
||||
|
||||
**Kanban** (v2.6, Hermes v0.12+ only) is a read-only view over `hermes kanban list --json` — paginated table filtered by status, status badges, meta chips (id / assignee / workspace / skills), 5s polling while foregrounded. Capability-gated on `HermesCapabilities.hasKanban`; the create / claim / dispatch UI is deferred until upstream stabilizes the multi-profile collab layer (which was reverted in v0.12).
|
||||
|
||||
The Gateway item's `displayName` is **"Messaging Gateway"** — disambiguates from the v2.3 Tool Gateway (Nous Portal subscription routing) which is a Health-tab surface, not its own sidebar item. The enum case is still `.gateway` and the persisted state file path (`~/.hermes/gateway_state.json`) is unchanged.
|
||||
|
||||
## SidebarView
|
||||
|
||||
Reference in New Issue
Block a user