Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/website/src/components/hero-section.astro
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ import { Button } from "@explainer/ui";
</div>
<div class="flex items-center gap-2 text-sm text-muted-foreground">
<Icon icon="lucide:tag" className="size-4 text-primary/70" client:load />
<span data-t="hero.badge.version">Early Access · v0.7.1</span>
<span data-t="hero.badge.version">Early Access · v0.8.0</span>
</div>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions apps/website/src/i18n/ui.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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',
Expand Down
61 changes: 61 additions & 0 deletions apps/website/src/lib/release-notes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,41 @@ 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.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',
Expand Down Expand Up @@ -258,6 +293,32 @@ export const latestRelease = releaseNotes[0]

export const releaseNoteTranslations: Record<string, Record<string, ReleaseNoteTranslation>> = {
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.2': {
title: 'Rôles de realm rétablis dans les tokens émis sur la ligne 0.7',
summary:
"Un patch pour la ligne 0.7 qui rétroporte un correctif d'assemblage des tokens : les rôles de realm assignés directement à un utilisateur étaient perdus lors de la construction des claims, si bien que realm_access.roles revenait vide même avec le client scope roles par défaut et un mapper de rôles de realm configuré.",
highlights: [
"Rétroporte le correctif d'assemblage des claims pour les rôles de realm assignés directement à un utilisateur, qui étaient ignorés en silence et n'atteignaient jamais le mapper de rôles de realm.",
"Rétablit realm_access.roles pour les utilisateurs dont les rôles viennent d'une assignation directe et non d'un groupe, ce qui obligeait jusque-là à passer par un groupe pour que le rôle remonte.",
'Réaligne les versions du workspace, du chart Helm et du chart operator pour garder des artefacts cohérents.',
],
transition:
"Un unique commit rétroporté sur la ligne 0.7, pour que les déploiements qui s'appuient sur les rôles de realm dans les tokens n'aient pas à attendre la fin du cycle 0.8.",
},
'v0.7.1': {
title: 'Correctif de packaging Nginx pour la ligne 0.7',
summary:
Expand Down
Loading