Commit Graph

586 Commits

Author SHA1 Message Date
Jeff Emmett 497bfd3db7 fix: migrate rNetwork components to theme variables for dark/light mode
Replace 60+ hardcoded hex colors in folk-graph-viewer and folk-crm-view
with var(--rs-*) CSS variables. Add city/location data to graph API query
so graph nodes show the same location info as the CRM view.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:12:58 -08:00
Jeff Emmett 683b96e5cc Merge branch 'dev' 2026-03-04 15:11:28 -08:00
Jeff Emmett ebecfe4983 fix: app-switcher sidebar invisible due to backdrop-filter containing block
backdrop-filter on .rstack-header created a CSS containing block that
trapped the sidebar's position:fixed, giving it zero height. Moved the
backdrop-filter and background to a ::before pseudo-element so the header
no longer traps fixed-positioned children.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 15:11:16 -08:00
Jeff Emmett ffa74c3948 Merge branch 'dev' 2026-03-04 14:13:32 -08:00
Jeff Emmett 1758ce9416 feat: compact +photo icon replaces image bar in Thread Builder
Replace the always-visible Upload/AI button bar below each tweet with a
compact camera icon in the top-right corner that fades in on hover and
expands into a dropdown menu. Hides when an image is already attached.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 14:13:20 -08:00
Jeff Emmett 932b60998b Merge branch 'dev' 2026-03-04 13:18:01 -08:00
Jeff Emmett 93e8ce8479 feat: per-tweet image upload/generate in Thread Builder
Each tweet in a thread can now have its own image — uploadable or
AI-generated via inline buttons in the preview cards. Images persist
across save/load, display in read-only view, and clean up on delete.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 13:17:51 -08:00
Jeff Emmett 034f4b0bb1 Merge branch 'dev' 2026-03-04 13:04:41 -08:00
Jeff Emmett 5f2997d75d feat: rFlows funnel improvements — symmetry fix, rate labels, speed slider, overflow visuals, timeline, fill animation
- Fix asymmetric left taper curve control point in funnel SVG path
- Add inflow/spending/overflow rate labels on funnel nodes
- Add vertical speed slider (20ms–1000ms) visible during simulation
- Improve overflow pipes: wider burst, 1.3x stroke, round caps, animated splash
- Add timeline progress bar at canvas bottom during simulation
- Add CSS transitions on funnel fill rects for smooth animation
- Faster overflow edge animation (0.5s) with round line caps

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 13:04:18 -08:00
Jeff Emmett 65009e3a5a Merge branch 'dev' 2026-03-04 13:01:07 -08:00
Jeff Emmett 50054d599e feat: clickable/draggable edges with proportional width sizing in rFlows
Edges are now interactive: click to select (purple highlight), double-click
to open source node editor, drag midpoint handle to add curve waypoints.
Edge stroke widths are directly proportional to allocation percentage
instead of normalized to the largest flow amount.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 13:00:58 -08:00
Jeff Emmett 659e203d6a Merge branch 'dev' 2026-03-04 12:55:16 -08:00
Jeff Emmett 9c6c8c8dab fix: migrate all rApp components to theme variables for dark/light mode
Replace hardcoded dark-specific colors with CSS custom properties across
rcal, rflows, rbooks, rschedule, rtrips, and rwork modules. Adds
[data-theme="light"] overrides for rFlows node type buttons, danger
buttons, and overlay elements. SVG fills switched to style attributes
for theme variable support.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 12:55:07 -08:00
Jeff Emmett 58c4aaa4b9 Merge branch 'dev' 2026-03-04 12:16:29 -08:00
Jeff Emmett 59bdd741be feat: bare-domain sub-pages show info/marketing pages + save-gate
Bare-domain URLs like rspace.online/rsocials/thread now render an info
page with CTAs instead of silently serving the functional app. The
functional app only appears inside a {space} context (e.g.
demo.rspace.online/rsocials/thread). API routes still pass through.

- Add SubPageInfo interface to shared/module.ts
- Add renderSubPageInfo() renderer to server/shell.ts
- Modify bare-domain routing: api/ passthrough → info page → demo fallback
- Add subPageInfos to 8 modules (rsocials, rflows, rnetwork, rtrips,
  rbooks, rphotos, rinbox, rsplat)
