mirror of
https://github.com/awizemann/scarf.git
synced 2026-05-10 10:36:35 +00:00
docs(v2.5): home-page focus + RELEASE_NOTES under-the-hood + App Store metadata
README: strip the "Previously, in 2.3" subsection per release direction — the home page is now a single-version forward-looking surface with prior releases linked off to the wiki Release Notes Index. Promote the ScarfGo TestFlight callout to its own subsection with the public link (testflight.apple.com/join/qCrRpcTz) embedded inline. Add a "Connect ScarfGo to your Hermes server" five-step walkthrough between What's New and Multi-server, mirroring OnboardingRootView's state machine so users can follow it cold without opening the wiki first. RELEASE_NOTES: extend the Under-the-hood section with the iOS-side maintenance work that landed in the last 48h — Citadel executeCommandStream rewrite (preserves stdout on non-zero remote exit; was eating Skills hub Browse output), inline PATH= prepend on every iOS runProcess (Citadel's raw exec channel doesn't source shell rc files), fd-leak cleanup across the three transports + ProcessACPChannel, ServerLiveStatus 10/30/60/120/300s exponential backoff for unreachable remotes, and the print() -> os.Logger sweep. APP_STORE_METADATA.md: full App Store Connect copy ready for paste — app name, subtitle, promotional text (153/170 chars), 2873/4000-char description in three paragraphs (what / features / privacy), brand-safe keywords (85/100 chars; no competitor product names), support / marketing / privacy URLs, category, age rating, 1150/4000-char "What's New" text. Screenshots flagged as out-of-scope for this prep pass — user captures from the simulator before App Store submission. TestFlight checklist remains the canonical doc for the in-flight beta submission. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -83,6 +83,10 @@ Pre-2.5, both Mac and iOS rendered cron jobs as `0 */6 * * *` raw. The new `Cron
|
||||
- **`RichChatViewModel`** carries the ACP error triplet (`acpError`, `acpErrorHint`, `acpErrorDetails`) for both platforms — Mac's `ChatViewModel` now delegates instead of duplicating.
|
||||
- **Test reliability.** Cross-suite races on `ServerContext.sshTransportFactory` resolved by consolidating every factory-touching test into a single `.serialized` suite. 163 tests across 12 suites, three consecutive green runs.
|
||||
- **Surface silent failures.** Several `try?` swallows in iOS lifecycle code now surface to the user — Keychain unlock errors no longer dump people back into onboarding, partial Forget operations report what failed, project-context-block writes that fail surface a banner instead of silently degrading agent context.
|
||||
- **iOS exec channel hardening.** `CitadelServerTransport.runProcess` was wrapping Citadel's `executeCommand`, which throws `CommandFailed` on non-zero exit and discards the captured stdout buffer in the throw path. `hermes skills browse` happens to print its full table and *then* exit non-zero on some hosts, so iOS got nothing while Mac (Foundation `Process`) got the full output with `exitCode=1`. v2.5 drives `executeCommandStream` directly, drains stdout + stderr regardless of outcome, and recovers the actual exit code from the `CommandFailed` catch. Same channel now also inline-prepends `PATH="$HOME/.local/bin:/opt/homebrew/bin:/usr/local/bin:$PATH"` on every invocation — Citadel's raw exec channel doesn't source the user's shell rc files, so non-interactive sessions land with a stripped `PATH` (`/usr/bin:/bin`) and pipx's default install dir is invisible. Mac's OpenSSH sshd handles this transparently; we now match.
|
||||
- **fd-leak cleanup.** `LocalTransport` / `SSHTransport` / `ProcessACPChannel` all close the parent's copy of every pipe write end after spawn so EOF reaches the reader once the child exits, plus close read ends after draining. Was leaking one fd per `runProcess` / `streamLines` / ACP turn under load.
|
||||
- **Status-poll backoff.** `ServerLiveStatus` now uses 10s → 30s → 60s → 120s → 300s exponential backoff on consecutive probe failures, resetting on the first full success. Previously a registered remote going unreachable hammered `pgrep` + `gateway_state.json` every 10s indefinitely; offline servers now settle to a 5-minute cadence while live ones stay snappy.
|
||||
- **Logger conversion.** Remaining `print("[Scarf] …")` debug statements in `HermesDataService`, `HermesLogService`, and `ProjectDashboardService` swap to `os.Logger` calls (subsystem `com.scarf`), matching the global rule that production code uses `Logger` and `print()` is reserved for previews + test helpers.
|
||||
|
||||
### Notes for users running 2.3
|
||||
|
||||
|
||||
Reference in New Issue
Block a user