Skip to content

Releases: Dtour-Stack/swoosh

Detour — Swoosh Edition · v1.1.0

29 May 22:13

Choose a tag to compare

Detour — Swoosh Edition · v1.1.0

The first release off the modern feat/next line. Detour is the product; Swoosh is the Swift-native agent runtime/SDK it's built on.

Install / run — no Apple Developer account needed for the SwiftPM + local-macOS paths: swift build && swift run swoosh, or open Swoosh.xcodeproj in Xcode and run with a free Apple ID. See the README.

Highlights since v1.0.0

Architecture

  • In-process runtime — the agent kernel, tools, providers, and ActantDB boot inside the app and the swoosh CLI. The standalone swooshd daemon + launchd lifecycle were removed; swoosh daemon pair only pairs an iPhone.
  • Config-driven provider registry with live switching: OpenAI, OpenRouter, Anthropic, Codex CLI, Detour Cloud, local OpenAI-compatible, on-device MLX + Apple Foundation Models.
  • plumber topology agent + Scripts/check-flow.sh layering gate, wired into CI.

Design & surfaces

  • Volt Paper design system — app-wide reskin (obsidian / violet / lime).
  • Agentic calendar + 5-panel menu-bar tray (Chat / Cloud / Wallet / Calendar / Usage).

Agent control (new dashboard surfaces)

  • Memory review — per-row Approve/Reject, bulk Approve-All, and a toast prompt for pending candidates.
  • Wallet — fixed the false "connected" state; real Create Wallet flow (keys stay in Keychain).
  • Agent & Safety pane — permission presets + the enforced safety flags as live toggles.
  • Approvals queue (human-in-the-loop resolve) + Firewall grants (view/revoke).
  • Settings cleanup — removed the dead provider duplicate; live read-only daemon connection.

Web3

  • pump.fun token launch — prepare-only: a real launch form (logo upload, socials, dev-buy) that pins IPFS metadata and assembles the launch through the firewall + audit + approval + $DTOUR gate. Broadcast is intentionally deferred behind a custody decision; no funds move. Bags / Flap / Four.meme remain stubs.

Verification (honest status)

  • swift build ✓ locally and on CI (macos-26 / Swift 6.3 — the CI Build step passes); full macOS app xcodebuild ✓ (signing-disabled compile).
  • check-flow.sh topology gate ✓ (local + CI); plumber PASS; safety review on the new code: no violations.
  • ⚠️ The full test suite does not currently complete — there is a test hang/deadlock (the test process sits at ~0% CPU indefinitely). This is what causes the CI test job to exceed its time budget. It looks like a test-harness deadlock (this repo has prior cooperative-pool deadlock history), not a build failure. Top follow-up: isolate and fix the hanging test so the suite (and CI) can go green. This release is tagged on a verified-building commit; the test suite is not certified green.

Known follow-ups

  • Fix the test-suite hang (blocks a green full-suite locally and in CI).
  • App-shell reconciliation with the main Detour-onboarding rebuild (archived at archive/main-detour-rebuild).
  • pump.fun broadcast wiring (custody decision: non-custodial Local vs Lightning).
  • Route the toolset network layer through PolicyEnforcedURLSession.

🤖 Generated with Claude Code

v1.0.0 — Detour

22 May 00:22

Choose a tag to compare

First stable release. The agent now answers as Detour, the iPhone surfaces are reshaped around it, and several "looks broken" UX traps have been removed.

Persona

The agent is Detour, built on the Swoosh runtime. The persona lands in:

  • System prompt opens "You are Detour, …"
  • iPhone chat header, side drawer, About row, Mac dashboard window title, top-level CommandMenu, MenuBarPresets, FocusFilter representation

swooshd, ~/.swoosh/, ai.swoosh.* Keychain/UserDefaults keys, and module names stay branded Swoosh — those are infrastructure, not persona.

UnifiedAgentPicker (Brain · Listen · Speak · Music)

A single compact slider.horizontal.3 glyph in the composer opens a full-height bottom sheet with four sections:

  • Brain — model + reasoning effort, grouped by provider
  • Listen — STT (Apple Speech / Whisper on-device)
  • Speak — TTS (Apple / ElevenLabs / OpenAI / Cartesia)
  • Music — Suno / ElevenLabs Music / Stable Audio

