ClipSpacesClipSpaces Docs
Back to app

All releases

Flatter UI, mobile fixes, and an auth code fix

Changed

  • Flat design pass — removed decorative box-shadows from buttons, cards, stickies, stickers, and persistent chrome (top-bar pills, bottom toolbar, FABs, status pills). Card surfaces now read via a hairline ring (--shadow-card* flattened in app/globals.css); the --shadow-toolbar token is now none. Floating overlays (dropdowns, modals, side panels, toasts, popovers, context menus, the Ask-AI panel) keep their elevation so they stay legible over the canvas.

Fixed

  • Sign-in code field (components/EmailOtpForm.tsx) — the OTP input was hard-locked to exactly 6 characters, so a longer emailed code could never be fully typed or submitted and verification never fired. The field now accepts the system's actual OTP length (6–10, Supabase's configurable range).
  • Mobile responsiveness — the Ask-AI panel becomes a full-width bottom sheet on phones (wired the previously-dead .ai-modal styles); the AI-settings and Integrations side panels cap at the viewport width (min(…, 100vw)); the Share and Notifications popovers cap at calc(100vw - 24px); the bottom toolbar scrolls horizontally as a safety net instead of overflowing narrow (~320px) screens; and the same-network peers dock lifts above the toolbar (.cs-peers-dock) so its launcher chip no longer sits on top of the tools.
  • Deep-linkable / persistent active space (app/page.tsx) — the page no longer snaps back to the first space on reload. The active space now lives in the URL as ?space=<id>: it's shareable and bookmarkable, switching spaces pushes a history entry so browser back/forward steps between them, and popstate follows manual URL edits. Restore priority on load is ?space= → last-viewed (localStorage: clipspaces:active-space) → first space; ids not in the list (deleted, or a cloud space you're not a member of) are ignored so a bad link can't strand you on a blank board. localStorage remains the per-device fallback and the only option for signed-out local spaces, whose ids aren't portable. The Share popover's "Copy link" now yields a direct link to the current space (it copies the live URL).
  • Shared focus timer (lib/use-space-collab.ts, components/TopBar.tsx) — the session timer now syncs across everyone in a cloud space. State travels on a new timer broadcast over the space's Realtime channel; the running clock is keyed off an absolute endsAt epoch (drift-free, so late joiners compute the exact remaining time), and an active timer is re-announced when a new peer joins so they catch up. Solo / signed-out use is unchanged (no-op).