All notable changes to this project will be documented in this file.
- PR deduplication for
update_from_sourcemode. Whenauto_mergeisfalse, the action now checks for an existing open PR on the branch before creating a new one. Subsequent runs push new commits to the existing PR instead of creating duplicates. - Push fallback with rebase retry. If a regular push is rejected (e.g., branch has diverged), the action attempts
git pull --rebaseand retries. If rebase fails due to merge conflicts, a detailed comment is left on the PR with the full git error output and resolution steps, and the action fails. - Default branch name. The
branchinput now defaults tofern/sync-openapi. Customers can still override it. - Release workflow. Publishing a GitHub Release (e.g.,
v4.1.0) automatically force-updates the major (v4) and minor (v4.1) version tags so consumers on@v4or@v4.1stay up to date. - CI workflow. Runs lint (Biome), tests (Vitest), build, and
dist/verification on every PR and push to main. - E2E test script (
e2e/run-e2e.ts) that validates happy path (PR reuse) and conflict path (error comment) against a real test repo. - Biome.js for linting and formatting, replacing ESLint. Configured with 4-space indentation, double quotes, recommended lint rules, and import sorting.
- 12 unit tests covering PR creation, PR reuse, no-op on no changes, push without
--force, rebase retry, PR comment on conflict, error path separation, rebase abort error handling,setFailedon all failure paths, and auto-merge bypass.
- Node runtime bumped to
node20(from deprecatednode16) inaction.yml. - Vitest 4 replaces Jest as the test framework.
- CI actions updated to
actions/checkout@v6andactions/setup-node@v6with Node 20. - Non-null assertions replaced with runtime guards in
syncChangesfor safer error handling. - Caught errors are now logged via
core.debug()instead of being silently ignored, aiding debugging whenACTIONS_STEP_DEBUGis enabled. --forceremoved fromgit pushin theupdateFromSourceSpecpath so commits accumulate naturally.
- Duplicate PRs. The
updateFromSourceSpecfunction previously created a new PR on every run that detected changes, even if an open PR already existed for the same branch. - Error messages in PR comments. Multi-line git error output now uses fenced code blocks instead of inline code spans, fixing broken Markdown rendering on GitHub.
- Error path separation.
pushWithFallbacknow correctly distinguishes between "rebase failed" (merge conflicts) and "rebase succeeded but push failed" (push rejection), providing accurate diagnostic labels in PR comments.
- Removed
addTimestampfrom branch names. - Small cleanup and reformatting.
- Updated
globandjs-yamldependencies.
- Fixed branch logic and
--forcetag handling. - Removed date from branch names.
- Option to run
fern api upgrade. - Branch name formatting.
- Upstream remote support.
- Updated actions and token handling.
- Directory and file mapping with
from/tofields. - Glob-based
excludepatterns viaminimatch. - Better error messages for fetch failures.
- Initial release with basic OpenAPI spec syncing between repositories.