Un historique des versions est une
[section générée](/concepts/generated-sections) : une source nomme le fichier et
le type qui le lit, et les pages en découlent.

```ts
export default defineAppConfig({
  duxt: {
    sources: [
      {
        path: 'docs',
        generated: [
          {
            type: 'changelog',
            path: 'CHANGELOG.md',
            label: 'Releases'
          }
        ]
      }
    ]
  }
})
```

Les champs qu’une déclaration prend sont les mêmes pour tous les types et se
trouvent dans [Sources](/reference/sources). `changelog` nomme une option propre —
[`granularity`](/reference/changelog/granularity) — et répond aux deux politiques
ci-dessous.

## Versionnage

**Par version.** Chaque version publiée de la documentation a son propre journal
des versions, lu depuis le `CHANGELOG.md` de cette version et servi à
l’intérieur de celle-ci — `/releases` pour la version par défaut,
`/v2.x/releases` à côté de `/v2.x/guides`. Il fonctionne exactement comme la
documentation et la référence d’API à côté.

Chaque copie affiche le fichier entier livré par cette version, versions
antérieures comprises : le journal d’une version plus ancienne s’arrête là où
cette version s’est arrêtée. Le sélecteur de versions garde le lecteur dans le
journal : sur la page d’une version, il ouvre la même version dans l’autre, et
là où cette autre ne l’a jamais eue, il ouvre son aperçu du journal plutôt
qu’une page absente.

**Le fichier est obligatoire dans chaque version.** Une version publiée sans
`CHANGELOG.md` fait échouer le build, pour une source téléchargée comme pour le
dépôt construit — omettre la version ou y montrer l’historique d’une autre
publierait dans les deux cas quelque chose que cette version n’a jamais livré.

## Localisation

**L’original, dans toutes les langues.** Une collection, construite depuis la
langue par défaut.

Un journal des versions est écrit une fois, par l’outil de release, dans la langue
où le projet commite. Rien n’y est propre à une langue : un site localisé sert donc
l’original et le dit avec le
[bandeau de traduction](/concepts/localisation) qu’il dessine déjà pour une page
non traduite. La table `locales` de la déclaration n’est lue que par les types
`per-locale` et ne fait rien ici.

## Où va l’entrée

`navigation: 'sections'` est la valeur par défaut et place l’entrée dans la rangée
des sections — les parties de premier niveau de la documentation.

Un journal des versions n’en est souvent pas une : c’est une chose que le projet a
**à côté** de sa documentation, non une partie de celle-ci.
`navigation: 'navigation'` déplace l’entrée dans la première rangée, étroite, et
`false` ne la place nulle part et laisse le site la lier.

```ts
{
  type: 'changelog',
  path: 'CHANGELOG.md',
  label: 'Releases',
  navigation: 'navigation'
}
```

::callout{type="tip" title="Placer l’entrée à la main"}
Écrire l’entrée vous-même dans `navigation` la garde là où vous l’avez mise — le
build laisse tranquille une section qu’il trouve déjà dans la rangée, au lieu de
l’ajouter à la fin. Ce qui compte, car ajoutée veut dire dernière, et après Crédits
n’est pas la place d’un journal des versions.
::

## Le flux

`duxt.feed.path` nomme la section depuis laquelle `/rss.xml` est construit, et un
historique des versions est ce pour quoi il a été écrit : chaque page de version
porte la `date` propre de cette version, et une version est une chose qui **s’est
produite** — ce qu’une page de référence modifiée n’est pas.

```ts
feed: { path: '/releases', title: 'mon projet — versions' }
```

Éteint tant que la clé n’est pas posée. Seule la version par défaut de chaque
source contribue, un site versionné ne répète donc pas chaque entrée une fois par
version, même si chaque version publie son propre journal des versions. Voir [Configuration](/reference/configuration) et
[`/rss.xml`](/reference/endpoints/rss-xml).

## Quand le fichier ne peut pas être lu

Un fichier **local** absent fait échouer le build au chargement de la
configuration, comme pour tout type. Ce que le fichier ne dit pas tout à fait — un
titre qui ressemble à une version mais ne se lit pas comme telle — est en revanche
un avertissement dans le rapport de build ; voir
[Ce qui est lu](/reference/changelog/what-is-read) et
[Ce que le build vérifie](/concepts/build-checks).