Consolidate the wiki: canonical Coding Standards, merged Architecture, split Provider Setup
Restructure the wiki into one coherent, audience-grouped set with a single home
for each fact.
- New Coding-Standards page: the one canonical statement of the architecture,
comment/documentation (#864), and object-oriented rules; the repo's CLAUDE.md
and CONTRIBUTING.md now point here instead of restating them.
- Merged the two stale, mutually-overlapping Architecture pages into one, re-based
on the current module-DAG reality (the old pages claimed the module split was
"not pursued" and that no IPluginServiceRegistrator existed — both were wrong
and contradicted docs/ARCHITECTURE.md). Cites modules and types, never
file:line, so it cannot drift on a move again.
- Split Provider-Setup (1172 lines, ~73% not provider-specific) into Provider
Setup (recipes) + a new Hardening & Options Reference; folded the security-
control narrative into the Security Model. Every moved section left a pointer.
- Merged Release-Policy + Release-QA-Checklist into Releasing (renamed the
per-release ladder to "release promotion ladder" to end the Beta-rung name
collision); merged OpenSSF-Best-Practices + Maturity-Map into Security &
Maturity Self-Assessment. Old slugs kept as redirect stubs.
- Rebuilt the sidebar into four audience groups (Getting started / How it works /
Security / Standards & process). Fixed the broken anchors, corrected the beta
publish-trigger to the daily scheduler (it is not "every merge"), de-referenced
the design records to module/type names, and trimmed Home's README duplication.
Advance maturity to Beta and add the role-gate denial troubleshooting entry
Flip Home/Roadmap/Migrating from Alpha to Beta for the 4.3.0 release: drop the
Alpha for-testing-only warning block for a concise Beta status, move the ladder
marker to Beta, and soften the production-use wording to Beta-appropriate. Add a
Troubleshooting entry mapping the reworded role-gate denial message (#668).
Refresh wiki to Alpha stage, packaged-release install, and three-part versioning
- Home/Installation/Migrating: replace the In-Development banner with the Alpha
maturity; document the plugin-catalog install (stable/beta manifest URLs) and the
multi-target net9.0/net10.0 build for Jellyfin 10.11 and 12.0; drop the
build-from-source-only / no-manifest wording now that the channels are live.
- Release-Policy/OpenSSF: describe the three-part X.Y.Z scheme, with the channel and
Jellyfin generation as a tag/release-name suffix and Z covering both bug-fix and
security, instead of the retired four-part X.Y.Z.W (W=security).
- Provider-Setup: fix "recieve" typo.
- OpenSSF/Release-Policy/Release-QA-Checklist/Rollback/Threat-Model: use the wiki page
name as link text for docs that moved out of the repo (Review Gate, Rollback,
Release QA Checklist, Provider Setup, Architecture Internals, Threat Model).
Migrate design, process, and provider docs from the repo into the wiki
Add wiki pages for the per-provider setup guides, the delivery-pipeline
threat model, the release/rollback/review-gate/QA process docs, the DORA
delivery metrics, the OpenSSF best-practices assessment, the single-logout
and SSO-only-login design notes, and an architecture-internals code map.
Retarget every internal link: cross-doc references now point at wiki pages,
references to files that stay in the repo point at full github blob URLs,
and provider screenshots point at raw.githubusercontent URLs. Add a grouped
navigation to Home (user docs / architecture & security / process & release
/ design records), cross-link Login-Flow and Architecture with the new
Architecture-Internals map, and cross-link Security-Model with Threat-Model.
Document issuer-binding, secrets-at-rest, and the legacy-link upgrade path
Mirror the current providers.md security posture onto the wiki:
- Security-Model: issuer-bound OpenID links (repointing protection), secrets
encrypted at rest (ssoenc envelope + downgrade note), and the admin-account
exemption for the legacy username-keyed link migration.
- Migrating-from-9p4: issuer-binding behavior and the encrypted-secret rollback
caveat.
- Troubleshooting: the post-upgrade gated legacy-link case (403 / fresh account).
Closes #371.
Gate the legacy-link migration note behind AllowExistingAccountLink
Mirrors the #354 fix into the wiki: the Security Model page gains an
upgrade note (the legacy username-keyed migration now honors the
AllowExistingAccountLink opt-in, with break-glass and the takeover-window
caveat), and the 9p4 migration page's now-false 'migrates automatically,
no admin action' line is corrected to point at the flag and the runbook.
Document the auth-page CSP and the rate-limiter keying/notice; drop the stale pre-alpha label
The Security Model page did not mention the nonce-based Content-Security-Policy the
auth page has carried since the response-hardening work, even though the Login Flow
page already points at the Response hardening section for it. Describe the policy
and what it denies.
The rate-limiting section now also covers two behaviors that landed after the last
wiki pass: IPv4-in-IPv6 transition sources (NAT64 well-known prefix, 6to4,
IPv4-compatible) are keyed on their embedded IPv4 rather than the shared /64, and
throttling engagement is summarized in a bounded log notice (one line per minute,
count only) so an operator can spot sustained abuse or a pooled-proxy
misconfiguration.
The migration page still called the project pre-alpha; the maturity ladder names
this stage In-Development, so align the warning with the Roadmap wording.
Add 'Migrating from 9p4' wiki page
Document the switch from the archived 9p4/jellyfin-plugin-sso: same
plugin GUID, so it is an in-place upgrade that preserves the config;
the pre-alpha/test-only caveat; the fail-closed behavior changes an
upgrader must check (OIDC asymmetric-signing + sub keying, SAML SHA-1/
DTD/time/audience); and the rollback path. Linked from Home.
Refs iderex/jellyfin-plugin-sso#150