The editor used calc(100vh - 92px) which only accounted for header+tab
row, but the rpubs sub-nav (~48px) pushed the Generate Preview button
below the fold. Now uses calc(100vh - 140px).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add z-index stacking contexts to header left/right sections so buttons
render above center content and backdrop-filter pseudo-element. Add
overflow:hidden on center to prevent search bar overflow into button areas.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New users get sent to /join for passkey registration + auto-space-join.
Existing users are directly added with in-app + email notification.
Add-by-username now also sends email notification if email is on file.
- Add id to /api/users/lookup response
- Enhance /api/internal/user-email/:userId with recovery + profile email
- Add GET /api/internal/user-by-email for email→DID resolution
- Rewrite POST /:slug/invite to use identity invite flow
- Add email notification to POST /:slug/members/add
- Add success/error feedback to space settings invite UI
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The dropdown closed on every click (radio buttons, input focus, etc.)
because a global document click listener removed the "open" class.
- Add menu-level stopPropagation so clicks inside the dropdown don't
close it
- Only close on clicks outside both trigger and menu
- Preserve form state (name, visibility, open/closed) across
close/reopen so content isn't lost when accidentally clicking away
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The editor used calc(100vh - 52px) but the shell has a 56px header +
36px tab row = 92px total. This pushed "Generate Preview" below the
fold. Also adds min-height on flipbook preview container.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Spaces with missing/undefined visibility were falling through to "public"
in 7 places: normalizeVisibility fallback, migrateVisibility early return,
renderShell default, getSpaceConfig, space list APIs, and the HTML
injection middleware. All now default to "private". The migrateVisibility
function now writes "private" to docs with missing visibility on load.
Also fixed jeff and hash spaces on production (were undefined → private).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Newsletter campaigns now require N-of-M team member approval via rInbox
before Listmonk starts sending. The send-newsletter workflow node creates
a draft campaign and gates it through the team inbox; a manual submit-
approval route is also available. The multisig email UI shows a green
"Newsletter Approval" badge with campaign ID for newsletter approvals.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Prominent teal gradient button in header and empty state of the
campaigns tab, linking to the AI-guided wizard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Progressive approval workflow: paste brief → AI extracts structure →
AI generates per-platform posts → review with per-post regen →
commit (saves campaign, creates threads, drafts newsletters, builds workflow DAG).
Includes MI integration for Cmd+K campaign creation and vite build entry.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Connects x402 (on-chain USDC via Base) and CRDT token system (Automerge cUSDC)
in both directions: on-chain payments auto-mint cUSDC to payer's DID, and users
can pay with cUSDC balance via new "crdt" payment scheme. 402 responses now
return both exact and crdt payment options.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace manual thread ID entry with select dropdowns in both campaign planner
and workflow components. Server-side publish-thread handler now resolves
linked threadId from Automerge doc when inline content is empty.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New spaces start with an empty canvas instead of 25+ template shapes.
Each space gets a {slug}@rspace.online team inbox (multi-sig ready)
via the rinbox onSpaceCreate hook. Fix EncryptID auto-provision passing
raw string instead of SpaceLifecycleContext to module hooks.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add transferTokens() and getAllTransfers() to token service
- Seed DAO ecosystem: cUSDC + BFT tokens, 3 treasuries, 6 participants,
~30 transactions spread over 60 days
- Add /api/crdt-tokens/transfers endpoint for ledger history
- Wire CRDT transfers into loadTransfers() with DID→pseudo-address mapping
- Update data transforms (timeline, sankey, multichain) to support
_fromLabel/_toLabel for human-readable CRDT participant names
- Show viz tabs (Timeline, Flow Map, Sankey) when CRDT tokens exist
- Add "local"/"CRDT" chain to color and name maps
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Buttons, badges, focus states, avatars, links, inputs, and surfaces across
all rSocials components now use --rs-primary, --rs-error, --rs-success,
--rs-accent, --rs-bg-surface, --rs-input-bg, etc. with dark-mode fallbacks.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Show the visualizer view directly without the top-level tab switcher,
keeping the sub-tab header (Balances, Yield, Timeline, etc.) intact.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Restructures the editor from a cramped sidebar layout to a full-width stepped wizard,
matching the rpubs.online/press UX. Format and drafts moved to toolbar dropdowns,
auto-advances to preview after PDF generation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Restore CrowdSurf as standalone module with full integration (server,
app-switcher, shell favicon, rchoices tab, vite build). Add sortition-
based pairwise Elo ranking: users compare two activities head-to-head,
updating Elo ratings. Includes API endpoints (/api/crowdsurf/pair,
/api/crowdsurf/compare), Rank tab with leaderboard, and Elo badges.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Links with curved curvature create TubeGeometry that crashes with NaN
positions when force simulation hasn't converged yet. Add linkVisibility
guard to hide links until both endpoints have valid coordinates, and
bump warmupTicks from 50 to 100 for more settling time.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a toggleable alternative rendering mode for the rFlows canvas.
Sources become sporangia, funnels become mycorrhizal junctions,
outcomes become fruiting bodies, and edges become branching hyphae
with earth-tone aesthetics. Same data, same interactions, same ports.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add publicWrite to rpubs module (PDF gen is computational, not a write)
- Fix zine auto-spawn: wait for community-sync-ready event instead of
fragile 800ms timeout
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Guard attachShadow with existing check to prevent crash on reconnect
- Fix API path: /pubs/api/generate → /rpubs/api/generate (module ID is rpubs)
- The "Unexpected non-whitespace character" error was HTML 404 parsed as JSON
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Instead of popping up at fixed top-right, the reminder mini-calendar
now appears at the 📅 icon's location and scales out from it.
Icon hides while widget is open, reappears on close.
Viewport-clamped to prevent off-screen overflow.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- folk-calendar: fix data-date format for prev/next month padding days
(month=0 produced "2026--1-28" which split into NaN month → Invalid Date)
- folk-calendar: guard toJSON against invalid dates to prevent toISOString crash
- folk-calendar-view: add "+" button to expanded day detail panel
with inline title input + time picker for creating reminders
- Styles for the add-reminder form matching existing dark theme
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move temporal/spatial zoom bars to always-visible full-width position
above the calendar+map area. Replace fixed 400px map panel with
draggable resize handle (200-800px range). Responsive: handle hidden
and layout collapses to single column at ≤900px.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace plain rectangles with tap/faucet SVG graphics for source nodes
(draggable valve handle, metallic gradients, animated water stream) and
trapezoid vessel shapes for funnel nodes (water fill, wave surface,
threshold markers, overflow lips with pour animations). Overflow pipes
now render as 3-layer bezier connections from vessel lips. Add amount
popover with date scheduling, event delegation for interactivity, and
rAF-throttled valve dragging.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>