Skip to content

Commit d2bcf06

Browse files
docs: add CHANGELOG.md
Co-Authored-By: Niels Swimberghe <3382717+Swimburger@users.noreply.github.com>
1 parent 996e234 commit d2bcf06

1 file changed

Lines changed: 73 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
## [Unreleased] (v4)
6+
7+
### Added
8+
9+
- **PR deduplication for `update_from_source` mode.** When `auto_merge` is `false`, 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.
10+
- **Push fallback with rebase retry.** If a regular push is rejected (e.g., branch has diverged), the action attempts `git pull --rebase` and 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.
11+
- **Default branch name.** The `branch` input now defaults to `fern/sync-openapi`. Customers can still override it.
12+
- **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 `@v4` or `@v4.1` stay up to date.
13+
- **CI workflow.** Runs lint (Biome), tests (Vitest), build, and `dist/` verification on every PR and push to main.
14+
- **E2E test script** (`e2e/run-e2e.ts`) that validates happy path (PR reuse) and conflict path (error comment) against a real test repo.
15+
- **Biome.js** for linting and formatting, replacing ESLint. Configured with 4-space indentation, double quotes, recommended lint rules, and import sorting.
16+
- **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, `setFailed` on all failure paths, and auto-merge bypass.
17+
18+
### Changed
19+
20+
- **Node runtime bumped to `node20`** (from deprecated `node16`) in `action.yml`.
21+
- **Vitest 4** replaces Jest as the test framework.
22+
- **CI actions updated** to `actions/checkout@v6` and `actions/setup-node@v6` with Node 20.
23+
- **Non-null assertions replaced** with runtime guards in `syncChanges` for safer error handling.
24+
- **Caught errors are now logged** via `core.debug()` instead of being silently ignored, aiding debugging when `ACTIONS_STEP_DEBUG` is enabled.
25+
- **`--force` removed from `git push`** in the `updateFromSourceSpec` path so commits accumulate naturally.
26+
27+
### Fixed
28+
29+
- **Duplicate PRs.** The `updateFromSourceSpec` function previously created a new PR on every run that detected changes, even if an open PR already existed for the same branch.
30+
- **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.
31+
- **Error path separation.** `pushWithFallback` now correctly distinguishes between "rebase failed" (merge conflicts) and "rebase succeeded but push failed" (push rejection), providing accurate diagnostic labels in PR comments.
32+
33+
## v3
34+
35+
### Added
36+
37+
- Removed `addTimestamp` from branch names.
38+
- Small cleanup and reformatting.
39+
40+
### Changed
41+
42+
- Updated `glob` and `js-yaml` dependencies.
43+
44+
## v2.1
45+
46+
### Fixed
47+
48+
- Fixed branch logic and `--force` tag handling.
49+
- Removed date from branch names.
50+
51+
## v2
52+
53+
### Added
54+
55+
- Option to run `fern api upgrade`.
56+
- Branch name formatting.
57+
- Upstream remote support.
58+
59+
### Changed
60+
61+
- Updated actions and token handling.
62+
63+
## v1
64+
65+
### Added
66+
67+
- Directory and file mapping with `from`/`to` fields.
68+
- Glob-based `exclude` patterns via `minimatch`.
69+
- Better error messages for fetch failures.
70+
71+
## v0
72+
73+
- Initial release with basic OpenAPI spec syncing between repositories.

0 commit comments

Comments
 (0)