Skip to content

CI: Automatic changelog generation#156

Draft
thomasttvo wants to merge 11 commits intoci/build-on-releasefrom
thomas/changelog
Draft

CI: Automatic changelog generation#156
thomasttvo wants to merge 11 commits intoci/build-on-releasefrom
thomas/changelog

Conversation

@thomasttvo
Copy link
Copy Markdown
Collaborator

@thomasttvo thomasttvo commented Jan 2, 2026

Summary by CodeRabbit

  • Documentation

    • Added changelog link to README for easy access to version history and release notes.
    • Added contribution guidelines for labeling pull requests to control changelog organization.
  • Chores

    • Configured automated changelog generation from pull request labels.
    • Added GitHub Actions workflow to enforce required PR labels.
    • Updated release configuration to auto-generate GitHub releases.
    • Removed build artifacts from version control.

@thomasttvo thomasttvo force-pushed the thomas/changelog branch 5 times, most recently from 7ad51f4 to 8a6cc8b Compare January 2, 2026 18:43
- Extracts valid labels from release.yml using github-script
- Requires at least one changelog label on PRs
- Runs on label changes (labeled/unlabeled events)
@thomasttvo
Copy link
Copy Markdown
Collaborator Author

@claude please review this PR

@thomasttvo
Copy link
Copy Markdown
Collaborator Author

@claude review

@thomasttvo
Copy link
Copy Markdown
Collaborator Author

lib seems to be accidentally committed

- Remove lib/commonjs/, lib/module/, lib/typescript/ from git tracking
- Add lib/ to .gitignore
- Remove bob build and git add lib from pre-commit hook
  (lib/ is built at publish time via react-native-builder-bob, not needed in repo)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 1, 2026

Walkthrough

This pull request removes the compiled library code from the repository, including all CommonJS and ES module implementations in lib/commonjs/ and lib/module/, along with their corresponding TypeScript declarations in lib/typescript/. The lib/ directory is now excluded via .gitignore. In parallel, release and CI/CD workflows are introduced with .github/release.yml defining changelog categories and .github/workflows/pr-labels.yml enforcing PR label requirements. Build dependencies and pre-commit hooks are simplified in package.json. Documentation is updated with changelog and release notes guidance in CONTRIBUTING.md and README.md.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (2)
.github/workflows/pr-labels.yml (1)

3-5: Consider removing synchronize trigger.

Label checks don't need to re-run on every push—only when labels change (labeled, unlabeled) or PR opens/reopens. The synchronize trigger causes unnecessary workflow runs on each commit.

⚡ Reduce workflow runs
 on:
   pull_request:
-    types: [opened, synchronize, reopened, labeled, unlabeled]
+    types: [opened, reopened, labeled, unlabeled]
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/pr-labels.yml around lines 3 - 5, The pull_request trigger
currently includes "synchronize", causing runs on every push; remove
"synchronize" from the types array in the workflow so it only triggers on
"opened", "reopened", "labeled", and "unlabeled" (update the types list in the
top-level `on: pull_request:` block to exclude "synchronize").
CONTRIBUTING.md (1)

91-102: Clarify that labels categorize release notes, not auto-bump versions.

Lines 95-97 state labels trigger "major/minor/patch version bump," but these labels only categorize release notes—they don't automatically bump semver. The maintainer still chooses the version during yarn release. Consider rewording to avoid confusion.

📝 Suggested rewording
 Release notes are automatically generated from merged pull requests. Please label your PRs with:

-- `breaking`: Breaking changes (major version bump)
-- `enhancement`: New features (minor version bump)
-- `bug`: Bug fixes (patch version bump)
+- `breaking`: Breaking changes
+- `enhancement`: New features
+- `bug`: Bug fixes
 - `documentation`: Documentation updates
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@CONTRIBUTING.md` around lines 91 - 102, Update the "Changelog and Release
Notes" section so it's clear that PR labels (`breaking`, `enhancement`, `bug`,
`documentation`, `dependencies`) are used only to categorize release notes and
do not automatically bump semver; explicitly state that the maintainer selects
the version during the release process (e.g., when running `yarn release`) and
that `.github/release.yml` controls note organization, not automatic versioning.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/workflows/pr-labels.yml:
- Around line 7-27: The check-labels job currently enforces labels for all PRs
and will block Dependabot PRs; update the workflow to skip this job or the
"Extract valid labels from release.yml" step when the actor is Dependabot by
adding an if condition that checks github.actor != 'dependabot[bot]' (reference
the job name check-labels and the step id extract-labels), so Dependabot PRs
bypass the labels requirement; alternatively, if you prefer allowing Dependabot
to be validated, include 'dependencies' in the labels set, but the recommended
quick fix is to add the if guard to skip the job/step for Dependabot.

In `@package.json`:
- Around line 116-119: The package.json is missing a "prepare" script so
release-it's npm publish may run without building lib/; add a "prepare" script
that runs the bob build step (e.g., set "prepare": "bob build") to ensure
react-native-builder-bob generates the lib/ directory before publishing—update
package.json's scripts section to include the prepare entry so the package is
built prior to npm publish triggered by the "github" / release-it configuration.

---

Nitpick comments:
In @.github/workflows/pr-labels.yml:
- Around line 3-5: The pull_request trigger currently includes "synchronize",
causing runs on every push; remove "synchronize" from the types array in the
workflow so it only triggers on "opened", "reopened", "labeled", and "unlabeled"
(update the types list in the top-level `on: pull_request:` block to exclude
"synchronize").

In `@CONTRIBUTING.md`:
- Around line 91-102: Update the "Changelog and Release Notes" section so it's
clear that PR labels (`breaking`, `enhancement`, `bug`, `documentation`,
`dependencies`) are used only to categorize release notes and do not
automatically bump semver; explicitly state that the maintainer selects the
version during the release process (e.g., when running `yarn release`) and that
`.github/release.yml` controls note organization, not automatic versioning.
🪄 Autofix (Beta)

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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ee2e1582-fb27-407e-8396-8be57e3d0def

📥 Commits

Reviewing files that changed from the base of the PR and between 58f450c and ae88a40.

⛔ Files ignored due to path filters (27)
  • lib/commonjs/ReactNativeZoomableView.js.map is excluded by !**/*.map
  • lib/commonjs/animations/index.js.map is excluded by !**/*.map
  • lib/commonjs/assets/pin.png is excluded by !**/*.png, !**/*.png
  • lib/commonjs/components/AnimatedTouchFeedback.js.map is excluded by !**/*.map
  • lib/commonjs/components/StaticPin.js.map is excluded by !**/*.map
  • lib/commonjs/components/index.js.map is excluded by !**/*.map
  • lib/commonjs/debugHelper/index.js.map is excluded by !**/*.map
  • lib/commonjs/helper/applyPanBoundariesToOffset.js.map is excluded by !**/*.map
  • lib/commonjs/helper/calcNewScaledOffsetForZoomCentering.js.map is excluded by !**/*.map
  • lib/commonjs/helper/coordinateConversion.js.map is excluded by !**/*.map
  • lib/commonjs/helper/index.js.map is excluded by !**/*.map
  • lib/commonjs/index.js.map is excluded by !**/*.map
  • lib/commonjs/typings/index.js.map is excluded by !**/*.map
  • lib/module/ReactNativeZoomableView.js.map is excluded by !**/*.map
  • lib/module/animations/index.js.map is excluded by !**/*.map
  • lib/module/assets/pin.png is excluded by !**/*.png, !**/*.png
  • lib/module/components/AnimatedTouchFeedback.js.map is excluded by !**/*.map
  • lib/module/components/StaticPin.js.map is excluded by !**/*.map
  • lib/module/components/index.js.map is excluded by !**/*.map
  • lib/module/debugHelper/index.js.map is excluded by !**/*.map
  • lib/module/helper/applyPanBoundariesToOffset.js.map is excluded by !**/*.map
  • lib/module/helper/calcNewScaledOffsetForZoomCentering.js.map is excluded by !**/*.map
  • lib/module/helper/coordinateConversion.js.map is excluded by !**/*.map
  • lib/module/helper/index.js.map is excluded by !**/*.map
  • lib/module/index.js.map is excluded by !**/*.map
  • lib/module/typings/index.js.map is excluded by !**/*.map
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock, !**/yarn.lock
📒 Files selected for processing (43)
  • .github/release.yml
  • .github/workflows/pr-labels.yml
  • .gitignore
  • CONTRIBUTING.md
  • README.md
  • lib/commonjs/ReactNativeZoomableView.js
  • lib/commonjs/animations/index.js
  • lib/commonjs/components/AnimatedTouchFeedback.js
  • lib/commonjs/components/StaticPin.js
  • lib/commonjs/components/index.js
  • lib/commonjs/debugHelper/index.js
  • lib/commonjs/helper/applyPanBoundariesToOffset.js
  • lib/commonjs/helper/calcNewScaledOffsetForZoomCentering.js
  • lib/commonjs/helper/coordinateConversion.js
  • lib/commonjs/helper/index.js
  • lib/commonjs/index.js
  • lib/commonjs/typings/index.js
  • lib/module/ReactNativeZoomableView.js
  • lib/module/animations/index.js
  • lib/module/components/AnimatedTouchFeedback.js
  • lib/module/components/StaticPin.js
  • lib/module/components/index.js
  • lib/module/debugHelper/index.js
  • lib/module/helper/applyPanBoundariesToOffset.js
  • lib/module/helper/calcNewScaledOffsetForZoomCentering.js
  • lib/module/helper/coordinateConversion.js
  • lib/module/helper/index.js
  • lib/module/index.js
  • lib/module/typings/index.js
  • lib/typescript/ReactNativeZoomableView.d.ts
  • lib/typescript/__tests__/index.test.d.ts
  • lib/typescript/animations/index.d.ts
  • lib/typescript/components/AnimatedTouchFeedback.d.ts
  • lib/typescript/components/StaticPin.d.ts
  • lib/typescript/components/index.d.ts
  • lib/typescript/debugHelper/index.d.ts
  • lib/typescript/helper/applyPanBoundariesToOffset.d.ts
  • lib/typescript/helper/calcNewScaledOffsetForZoomCentering.d.ts
  • lib/typescript/helper/coordinateConversion.d.ts
  • lib/typescript/helper/index.d.ts
  • lib/typescript/index.d.ts
  • lib/typescript/typings/index.d.ts
  • package.json
💤 Files with no reviewable changes (36)
  • lib/module/components/index.js
  • lib/commonjs/components/index.js
  • lib/typescript/components/AnimatedTouchFeedback.d.ts
  • lib/typescript/helper/applyPanBoundariesToOffset.d.ts
  • lib/module/animations/index.js
  • lib/commonjs/typings/index.js
  • lib/typescript/index.d.ts
  • lib/typescript/helper/index.d.ts
  • lib/commonjs/helper/applyPanBoundariesToOffset.js
  • lib/commonjs/index.js
  • lib/commonjs/animations/index.js
  • lib/typescript/helper/calcNewScaledOffsetForZoomCentering.d.ts
  • lib/module/components/AnimatedTouchFeedback.js
  • lib/commonjs/debugHelper/index.js
  • lib/module/components/StaticPin.js
  • lib/module/ReactNativeZoomableView.js
  • lib/commonjs/helper/calcNewScaledOffsetForZoomCentering.js
  • lib/module/helper/index.js
  • lib/commonjs/components/AnimatedTouchFeedback.js
  • lib/commonjs/helper/index.js
  • lib/commonjs/components/StaticPin.js
  • lib/typescript/typings/index.d.ts
  • lib/module/index.js
  • lib/typescript/ReactNativeZoomableView.d.ts
  • lib/module/helper/coordinateConversion.js
  • lib/typescript/components/index.d.ts
  • lib/typescript/helper/coordinateConversion.d.ts
  • lib/typescript/components/StaticPin.d.ts
  • lib/commonjs/helper/coordinateConversion.js
  • lib/typescript/debugHelper/index.d.ts
  • lib/module/typings/index.js
  • lib/module/debugHelper/index.js
  • lib/typescript/animations/index.d.ts
  • lib/commonjs/ReactNativeZoomableView.js
  • lib/module/helper/calcNewScaledOffsetForZoomCentering.js
  • lib/module/helper/applyPanBoundariesToOffset.js

thomasvo and others added 4 commits March 31, 2026 18:10
- Add prepare script (bob build) so lib/ is built before npm publish
- Skip pr-labels check for dependabot[bot] actor

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dependabot PRs are excluded from release notes via release.yml authors field,
so they don't need changelog labels. Without this, Dependabot PRs would be
blocked by the required-labels check.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@thomasttvo thomasttvo changed the base branch from master to ci/build-on-release April 1, 2026 01:39
@thomasttvo thomasttvo marked this pull request as draft April 1, 2026 01:39
@thomasttvo
Copy link
Copy Markdown
Collaborator Author

Marking as draft — this PR is stacked on #158 (ci: move build to release workflow). Will be ready for review after #158 merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request small

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant