feat: fluid Miro-like board + 3-way connect onboarding#33
Open
Weegy wants to merge 5 commits into
Open
Conversation
Each former canvas is now a free-floating, draggable, zoomable 'app' frame on one infinite board. New boardStore (pan/zoom/geometry reducers + persistence) and Board.tsx; App.tsx renders <Board>, connects all apps, relocates the instance switcher to a floating chip. Scrolling inside a frame body no longer pans the board. Sidebar/Workspace/desktopStore left dormant. Tests + ISA added.
…erge
ws is a devDependency, so externalizeDepsPlugin didn't externalize it → ws got
bundled and its optional bufferutil import broke boot ('Could not resolve
bufferutil'). Externalize main/preload deps and include ws explicitly; ws is
required at runtime and its WS_NO_BUFFER_UTIL fallback applies.
Make the discovery flow visible per the design: the 'On this network' LAN section (Scenario A, mDNS) is always shown with a passive 'Searching the local network…' state when no hosts have answered yet (was gated on lanHosts>0 and invisible). Clarify the manual path (C) with a hint that a full ws(s):// canvas URL can be pasted directly. Server-address field (B) unchanged in function.
HARD RULE (only one app instance — old Electron procs eat RAM). predev now runs tools/gc-app-instances.mjs first: scoped to THIS worktree's path (never a blanket pkill), matches the real Electron binary (…/Electron.app/Contents/MacOS/Electron, not the .bin launcher — the old pattern missed every app), kills MAIN procs (helpers die with them) + any lingering electron-vite. Verified: caught 2 strays.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fluid Board (Miro-style) + full A/B/C connect onboarding
Replaces the Sidebar + Desktops + split-tree tiling with one infinite, pannable, zoomable board — each former canvas is a free-floating, draggable, resizable app frame. Includes the
origin/mainmerge (mDNS/HTTP autodiscovery) and the onboarding flow surfaced per design.Commits
boardStore(pan/zoom/geometry reducers + persistence) +Board.tsx;App.tsxrenders<Board>, connects all apps, relocates the instance switcher to a floating chip. Scrolling inside a frame body no longer pans the board. Sidebar/Workspace/desktopStore left dormant.discovery.tsHTTP probe +mdnsBrowser.tsmDNS,bonjour-service).externalizeDepsPlugin({ include: ['ws'] })so the main process boots (ws is a devDep → was bundled →bufferutilboot error).ws(s)://…/omadia-ui/canvasURL (C).predevkills stale Electron/electron-vite before everybun run dev(scoped to this worktree, never a blanket pkill).Verification
tsc(node + web) clean · 174 tests pass (22 files, incl. new board + merged discovery tests) ·electron-vite buildok · boots clean (single instance, no bufferutil error).Notes