- Add window.__rspaceSaveGate() auth prompt on write operations
- Wire save-gate into rsocials Thread Builder save handler

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 12:16:17 -08:00
Jeff Emmett f51581ef59 Merge branch 'dev' 2026-03-04 11:57:02 -08:00
Jeff Emmett 1d0e82294b fix: move [+] tab button next to open tabs, style as new-tab shape
- Remove flex:1 from .tabs-scroll so tabs don't stretch across full width
- [+] button sits immediately after last tab instead of far right
- Restyle .tab-add to match .tab shape (same border-radius, padding, hover)
- Push .tab-actions (view toggle) to far right with margin-left: auto
- Dropdown menu follows the button naturally

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 11:56:51 -08:00
Jeff Emmett 598854e566 Merge branch 'dev' 2026-03-04 11:56:27 -08:00
Jeff Emmett ac33a25dae feat: make whiteboard drawings selectable, moveable, resizable, deletable
Convert wb-svg drawings from raw SVG overlay elements into folk-shape
web components, giving them full interactivity (select, drag, resize,
rotate, delete, multi-select, keyboard nudge, context menu).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 11:56:12 -08:00
Jeff Emmett 202fffb00b Merge branch 'dev' 2026-03-04 11:50:55 -08:00
Jeff Emmett e7687dfe74 feat: icon-only toolbar, relocate zoom/feed/history/hide-forgotten
- Toolbar buttons show emoji-only with hover tooltips (data-tip ::after)
- Recent Changes moved to header bar as clock icon button
- Zoom + Feed View moved to bottom-left corner tools pill
- Hide Forgotten moved to identity dropdown under theme toggle
- Mobile: 44px touch targets, tap-highlight suppression, proper sizing
- Memory panel z-index raised above header for correct stacking

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 11:50:46 -08:00
Jeff Emmett ce52829a27 Merge branch 'dev' 2026-03-04 11:15:28 -08:00
Jeff Emmett ae6cf188a9 fix: add notification-service to encryptid Docker image
The encryptid server imports ../../server/notification-service but
the Dockerfile only copied src/encryptid — causing the container to
crash-loop with "Cannot find module" on startup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 11:15:19 -08:00
Jeff Emmett 8fcbeab93c Merge branch 'dev' 2026-03-04 11:12:29 -08:00
Jeff Emmett 1f071dc4a1 fix: layer flows drag-to-connect, notification 401 spam, /api/meta 404
- Tab bar: replace mouseenter/mouseleave with bounding-rect hit testing
  during drag-to-connect (robust for 3D CSS transforms)
- Tab bar: clean up document mousemove/mouseup listeners on re-render
  to prevent accumulation leak
- Notification bell: stop polling on 401, restart on auth-change
- Space settings: detect subdomain routing to avoid double-prefix on
  /api/meta URL (jeff.rspace.online/jeff/rspace → /jeff/jeff/rspace)
