Skip to content

feat(changelog): migrate to per-version YAMLs (66 versions, 518 entries)#314

Merged
ton77v merged 1 commit into
masterfrom
migrate/yaml-changelog
May 12, 2026
Merged

feat(changelog): migrate to per-version YAMLs (66 versions, 518 entries)#314
ton77v merged 1 commit into
masterfrom
migrate/yaml-changelog

Conversation

@ton77v
Copy link
Copy Markdown
Collaborator

@ton77v ton77v commented May 12, 2026

Why

Phase 2 of the UI-for-Changelog rollout (tracker: beshu-tech/ror-api#86).

Turns the free-text changelog.md into per-version YAML files. Each release lives in its own file at changelog/{version}.yaml. After Phase 3, changelog.md is auto-generated from these YAMLs — humans never touch it directly.

Generated by

scripts/migrate_changelog.py in beshu-tech/ror-api (PR #90). One-shot. Reuses ror-api's existing parsers (is_version_line, parse_version_details, HashTitles.from_md) to guarantee parsing behavior matches production.

Results

Metric Value
Versions 66
Entries 518
Hash parity vs original 66/66 ✓
Edge cases (manual review) 3

Hash parity — why it matters

ror-api stores LLM-generated detailed descriptions per entry, keyed by HashTitles.from_md(entry_bullets). If the YAML→MD render produces different bullets than the original, the hash changes → ror-api re-runs the LLM for every "changed" entry → cost + delay + churn.

This PR is hash-stable. Every existing LLM description survives.

The script discovered (KBN/ES), (KBN|ES), (ES & KBN) mixed-separator entries that would not survive canonical render. Fix: optional components_raw field on entries — preserves the original separator/order verbatim while keeping a normalized components: [es, kbn] array for downstream consumers. Pure form-driven future entries omit components_raw.

Edge cases (3 entries) — preserved verbatim, flagged inline

Each YAML for these versions has a # EDGE CASE — manual review needed comment block with the original bullet. Same components_raw mechanism keeps hashes stable; you can leave as-is or normalize manually.

Version Component string Bullet
1.43.0 KBN|PRO Fix: ROR menu title wraps when version text is too short (cosmetic)
1.48.0 KBN < 7.9.x Fix: using a custom kibana index in cooperation with ROR Free
1.49.0 KBN < 7.9.0 Fix: logging issue when two Kibanas are handled by one browser at the same time

Sample (1.69.0.yaml)

version: "1.69.0"
release_date: "2026-04-02"
entries:
  - type: security
    components: [kbn]
    text: "[CVE-2026-24001](https://nvd.nist.gov/vuln/detail/CVE-2026-24001), ..."
  - type: new
    components: [es, kbn]
    components_raw: "KBN/ES"      # preserved verbatim (hash parity)
    text: "[Added Fleet support via native API key and service account token authentication (ES 7.14+)](...)"
  - type: new
    components: [kbn]              # clean entry, no components_raw needed
    text: "[Added support for opening different tenancies in separate tabs](...)"

What this PR does NOT do

  • Does not delete changelog.md — stays as-is until Phase 3 cuts over (render workflow regens it from YAMLs)
  • Does not add Issue Forms / form action / maintainer gate — Phase 3 work
  • Does not modify changelog_watch.yml — Phase 3 swaps the payload to structured

After merge

Branch migrate/yaml-changelog lands on master. Phase 3 adds the workflow files + Issue Forms in a separate PR, coordinated with ror-api webhook contract changes.

Demo

Schema + render verified end-to-end on ton77v/changelog-forms-demo. Same YAML format, same parser, same render logic that Phase 3 will deploy here.

🦀 sent by Claude Code

Phase 2 of UI-for-Changelog migration (beshu-tech/ror-api#86).

Generated by scripts/migrate_changelog.py (beshu-tech/ror-api#90), one-shot
parse of the live changelog.md. Hash parity verified: HashTitles.from_md()
of each YAML-rendered bullet matches the original on every version, so
ror-api will not re-run LLM descriptions for any existing entry.

changelog.md kept as-is — will become auto-generated mirror in Phase 3
once render workflow + Issue Forms land.

Edge cases (3 entries) emitted with components_raw + manual-review comment:
- 1.43.0: (KBN|PRO) — PRO product variant
- 1.48.0: (KBN < 7.9.x) — version-qualified component
- 1.49.0: (KBN < 7.9.0) — version-qualified component

These already had non-canonical components in original changelog.md; left
verbatim so existing LLM descriptions stay valid. Maintainer can adjust
manually if desired.
@coderabbitai

This comment was marked as spam.

Copy link
Copy Markdown
Collaborator

@coutoPL coutoPL left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@ton77v ton77v merged commit 2c02bfc into master May 12, 2026
1 check passed
@ton77v ton77v deleted the migrate/yaml-changelog branch May 12, 2026 07:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants