Releases: Dtour-Stack/swoosh
Detour — Swoosh Edition · v1.1.0
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 openSwoosh.xcodeprojin 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
swooshCLI. The standaloneswooshddaemon + launchd lifecycle were removed;swoosh daemon paironly 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.
plumbertopology agent +Scripts/check-flow.shlayering 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 appxcodebuild✓ (signing-disabled compile).check-flow.shtopology gate ✓ (local + CI);plumberPASS; 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
mainDetour-onboarding rebuild (archived atarchive/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
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-diagnosticis 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
loadAllparallelized withasync letso a single endpoint failure no longer kills the othersURLErrorcodes humanized —cannotConnectToHost/timedOut/userAuthenticationRequiredget specific guidance
iPhone workspace fit
- New
iossurface default panels:recentChats,providerStatus,skills,wallet— noagentShellhero, since chat already owns the main screen PanelHostdetects compact width and:- Skips the 360 pt hero strip
- Uses
.compactdensity 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
AddPanelSheeton iPhone: wraps inNavigationStack+.largedetent + 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 PublicNode —
solana-rpc.publicnode.com,ethereum-rpc.publicnode.com,base-rpc.publicnode.com,bsc-rpc.publicnode.com. Chain-official endpoints kept as ordered fallbacks. - New
MultiEndpointRPCactor tries primary + fallbacks (transient errors only; JSON-RPC application errors still propagate) RPCClientgains a 15 s timeout, HTTP status check (no more silent decode failures on 429 HTML bodies), andos.LoggerinstrumentationWalletSessionsplit into two error surfaces —error(account-management, blocks modals) andbalanceErrors(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
Menudropdown — 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 (
.phonemode now only renders the toolbar mic) LocalDiagnosticProvidercanned 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 releasegreen - iOS device build green (
xcodebuild -scheme SwooshiOS -destination 'generic/platform=iOS')