O analisador lê um registo de alterações como uma corrida plana de títulos e decide
o que cada um é. Nada é configurado: a entrada é a forma do próprio ficheiro.

## Um título de versão

Um título é uma versão quando — reduzida qualquer ligação ao texto que mostra — o
que resta é um **número de versão, opcionalmente seguido de uma data entre
parênteses**.

```md
## [1.4.0](https://github.com/acme/app/compare/v1.3.0...v1.4.0) (2026-02-01)
### [1.4.1](https://github.com/acme/app/compare/v1.4.0...v1.4.1) (2026-02-03)
## 1.4.0 (2026-02-01)
## v2.0.0
```

Os quatro são lidos. Os dois primeiros são o que o release-please escreve — uma
versão menor em `##` e uma correção em `###` — e os dois últimos um ficheiro
mantido à mão. O nível não faz parte do teste, e é isso que deixa passar ambas as
formas.

Uma ligação com que o título **começa** é guardada como URL de comparação da
versão — o diff face à anterior, que a página
[liga junto da proveniência](/reference/changelog/components). Só é aceite se
for absoluta e `http(s)`: uma ligação relativa seria resolvida contra o site
que renderiza o registo, e não contra o repositório de onde veio o ficheiro.

O **nível é lido do corpo** em vez de assumido, pela mesma razão: o release-please
escreve uma correção em `###` e os seus grupos também em `###`, pelo que «o título
menos profundo desta versão» é a única regra que lê ambos.

## Um título de grupo

Todo o título abaixo do nível da versão é um **grupo**, e o seu nome é o do próprio
ficheiro — literal, não traduzido, sem taxonomia fixa por trás.

```md
### Features
### Bug Fixes
```

O release-please escreve esses dois, o changesets escreve o seu próprio conjunto, o
Keep a Changelog outro, e cada um escreve-os no idioma em que o projeto é mantido.
Uma camada que os mapeasse sobre uma lista fixa falharia em silêncio no primeiro
título que não conhecesse — os filtros da vista geral são portanto construídos a
partir do que saiu do ficheiro, e um registo escrito em alemão filtra em alemão sem
nada configurado.

O emblema ao lado de um grupo conta os seus **itens de lista de primeiro nível**. Um
título dentro de um bloco de código é texto e não um título, e uma cerca só fecha
com as da sua espécie.

## O título e o preâmbulo

O primeiro `#` do ficheiro, se nenhuma versão veio antes, é o título próprio do
ficheiro e é descartado — a página tira o seu título de `title`, mantê-lo seria
portanto um segundo `<h1>`.

**Só esse, e só antes da primeira versão.** Descartar todos os `#` lê-se
corretamente no ficheiro que o release-please escreve, onde há exatamente um, e é
perda silenciosa de conteúdo num registo mantido à mão que põe as suas versões no
nível de topo.

O que mais estiver antes da primeira versão fica, como introdução própria da vista
geral.

## Um título que quase é uma versão

A tolerância acima tem um gume silencioso: um título que o teste de versão **não**
corresponde é prosa, portanto as suas linhas dobram-se na versão acima e a versão
que devia ser nunca chega a ser uma página. Nada no site renderizado o diria.

Por isso a compilação di-lo. Um título que abre com um número com pontos mas não é
lido — `## 1.4 (Feb 2024)`, ou a forma Keep a Changelog `## [1.2.3] - 2024-01-01` —
é reportado no relatório de compilação, nomeando a linha e a forma que funciona.

É um **aviso e não uma falha**, pela razão pela qual todo o achado de conteúdo o é:
o site renderiza, e um registo de alterações que esta camada não escreveu não é da
compilação rejeitá-lo. Ver
[O que a compilação verifica](/concepts/build-checks).

## O URL em que uma versão é servida

O número de versão, com um `v` à frente quando começa por um dígito.

```
/releases/v1.4.0
```

O `v` não é decoração. O Content lê um nome de ficheiro feito só de dígitos e pontos
como uma versão e para de o refinar, o que deixaria o prefixo de ordem no endereço:
`/releases/01.0.2.0`. Com o `v` o prefixo é retirado como em todo o lado, e o
segmento corresponde à tag com que a versão foi cortada.