03-Jan-2026 — release-notes: polish release-note automation and shared code #111
build 403 — commit 9dae9ef
release-notes: polish release-note automation and shared code, include id in update payload for backend compatibility and resolve CMS update error and CI/CD credential prompting (#111)
- build core script features (issue grouping, CLI menus, dry-run/preview, CMS JWT integration) and keep release notes concise with linked issues, ISO/11-Nov-2025 formatting, and index dedupe
- add GitHub build-number preservation with automatic workflow lookups, canonical date-based paths, and legacy page cleanup
- support flexible --since-date/--until-date parsing via UIDateFormat and include the new --include-unassigned flag
- centralize numeric parsing in numbers.ts and reuse it across Angular + Node code (map controls, audits, grid refs, etc.), keeping structured branching and declarative loops per AGENTS.md
- resolve index duplicates via CMS-based state and upserts (ref: #111)
- Migrate from local processed-commits.json to CMS as source of truth for state tracking and duplicate detection
- Remove loadStateFile, saveStateFile, and all processedCommits filtering logic
- Add filterExistingReleaseNotes: queries CMS for each release note path, skips existing pages, shows new vs existing count
- Change all command modes (--all, --latest, --since, --since-date) to regenerate/upsert ALL release notes in the range (not just new ones)
- Leverage createOrUpdatePageContent's upsert behavior + automatic index updates to deduplicate entries
- Remove early return when all pages already exist
- Update logging to reflect create/update behavior, show "will update all" when existing pages found, and display new/existing counts
- Refactor commandLineMode to use explicit nested if/else chains instead of scattered early returns (follows AGENTS.md structured branching)
- Refactor cms-client.ts from class-based to functional exports
- Move CMSAuth interface to models.ts
- Rename getPageContent → pageContent, add deletePageContent function
- Update generate-release-notes.ts and delete-pages.ts to use new functional CMS API
- Fix dry run mode to skip CMS filtering when auth is unavailable
- Update README to document CMS-based approach
The backend findId logic prioritizes body.id over params.id - when body.id is undefined, it incorrectly uses the entire body as MongoDB criteria
- Remove id from request payload in updatePageContent to fix "Document not found" MongoDB error
- Add non-interactive environment detection to prevent credential prompting in GitHub Actions