Commit Graph
1687 Commits
Author SHA1 Message Date
ciregenz 583b4f6c97 [eric] dashboard: connector/tether lines render behind cards (zIndex 10 cut through the chat + browsers; now tuck under like a node graph) 2026-07-15 22:41:18 -07:00
ciregenz b1e16df668 [eric] models: add Sonnet 5 to the tier map + picker sorts newest-first within a capability tier (was buried under older Opus by alphabetical family) 2026-07-15 22:41:18 -07:00
ciregenz 18232d8911 [eric] dashboard: scroll-focus set on any card press + non-card scrollables (menus/dropdowns) scroll natively; fresh chat scrollable on spawn 2026-07-15 20:08:15 -07:00
ciregenz 7ab187cef1 [eric] dashboard: grab-to-drag selects the card so the next spawn docks beside it (was deselect-all, so spawns flew to viewport-center) 2026-07-15 19:55:30 -07:00
ciregenz b1a343ed78 [eric] dashboard: open chat is interactive again (drop drag overlay when expanded) + browsers/apps own their scroll so Figma/Maps zoom works 2026-07-15 19:35:59 -07:00
ciregenz dd4605c7b3 [eric] dashboard: scroll zooms the canvas over any card (Google Maps); click into a card to scroll its content 2026-07-15 19:17:08 -07:00
ciregenz d405c221ed [eric] dashboard: one click focuses a card (arm webview shield on first drag-move, not pointerdown; arming on down made the click-focus camera fit skip = felt like two clicks) 2026-07-15 18:45:43 -07:00
ciregenz b062666bf1 [eric] dashboard: spawn picks the EUCLIDEAN-nearest open gap, not the first ring-scan cell (3rd card flung to a far corner when a big browser blocked the near cells) 2026-07-15 18:37:50 -07:00
ciregenz 42f69e67d7 [eric] dashboard: drag browser/app cards via compositor transform (webview surface shimmered back-and-forth while edge-panning; left/top relayout desynced from the canvas transform) 2026-07-15 18:25:12 -07:00
ciregenz d4db6e7c9d [eric] dashboard: don't wipe layout mid-drag + never route to a phantom (deleted) dashboard id (dragging cards was silently broken by a spurious layout reset) 2026-07-15 18:07:38 -07:00
ciregenz c50947edad Merge branch 'eric/dev' of https://github.com/openswarm-ai/openswarm into eric/dev 2026-07-15 17:36:42 -07:00
ciregenz 82d4acd6dd [eric] dashboard: agent clicks in its own browser no longer steal selection (browser chased the cursor mid-drag, spawn-beside re-anchored); also block Task, the 2.1.122 name of the builtin sub-agent tool 2026-07-15 17:30:22 -07:00
ciregenz 128869f0e6 [eric] agents: native SpawnAgent tool (prompt + run_in_background only) replaces the CLI's built-in Agent; child runs as a real dashboard session 2026-07-15 17:13:37 -07:00
ciregenz 386300545c [eric] browser: did-fail-load clears the spinner + surfaces the reload UI (failed nav used to spin forever with no recovery) 2026-07-15 16:45:46 -07:00
ciregenz 9305c3f7d7 [eric] dashboard: skip the click-focus camera fit when the press became a drag or marquee (start-of-drag camera nudge) 2026-07-15 16:44:47 -07:00
ciregenz 18be782071 [eric] chat: 5s live-session refetch reuses unchanged message objects (fresh clones broke every bubble memo per tick) 2026-07-15 16:44:47 -07:00
ciregenz d1fd0dd5c4 [eric] dashboard: spawn camera is reveal-only (no zoom-in ever, no move when visible, minimal pan otherwise) 2026-07-15 16:44:47 -07:00
ciregenz a88549cbb3 [eric] browser-feed: memoize rows + per-feed selector w/ result equality; hydrate new mid-run children (per-token full-history re-render = the browser-use lag) 2026-07-15 16:18:23 -07:00
ciregenz cfe338a0e5 [eric] chat: optimistic user bubble on the first message of a draft (was 3 round-trips of nothing) 2026-07-15 16:18:23 -07:00
ciregenz 4e9bd406a7 [eric] dashboard: spawn lands in the closest open gap to viewport center; spawn-framing zoom capped 1.15 -> 0.75 2026-07-15 16:14:14 -07:00
ciregenz 3617ed08cb [eric] dashboard: shield webviews during card drag so a release over a browser page can't strand the edge-pan loop 2026-07-15 16:11:08 -07:00
ciregenz 1225572064 [eric] oauth: claude callback relays the backend's real outcome page (static close-page masked every failed connect as success) 2026-07-15 16:02:07 -07:00
ciregenz fd9e32309e [eric] agents: fetch live connections for the sub-agent model pin (run/ split starved it with [], every sub-agent 401d on router routes) 2026-07-15 15:48:24 -07:00
ciregenz 0190e232ae [eric] share: user-confirmed Export anyway when the file secret heuristic trips (download only; own credential fields stay blocked) 2026-07-15 15:44:10 -07:00
ciregenz e1dd537a94 [eric] models: hold GPT-5.6 (Sol/Terra/Luna) not offered; Responses-API-only + 9Router 0.3.60 speaks chat/completions = no working lane 2026-07-15 14:43:41 -07:00
ciregenz 20d07a65e3 [eric] models: add GPT-5.6 (API-key lane); Sonnet 5 already listed, no codex-breaking cx entry on the pinned router 2026-07-15 14:24:53 -07:00
ciregenz e52f4a1b8a [eric] agents: rehydrate browser-agent children the trimmed session-list poll leaves message-less (feed no longer blanks) 2026-07-15 12:58:44 -07:00
ciregenz a7a095a379 Merge branch 'pr-129' into HEAD 2026-07-15 12:51:50 -07:00
ciregenz 131d26c8a7 [eric] merge #130: plain scroll zooms canvas + cmd/ctrl-scroll pans (pierre); anchor zoom at cursor not viewport-center 2026-07-15 11:46:06 -07:00
ciregenz 224bc07a52 [eric] dashboard: snap card-framing camera in 150ms (was a lazy 320ms glide) 2026-07-15 01:05:09 -07:00
ciregenz 910f87f270 [eric] onboarding: v3 connect-first flow, live theme pad, personalized reveal 2026-07-15 00:29:11 -07:00
ciregenz 164f5c6c06 [eric] theme: user accent hex derived into live tokens via ThemeContext 2026-07-15 00:29:11 -07:00
ciregenz 83bb052c0b [eric] onboarding: identity/scan/prep endpoints, settings fields, disk-row reader 2026-07-15 00:29:11 -07:00
ciregenz 40bbc867f1 Merge branch 'pr-131-fresh' into HEAD 2026-07-15 00:24:00 -07:00
ciregenz fcc6af0f0b Merge branch 'pr-126-fresh' into HEAD 2026-07-15 00:23:59 -07:00
SirKentut 5956f377e8 [pierre] fix: scroll focused card horizontally with Left/Right arrow keys 2026-07-14 16:27:16 -07:00
SirKentut b8cd6fe2b3 pierre/cmd-scroll-vertical-pan: cmd/ctrl+scroll pans vertically
cmd/ctrl + scroll now pans the canvas up/down instead of zooming at the
cursor. The catch: a trackpad pinch reports as a wheel with ctrlKey set,
indistinguishable at the event level from a real Ctrl+wheel. Gate on the
physically-held key (cmdRef, tracked via keydown): a real modifier down
pans; a pinch has ctrlKey without any keydown, so it still zooms at the
cursor. Plain wheel continues to zoom at the viewport center.

