ciregenz
ea8b159e98
[eric] merge haik/updates-v1 + bump to v1.0.12
2026-03-23 18:17:57 -07:00
ciregenz
ab23e1f5f9
[eric] mark non-Claude subscriptions as coming soon, reorder providers
...
- Gemini, ChatGPT, GitHub Copilot marked as preview (dimmed, unclickable)
- Shows "Coming soon" instead of Connect button
- Reordered: Claude → Gemini → ChatGPT → GitHub Copilot
- Applied to both Settings subscription cards and onboarding modal
2026-03-23 17:53:13 -07:00
ciregenz
1fc58af88a
[eric] fix subscription OAuth — direct exchange from callback page
...
Modified 9Router's callback page to call the exchange endpoint directly
instead of relying on postMessage/BroadcastChannel relay (which fails
in Electron where window.opener is null).
Flow: click Connect → sign in → callback page fetches pending state
from our backend → calls 9Router exchange → connection saved → done.
Backend:
- Added GET /api/subscriptions/pending/{state} with CORS for callback
- Added GET /api/subscriptions/callback as fallback
- Store pending OAuth state (codeVerifier, redirectUri) keyed by state
- redirect_uri stays on localhost:20128 (required by Anthropic)
Frontend:
- Popup window for auth URL + postMessage listener + status polling
- Works in both Electron and regular browser
2026-03-23 17:23:22 -07:00
ciregenz and Claude Opus 4.6
a5d014e10f
[eric] first-launch onboarding modal
...
Shows when no API keys configured AND no 9Router subscriptions connected:
- "Welcome to OpenSwarm — Connect an AI model to get started"
- Subscription buttons: Claude, ChatGPT, GitHub Copilot, Gemini
(click → OAuth flow directly, no 9Router GUI)
- "I have an API key" → dismisses modal, user goes to Settings
- "Skip for now" → dismisses modal
- Auto-checks 9Router status on mount
- Dismissed state persists for session (doesn't nag)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-23 13:35:52 -07:00
ciregenz and Claude Opus 4.6
24ad784cd0
[eric] seamless subscription connect — no 9Router GUI needed
...
OAuth flow now stays entirely within OpenSwarm:
1. Click "Connect Claude" → Anthropic sign-in opens as popup
2. User signs in → 9Router's /callback catches redirect
3. postMessage sends code back to OpenSwarm window
4. OpenSwarm exchanges code via /subscriptions/exchange proxy
5. Shows "Connected ✓" — done in 3 steps, 1 app
Changes:
- nine_router.py: return real authUrl for auth_code providers
instead of redirecting to 9Router dashboard
- nine_router.py: add exchange_oauth() proxy function
- agents.py: add POST /subscriptions/exchange endpoint
- Settings.tsx: popup + window.addEventListener('message') for
OAuth callback, with polling fallback
Before: 8 steps across 2 apps
After: 3 steps in 1 app (click → sign in → done)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-22 10:52:56 -07:00
ciregenz and Claude Opus 4.6
7430eae88a
[eric] fix OAuth redirect URI for Claude subscription connect
...
Problem: Our code sent http://localhost:20128/api/oauth/claude/callback
as redirect_uri, but Anthropic only accepts http://localhost:PORT/callback .
Fix: For authorization_code providers (Claude, Codex, Gemini), open
9Router's own dashboard page instead of trying to proxy the OAuth flow.
9Router handles the full popup + callback internally.
Flow: Click Connect → opens 9Router dashboard → user clicks Connect there →
OAuth popup → callback handled → poll from OpenSwarm until connected.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-22 10:24:43 -07:00
ciregenz and Claude Opus 4.6
ed66c80f7d
[eric] fix duplicate text — dedup WebSocket stream/message events
...
Root cause: two WebSocket connections open to the same session
(dashboard card + expanded chat). Every event delivered twice.
Fix: track seen stream IDs and message IDs in WebSocketManager.
- stream_start: skip if message_id already seen
- stream_delta: only accept for streams WE initiated
- stream_end: dedup + clean up tracking
- agent:message: skip if message id already processed
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-22 00:36:10 -07:00
ciregenz and Claude Opus 4.6
0a907e4bac
[eric] fix subscription provider IDs, handle both OAuth flows
...
- Fixed provider IDs to match 9Router: claude, codex, github, gemini-cli
- Handle authorization_code_pkce flow (Claude, Codex) — opens browser, polls status
- Handle device_code flow (GitHub, Qwen, Kiro) — shows code, polls for completion
- Pass code_verifier and extra_data through poll endpoint
- Fix isConnected check for 9Router's {connections: [...]} response format
- Auto-start 9Router in backend lifespan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-21 21:03:07 -07:00
ciregenz and Claude Opus 4.6
50b28f7080
[eric] zero-friction subscription access via 9Router proxy
...
- 9Router auto-starts silently in background on app launch
- Subscription proxy endpoints: /subscriptions/status, connect, poll, models
- Per-provider subscription cards in Settings → Models (Claude, ChatGPT, Copilot, Gemini)
- Click "Connect" → browser opens for OAuth → poll until done → "Connected ✓"
- No terminal, no commands, no copy-paste — just click + browser sign-in
- 9Router manages OAuth tokens, auto-refresh, quota tracking
- Removed old NineRouterSetup terminal command UI
- Removed standalone CopilotAuthButton (merged into SubscriptionCards)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-21 20:49:43 -07:00
ciregenz and Claude Opus 4.6
b9b044a2e3
[eric] 9Router subscription proxy, GitHub Copilot auth, Settings restructure
...
Subscription access (WIP):
- 9Router integration: auto-detects if running, routes through user's subscriptions
- Fallback routing: no API key → check 9Router → use subscription
- Model ID mapping for 9Router (cc/ prefix for Claude Code models)
- GitHub Copilot OAuth device flow (copilot_auth.py, providers/copilot.py)
- Copilot auth endpoints: start-auth, poll-auth, models, disconnect
Settings restructure:
- 4 tabs: General, Models, Usage, Commands
- Models tab: Subscriptions section (9Router + Copilot) + API Keys section
- Per-provider "CONNECTED" badges
- Subscription token fields removed (Anthropic banned OAuth in third-party apps)
- 9Router auto-detection with "Check Connection" button
Provider routing:
- create_provider() checks subscription tokens → API keys → 9Router fallback
- validate_credentials() allows through if 9Router is running
- 9Router model ID mapping (sonnet → cc/claude-sonnet-4-6)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-21 20:46:26 -07:00
ciregenz and Claude Opus 4.6
b6f45e8412
[eric] multi-provider agent loop, PostHog analytics, settings overhaul
...
Multi-provider support (WIP - not fully tested):
- Owned agent loop replacing claude_agent_sdk (agent_loop.py, mcp_client.py)
- Provider adapters: Anthropic (native), OpenAI-compat (any endpoint), Gemini (native + schema cleaning)
- 19 models across 9 providers (Anthropic, OpenAI, Google, xAI, Meta, DeepSeek, Mistral, Qwen, Cohere)
- OpenRouter integration for 300+ models via single API key
- Builtin tool reimplementations (Read, Write, Edit, Glob, Grep, Bash, WebSearch, WebFetch, AskUserQuestion)
- Standalone MCP client manager (stdio/sse/http)
- Frontend: grouped model dropdown, provider selection, dynamic context windows
Analytics (tested):
- PostHog integration as single analytics source
- Tracks: app.opened, session.started/completed, tool.called, tool.approval_resolved, error.occurred
- Rich session data: user messages, assistant messages, session titles, tools used, MCP servers, task categories
- PostHog dashboard with 14 insights created via API
- Usage stats in Settings (Usage tab) with pixel-art bars
Settings (tested):
- 4 tabs: General, Models, Usage, Commands
- Model Providers tab with OpenRouter (recommended), Anthropic, OpenAI, Google key fields
- "Get key" links for each provider
- Usage tab with session/cost/tool stats + analytics opt-in toggle
- analytics_opt_in defaults to true, installation_id auto-generated
Merged haik/updates-v1 (tested):
- Sub-agent spawning, chat branching, browser control improvements
- Settings: auto_select_mode, expand_new_chats, auto_reveal_sub_agents, dev_mode
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-21 13:50:21 -07:00
haikdc
f21d245be7
[Haik]: added in glow to collapsed floating island when approval is needed
2026-03-21 00:28:36 -07:00
haikdc
e513bb0d1b
[Haik]: round 3 of dynamic island redesign (better compact view)
2026-03-21 00:00:57 -07:00
haikdc
809eacc041
[Haik]: round 2 of dynamic island redesign (collapsible completed tab) (approve/deny from collapsed state) (height limited and scrollable expanded state)
2026-03-20 23:41:20 -07:00
haikdc
37e5d7b0d9
[Haik]: fixed dashboard lag on drag for both cards and linkages
2026-03-20 23:11:55 -07:00
haikdc
9f8526ffb2
[Haik]: linkages between agents/browser now start/end from the closest sides between the two
2026-03-20 22:57:52 -07:00
haikdc
9f1a322fed
[Haik]: if an agent creates multiple browsers, now they stack vertically the same way spawned sub agents do
2026-03-20 22:51:28 -07:00
haikdc
99695253ea
[Haik]: round 1 of browser use animations (glowing links) (auto spawn in position set)
2026-03-20 22:44:50 -07:00
haikdc
c8b2726ec7
[Haik]: fixed dashboard z index ordering so most recently clicked card is always on top
2026-03-20 22:31:21 -07:00
haikdc
7df846af20
[Haik]: CreateBrowserAgent now spawns in the browser to the right of whatever agent created it (like subagents spawn in)
2026-03-20 22:18:38 -07:00
haikdc
3f37ad8847
[Haik]: browser agent issues fixed (e.g. stopping it via parent or sub agent acc stops it now) (the lil browser agent modal properly shows up when a browser is reinvoked)
2026-03-20 21:54:46 -07:00
haikdc
c0afabb964
[Haik]: (moved logo out of island) (fixed notification derefrencing issues when u swap dashboards) (fixed chat header update issue where itd get stuck in the completed state)
2026-03-20 21:37:27 -07:00
haikdc
a8aff60bca
[Haik]: (fixed auto spawn glitch on reload) (also swapped notification ui to be a floating island)
2026-03-20 20:00:44 -07:00
ciregenz and Claude Opus 4.6
f6274d225f
Merge haik/updates-v1 — resolve settings model conflict
...
Keep both telephony credentials and dashboard UI preferences.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-03-20 16:44:40 -07:00
haikdc
03c1cb1c91
[Haik]: ckpt, auto spawn sub agent feature done and toggleable via settings
2026-03-20 12:25:49 -07:00
ciregenz
da6c2c305e
[eric] cute is law, communication is law
2026-03-19 17:15:18 -07:00
haikdc
6dcfb19b17
[Haik]: ckpt, view builder saving issue fixed via templates, system prompts, and skills. Also added a reset to default for modes.
2026-03-19 01:58:20 -07:00
haikdc
9943ccafd5
[Haik]: (Agent browser render size matches that of user browser spawn) (queing messages) (chat loading bubble fix) (tethers to sub agents and branches are now permament and inputs are swapped to a continue chat button) (auto focus for everything) (history card position fix when redeployed) (dashboard persistance fixed) (non browser link clicks open in the in app browser now) (chat message tooltips for copy, branching, and editing / swapping between edited messages)
2026-03-18 23:45:54 -07:00
haikdc
a1138a1782
[Haik]: (ability to resume chats if force end early) (agent selection actually works as advertised) (browser control/creation tool isolation) (in dev mode can see the action input schema)
2026-03-18 14:19:42 -07:00
haikdc
a6a2c68115
[Haik]: ckpt, (view sidebar clicks fixed) (view back button removed) (backspace/delete to remove items from dash) (copy/paste items in dash) (Swapping between branches in chat) (Per message tool tips in chat) (chat branching support and some cool ahhh anims) (auto deselect items on toolbar collapse) (if exit selection mode, items get deselected) (item selections only populate focused chat input as context instead of all chat inputs) (swapped right and left mouse clicks to match that of other softwares)
2026-03-18 07:40:02 -07:00
haikdc
78552982d8
[Haik]: ckpt (input focus persistance in select mode) (can set default spawn in state of a card from expanded to collapsed in settings) (Settings update notification is more in ur face now - to be tested in prod)
2026-03-18 04:09:39 -07:00
haikdc
f8c2fc38b8
[Haik]: ckpt (right click in dash triggers marquee drag) (if click enter while a single agent card is selected in dash -> triggers expand/collapse) (also btw that g workspace issue still exists in prod)
2026-03-18 02:55:21 -07:00
haikdc
dfa87389ba
[Haik]: (cmd+scroll zoom works over browsers) (single clicking a selected item deselects it) (All browser actions have user permissions that r functional blocks)
2026-03-18 02:25:31 -07:00
haikdc
b937003a24
[Haik]: ckpt (builtin tool call permissions are now functional) (when card is selected in dash hover scroll still works) (notification ui now shows actively running agents too - with the ability to stop them too) (agent card with is persistent post auto layout) (gworkspace discovery func works in prod now - to be tested in prod) (stable release naming for files so most recent version has fixed release link - to be tested in prod)
2026-03-18 01:48:53 -07:00
haikdc
6e1fc1dee2
[Haik]: ckpt (Round 1 of fixing mcp server issues in prod - still has bugs) (Fixed some browser related issues like popup windows rendering out of app and weird js framework related errors when u open sites like spotify) (Added option in settings to toggle item selection to be on by default when selecting a new chat) (Browser agent actions now show up in chat output) (Browser agent actions each have their own custom icon)
2026-03-17 23:52:20 -07:00
haikdc
6f02daff2d
[Haik]: (Browser actions shown in agent card output) (User can have item selection turned on by default in settings) (most browser related functionality works - altho spotify is tricky) (mcp discovery in prod shld worke now?)
2026-03-17 01:48:50 -07:00
haikdc
b90e5c6353
[Haik]: (Practically all forms of dashboard interaction glitches) (made dashboard selection process much more intuitive and seamless - and high level) (added BrowserAgent so the outer agent can delegate more complex tasks) (added tool to parallelize across multiple browser agents since the abstraction keeps the tool calls so high level) (Added a temporary agent insight ui over each browser as it does stuff - human in the loop is still needed)
2026-03-16 05:01:56 -07:00
haikdc
1717d456cf
[Haik]: (Now u can rename the dashboards via the sidebar) (Default system prompt - and a button to reset to the default if u ever modify it) (Completely revamped dashboard icon, when clicked it expands to show all active items in the dashboard, when u click an item, it jumps to it auto focussing) (this auto focus jump also has a custom animation and highlighting)
2026-03-16 03:56:18 -07:00
haikdc
e6f1e18054
[Haik]: ckpt, this is a big one babayyy (dashboards now show screenshot previews of their contents like Apps) (Views are now called Apps) (Tools are called Actions) (Auto layout now preserves sizing and just works much better) (Browsers and Apps have larger spawn in size) (Tutorial info for how to get an anthropic key to help users - in the settings) (Added Descriptions to all 3 Main Pages in Navbar) (Also reorganized navbar and made it resizable) (Browsers now support multiple tabs) (Move the Commands page to settings - also beefed up settings a bit to encapsulate more) (Added inner glow on browser) (Added inputs in header of browser to act like normal google search)
2026-03-16 03:08:58 -07:00
haikdc
08cab727a1
[Haik]: ckpt (shld have fixed tool mcp discovery in prod - but untested) (Added browser control animations) (Made browser top input function as search) (swapped run.sh to not open up site locally in addition to the electron app)
2026-03-16 00:27:34 -07:00
haikdc
383f62c852
[Haik]: minor style tweaks and auto update functionality added (yet to be tested)
2026-03-15 23:12:29 -07:00
haikdc
87ef21919f
[Haik]: Browser control
2026-03-15 19:54:23 -07:00
haikdc
1b06780079
[Haik]: notarized app done and working.
2026-03-15 05:12:05 -07:00
haikdc
c728b462d6
[Haik]: Functional Browser
2026-03-15 02:15:59 -07:00
haikdc
7244967267
[Haik]: ckpt, (fixed production favion reference to point to logo) (implemented batch selection and movement in the dashboard) (Made header which includes: dashboard collapse icon, forward/back icons, logo) (Added Shortcuts to the rest of the items in the dashboard toolbar) (restyled the settings to look sexy) (removed the weird lil seperator in the toolbar)
2026-03-15 00:58:45 -07:00
haikdc
1632b5c9e5
[Haik]: ckpt, (Fixed view create duplication bug) (Views auto save) (MCP is star sorted by default) (reload issues in dash fixed) (electron app made)
2026-03-15 00:09:04 -07:00
haikdc
802551db64
[Haik]: ckpt (Removed utils.sh) (Simplified run scripts) (Added global run.sh in the root) (Start sort is enabled by default when u open the mcp registry in the tools page) (Reload issue when your in a specific dashboard is now fixed)
2026-03-14 19:44:16 -07:00
haikdc
23621306a1
[Haik]: and so it begins
2026-03-13 12:09:25 -07:00