The Brain catalog now spans every wired provider — OpenAI, Anthropic (Opus 4.7, Sonnet 4.6, Haiku 4.5), Google (Gemini 3.0, 2.5 Pro / Flash), xAI (Grok 4.2 / 4.1), DeepSeek (V4 Pro / Flash), Mistral (Large 2, Codestral 2), Meta (Llama 4 405B).

AttachmentMenu

A new + button in the composer opens a sheet with Files / Photos / Camera / Skills / MCP Connections rows. Skills routes to Connections → Knowledge → Skills; MCP routes to the new MCP Servers screen.

MCP Servers screen

Manage MCP servers from the iPhone:

  • Custom — fully blank form with name / description / transport (stdio command or HTTP URL) / enabled toggle
  • Seven built-in templates — Filesystem, Git, GitHub, Brave Search, Postgres, Memory, Puppeteer. Tapping a template prefills the form.
  • Edit, swipe-delete, toggle enabled per entry

Persistence is currently local (UserDefaults, shape-compatible with SwooshMCP.MCPServerProfile) until the daemon sync endpoint lands.

Connections diagnostics

The screen no longer hides whether the daemon is reachable.

  • New Daemon status section at the top: green/red dot, host URL, active provider chip, and an "Add a provider key on the Mac" link when only local-diagnostic is active
  • Unpaired state now has an Open Pairing button + monospace how-to (run SWOOSH_HOST=0.0.0.0 swift run swooshd, copy ~/.swoosh/api_token)
  • Error state stacks Retry + Open Pairing buttons
  • loadAll parallelized with async let so a single endpoint failure no longer kills the others
  • URLError codes humanized — cannotConnectToHost / timedOut / userAuthenticationRequired get specific guidance

iPhone workspace fit

  • New ios surface default panels: recentChats, providerStatus, skills, wallet — no agentShell hero, since chat already owns the main screen
  • PanelHost detects compact width and:
    • Skips the 360 pt hero strip
    • Uses .compact density by default
    • Scales card min-height by 0.55× so 3-4 panels fit on one iPhone screen
    • Tightens padding/spacing to 12 pt
    • Drops the duplicate density/edit toolbar items
  • AddPanelSheet on iPhone: wraps in NavigationStack + .large detent + drag indicator, halves the adaptive grid minimum to 150 pt, drops the 540×560 minWidth/minHeight clamp

Wallet RPC hardening

The old defaults (api.mainnet-beta.solana.com, eth.llamarpc.com) were rate-limited and produced phantom "RPC error" toasts after wallet creation. Fixed across the stack:

  • Defaults swapped to PublicNodesolana-rpc.publicnode.com, ethereum-rpc.publicnode.com, base-rpc.publicnode.com, bsc-rpc.publicnode.com. Chain-official endpoints kept as ordered fallbacks.
  • New MultiEndpointRPC actor tries primary + fallbacks (transient errors only; JSON-RPC application errors still propagate)
  • RPCClient gains a 15 s timeout, HTTP status check (no more silent decode failures on 429 HTML bodies), and os.Logger instrumentation
  • WalletSession split into two error surfaces — error (account-management, blocks modals) and balanceErrors (per-account soft badges). Creating a wallet whose first balance lookup fails no longer looks broken.
  • RPC errors humanized — "Public RPC rate-limited. Set a custom endpoint in Settings."

SideDrawer

  • The Detour title is now a Menu dropdown — New Chat / Connections / MCP Servers / Settings sections
  • Drawer respects the top safe area so the dropdown clears the Dynamic Island

Misc

  • Removed duplicate mic from iPhone composer (.phone mode now only renders the toolbar mic)
  • LocalDiagnosticProvider canned reply rebranded for Detour and prints the exact CLI to fix the missing-provider state
  • All user-visible "Swoosh" strings (ChatScreen header, SideDrawer header, Settings About row, Dashboard window title, EditMenu, MenuBarPresets, FocusFilter) rebranded to Detour

Quality

  • 1757 tests / 396 suites passing (swift test)
  • macOS swift build -c release green
  • iOS device build green (xcodebuild -scheme SwooshiOS -destination 'generic/platform=iOS')