From 842906b6baadc9ee71a346445f6677fc2d363732 Mon Sep 17 00:00:00 2001 From: Nathael Bonnal Date: Fri, 18 Sep 2026 14:22:19 +0200 Subject: [PATCH 1/2] feat(site): add the 0.8.0 release note and bump the version badge Adds the v0.8.0 entry to the release timeline in English and French, covering the SAML 2.0 identity provider, the rebuilt administration console, the crate and test work, and the session and security changes. Moves the hero version badge from v0.7.1 to v0.8.0 in both locales. --- .../website/src/components/hero-section.astro | 2 +- apps/website/src/i18n/ui.ts | 4 +-- apps/website/src/lib/release-notes.ts | 32 +++++++++++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/apps/website/src/components/hero-section.astro b/apps/website/src/components/hero-section.astro index 0cb8de4..69ba1c1 100644 --- a/apps/website/src/components/hero-section.astro +++ b/apps/website/src/components/hero-section.astro @@ -97,7 +97,7 @@ import { Button } from "@explainer/ui";
- Early Access · v0.7.1 + Early Access · v0.8.0
diff --git a/apps/website/src/i18n/ui.ts b/apps/website/src/i18n/ui.ts index 4bb92b4..705724d 100644 --- a/apps/website/src/i18n/ui.ts +++ b/apps/website/src/i18n/ui.ts @@ -18,7 +18,7 @@ export const ui = { 'hero.secondaryAction': 'View on GitHub', 'hero.badge.oss': 'Open source', 'hero.badge.license': 'Apache 2.0', - 'hero.badge.version': 'Early Access · v0.7.1', + 'hero.badge.version': 'Early Access · v0.8.0', // Features 'whyNow.label': 'Why now', @@ -242,7 +242,7 @@ export const ui = { 'hero.secondaryAction': 'Voir sur GitHub', 'hero.badge.oss': 'Open source', 'hero.badge.license': 'Apache 2.0', - 'hero.badge.version': 'Accès anticipé · v0.7.1', + 'hero.badge.version': 'Accès anticipé · v0.8.0', // Features 'whyNow.label': 'Pourquoi maintenant', diff --git a/apps/website/src/lib/release-notes.ts b/apps/website/src/lib/release-notes.ts index 9c9bbf2..80578a6 100644 --- a/apps/website/src/lib/release-notes.ts +++ b/apps/website/src/lib/release-notes.ts @@ -18,6 +18,24 @@ export interface ReleaseNoteTranslation { } export const releaseNotes: ReleaseNote[] = [ + { + version: 'v0.8.0', + publishedAt: '2026-09-15T23:02:24Z', + title: 'SAML 2.0, a rebuilt administration console, and a reworked codebase', + summary: + 'FerrisKey 0.8.0 adds a complete SAML 2.0 identity provider next to OIDC and rebuilds the entire administration interface, but most of the cycle went into the foundations: the workspace was split from 10 crates into 36 and the test suite grew from 395 to 1245 tests.', + kind: 'major', + githubUrl: 'https://github.com/ferriskey/ferriskey/releases/tag/v0.8.0', + compareUrl: 'https://github.com/ferriskey/ferriskey/compare/v0.7.0...v0.8.0', + highlights: [ + 'Ships a complete SAML 2.0 identity provider alongside OIDC: AuthnRequest parsing, HTTP bindings, exclusive XML canonicalisation, enveloped XML-DSig signatures, a self-signed X509 certificate derived from the realm signing key, and service provider configuration from the console.', + 'Rebuilds the whole administration interface in the FerrisKey style, covering 15 IAM screens and 5 console sections, replaces the two user interfaces that used to coexist, and adds light, dark, and system themes.', + 'Splits the workspace from 10 crates into 36 with explicit boundaries, grows the test suite from 395 to 1245 tests, and wires the integration suites that continuous integration had never actually run.', + 'Anchors SSO on the user session rather than the access token so revoking a session also invalidates its refresh tokens, chains the SeaWatch audit log with hashes to make tampering visible, and lands around twenty security fixes including PKCE, refresh token rotation with reuse detection, account lockout, and signed webhook deliveries.', + ], + transition: + 'Where 0.7 pushed outward on protocol coverage and branding, 0.8 turns inward. The release spends as much effort on crate boundaries, tests, and continuous integration as on features, so the surface built up over the previous releases now rests on something that can be verified.', + }, { version: 'v0.7.1', publishedAt: '2026-07-03T14:50:01Z', @@ -258,6 +276,20 @@ export const latestRelease = releaseNotes[0] export const releaseNoteTranslations: Record> = { fr: { + 'v0.8.0': { + title: + "SAML 2.0, une console d'administration reconstruite et une codebase reprise en profondeur", + summary: + "FerrisKey 0.8.0 ajoute un fournisseur d'identité SAML 2.0 complet à côté d'OIDC et reconstruit toute l'interface d'administration, mais l'essentiel du cycle est passé dans les fondations : le workspace est découpé de 10 crates en 36 et la suite de tests passe de 395 à 1245 tests.", + highlights: [ + "Livre un fournisseur d'identité SAML 2.0 complet à côté d'OIDC : parsing des AuthnRequest, bindings HTTP, canonicalisation XML exclusive, signatures XML-DSig enveloppées, certificat X509 auto-signé dérivé de la clé de signature du realm et configuration des service providers depuis la console.", + "Reconstruit toute l'interface d'administration au style FerrisKey, sur 15 écrans IAM et 5 sections de console, remplace les deux interfaces qui cohabitaient et ajoute les thèmes clair, sombre et système.", + "Découpe le workspace de 10 crates en 36 aux frontières explicites, fait passer la suite de tests de 395 à 1245 tests et branche les suites d'intégration que l'intégration continue n'avait jamais réellement exécutées.", + "Ancre le SSO sur la session utilisateur plutôt que sur l'access token, si bien que révoquer une session invalide aussi ses refresh tokens, chaîne le journal d'audit SeaWatch par hash pour rendre toute altération visible, et livre une vingtaine de correctifs de sécurité dont PKCE, la rotation des refresh tokens avec détection de réutilisation, le verrouillage de compte et la signature des livraisons webhook.", + ], + transition: + "Là où la 0.7 poussait vers l'extérieur sur la couverture protocolaire et le branding, la 0.8 se tourne vers l'intérieur. Elle consacre autant d'effort aux frontières entre crates, aux tests et à l'intégration continue qu'aux fonctionnalités, pour que la surface accumulée au fil des releases repose enfin sur quelque chose de vérifiable.", + }, 'v0.7.1': { title: 'Correctif de packaging Nginx pour la ligne 0.7', summary: From 0a1da210daf340398fa58dbe1448339e0feebda7 Mon Sep 17 00:00:00 2001 From: Nathael Bonnal Date: Fri, 18 Sep 2026 14:25:34 +0200 Subject: [PATCH 2/2] feat(site): add the 0.7.2 release note Fills the gap between 0.7.1 and 0.8.0 in the release timeline. 0.7.2 is a single backported commit that restores realm roles assigned directly to a user in issued tokens, in English and French. --- apps/website/src/lib/release-notes.ts | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/apps/website/src/lib/release-notes.ts b/apps/website/src/lib/release-notes.ts index 80578a6..e722fe5 100644 --- a/apps/website/src/lib/release-notes.ts +++ b/apps/website/src/lib/release-notes.ts @@ -36,6 +36,23 @@ export const releaseNotes: ReleaseNote[] = [ transition: 'Where 0.7 pushed outward on protocol coverage and branding, 0.8 turns inward. The release spends as much effort on crate boundaries, tests, and continuous integration as on features, so the surface built up over the previous releases now rests on something that can be verified.', }, + { + version: 'v0.7.2', + publishedAt: '2026-07-30T21:27:37Z', + title: 'Realm roles restored in issued tokens on the 0.7 line', + summary: + 'A patch for the 0.7 line that backports a token assembly fix: realm roles assigned directly to a user were dropped while claims were built, so realm_access.roles came back empty even with the default roles client scope and a realm role mapper in place.', + kind: 'patch', + githubUrl: 'https://github.com/ferriskey/ferriskey/releases/tag/v0.7.2', + compareUrl: 'https://github.com/ferriskey/ferriskey/compare/v0.7.1...v0.7.2', + highlights: [ + 'Backports the claim assembly fix for realm roles assigned directly to a user, which were silently skipped and never reached the realm role mapper.', + 'Restores realm_access.roles for users whose roles come from a direct assignment rather than from a group, which previously required inheriting the role through a group to work at all.', + 'Realigns the workspace, Helm chart, and operator chart versions so the published artifacts stay consistent.', + ], + transition: + 'A single backported commit onto the 0.7 line, so deployments that rely on realm roles inside tokens did not have to wait for the 0.8 cycle to land.', + }, { version: 'v0.7.1', publishedAt: '2026-07-03T14:50:01Z', @@ -290,6 +307,18 @@ export const releaseNoteTranslations: Record