chore: manual release process - #242
Conversation
📝 WalkthroughWalkthroughThe pull request replaces shared CI and publishing workflows with repository-owned validation and release automation. It adds Conventional Commit validation, semantic versioning, changelog generation, npm publishing, tagging, GitHub Release creation, package version updates, and release documentation. ChangesRelease process
Estimated code review effort: 4 (Complex) | ~60 minutes Sequence Diagram(s)sequenceDiagram
participant ReleaseOperator
participant GitHubActions
participant GitHistory
participant GitCliff
participant NpmRegistry
participant GitHub
ReleaseOperator->>GitHubActions: Dispatch release with ref, dry-run, and release-as inputs
GitHubActions->>GitHistory: Detect baseline tag and calculate semantic version
GitHistory-->>GitHubActions: Return baseline tag and resolved version
GitHubActions->>GitCliff: Generate release notes
GitCliff-->>GitHubActions: Return release section
GitHubActions->>NpmRegistry: Publish both npm packages
GitHubActions->>GitHub: Commit changes, push tag, and create GitHub Release
Possibly related issues
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ 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 |
92cfe0d to
a3ca6c5
Compare
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/pipeline.yaml:
- Line 23: Update the actions/checkout step to set persist-credentials to false,
ensuring the checkout token is removed from Git configuration before subsequent
npm commands run.
In @.github/workflows/release.yaml:
- Around line 158-188: The release workflow at .github/workflows/release.yaml
lines 158-188 must support idempotent reruns: check whether each package version
already exists in the registry before publishing, and safely skip completed
commit, tag, push, and GitHub Release operations while performing missing steps.
Update RELEASING.md lines 44-46 to remove the claim that reruns are safe until
this recovery behavior is implemented.
- Around line 15-17: Configure the release job’s environment as npm-release so
GitHub applies required reviewers and deployment branch restrictions for main
and release/* before executing the existing checkout, build, and publish steps.
Use the same npm-release environment name for npm Trusted Publishing; leave the
existing permissions unchanged.
- Around line 43-52: In .github/workflows/release.yaml lines 43-52, configure
the semver action with the selected branch via github.ref_name. In
.github/workflows/release.yaml lines 158-188, make publish recovery idempotent
so reruns safely handle already-published package versions; update RELEASING.md
lines 86-89 to document the corresponding manual recovery procedure if full
automation is not possible.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: d0f0acd2-fbbe-4ddd-8f33-562de1547a5d
📒 Files selected for processing (9)
.github/workflows/pipeline.yaml.github/workflows/pr-title.yaml.github/workflows/release.yamlCHANGELOG.mdCONTRIBUTING.mdRELEASING.mdcliff.tomlprojects/ngx/package.jsonscripts/update-changelog.mjs
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
RELEASING.md (1)
70-71: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy liftValidate
release-asbefore resolving the version.The override bypasses the pre-1.0 guard and passes directly to
npm version, so prerelease, branch-incompatible, or lower versions can reach both publish steps. Accept only stable, non-decreasing, branch-compatible versions, with an explicit1.0.0promotion exception.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@RELEASING.md` around lines 70 - 71, Update the release workflow instructions around the release-as input to require validation before version resolution: accept only stable, non-decreasing versions compatible with the current branch, while allowing the explicit 1.0.0 promotion exception; reject invalid overrides before they reach either publish step or npm version.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@RELEASING.md`:
- Around line 70-71: Update the release workflow instructions around the
release-as input to require validation before version resolution: accept only
stable, non-decreasing versions compatible with the current branch, while
allowing the explicit 1.0.0 promotion exception; reject invalid overrides before
they reach either publish step or npm version.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 491b8242-bdd7-489a-a076-5ee39162d010
📒 Files selected for processing (3)
.github/workflows/pipeline.yaml.github/workflows/release.yamlRELEASING.md
🚧 Files skipped from review as they are similar to previous changes (2)
- .github/workflows/pipeline.yaml
- .github/workflows/release.yaml
Split validating a version from cutting a release. `main` now only builds and tests; releases are cut manually via a workflow_dispatch that computes the version (Conventional Commits), generates the changelog, publishes both packages via npm OIDC, and tags/releases. Adds a PR-title check, cliff.toml, seeded CHANGELOG.md, and RELEASING/CONTRIBUTING docs. Refs #229 Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
The previous pipeline never ran lint; enabling it surfaces pre-existing ESLint errors in unrelated files. Comment it out (mirroring check-format) and track re-enabling as a follow-up in RELEASING.md. Refs #229 Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
- pipeline: set persist-credentials: false on checkout so the token is not left in git config for subsequent npm scripts - release: gate the job with the `release` environment for branch-scoped publishing, and make semver branch-aware for backport releases - docs: describe how releases are secured in RELEASING.md Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
* feat: move dialogs to separate componets Signed-off-by: Sobyt483 <andrianingomel@gmail.com> * feat: add permissions feature Signed-off-by: Sobyt483 <andrianingomel@gmail.com> * feat: add docs test and storybook Signed-off-by: Sobyt483 <andrianingomel@gmail.com> * feat: address pr comments Signed-off-by: Sobyt483 <andrianingomel@gmail.com> --------- Signed-off-by: Sobyt483 <andrianingomel@gmail.com> Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
…246) * feat(dashboard)!: move chrome translations into DashboardConfig.i18n The dashboard no longer ships a hardcoded language list. It provides English as the only built-in default and lets client applications supply translations through the dashboard configuration, switchable on language change. - Add `i18n?: Partial<DashboardTranslations>` to `DashboardConfig`. Client apps pass their translated chrome strings here and swap the object to change language; any omitted key falls back to the English default. - Replace the baked-in `en`/`de` translation map and the `DashboardLanguage` union with `EN_DEFAULTS` (the shipped English strings) and a `DashboardTranslations` contract type. Delete `i18n/de.json`. - `DashboardI18nService` now resolves keys as `config.i18n[key] ?? EN_DEFAULTS[key] ?? key` via an `overrides` signal the `Dashboard` component keeps in sync with `config().i18n`. - Remove the separate `language` input; `config.i18n` is the single source of truth for chrome translations. - Export the i18n contract (`DASHBOARD_I18N_KEYS`, `DashboardI18nKey`, `DashboardTranslations`, `EN_DEFAULTS`) from the public barrel and document the 13-key contract in docs/dashboard.md. - Update specs for the config-driven service. BREAKING CHANGE: the `<mfp-dashboard>` / `<mfp-wc-dashboard>` `language` input is removed and the library no longer bundles non-English translations. Consumers must provide translations via `config.i18n` (see docs/dashboard.md → Localization for the key contract). Signed-off-by: gkrajniak <gkrajniak@gmail.com> * After review Signed-off-by: gkrajniak <gkrajniak@gmail.com> --------- Signed-off-by: gkrajniak <gkrajniak@gmail.com> Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
* Adjust the ranslation logic Signed-off-by: gkrajniak <gkrajniak@gmail.com> * refactor(dashboard)!: make customActions a component input Move `customActions` off `DashboardConfig` and expose it as a dedicated `customActions` input on the Dashboard component, matching how `i18n` is now supplied. Toolbar rendering and the `actionButtonClick` output are unchanged; only the source of the array moves. - Add `customActions = input<ButtonSettings[]>([])`; drop the computed that read `config().customActions`. - Remove `customActions` from the `DashboardConfig` interface. - Update the dashboard stories to bind `[customActions]` (and `[i18n]`) as inputs, and move per-story title/description overrides into `i18n`. - Update docs: add the `customActions` input to the API table, adjust the `actionButtonClick` / editButtonFirst notes, and drop it from the `DashboardConfig` type block. BREAKING CHANGE: `customActions` is no longer read from `DashboardConfig`. Pass it via the `customActions` input / DOM property instead of `config.customActions`. Signed-off-by: gkrajniak <gkrajniak@gmail.com> --------- Signed-off-by: gkrajniak <gkrajniak@gmail.com> Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
Signed-off-by: aaronschweig <aaron.schweig@gmail.com>
a9079b8 to
9b1098b
Compare
Closes #229
Separates validating a version from cutting a release:
mainbuilds and tests only, and releases become an explicit, manually triggered action owned entirely by this repo.Changes
pipeline.yaml: self-contained build + test for PRs andmainpushes (no publish, no version bump).release.yaml: manualworkflow_dispatchrelease — compute version → build/test → changelog → npm publish (both packages, OIDC) → commit/tag/push → GitHub Release. Publish happens before tagging; branch-aware (github.ref_name) for backports;dry-runandrelease-asinputs.pr-title.yaml: required Conventional Commits check on PR titles (load-bearing under squash-merge).semver-actionwithprefix: "",minorList: feat,patchList: fix, perf, silent no-ops, plus a pre-1.0major→minorguard.cliff.toml+ seededCHANGELOG.md;scripts/update-changelog.mjsinserts each release section beneath a marker (avoids--prependclobbering the header).CONTRIBUTING.md; newRELEASING.md(normal release, dry-run, backports,1.0.0promotion).projects/ngx/package.json: bumped stale0.1.0→0.18.11.Deviations worth noting
check-formatis commented out in CI: ~74 pre-existing files fail Prettier today. Tracked as an immediate follow-up inRELEASING.md.git cliff --prepend(prepend strips the file header).Prerequisites (repo admin, before first release)
github-actions[bot]to pushmain/release/*.Recommended first real check after merge: run
release.yamlwithdry-run: trueonmain.Summary by CodeRabbit
New Features
Documentation
Chores