openvibers/openvibe.inventory CHANGELOG.md
CHANGELOG.md
| 1 | # Changelog |
| 2 | |
| 3 | What changed in OpenVibe.Inventory, newest first. Each site also publishes its patch notes at /updates. |
| 4 | |
| 5 | ## Unreleased |
| 6 | |
| 7 | - Workshop images reach OpenVibe.Media with Inventory's Network service token (audience `openvibe.media`, grant |
| 8 | `media.object.upload` on namespace `inventory`). `INVENTORY_MEDIA_APP_KEY` is gone (compatibility register C-71). |
| 9 | |
| 10 | ## 0.4.1 — 2026-10-09 |
| 11 | |
| 12 | - Workshop takedown (ADR-054 §6): `/workshop/review` lists the published community badges. Staff can retire one (nobody |
| 13 | gives it any more) or retire it and revoke every copy (taken off whoever wears it, each owner told through |
| 14 | `inventory.item.revoked`). Both need a reason, which goes to the ledger. |
| 15 | |
| 16 | ## 0.4.0 — 2026-10-09 |
| 17 | |
| 18 | - **The Workshop** (ADR-054 §6 amendment, openvibe-contracts 0.124.0): community badges, free. |
| 19 | - **The kind:** `network.badge`, the first Workshop kind (`migrations/0003_workshop.sql`). |
| 20 | - **Making one:** `/workshop/new` takes the image as a no-JavaScript multipart upload, checked by its header bytes |
| 21 | and stored in OpenVibe.Media (`INVENTORY_MEDIA_APP_KEY`). |
| 22 | - **Review:** staff review at `/workshop/review` and `POST /api/v1/definitions/:id/review` (publish with a rarity, or |
| 23 | reject with a reason). |
| 24 | - **Giving:** creators give their badges by `@name` from `/workshop/mine`, through the Network's username lookup. |
| 25 | - **Rendering:** the equipped read carries `media_id`. |
| 26 | - **Account data:** export includes `made.json`; on deletion a creator's badges pass to the kind's issuer, retired. |
| 27 | |
| 28 | ## 0.3.0 — 2026-10-09 |
| 29 | |
| 30 | - **Grantors** (ADR-054 §3 amendment, openvibe-contracts 0.123.0): a definition may name the services or apps that may |
| 31 | grant it. A grantor only grants (earned or granted, idempotent per its own key, within the cap), and the ledger and |
| 32 | the `inventory.item.granted` event record it as the actor with the issuer kept. The issuer sets and clears the list |
| 33 | with `PATCH /definitions/:id`; a person is never a grantor (`migrations/0002_grantors.sql`). |
| 34 | - Live lets OpenVibe.Quest give six common items as quest rewards: Sparkle, Hearts, Basic Cap, Fire Name, Ice Name |
| 35 | and Rainbow Name (`server/data/live-grantors.json`, set at boot). Their item pages say how to get them. |
| 36 | - The public reads answer every origin (#4), and the sitemap and llms.txt list every item, kind and the public API (#3). |
| 37 | |
| 38 | ## 0.2.0 — 2026-10-09 |
| 39 | |
| 40 | - **The inventory (ADR-054, plan T21 step 2).** |
| 41 | - **Storage:** kinds, definitions, instances, the equipped set and an append-only ledger |
| 42 | (`migrations/0001_initial.sql`). |
| 43 | - **Code:** the domain in `server/inventory/store.js`, the API in `server/http/api.js` (seven capabilities) and the |
| 44 | pages: home, `/items`, `/items/:id`, `/me` and `/u/:subject`. |
| 45 | - **Seed:** Live's five kinds and 70 cosmetics at boot. |
| 46 | - **Events and account data:** `inventory.*` events through the outbox, and account export and deletion at |
| 47 | `/internal/events`. |
| 48 | - **Migration:** `scripts/import-live.js` moves Live's unlocks and equipped slots here and verifies them row for row. |
| 49 | - **The money rule:** no route or column sells, buys, trades or converts an item, and a test holds that. |
| 50 | |
| 51 | ## 0.1.0 — 2026-10-08 |
| 52 | |
| 53 | - **First release:** the service starts from the OpenVibe skeleton — sign-in with OpenVibe.Network (OAuth 2 + PKCE), server-rendered pages through the OpenVibe Frame, the `/api/v1` mount with per-caller limits, crawl artifacts, PostgreSQL migrations, the deploy files and the test suite. |
| 54 |