- rSpace module: add GET /api/meta endpoint returning space owner/members

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 11:12:19 -08:00
Jeff Emmett 6fb69232fb Merge branch 'dev' 2026-03-04 10:36:14 -08:00
Jeff Emmett 93b9bc7722 fix: migrate campaign and social feed CSS to theme variables
Replaced remaining hardcoded dark colors in campaign page CSS and
rsocials social feed CSS with theme custom properties so they
respond to light/dark mode toggle.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:35:54 -08:00
Jeff Emmett 5cf1f3a444 Merge branch 'dev' 2026-03-04 10:33:22 -08:00
Jeff Emmett 7b397b522c fix: [+] tab menu clipped by overflow — move outside scroll container
The add-menu dropdown was inside .tabs-scroll which has overflow-x: auto,
causing the browser to clip overflow-y as well (per CSS spec). Move the
.tab-add-wrap (button + menu) out of .tabs-scroll into .tab-bar directly
so the dropdown renders without clipping, beneath the [+] button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:33:09 -08:00
Jeff Emmett ceff80a036 Merge branch 'dev' 2026-03-04 10:31:44 -08:00
Jeff Emmett f69ccf38d4 chore: additional theme variable migrations in rsocials
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:31:29 -08:00
Jeff Emmett 0359da3348 fix: migrate remaining hardcoded colors to CSS theme variables in rsocials
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:30:39 -08:00
Jeff Emmett abb3f57ca0 fix: space settings panel hidden behind canvas due to backdrop-filter containment
Move <rstack-space-settings> outside the header element so its position:fixed
is relative to the viewport instead of the 56px header (backdrop-filter creates
a containing block for fixed descendants). Bump panel z-index above all canvas
elements. Also migrate hardcoded colors to CSS theme variables across shell
components.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:30:20 -08:00
Jeff Emmett 4c088faaba Merge branch 'dev' 2026-03-04 10:12:50 -08:00
Jeff Emmett f5260e0817 feat: move dark/light mode toggle to user profile dropdown
Replaced the dark mode checkbox in the My Account modal with a
sun/moon toggle directly in the profile dropdown menu. Sun on the
left, moon on the right, with a colored slider (amber for light,
indigo for dark).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:12:42 -08:00
Jeff Emmett ed88103bbc Merge branch 'dev' 2026-03-04 10:03:52 -08:00
Jeff Emmett 7a11936483 fix: resolve mixed-content error in thread builder API calls
The bare-domain rewrite (rspace.online/rsocials/thread → /demo/rsocials/thread)
injected /demo/ into __BASE_PATH__, causing fetches to /demo/rsocials/api/threads
which triggered a 301 redirect to http://demo.rspace.online (mixed content blocked).
Now derives the base path from the actual browser URL. Also fixed layout so compose
input is on the left and thread preview is on the right.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 10:03:38 -08:00
Jeff Emmett adfd1a5697 Merge branch 'dev' 2026-03-04 09:58:09 -08:00
Jeff Emmett 495baa5935 fix: allow unauthenticated thread builder save/share operations
The space role middleware was blocking all POST/PUT requests from
unauthenticated users with a 403, preventing the thread builder's
save draft and share buttons from working. Added publicWrite module
flag to bypass the role check for modules with public API endpoints.
Also fixed saveDraft() to properly surface server errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 09:57:59 -08:00
Jeff Emmett f76615a890 Merge branch 'dev' 2026-03-03 21:05:33 -08:00
Jeff Emmett 676aaa7b3a feat: green flows, funnel coloring, full-page canvas, analytics popout
- All funding flow edges now use green shades (inflow/spending/overflow)
- Funnel nodes colored by 3-state support level: critical (red), sustained (amber), overflow (green)
- Removed tab system — canvas fills entire viewport with nav overlay
- Added left-side analytics popout panel (overview + transactions sub-tabs)
- Removed river tab code
- Updated legend to reflect new color scheme

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 21:05:23 -08:00
Jeff Emmett 829e3c722a Merge branch 'dev' 2026-03-03 20:13:49 -08:00
Jeff Emmett 098c3db04d feat: rFlows UX overhaul — funnel shapes, inline editing, side overflow ports
Replace rectangular funnel nodes with tapered SVG containers featuring
overflow lip notches on left/right sides and a narrow spending outflow
at the bottom. Funnels scale logarithmically by monthly funding rate.

Double-click enters inline edit mode with draggable threshold markers
(min/max/sufficient), editable labels via foreignObject, and a compact
toolbar (Done/Delete/... panel fallback). Single click now selects only.

Overflow edges route from side ports with horizontal bezier curves that
create a natural "spilling over" visual before curving to targets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 20:13:40 -08:00
Jeff Emmett 3e4d236244 Merge branch 'dev' 2026-03-03 19:47:30 -08:00
Jeff Emmett aceeedb366 fix: resolve circular import crash in rnotes converters
Bun evaluates the converters Map after the circular import from obsidian.ts
triggers registerConverter(), causing "Cannot access before initialization".
Lazy-load converter modules via require() to break the cycle.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:47:23 -08:00
Jeff Emmett 23a08bb6ed Merge branch 'dev' 2026-03-03 19:45:21 -08:00
Jeff Emmett 4822895ca4 fix: copy src/ directory into Docker image for notification module
The notification routes import from src/encryptid/db which was missing
from the production container, causing a crash loop on startup.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:45:13 -08:00
Jeff Emmett 453fd7e6b4 Merge branch 'dev' 2026-03-03 19:13:27 -08:00
Jeff Emmett a6008a4f2d refactor: complete rfunds → rflows rename across configs and references
Update docker-compose, vite config, Traefik labels, module imports,
and all cross-module references to use the new rflows naming.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-03 19:13:14 -08:00
Jeff Emmett 91e9484219 Merge branch 'dev' 2026-03-03 19:12:32 -08:00