feat: desktop workbench, paid gating, read-only studio, and live plan sync#6
Merged
Conversation
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add the supporting layer the new surfaces build on: - lib/preview (preview doc builder + console bridge) and lib/workbench/tree - analysis usage reserve/release recorder in lib/server/audit - migrations: release_analysis_usage_event RPC (quota rollback on failure) and realtime publication for live plan-tier sync - CodeMirror/codemirror deps, brand + auth assets, theme tokens Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
UI layer for the desktop workbench and paid gating: - Workbench shell with workspace/project explorer tree - Analyze studio: CodeMirror editor (read-only on free tier, full edit/format/export on paid), preview pane, console panel - UpgradeGate paywall, FreeSaveNoticeModal, RouteModal - Billing + account content, PlanSync (Realtime + focus refresh) - Login experience/modal with motion-field + particle-field background Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Route group (workbench) layout + projects/workspaces/versions pages, each server-gated via requireDashboardUser + resolvePlanGate - Intercepted @modal routes for account/billing - Analyze API: model-entitlement gate + daily quota reservation that releases on failure; workspaces API ownership checks - Account/billing/dashboard/login/onboarding/pricing page wiring Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
The collapsible sidebar split the brand into two spans separated by a CSS flex gap, so the anchor's text content was "</>MotionCode" (no space). Restores the literal space so the brand reads "</> MotionCode" in the DOM, matching what users see and the app-smoke e2e assertion. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
What this ships
The desktop workbench plus paid-tier gating end to end. Free users analyze motion and get a read-only studio; paid users get saved projects, workspaces, and a fully editable/exportable code studio.
Authentication
login-formhandles every state (signed-out, auth-error, invalid-credentials, Google OAuth, OTP).requireDashboardUser; the(workbench)layout defers the auth redirect to each page sonextis correct. APIs rejectUNAUTHENTICATEDbefore doing work.Tier / plan gating (enforced server-side, not just UI)
resolvePlanGate(user.id)→UpgradeGatefor free tier.allowedModels+ reserves the daily quota before the model runs, releasing it on any failure (no quota-bypass window).FORBIDDEN. Free-project cap enforced at DB + API.editableflag sourced from the server entitlement summary.PlanSynckeeps the rendered tier live via Supabase Realtime (RLS-respecting) with a focus/visibility refresh fallback.Analysis
Editor
editable.Migrations (idempotent,
security definer, locked-down grants)release_analysis_usage_eventRPC (quota rollback on failed analysis).profiles+subscriptionswithreplica identity full.Verification
tsc --noEmiteslint .vitestnext buildNew tests:
plan-gate,editor-pane-readonly,workbench-tree,buildPreviewDoc, plus expanded analyze/workspace API coverage. Playwright e2e not run (needs a live server).🤖 Generated with Claude Code