The webview-forwarded cmd/ctrl+wheel path (canvas-wheel-zoom) stays
cursor-zoom — that channel can't tell a pinch from a held key, and
keeping it zoom preserves pinch-to-zoom while hovering a browser card.
2026-07-14 16:11:02 -07:00
SirKentut c4704ff27a pierre/clamp-mouse-wheel-zoom: tame discrete wheel notches
A mouse-wheel notch arrives as deltaY 100 where a trackpad sends ~1-10;
piped through the zoom curve at default sensitivity that's a ~24% jump
per notch, and macOS wheel acceleration stacks them. Clamp the per-event
zoom delta to +/-24 so each notch is a small predictable step. No-op for
trackpads (their deltas are already under the cap), so the continuous
pinch/scroll curve is unchanged.
2026-07-14 16:03:02 -07:00
SirKentut 4707439d6c pierre/scroll-to-zoom: plain wheel zooms at viewport center
Plain vertical wheel/two-finger scroll over the canvas now zooms
(anchored at the viewport center, reusing the zoomIn/zoomOut anchor)
instead of panning the y-axis. Horizontal-dominant scroll still pans X,
gated on the dominant axis so a sideways swipe's vertical jitter can't
also zoom. cmd/ctrl+wheel and trackpad pinch still zoom at the cursor.

