openvibers/openvibe.today CHANGELOG.md

CHANGELOG.md

main 2.8 KB · 36 lines · markdown

1# Changelog
2
3What changed in OpenVibe.Today, newest first.
4
5## 0.1.0 — 2026-10-28
6
7The first version: the network's time bus and calendar authority.
8
9- **Scheduling.** `POST|PATCH|DELETE /api/v1/events`, with title/description/time-zone/range validation, a stream's
10 channel and URL taken from the caller's token, followers-only visibility, a cap of 60 scheduled future events per
11 owner, an `Idempotency-Key` that returns the first event, and a same-origin rule for writes made with the session
12 cookie (`403 today.cross_site`). The event and its `today.event.scheduled` outbox row commit in one transaction.
13- **Public read.** `GET /api/v1/events` (soonest first, public cache 60 s) and `GET /api/v1/events/:id`; a cancelled
14 event answers with its cancelled status, and a followers-only one is 404 unless the caller owns it.
15- **ICS.** `/ics/@<username>.ics` (public) and `/ics/<token>.ics` (private, 300 s): RFC 5545 CRLF, 75-octet UTF-8-safe
16 folding, TEXT escaping, UID/SEQUENCE/STATUS/LAST-MODIFIED, one-hour default end, a cancelled event as
17 `STATUS:CANCELLED` for 7 days then dropped, and rotation that makes the old token 404 at once.
18- **Reminders.** Upsert/remove/list and a 60 s job that claims a due row atomically before pushing one
19 `TODAY_REMINDER` through OpenVibe.Network's `/internal/notifications/push` (user id resolved in batches and cached).
20 A cancelled or done event's reminder never sends.
21- **Agenda.** Own events, reminded events and the public or followers-only events of followed channels, with the
22 follow graph read from Network with the person's own token and cached 60 s. Network down still answers own and
23 reminded events with `follows_unavailable: true`.
24- **Brief.** Later today, your reminders and up to three items from OpenVibe.Live's public Rundown; the Rundown
25 section is omitted when it fails; one stored brief per person per day; a 06:00 UTC job for subjects active in the
26 last 30 days (no notification in v1).
27- **Events.** A transactional outbox with a fixed `evt_` id, claim lease, backoff and `attempts`/`last_error`, and a
28 v2-signed consumer at `/internal/events` for `live.stream.started|ended`; `today_processed` makes a replay a no-op.
29 Account export and deletion go through openvibe-sdk/account-data over every table that holds a subject; the feed
30 token itself is never exported.
31- **The service.** OpenVibe.Network sign-in as OAuth client `today` (PKCE S256, `today_at`/`today_rt`/`today_oauth`),
32 truthful readiness (the database is required), Prometheus metrics on loopback, crawl artifacts, deploy files, and
33 server-rendered pages with schema.org Event JSON-LD.
34- **Tests.** `events`, `ics`, `consumer`, `outbox`, `reminders`, `agenda`, `brief`, `pages`, `sso`, `account-data` and
35 `discovery`, each in its own process on a temporary PGlite database with a mock Network/Events.
36