v.1.0.0 - Official First Release: accessibility pass, faster landing, resilient workspace, and MIT-licensed.
LatestCollab Code 1.0.0 — official first release: accessibility pass, faster landing, resilient workspace, and MIT-licensed.
After seven beta cuts labeled 1.0.0-beta-*, Collab Code is graduating to an actual 1.0.0. The app has been stable in real classroom and tutoring sessions for weeks; this release focuses on the polish that makes it feel like a shipping product instead of a prototype — accessibility, error recovery, faster cold loads, secure randomness, and a proper open-source license.
What's New
- Official v1.0.0 and MIT license — Collab Code is now released under the MIT License, making it genuinely reusable, forkable, and remixable. No more
-beta-Nsuffix: this is the real one. - Accessibility pass across the workspace — Tree view now uses proper
role="tree"/role="treeitem"semantics, the editor pane is a real<main>landmark, splitters are labeledrole="separator", peer avatars are proper<button>toggles witharia-pressed, touch targets on tree rows meet size guidance, the viewport meta no longer blocks pinch-zoom, and global focus-visible,prefers-reduced-motion, andforced-colorsstyles are in place. - Error boundary for the workspace — The workspace is now wrapped in a dedicated
ErrorBoundarykeyed by room id, so a crash in the editor, terminal, or Yjs sync surfaces a recoverable screen with reload / retry / exit-room actions instead of a blank page. - Faster landing page via code splitting — Monaco, Yjs, y-indexeddb, xterm, and the entire workspace route are now lazy-loaded behind
React.lazy+ a dedicatedWorkspaceFallback. The landing page ships a much smaller initial bundle; the heavy editor stack only loads when you enter a room. - Dynamic document titles — A new
useDocumentTitlehook keeps the browser tab in sync with context: the landing page shows "Collab Code", and an open room shows "Room #abc12345 | Collab Code" so multiple tabs are easy to tell apart. - Richer link previews and SEO —
index.htmlnow carries full Open Graph, Twitter Card, canonical, theme-color, and description metadata so shared links render nicely in Slack, Discord, iMessage, and X. - Perl language support — Added Perl to the runnable language set with its own icon, runtime config, and starter wiring.
- Secure randomness for peer identity — Default display names, avatar colors, and terminal run ids are now sourced from
crypto.getRandomValuesvia a newsecureRandomhelper instead ofMath.random, closing the matching Dependabot / CodeQL alerts. - No more white flash when opening the editor — Added a
--cc-bg-editortoken that matches Monaco'seditor.backgroundfor each theme, so the editor pane paints the right color immediately instead of flashing white while Monaco finishes booting.
Fixes & Internal
- Continuous integration — Added a GitHub Actions workflow that runs prettier-check, lint, typecheck, and build on every push and pull request, with least-privilege
permissions:blocks on each job. - Prettier everywhere — Added a root Prettier configuration, wired
format/format:checkscripts into the verify chain, and ran the formatter repo-wide for the first time so future diffs stay noise-free. - Workspace controller refactor — Extracted the large workspace wiring into a focused
useWorkspaceControllerhook plus smaller layout, following, markdown, and notification pieces. Made it straightforward to drop in the new error boundary and lazy route on top. - Virtual filesystem split — Broke the virtual filesystem into dedicated session, store, and tree modules with clearer ownership of caching, persistence, and tree traversal.
- Local storage and audio preferences helpers — Pulled raw
localStorageaccess behind typed helpers and consolidated presence-sound preference management into a single module consumed by the workspace controller. - Server status handling and UI polish — Tightened the shared server-status model and refreshed the banner/help affordances around degraded and offline states; added a
RefreshIconand surfaced it in the Help modal recovery guidance. - Markdown preview readability — Improved list spacing and typography in rendered Markdown so bulleted and numbered lists feel consistent with the rest of the preview styles.
- Repository polish — Added
FUNDING.ymland an MITLICENSEfile, added a.github/RELEASE_TEMPLATE.mdand a Releasing checklist inCONTRIBUTING.md, refreshed the scripts table and contributor workflow to reflectnpm run verifyas the PR gate, and simplified the README to lean on Markdown instead of raw HTML while cleaning up assorted component markup and class names.
Full changelog
See the full diff between releases:
v1.0.0-beta-7...v1.0.0