openvibers/openvibe.design CHANGELOG.md

CHANGELOG.md

main 2.5 KB · 37 lines · markdown

Changelog

Unreleased — a plain Stop

  • The controls rule: Stop is one plain little button a person may add, not a red-ringed disc that is always there.

What changed in OpenVibe.Design, newest first. Each site also publishes its patch notes at /updates.

0.1.0 — 2026-10-28

The service skeleton: sign-in and the theme API proxy.

  • Sign-in with OpenVibe.Network (server/auth/sso.js, OAuth client design): authorization code with PKCE
    S256, a state check, a server-side code exchange, httpOnly design_at and design_rt cookies
    (SameSite=Lax, Secure in production), the design_oauth flow cookie, and sanitizeNext (this site's own origin
    only, no control characters or backslashes). /auth/login, /auth/callback, /auth/logout, /auth/me.
  • The theme API proxy (server/http/api.js): all calls go to OpenVibe.Network's /api/themes with the
    person's access token from the cookie as a Bearer. GET /api/themes is the public catalogue, cached in memory
    for 5 minutes; GET /api/themes/:idOrSlug is one public theme; GET/PUT /api/me/theme read and save the
    person's theme (source: 'studio'); GET /api/me/theme/history and POST /api/me/theme/history/:id/restore
    read and roll back the history; POST /api/themes/submit submits a theme to the gallery. Writes need the
    request's Origin to be this site's own origin, otherwise 403 design.cross_site. Network 4xx answers pass
    through; a Network failure is 502; /api/me/* is private, no-store.
  • Pages (server/http/pages.js, server/views/index.js): /, /studio, /t/:slug and /developers, all
    server-rendered through the OpenVibe Frame and complete without JavaScript, plus a 404. The views are plain
    placeholders here: the main session designs the pages and writes public/js/studio.js.
  • Plumbing (server/app.js): helmet with the network's CSP, content-hashed /css and /js, /api/health,
    /api/ready (degraded when Network does not answer), /release.json, /release-metrics, /shared/*,
    /robots.txt, /sitemap.xml (the public themes), /llms.txt, a 120/min per-IP limit on /api and /auth,
    and a graceful stop.
  • Deploy: deploy/systemd/openvibe-design.service (port 5090, /etc/openvibe/design.env) and
    deploy/nginx/openvibe.design.conf (TLS for openvibe.design, www → apex, GET/POST/PUT on /api, GET on
    /auth).
  • Tests: test/sso.test.js, test/proxy.test.js and test/pages.test.js, each against an in-process
    OpenVibe.Network stand-in with a real RS256 key pair.