- Auto-Pair
Studio no longer needs a paste-and-Connect code. Keep RoCode chat open while logged in, open the plugin, and it pairs automatically on the same network via event-driven IP presence (SSE from chat, WebSocket pair from Studio, up to ~2 minutes wait if chat opens later). No polling heartbeats.
- Plugin
Studio plugin remastered for auto-pair: pairing mode UI (“Waiting for chat…”, “Pairing with chat…”), saved-key reconnect vs fresh pair, clearer connecting/reconnecting status, Reset restarts auto-pair, and HTTP permission checks for both www.rocode.app and relay.rocode.app with actionable allow-list guidance when stuck on Connecting.
- Connect UI
Connect modal is now Get the Studio plugin: download, keep chat open, allow HTTP. Header CTA is Download plugin (Creator Store link). Connect-code copy/reset UI is gone from the flow; activation checklist says download the plugin; agent-session errors tell you to open chat for auto-pair.
- Next Prompts
After a successful agent turn, chat shows 2–3 one-click follow-up chips under the completion card. Generated from the turn summary via a dedicated API (/api/generate-next-prompts), with rate limits, retries, and a local fallback if the model is empty, chips fill the composer so you can send immediately.
- Completion
Finished runs get a richer completion card with a short “what changed in Studio” wow summary (up to six human lines from tool steps), then the next-prompt chips.
- Retry
Empty agent replies are retryable: Retry this prompt re-sends the same user message (alongside Continue from checkpoint). Error copy and analytics updated; Retry/Continue still work after reload when error panels are restored from history.
- Speed
Chat switches and reloads paint from a session message-row cache, then revalidate from Supabase. Recent-window fetch + background older-row backfill, idle sidebar prefetch, in-memory conversation view cache, and optimistic message painting so switching chats feels instant.
- Warm Path
Agent-session responses are warm-prefetched and buffered so the first send skips cold RTTs. Stripe tier reconcile on submit runs in the background instead of blocking latency. Stale free-model ids migrate to the current FLASH alias (~deepseek/deepseek-v4-flash-latest).
- Perf
Site-wide: Nunito trimmed to weights 400/600/700; Lucide CDN dropped on static pages in favor of local icons.js; homepage hero video is lazy (poster + IntersectionObserver); pricing/billing libs load when the pricing section nears the viewport; script loader uses idle scheduling, cleaner retries, and deferred non-critical work; JS/CSS cache headers extended to 1 day + long SWR.
- Chat UX
Empty-state hint “Describe what you want to build” removed, title alone when connected, connect guidance when not. Character counter stays hidden until you are near the 6000-char limit. Message action chrome (copy/etc.) lazy-binds for faster history paint.
- Support
Feedback page fully removed (nav, sitemap, home/login links). Old /feedback URLs permanently redirect to Info. Discord join lives as an icon in the Configuration panel (bottom-right). Info “Get in Touch” is founder email support@rocode.app. llms.txt updated with founder + Discord and no Feedback link.
- Email
Lifecycle welcome and plugin-not-paired emails rewritten for auto-pair, keep chat open, open Studio plugin, no paste/Connect step.
- Data
Unused growth Template system fully removed from Supabase (templates, ratings, verifications, build receipts, template funnel analytics, template loop/page kinds) and related tests, never shipped as a product surface.
- Keys
Rotating a plugin API key now updates an existing row, or creates one if missing, no silent no-op on first rotate.
- UI
Button spring-click and glass-hover no longer crash when the event target is an SVG/text node inside a button (safe closest lookup).
- Activation
Getting-started UI still boots if rocode:ready already fired before the deferred activation script loaded.
- Reliability
Relay plugin presence + WebSocket pair path, sync-relay-overrides wiring, agent-session messaging for auto-pair, OpenRouter/platform FLASH model alias, pricing-mounted event for lazy home pricing, and assorted chat/plugin polish from the auto-pair and speed work.