Commit Graph
1107 Commits
Author SHA1 Message Date
ciregenz 324ff76ca5 [eric] onboarding: expanded beats cap to a centered card (no beige-void layout on ultra-wide displays) 2026-07-15 16:33:31 -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 c836bd2731 [eric] theme: zen-parity device (color-theory harmonies, intensity + grain dials, light/dark/system) 2026-07-15 16:05:19 -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 96384285d5 [eric] onboarding: vivid off-brand signature bloom on the intro (electric blue to violet); user's picked color still owns theme + card 2026-07-15 15:42:00 -07:00
ciregenz 5fd158243d [eric] onboarding: opt-in usage read (chatgpt memory + claude titles from logged-in card -> prep profile, raw discarded) 2026-07-15 14:43:30 -07:00
ciregenz d790459580 [eric] onboarding: prep designs a personal app; audit + app build launch mid-flow; keep/discard toast at reveal 2026-07-15 13:30:57 -07:00
ciregenz 8f095505a0 [eric] onboarding: reveal lands working (identity-profiled prep, first starter auto-runs as a live read-only audit) 2026-07-15 13:07:45 -07:00
ciregenz a771280fa9 [eric] onboarding: small-detail pass (themed checkbox, chunky torn edge, themed stage, real traffic lights, crossfade transitions) 2026-07-15 13:07:45 -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 410ba60b0e [eric] onboarding: minimalism pass (arc radio rows, one-line copy, no icon spam, clean light stage) 2026-07-15 11:50:33 -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 14d83bf499 [eric] theme: gradient engine (1-3 stops on the pad, canvas wash, gradient-tinted card emblem) 2026-07-15 11:20:05 -07:00
ciregenz 6ad74bea0b [eric] onboarding: claude design language (starburst mark on intro, thinking-pulse finish, starburst card emblem) 2026-07-15 01:38:12 -07:00
ciregenz 2b28193e15 [eric] onboarding: arc stagecraft (window birth, zigzag grain rooms, picker device, mini-canvas, swarm card) 2026-07-15 01:23:39 -07:00
ciregenz 99dbc414d6 [eric] onboarding: schedule-offer toast + morning-brief chip turn the first win into a standing job 2026-07-15 01:23:39 -07:00
ciregenz dd5a67b266 [eric] theme: accent picker gets a Settings home; applies live like theme 2026-07-15 01:23:39 -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 40bbc867f1 Merge branch 'pr-131-fresh' into HEAD 2026-07-15 00:24:00 -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
abccodes a422d4d79e [aidan] fix/chat-history: stop retaining unopened histories 2026-07-13 21:28:09 -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
ciregenz dca6298f1b [eric] merge #125: virtualize large user messages (aidan) 2026-07-12 18:37:58 -07:00
abccodes 4b39d747c4 [aidan] fix/lazyload-chat-lag: virtualize large user messages, add hard-cut fallback 2026-07-10 18:02:52 -07:00
ciregenz a9d239383e [eric] merge #122: abort card drag on pointer release off-canvas, no stranded edge-pan (pierre) 2026-07-09 16:38:33 -07:00
ciregenz 72e71d6710 [eric] dashboard: clicks inside a webview page select its browser card (guest app-clicked IPC, select+raise only, no camera yank) 2026-07-09 16:26:04 -07:00
SirKentut 0156f475b8 [pierre] fix: explicitly invoking a an abortDrag the moment the user releases the pointer when off canvas 2026-07-09 00:14:30 -07:00
ciregenz 9fdfa12cc5 [eric] dashboard: note textarea + browser chrome clicks select (capture-phase); card presses never arm the marquee deselect 2026-07-08 23:52:31 -07:00
ciregenz 3b0d3bb6a7 [eric] dashboard: plain click selects the card so spawn-beside-selection fires without shift/marquee 2026-07-08 23:35:01 -07:00
ciregenz dca6008ddd [eric] providers: health pill ignores clickaway (first canvas click was silently killing it) 2026-07-08 23:16:27 -07:00
ciregenz 8dead0c890 [eric] merge #121: spawn cards beside selection or viewport-center; agent browsers dock to chat (pierre)
# Conflicts:
#	frontend/src/shared/ws/WebSocketManager.ts
2026-07-08 22:58:42 -07:00
ciregenz 8ed9149c7e [eric] providers: boot-time login-health pill (dead sub token -> reconnect toast, no more silent codex deaths) 2026-07-08 20:34:37 -07:00
SirKentut ae563ee9d5 [pierre] fix: deterministic browser spawn 2026-07-08 18:14:00 -07:00
ciregenz c19f4ca99e [eric] browser: never suspend an audible card (Chrome parity, music keeps playing off-screen) 2026-07-08 14:00:26 -07:00
ciregenz 161c65cdcd [eric] browser: Chrome-style suspend capsules (sessionStorage+scroll survive), last-visible-frame snapshots, 20s working grace 2026-07-07 22:52:28 -07:00
ciregenz f7b4e91dd2 [eric] browser: unwedge off-screen webview suspend (capturePage hang) + glow-leak liveness gate 2026-07-07 21:27:33 -07:00
SirKentut d1713f901c [pierre] feat: browser spawned from agent will always spawn to the right of parent chat 2026-07-07 18:47:12 -07:00
SirKentut c4789ebdab [pierre][refactor]: placeCard exact flag replaces the placeCard+setCardPosition double-dispatch
The optimistic spawn placed the chat with placeCard (which grid-snaps + collision-dodges) then immediately overwrote it with setCardPosition to force the exact viewport-center/beside-card spot. Fold that into a single placeCard({ ..., exact }) so the pre-resolved position is honored directly; the single-browser dock omits exact to keep the collision-dodge cascade.
2026-07-07 18:47:12 -07:00
SirKentut f8b9e44cd9 [pierre][fix]: dead-center new cards in viewport and on camera fit 2026-07-07 18:47:12 -07:00