feat(rtime): unified Canvas view — merge Pool + Weave with pan/zoom

Replace 3-tab layout (Pool/Weave/Collaborate) with 2-tab Canvas + Collaborate.
Canvas tab has collapsible left pool panel with orbs alongside infinite SVG
canvas with pan/zoom (ctrl+wheel zoom, wheel pan, space+drag, touch pinch).

- Long-press orb in pool → drag onto canvas to create commitment node
- Drop on matching task port auto-creates wire connection
- Gold glow highlights unfulfilled task ports matching dragged skill
- "Frame as Tasks" button on solver results creates task nodes with
  dashed intent frame on canvas
- Add intentFrameId to Task schema for solver-to-task linkage
- Zoom controls overlay (+/−/reset)
- Light/dark theme support for all new elements

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-04-03 12:06:44 -07:00
parent fab155b411
commit 5f45014226
3 changed files with 636 additions and 164 deletions

File diff suppressed because it is too large Load Diff

View File

@ -467,8 +467,7 @@ export const timeModule: RSpaceModule = {
},
],
outputPaths: [
{ path: "commitments", name: "Commitments", icon: "🧺", description: "Community hour pledges" },
{ path: "weave", name: "Weave", icon: "🧶", description: "Task weaving dashboard" },
{ path: "canvas", name: "Canvas", icon: "🧺", description: "Unified commitment pool & task weaving canvas" },
{ path: "collaborate", name: "Collaborate", icon: "🤝", description: "Intent-routed collaboration matching" },
],
onboardingActions: [

View File

@ -52,6 +52,7 @@ export interface Task {
needs: Record<string, number>; // skill → hours needed
links: { label: string; url: string }[];
notes: string;
intentFrameId?: string; // links task to solver result that spawned it
}
export interface Connection {