openvibers/openvibe.report CHANGELOG.md
CHANGELOG.md
| 1 | # Changelog |
| 2 | |
| 3 | What changed in OpenVibe.Report, newest first. Each site also publishes its patch notes at /updates on |
| 4 | openvibe.network. |
| 5 | |
| 6 | ## Unreleased |
| 7 | |
| 8 | - **The AI section (2026-11-08): OpenVibe.Bench's pages moved here.** `/ai` is the overview: every published benchmark with its leader, runs and last run, every task kind with quality, price and speed, and a fold for the jobs still waiting. `/ai/<benchmark>` has verified rankings, score against cost in SVG and the latest runs; `/ai/<kind>` keeps the Elo/Pareto/cost boards and adds the verified runs on the kind's benchmarks. `/ai/models/<model>` has runs over time, best and worst tasks, cost and recent runs; `/ai/compare` puts two or three models side by side; `/ai/method` says how a score is made and how runs are judged. `/ai/feed.xml` and `GET /api/v1/ai/results` publish new runs. Every number is Bench's, read through its public API with its 60-second cache and last-good copy; Bench's old HTML pages 301 here. |
| 9 | ## 0.1.0 — 2026-10-28 |
| 10 | |
| 11 | The service skeleton: a stateless front for the network's open numbers, The Rundown and every stream's after-show |
| 12 | report. |
| 13 | |
| 14 | - **Two read clients** (`server/data/network.js`, `server/data/live.js`): OpenVibe.Network's open stats and |
| 15 | OpenVibe.Live's Rundown and recap APIs, with injectable fetch, 8 s timeouts, an in-memory cache (1000 entries, |
| 16 | oldest out; 2 to 10 minutes per answer) and one short log line on failure. A failure is null, never a throw. |
| 17 | Slugs, stream ids and usernames are validated before a source request; a bad parameter is a 404 without one. |
| 18 | - **Pages** (`server/http/pages.js`, `server/views/index.js`): `/`, `/stats`, `/rundown`, `/rundown/t/:slug`, |
| 19 | `/rundown/e/:streamId`, `/rundown/s/:username`, `/after-show/:streamId` and `/c/:username`. The views are plain |
| 20 | placeholders with every dynamic value escaped; the main session designs the real pages. A missing source answer |
| 21 | is the 404 view. |
| 22 | - **JSON API** (`server/http/api.js`): `/api/v1/stats`, `/api/v1/rundown`, `/api/v1/rundown/topics`, |
| 23 | `/api/v1/rundown/t/:slug`, `/api/v1/after-show/:streamId` and `/api/v1/c/:username` answer the source's document |
| 24 | as it came, CORS-open and public for two minutes; 120 requests a minute per address; problem+json 404s. |
| 25 | - **Plumbing**: helmet with the same CSP as OpenVibe.Help, `/api/health`, `/api/ready` (Network and Live are |
| 26 | optional, so a dead source is degraded and still 200), `/release.json`, `/release-metrics`, `/metrics` on |
| 27 | loopback, `/shared/*`, `/css` and `/js` (immutable only with the matching `?v=`), `robots.txt`, `sitemap.xml` |
| 28 | (the home, `/stats`, `/rundown` and every topic), `llms.txt`, and the SDK's graceful stop. |
| 29 | - **Deploy**: `deploy/systemd/openvibe-report.service` on 127.0.0.1:5080 and |
| 30 | `deploy/nginx/openvibe.report.conf` (www → apex, Let's Encrypt certs, GET-only `/api/`), plus `STATUS.json`, |
| 31 | `.env.example` and the shared CI workflow. |
| 32 | - **Tests** (`test/`): the clients' cache, expiry, failure and parameter rules; every page and its 404s; the API |
| 33 | shapes, CORS, cache and rate limit; robots/sitemap/llms; health, readiness and the static cache. |
| 34 |