OciServe-thema's: publiceer en haal thema's op, opt-in (nu vult niemand het themaregister) #2429
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#2429
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat wil je bereiken
Een auteur kan een presentatiethema uit OciDeck delen met de organisatie, zodat het in Keiko's themakiezer verschijnt en een cursus naar een thema kan verwijzen. OciServe #360 heeft het register gebouwd met OciDeck als bron; OciDeck vult het niet.
Wat mist er nu (origin/main
5802e9360)themesin de OciServe-gateway. Thema's leven alleen lokaal (SharedPreferences, per app), dus het register op de server blijft leeg en Keiko'sCourseThemePickerheeft niets te kiezen (brenno/Keiko#402).Contract (OciServe
560f1ba)POST /organizations/{org}/themes(Idempotency-Key) body{name, definition}→ 201ThemeItem {id, name, definition, is_builtin, created_at, updated_at}. Dedefinitionis ondoorzichtige ThemeProfile-JSON van OciDeck; de server controleert alleen dat het een JSON-object is.GET …/themes(cursor),GET …/themes/{id}met ETag.PUT …/themes/{id}{name, definition}metIf-Match;DELETE→ 204, maar 409 voor een ingebouwd thema of een thema in gebruik.content:create.Gevraagd
If-Matchgebruiken en bij 412 de keuze geven tussen overschrijven en de serverversie overnemen; geen stille overschrijving.definitionbevat geen persoonsgegevens, maar kan een logo bevatten: controleer of afbeeldingen als asset-hash of als ingesloten bytes meegaan en begrens de grootte.Toets op de kernwaarden
Alleen actief voor wie bewust met een OciServe is verbonden (ongewijzigd); zonder server blijft OciDeck volledig lokaal werken. Geen telemetrie, geen wijziging van het bestandsformaat, geen nieuwe verplichte afhankelijkheid. De route staat al in de gepinde speckopie (
test/fixtures/ociserve_openapi.yaml, OciServe45d9a87), dus de pin hoeft niet omhoog; registreer de nieuwe aanroepen wel intest/ociserve_api_drift_test.dart(de contractpoort, #2042).Acceptatiecriteria
Acceptatiecriteria (algemeen)
l10n.d('…')-teksten viamake add-l10n(31 talen).make checkgroen;docs/USER_GUIDE.md,docs/SOURCE_MAP.mdenCHANGELOG.mdbijgewerkt.Gerelateerd
Keiko: brenno/Keiko#402. Overzicht: brenno/OciServe#659.
Keten-audit van 2026-10-14, getoetst aan OciServe
560f1ba, Keiko093f679en OciDeck5802e9360. Overzicht: brenno/OciServe#659.Gemerged in #2444 (merge-commit
5446218c72). Na het samenvoegen met main is de per-bestand-dekking van de nieuwe provider-, dialoog- en bewijslagen met tests aangevuld; make check, check-secrets en sast zijn groen. #2424 was al gedekt door me/exam-results.Nalevering in #
d191e3d0d5(PR #2447, commit7efde5aaaf). Een ontbrekende ETag of een letterlijke ster is geen If-Match; stil overschrijven gebeurt niet. De gepinde spec gebruikt 409 voor dat conflict, niet 412. Niet live bewezen: de themakiezer in Keiko.