5cc9f6f01a
[arnav] remove 6 dead HTTP endpoints Verified each had no production caller (frontend, electron, or internal backend) — only test references kept them looking alive to coverage tools. Drops ~140 LOC of route handlers + helpers. - POST /api/outputs/vibe-code: never wired up; frontend has no vibe-code UI. Also drops VibeCodeRequest model and VIBE_CODE_SYSTEM_PROMPT. - GET /api/service/cost-breakdown: frontend Usage page reads /usage-summary, which already returns by_model/by_provider. - GET /api/service/status: zero callers; was placeholder. - GET /api/service/spool/count: debug-only, no UI surface. - GET /api/settings/default-system-prompt: frontend defines its own DEFAULT_SYSTEM_PROMPT in settingsSlice.ts and never fetches the backend constant. - POST /api/browser/command: sole caller (browser_mcp_server.py subprocess) was deleted in 8286cc1; browser_agent.py now calls ws_manager.send_browser_command directly in-process. Tests covering the removed endpoints are dropped along with the now-unused mock-anthropic helpers in test_api_outputs.py.
Arnav Naval2026-05-06 17:11:57 -05:00
11487456b5
eric] Google OAuth via cloud-proxy + gitleaks CI
ciregenz2026-05-06 13:28:35 -07:00
4ba7ed583e
[eric] perceived-speed pass — skeleton placeholders replace spinners on Tools/Modes/Views/DiffViewer/DashboardSelection, dashboard rename updates instantly (rollback if server rejects), dashboard cards no longer shake neighbors during streaming, plus shared motion/loading primitives for future consistency. Toolbar model/mode/thinking pick now writes through to the global default so it sticks across reopens.
ciregenz2026-05-04 01:00:43 -07:00
b0515ac3c5
[eric] dashboard minimap and thumbnail no longer lie when an underlying output gets deleted from the Views page — orphan view cards now get pruned from layout state on the next render (gated on outputs loaded so the fix can't wipe valid cards during the load race), and clearing all cards from a dashboard now actually clears its thumbnail on exit instead of leaving the last 'alive' image stuck forever.
ciregenz2026-05-04 00:12:12 -07:00
616e2e0be9
[eric] make the app open faster and stop crashing on small errors — split the JS so first paint is ~40% smaller (Settings/Tools/Views etc. only load when you click into them, Settings pre-loads in the background so opening it stays instant), added a safety net that shows a friendly error card instead of blacking out the whole app, and stopped a few dashboard lists from needlessly rebuilding on every chat update.
ciregenz2026-05-03 23:43:37 -07:00
6f1ee49f1f
[eric] silent auto-update — new versions download in the background and apply when the user next quits OpenSwarm; 4h re-check covers always-on sessions. Banner now reads 'will install when you quit' so users know what's happening.
ciregenz2026-05-03 23:17:36 -07:00
8286cc1a5c
[eric] delete ~3.6k lines of dead code (old unused agent runtime, ghost fields, orphan scripts). all 660 tests still pass, no functional change.
ciregenz2026-05-03 22:39:17 -07:00
0f8cfe0510
[arnav] test(backend): add agents-subapp unit/integration suite and coverage reporting
Arnav Naval2026-05-04 00:38:53 -05:00
5f5b932c53
[eric] tiny dead-code sweep — drop unused langchain pins from requirements.txt (saves ~5MB on packaged build) plus a few orphan exports left over from past iterations (temp_state slice fields, clipboard timestamp getter, three never-imported lastSeq helpers).
ciregenz2026-05-03 21:31:13 -07:00
d14cc89300
[eric] tool labels read like a person — Plugged into Gmail, Saved a snapshot, varied phrasings per call; session/turn labels in sentence case; activating an MCP mid-chat now actually works instead of the model guessing at made-up tool names. Also a bunch miscelaneous ui/ux tweaks, I cant be bothered :)
ciregenz2026-05-03 20:44:32 -07:00
2e9d653d1b
[arnav] test(backend): add API integration and unit coverage for outputs app
Arnav Naval2026-05-03 18:15:30 -05:00
ade79315a9
[eric] thinking pill shows full turn cost (input + output + subagent + tool work) with click-to-see input/output breakdown; reopening completed chats no longer replays the typewriter (per-session lastSeq survives AgentChat remount so resume protocol stays at the high-water mark instead of last_seq=0)
ciregenz2026-05-03 11:21:02 -07:00
d310f9e031
[eric] thinking pill works on GPT/Gemini (clickable bubble with duration + token count + honest "provider does not expose reasoning text" note instead of vanishing); friendlier MCP tool names (Gmail/Slack/etc with verb-derived actions); auto-collapse Anthropic thinking pill on turn end so the answer comes first; header timer matches per-turn pill (sums in ms, rounds once); thinking pill rolls 251s to 4m 11s; parallel tool count chips do not jitter as N grows; drop Gemini 2.5 from picker (Gemini 3 family only); aux-LLM calls route per-model so cheap-tier auxiliary calls do not 401 on cc/ subscription routes
ciregenz2026-05-02 23:46:13 -07:00
c0aeabb23f
[arnav] test(backend): add AgentLoop unit coverage for streaming, tools, HITL, and WS events
Arnav Naval2026-05-03 01:37:49 -05:00
154fb60584
[arnav] pytest config, conftest isolation, and API endpoint integration tests
Arnav Naval2026-05-02 11:08:38 -05:00
bc816437b6
[arnav] fix(ci): install local debug package via requirements-dev
Arnav Naval2026-04-30 23:47:18 -05:00
249489cbd0
[arnav] add backend pytest CI workflow and local test runner script
Arnav Naval2026-04-30 23:34:26 -05:00
691a92c2a1
[eric] dynamic turn labels in the thinking pill via cheap-tier aux LLM + cache pre-warm on dashboard mount for faster turn-1 TTFT
ciregenz2026-04-30 12:31:48 -04:00
b7c93e2251
[eric] global ⌘K search + ⌘L clear chat + sticky notes on canvas + merge Chat into Ask + chat composer/dock sizing + spellcheck
ciregenz2026-04-29 02:41:01 -04:00
f755548b93
[eric] drop (Pro/Max) suffix from cc/ model labels — group header already disambiguates from OpenSwarm Pro proxy; .gitattributes: split mcp-bundles vendored pattern into two
ciregenz2026-04-29 00:46:17 -04:00
9be2d87f73
[eric] WS resilience: per-session seq + ring buffer + resume protocol so agent runs survive transient disconnects (wifi flap, sleep, NAT drop) instead of flipping to completed. Adds heartbeat (25s ping/10s pong), reconnect with infinite jittered backoff, outbound queue gated on resume_ack, gap_detected fallback for long offlines, on-disk persistence of terminal events for post-restart recovery, and a reconnecting connection state decoupled from session.status. 1089 backend tests covering 500 randomized disconnect scenarios + concurrent broadcast races. Backend/WS handler does not cancel agent task on disconnect
ciregenz2026-04-28 23:47:59 -04:00
30d581e9ec
[eric] phase 1: MCP activation gate, context pill, friendly 429s, -api routes so API keys actually work
ciregenz2026-04-28 19:01:07 -04:00
24dbd999ac
[eric] bump M365 MCP server to 0.90.0: adds OneDrive share links, async copy, file previews
ciregenz2026-04-27 23:56:14 -07:00
f0ea0fd1bc
[eric] 1.0.27 production push: fixes the weird "exec" icon next to OpenSwarm on fresh Macs, faster startup (~10s less from shipping a real Node binary instead of running Electron as Node), and Google Workspace + other uvx-based MCPs work again on machines without uv installed.
v1.0.27
ciregenzandClaude Opus 4.72026-04-27 22:37:17 -07:00
f4cded781b
[eric] App Builder fixes: preview loads (auth-token threaded into iframe URL + sub-resource paths), agent keeps running when you switch tabs (session+workspace persisted on the app), Settings default model/thinking now flow into App + Skill Builder drafts
ciregenz2026-04-27 15:09:25 -07:00
e3a72fe3f9
bare mode to fix 9router
Arnav2026-04-25 17:38:26 -05:00
021cf7cc21
working tools for api key
Arnav2026-04-25 11:54:42 -05:00
b2d2b1ca87
working chat mode
Arnav2026-04-25 11:02:22 -05:00
d8f69bb23d
[eric] shrink prod payload another ~125MB: drop unused binary (-97MB), trim babel non-en locale data (-30MB), strip pip-only dist-info noise (-2MB), move pytest to dev-requirements (-4MB)
ciregenz2026-04-25 04:35:20 -07:00
c67d27976b
[eric] splash for start up ux improvements
ciregenz2026-04-25 03:46:59 -07:00
94ea07dd0c
[eric] make Windows install + boot way faster: splash window so it's not frozen on startup, swap MCP node_modules for tiny esbuild bundles (138MB → 7MB), pre-compile python bytecode, parallelize Widevine, never silently quit
ciregenz2026-04-25 03:05:08 -07:00
ca9bb06b23
[eric] 9router: switch production build from webpack to turbopack — webpack's glob scan walks into runneradmin's Application Data junction (XP-era loop) on GitHub Actions Windows runners and EPERM cascades into FlightClientEntryPlugin TypeError. Turbopack is Next 16's native bundler with no user-profile scan; produces same standalone output for electron-builder packaging
v1.0.25
Eric2026-04-22 01:12:24 -07:00
21a923caed
[eric] 9router windows CI fix v2: webpack ignore must be single regex (not array mixing regex+globs which fails validation) — combine logs/.next/Application Data/Local Settings into one regex; snapshot.managedPaths still empty for the actual EPERM mitigation
Eric2026-04-22 01:02:42 -07:00
b286439e55
[eric] 9router windows CI fix: ignore XP-era junction points (Application Data) in webpack snapshot+watch — caused EPERM scandir cascading into FlightClientEntryPlugin TypeError on GitHub Actions runneradmin user
Eric2026-04-22 00:09:02 -07:00
a53731ccbb
[eric] merge origin/eric/v2 — keep local ^0.85.0 bump of @softeria/ms-365-mcp-server over the incoming ^0.79.6 downgrade
ciregenz2026-04-21 22:17:08 -07:00
4ce4dec33c
[eric] windows polish + bump 1.0.25: publish-win.ps1 mirror of publish.sh + run.ps1 windows dev launcher, build-app-win.ps1 warns 8s if Mac latest-mac.yml missing in v<version> release before -Publish, python-env cache skip via OPENSWARM_REBUILD_PYTHON, pip stderr wrapped to suppress PS5.1 NativeCommandError; analytics APP_VERSION auto-derived from electron/package.json (single source of truth); OnboardingModal renders Connected state for already-active providers; gitignore fix for backend/.venv. Bumps 1.0.25 - first version that ships Mac and Windows together.
eric/windows
Eric2026-04-21 21:53:48 -07:00
a6b18752cb
starting integration of old frontend
Arnav Naval2026-04-21 23:24:10 -05:00
9ff07443db
[eric] windows shipping: electron-builder win+nsis + Azure Trusted Signing hook, build-app-win.ps1 / build-python-env-win.ps1 mirroring mac, release-windows.yml tag-triggered CI, icon.ico + .env.windows.example, .claude/ + .env.* gitignored. Runtime fixes: PYTHONUTF8=1 (cp1252 UnicodeDecode), python.exe / Lib\site-packages paths, PYTHONPATH path.delimiter, taskkill /T /F process tree, OAuth UA platform branch, sign-vmp postinstall via node wrapper. Backend: _resolve_command PATHEXT probing (fixes uvx not found), UV_PYTHON Windows path. Cross-env added to 9router+electron for NODE_ENV prefix on cmd. Onboarding: poll subscriptions/status while connect step is open, render Connected for active providers (was stuck on "Connect" after 30s OAuth poll timeout).
Eric2026-04-21 18:15:49 -07:00
c8360cc921
[eric] fix dead annual subscribe buttons: desktop was sending billing_interval="annual" but cloud zod enum only accepted "monthly"|"yearly" so the POST returned 400 and the click silently no-opped — now map annual→yearly at the fetch boundary, UI/types/analytics stay on "annual"
ciregenz2026-04-21 16:48:05 -07:00
87e42d0a3a
[eric] initial push for windows compatibility openswarm one click download
Eric2026-04-21 15:50:32 -07:00
11b07bde28
[eric] production push 1.0.24: removed non-Claude MCP upfront-load warning (context-cost only, zero functionality impact), fixed fullscreen + webview popup dark-screen via new-window → exitFullscreen so parent stays interactive, ErrorSlime extracted to shared component and rendered on all chat error cards (Network / Servers maxed / Plan limit / Subscription), Network issue classifier tightened to real errno codes + retry CTA removed since edit_message-based replay was truncating successful tool history — copy now directs user to send-new-message once WS auto-reconnects
ciregenz2026-04-21 15:11:56 -07:00
b9f7698b0c
[eric] default-model + thinking-mode settings overhaul: Settings dropdown mirrors the in-session picker (provider-grouped from state.models.byProvider, disambiguates same-named models by · Provider), toolbar now honors the stored default_model instead of snapping to stale Redux initial 'sonnet' and re-syncs on every reopen so last-used picks don't leak, smart fallback per priority Anthropic > OpenAI > Gemini > OpenSwarm Pro > OpenSwarm with Snackbar warning when the user's default becomes unreachable, new Default thinking mode setting (Auto/Off/Low/Medium/High) added to AppSettings and threaded into AgentSession on launch, onboarding flow for user intuitive-ness slight tweaks
ciregenz2026-04-20 14:56:09 -07:00
301b0f7707
[eric] auto-heal corrupt npx cache in MCP stdio discovery: on ERR_MODULE_NOT_FOUND pointing into ~/.npm/_npx/<hash>/, wipe that dir and retry once — fixes Discord/YouTube failing with "MCP stdio process exited unexpectedly" after partial npx installs, per-browser auto-close: spawned browser cards now disappear on their own sub-agent's completion instead of lingering until the parent agent finishes, WebSocketManager agent:status matches by session.browser_id (spawned_by is the parent, so it never matched the finishing sub-agent), user-created/pre-selected browsers untouched
ciregenz2026-04-20 01:20:20 -07:00
dfc2f63488
[eric] onboarding walkthrough videos: replace pastel placeholder with autoplay/muted/loop step videos for all 5 steps, uniform 8x8 progress dots no longer resize active step, body minHeight 130 to 200 keeps modal at the same height across all steps
ciregenz2026-04-18 23:27:44 -07:00
8d19cd64cf
[Haik]: refactor: migrate frontend from flat file structure to nested AppShell architecture — moves DynamicIsland under TitleBar with CompactPill/ExpandedCard subgroups, consolidates Settings and Commands pages into AppShell/components with dedicated components/hooks/shared dirs, relocates Layout pieces (Sidebar, TitleBar, UpdateBanner) as AppShell children, and updates Main.tsx import path
haik/cleanup-v2
haikdc2026-04-18 19:14:26 -07:00
decd61349d
[hAIk]: refactor: reorganize browser modules (browserRegistry, browserCommandHandler, resolveUrl, useBrowserActivity) into shared/browsers/ subdirectory, extract duplicate useResolvedTheme hook from CodeDiff into CodeBlockRoot helpers, and update all consumer imports across Dashboard and Layout
haikdc2026-04-18 18:29:49 -07:00
4ac8fa2c12
[Haik]: cleanup: remove dead code and tighten TypeScript types across frontend — delete unused AutoRunLog.tsx, LogEntry.tsx, and clearClipboard(); remove SendMessagePayload, GenerateGroupMetaPayload, SearchHistoryParams, and summarizeToolInput from shared types and agentCardUtils; replace Record<string, any> with Record<string, unknown> in agentsTypes.ts and dashboardClipboard.ts; type getStatusColors param as ClaudeTokens; relocate richEditorUtils.ts from app/components to RichPromptEditor and update imports; narrow summarizeMessage export to module-private in BrowserAgentOverlay; wrap session-change state resets in queueMicrotask to avoid render-during-render warnings
haikdc2026-04-18 17:58:25 -07:00
89d81dd0aa
[Haik]: fix case-sensitive Button import paths across 7 adapter files, replace React use() with useContext in CodeDiff for broader compat, remove unused useResolvedTheme/getSystemTheme/getDocumentTheme from CodeBlockRoot helpers, fix useFileSrc object URL race condition with revocation flag and queueMicrotask, replace OptionList useEffect-based activeIndex with useMemo derivation, swap process.env NODE_ENV check for import.meta.env.DEV, and wrap ElementSelectionProvider ref assignment in useEffect to avoid render-phase side effects
haikdc2026-04-18 17:48:12 -07:00
d2004c2933
[Haik]: export ElementSelectionContext from useElementSelection
haikdc2026-04-18 17:31:33 -07:00
433c10c993
[Haik]: refactor: relocate onboarding, element selection, and toolkit modules into proper directories and update all import paths
haikdc2026-04-18 17:28:15 -07:00
b74bd2a006
[Haik]: refactor: co-locate UI primitives with AgentChat feature — delete avatar, button, collapsible, dialog, separator, and tooltip from src/components/ui, recreate them under AgentChat/_shared and component-local dirs (tooltip, avatar, dialog, separator), and rewire 13 consumer imports across OpenSwarmThread, ToolFallback, approvalToolkit, and nativeToolkit adapters
haikdc2026-04-18 17:17:30 -07:00
015b663cbf
[Haik]: refactor: remove global components/tool-ui/shared/ directory and colocate its modules under AgentChat/toolkit — move ToolUI schemas to toolkit/utils/schema, action types to approvalToolkit/utils/types, ActionButtons component to approvalToolkit/components/ActionButtons, actions-config and embedded-actions to OptionList/utils, and getMcpInputSummary and useMcpToolMeta to approvalToolkit/utils; update all imports across approvalToolkit and nativeToolkit
haikdc2026-04-18 17:06:07 -07:00
a8370d0cce
[Haik]: refactor: break apart approval-tools.tsx, approval-question.tsx, and approval-utils.tsx into a modular approvalToolkit/ directory with ApprovalRouter, BatchApprovalWrapper, ToolApproval, ToolQuestion, getMcpInputSummary, and useMcpToolMeta as separate files; relocate tool-ui components (ApprovalCard, option-list, question-flow) into co-located component folders; inline getToolIcon into CompactActionablePill using Lucide icons; replace toolkit/index.ts with toolkit.ts; update all consumer imports across AgentChat, ExpandedCard, CompactActionablePill, and Dashboard AgentCard components
haikdc2026-04-18 16:44:07 -07:00
5c876493c0
[Haik]: rename TerminalA component to Terminal
haikdc2026-04-18 15:56:10 -07:00
5744e615a3
[Haik]: refactor: restructure native tool-ui components — delete flat components/tool-ui/{code-block,code-diff,terminal,shared}/ directory tree and relocate all tool rendering components into AgentChat/toolkit/nativeToolkit/components/ with dedicated subdirectories for CodeBlock/, CodeDiff/, TerminalA/, and _shared/; decompose the 464-line monolithic code-block.tsx into CodeBlockRoot (highlighter + context), CodeBlockHeader (filename + copy button), CodeBlockContent (shiki HTML output), CodeBlockCollapseToggle (expand/collapse), and a thin CodeBlock.tsx barrel; colocate schema.ts, _adapter.tsx, and README.md alongside each component; move pierre-dark-theme.js, pierre-light-theme.js, and useCopyToClipboard.ts into _shared/; replace native-tools.tsx with nativeToolkit.tsx using relative imports instead of @/ aliases; update all import paths accordingly
haikdc2026-04-18 15:54:48 -07:00
8e327a57da
[Haik]: refactor: restructure OpenSwarmThread component hierarchy — move AssistantMessage from flat file into AssistantMessage/ directory with colocated MarkdownText/ (MarkdownText, DEFAULT_COMPONENTS, CodeHeader) and ToolFallback/ (ToolFallback, ToolFallbackRoot, ToolFallbackTrigger, ToolFallbackContent, ToolFallbackArgs, ToolFallbackResult, ToolFallbackError); move UserMessage into UserMessage/ directory extracting UserMessageAttachments; relocate TooltipIconButton from global components/assistant-ui/tooltip-icon-button into OpenSwarmThread/components/; delete shared modules attachment.tsx, markdown-text.tsx, tool-fallback.tsx, and tooltip-icon-button.tsx from components/assistant-ui/; update import paths in OpenSwarmThread.tsx, BranchPicker.tsx, and MessageActions.tsx
haikdc2026-04-18 15:17:02 -07:00
1c0b886052
[Haik]: refactor: restructure frontend component hierarchy — move OnboardingModal into OnboardingModal/ with ProviderStep, ToolsStep, and useOnboarding submodules; move OpenSwarmThread from thread/ into OpenSwarmThread/ with AssistantMessage, BranchPicker, MessageActions, UserMessage components and utils; split AgentCardCollapsed into AgentCardCollapsed/ extracting GoogleServiceIcon, getToolDisplayName, and summarizeToolInput into components/; move approval-card to ApprovalCard (PascalCase) with ApprovalCard.tsx, schema.ts, _adapter.tsx, and README.md; update import paths in AgentChat.tsx, CompactActionablePill, ExpandedCard, BrowserCard, AgentCard, and approval-utils; remove re-exports from approval-tools.tsx in favor of direct imports; replace aliased component names (ApprovalBar → ApprovalRouter, BatchApprovalBar → BatchApprovalWrapper)
haikdc2026-04-18 14:42:41 -07:00
2f0ff10d3f
[Haik]: refactor: restructure Dashboard module boundaries — move ElementSelectionContext (split into ElementSelectionProvider, SelectedElement, useElementSelection), SelectionOverlay, domSelectorHelpers, and useDomElementSelector from global components/ into Dashboard/_shared/element_selection and Dashboard/hooks/useDomElementSelector; relocate types.ts and formatRelativeTime.ts into Dashboard/_shared; update imports in Dashboard.tsx, DashboardCanvas, CanvasControls, DashboardHeader, ViewEditor, useIframeElementSelector, dashboardClipboard, and all Dashboard hooks
haikdc2026-04-18 14:15:02 -07:00
31e3d66436
[Haik]: refactor: restructure frontend component hierarchy — move CommandPicker, RichPromptEditor, and related hooks/types out of global components/ into Modes/ModeFormDialog/components/ with nested subdirectories; relocate ToolsSelector into ModeFormDialog/components/; extract getToolGroupIcon to pages/_shared/ for cross-page reuse; update imports in Modes.tsx and useCommands.tsx
haikdc2026-04-18 13:43:48 -07:00
765cb733be
[Haik]: renamed OpenSwarmComposer to ChatInput
haikdc2026-04-18 13:26:21 -07:00
b8ca2535b9
[Haik]: Remove legacy ChatInput component tree (ChatInput, AttachmentChips, ImageAttachments, useChatSubmit) and replace DashboardToolbar usage with OpenSwarmComposer via a new ToolbarComposer wrapper backed by useStandaloneComposerRuntime and AssistantRuntimeProvider; relocate ModelModeSelector and ContextRing into OpenSwarmComposer/components; move TabLocalState from shared Dashboard types to BrowserCard directory; add embedded prop to OpenSwarmComposer for borderless toolbar rendering
haikdc2026-04-18 13:23:57 -07:00