flushWheel now folds a same-frame pan into the zoom branch, since a
vertical zoom and a horizontal pan can now be accumulated in one RAF
tick; dropping the pan would swallow the gesture.
2026-07-14 16:00:28 -07:00
ciregenz f5056bb310 [eric] build: revert notarize.js to stock @electron/notarize flow 2026-07-14 01:01:45 -07:00
abccodes a422d4d79e [aidan] fix/chat-history: stop retaining unopened histories 2026-07-13 21:28:09 -07:00
AidanandGitHub 65f57cda7f [aidan] feat/affiliate-filenames: move referred downloads to edge
Squash approved edge download attribution changes from PR #127.
2026-07-13 18:55:19 -07:00
ciregenz 7b03eab475 [eric] build: submit+poll notarization, drop --wait (notarytool progress printer SIGBUSes on macOS 25.5) 2026-07-13 16:15:37 -07:00
ciregenz 8abe5b5490 [eric] build: retry notarization on transient notarytool wait failures 2026-07-13 15:47:37 -07:00
ciregenz e7aa032b61 [eric] release: bump to 1.5.7 v1.5.7 2026-07-13 15:24:54 -07:00
SirKentut fb8745f9a3 [pierre] share: refresh the workflow list after importing a workflow .swarm
Import already handled workflow bundles, but nothing told the UI. Unlike a
dashboard there is no route to navigate to, so the hub -- which only fetches on
mount -- kept showing a stale list and the imported workflow looked like it had
vanished until a remount.

Refetch on a workflow-root import. Import drops dashboard_id and /list keeps
unassigned workflows for every dashboard, so it shows up wherever the user is.
2026-07-13 15:04:47 -07:00
SirKentut 1375e6126b [pierre] workflows: share any workflow straight from the sidebar row on hover
Puts Share beside the existing trash icon on each rail row, so a workflow can be
shared without opening it first. Trash keeps its current always-visible styling.

The button is faded out rather than unmounted when the row loses hover:
ShareButton owns the modal's open state, so unmounting on hover-out would slam
the dialog shut the instant the pointer left the row to reach it. Keeping it
mounted also stops the row reflowing as the icon appears.
2026-07-13 14:58:27 -07:00
SirKentut 6ee392839f [pierre] workflows: share the open workflow as a .swarm from the hub title bar
Adds the Share affordance to the Workflows hub, left of the close button. It
only appears in detail view, so it always has an unambiguous target; goHome
leaves selectedId set, hence the explicit mode check.

Everything under it already existed: WorkflowExportable is registered and
ShareKind already had 'workflow'. The hub simply never rendered a ShareButton.

The title bar moves from the card into the content. The card is at 281 of the
linter's 300-line cap, so lifting nav state up into it would have breached the
cap; pushing the bar down to the state instead keeps both files well under, and
splits on a better seam anyway (card = drag/resize geometry, content = the app
and its chrome). The card hands its drag handlers down via CardHeader.

The share dialog portals to the body but its events still bubble the React tree,
so the wrapper stops click/pointerdown; without it, dragging the card follows a
click inside the modal.

Verified in the running app: share icon absent on Home, present in detail and
left of the X, and the modal builds a real workflow bundle.
2026-07-13 14:55:00 -07:00
SirKentut 9fee353fda [pierre] swarm: de-lazy WorkflowExportable now that the workflow store is on this branch
The module was written when the workflow store lived only on eric/workflow, so
every store touch went through p_store()/p_model() try/except-returning-None.
Both resolve on this branch (the round-trip test already asserts as much), so
those guards had become dead code that would swallow a genuine ImportError in
storage.py and surface it to the user as "this build doesn't support workflows
yet; please update OpenSwarm".

Imports storage/Workflow at module level, drops the None branches, and rewrites
the stale docstring. The safety contract is unchanged and still covered by
test_workflow_sanitize_disables_schedule_and_strips_pii: an imported workflow
never auto-runs, and the sharer's phone number never rides along.
2026-07-13 14:21:12 -07:00
ciregenz 311f195585 [eric] electron: split installer filename attribution out of affiliateTracking (300-line cap) 2026-07-12 18:46:25 -07:00