openvibers/openvibe.fun CHANGELOG.md
CHANGELOG.md
Changelog
What changed in OpenVibe.Fun, newest first.
0.1.0 — 2026-10-28
The first version: IRL quests on Live, the local guide and group plans.
- IRL quests on Live.
fun_quest_boardsis a streamer's board for one session, checked against the public
OpenVibe.Live channel and the signed-in Network username.fun_questsis suggested → accepted → live → completed
→ verified, withrejectedandhidden. Suggestions pass an explainable dangerous/illegal/trespassing/
harassment filter before they are stored; a board can be accessible-only and has a suggestion cap. One vote per
person per quest. - Verification and reward. A completed quest is verified by
FUN_QUEST_VERIFY_VOTESdistinct public chat checks
or by a Network moderator (global_mod+). A localfun_badgesrow is always paid;fun_quest_rewardsrecords the
OpenCoins ledger. OpenCoins are loyalty points, never money, and are credited only withFUN_COINS=onthrough
Network'sidentity.subject.resolve+network.coins.creditwith the reward id as the idempotency key. - Chat is read, never posted. A timer reads one public page of the channel's
GET /api/chat/global/historyand
applies!quest vote,!quest suggest,!quest verifyand!plan voteat most once per message id. Deleted or
unsafe messages are skipped. UnderFUN_DRILLthe timer is off; tests callrunOnce(). - The local guide.
fun_geo_cachestores OSM/Ticketmaster JSON. Nominatim and Overpass requests carry
FUN_OSM_USER_AGENT, are paced per host (1/s by default), cached seven days with stale fallback and are bounded to
one around: radius. Places show distance, address, opening hours, accessibility, a tile-free map and ODbL
attribution. Ticketmaster Discovery is off unlessTICKETMASTER_API_KEYis set; the key is never cached, returned
or logged. No model call, no AI capability, no paid provider. - Group plans.
fun_plans+fun_plan_options+fun_plan_votes: one vote per person or public chat username,
changing allowed until close, a tie refused, owner/staff decides, and the winner goes to the caller's own
OpenVibe.Today through Today's public event API with the caller's token andIdempotency-Key: fun-plan-<id>. - Safety and moderation.
fun_reportscollects signed-in safety/spam/other reports; staff list them and can hide
a public quest or plan. Hiding writes a Search tombstone. - Search. Each public quest/plan is one
search.index-document@1infun_outbox(ownerfun, typesquest
andplan), with a revision, public URL and public body. The relay waits for thesearch.document.writegrant. - The service. Network SSO as OAuth client
fun(PKCE S256,fun_at/fun_rt/fun_oauth), truthful readiness,
Prometheus metrics on loopback, discovery, deploy files, and server-rendered pages with stablefu-ids plus a
no-JS OBS overlay.public/css/fun.cssandpublic/js/fun.jsare one-comment placeholders for the main session. - Account data. Export covers boards, suggestions, votes, checks, badges, rewards, plans, options, plan votes and
reports. Deletion erases personal rows and anonymizes the community record (subject NULL); another person's rows
and public titles stay. - Tests. Migration, guide/cache/pacer/Ticketmaster, quest safety and state machine, chat idempotency, plans and
Today, Search document validation, SSO, pages/cache, coins opt-in and account export/deletion, each in its own
process on a temporary PGlite database with a mock Network and upstream fixtures.