Skip to content

v.1.0.0 - Official First Release: accessibility pass, faster landing, resilient workspace, and MIT-licensed.

Latest

Choose a tag to compare

@IanSkelskey IanSkelskey released this 23 Apr 00:57

Collab Code 1.0.0 — official first release: accessibility pass, faster landing, resilient workspace, and MIT-licensed.

Try it live

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-N suffix: 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 labeled role="separator", peer avatars are proper <button> toggles with aria-pressed, touch targets on tree rows meet size guidance, the viewport meta no longer blocks pinch-zoom, and global focus-visible, prefers-reduced-motion, and forced-colors styles are in place.
  • Error boundary for the workspace — The workspace is now wrapped in a dedicated ErrorBoundary keyed 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 dedicated WorkspaceFallback. 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 useDocumentTitle hook 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 SEOindex.html now 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.getRandomValues via a new secureRandom helper instead of Math.random, closing the matching Dependabot / CodeQL alerts.
  • No more white flash when opening the editor — Added a --cc-bg-editor token that matches Monaco's editor.background for 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:check scripts 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 useWorkspaceController hook 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 localStorage access 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 RefreshIcon and 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.yml and an MIT LICENSE file, added a .github/RELEASE_TEMPLATE.md and a Releasing checklist in CONTRIBUTING.md, refreshed the scripts table and contributor workflow to reflect npm run verify as 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