chore: sync master into develop (after Phase 3 cutover)#316
Conversation
…es) (#314) feat(changelog): migrate 66 versions / 518 entries to per-version YAMLs 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.
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (76)
📝 WalkthroughWalkthroughThis PR establishes a complete changelog management system for the ReadonlyREST documentation repository. It introduces GitHub issue templates, JSON schema validation, and four automation workflows that collectively enable maintainers to submit changelog entries through issues, which are parsed into structured YAML, validated, rendered to markdown, and published via webhook. The PR also migrates 44 historical release versions into the new YAML format with corresponding markdown documentation updates. ChangesChangelog Management System
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…315) * feat(changelog): Phase 3 — Issue Forms, render workflow, structured webhook Companion to beshu-tech/ror-api#86 + #91. After this lands + the prereq repo settings are applied, the form-driven changelog flow is live end-to-end. ADD .github/ISSUE_TEMPLATE/changelog-entry.yml + config.yml 2-field form (version + freeform notes). Each line: <type> (<comp>) <text>. Label 'changelog-entry' applied; blank issues disabled. ADD .github/workflows/maintainer_gate.yml Closes + locks changelog issues filed by non-OWNER/MEMBER/COLLABORATOR. ~10-30s public window accepted (per prior agreement). ADD .github/workflows/changelog_form.yml On issues [opened, edited] with 'changelog-entry' label: 1. Parse form body 2. Map types + canonical components (es/kbn/eck, combinable | / & 'and') 3. Validate version semver 4. Write changelog/<version>.yaml + open/refresh PR via peter-evans 5. Auto-rename issue title, comment PR link, close issue Reads .github/changelog-config.yml -> auto_merge toggle. Default false. ADD .github/workflows/render_changelog.yml On push to master OR PR touching changelog/*.yaml: - ajv schema validation - filename ↔ inner version match check - On push only: render changelog.md from YAMLs (semver.rcompare sort), commit + push back to master ADD .github/schemas/changelog-entry.schema.json Required: version (semver+pre-release), release_date (date), entries (>=1). Per-entry: type enum (new/fix/security/warning/enhancement), components array (es/kbn/eck), text (>=1), optional components_raw (preserves original separator for hash parity with ror-api stored LLM descriptions). ADD .github/changelog-config.yml Single source for form behavior. Starts with auto_merge: false — team reviews each PR manually for first weeks; PR-flip to true once trusted. MODIFY .github/workflows/changelog_watch.yml Now fires on push touching changelog/*.yaml (not changelog.md — that's now an auto-gen mirror). Per-version event-typed POST to ror-api: {event: version_added|modified|deleted, version: X.Y.Z, yaml: <content>} Bot-pushed changelog.md regens don't trigger watch (paths filter excludes). Legacy diff payload dropped on this side (ror-api fallback kept for 1 week per Phase 4 cleanup plan). * fix(ci): tolerate legacy entries — schema accepts components_raw alone + improved migration CI was failing on 1.26.0.yaml (and other pre-1.30 versions): empty 'entries:' because ror-api's parse_version_details breaks on the blank line right after the version header that older entries have. Fixes: 1. Migration script: tolerant bullet extraction (skip blank lines between header and bullets) — pulls 971 entries from 518 previously. 2. Schema: 'components' now optional when 'components_raw' is present. Required for new form-driven entries (form action always emits components); legacy migration entries with non-canonical strings (KBN ENT, PRO/Enterprise, etc.) emit components_raw only and pass. 3. Schema: type can be any string, not just the canonical 5. Pre-1.30 entries had freeform type labels that don't map cleanly. Hash parity: 64/66 versions still match (was 66/66 with the smaller dataset). The 2 that don't (1.26.0, 1.35.0) had backslash-escaped parens that produce different normalized strings post-unescape — acceptable trade-off, costs ~2 LLM re-runs on next sync, much better than 60+ missing entries. Edge cases (183, mostly KBN ENT / Enterprise / PRO product variants) emitted with components_raw verbatim + manual-review comment block. * fix(ci): regex tolerates emoji-before-bold + missing parens; never emit empty text/components_raw Updates 1.26.0.yaml + 1.35.0.yaml to parse the previously-unparseable legacy bullets ('emoji**Type**', no '(component)' at all). Truly unparseable entries fall back to components_raw='unparsed' + text=original-bullet so schema passes. * review: address @coutoPL comments - schema: drop null from entries.type, restore minItems: 1. After parser fixes in migration script, no YAML produces null entries; allowing null was dead code that would have masked future bugs (render JS crashes on null anyway). - changelog-config.yml: auto_merge true -> false. Ship as false per the file's own rollout comment — team manually reviews PRs first releases, then PR-flips.
4957b39 to
bd27e18
Compare
Why
developis the default branch but the changelog-form flow lives onmaster(changelog_watch.ymlfires on master push). Two recent PRs landed directly on master:Without this sync, develop drifts further from master, and the next
develop → masterrelease merge would conflict / re-introduce stale changelog state.Pattern mirrors prior maintenance (e.g.
c215bd3 Merge branch 'master' into develop).Stay draft until #315 merges
Before clicking "Ready for review":
Scope
Pure merge — no manual edits in this branch. Carries:
changelog/*.yaml(66 versions migrated).github/workflows/changelog_form.yml,render_changelog.yml,maintainer_gate.yml.github/ISSUE_TEMPLATE/changelog-entry.yml+config.yml.github/schemas/changelog-entry.schema.json.github/changelog-config.yml.github/workflows/changelog_watch.ymlSummary by CodeRabbit