ferrflow 7.35.6 → 7.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -192,6 +192,8 @@ ferrflow migrate --from semantic-release
192
192
 
193
193
  It maps `tagFormat`, `branches`, and the common plugins (`changelog`, `exec`, `github`/`gitlab`) to their FerrFlow equivalents, and prints a summary of what mapped, what was ignored, and what needs manual review. Anything without a FerrFlow equivalent is surfaced, never guessed. JSON `.releaserc` is supported today; YAML `.releaserc` and JS `release.config.js` are reported as unsupported rather than mis-parsed.
194
194
 
195
+ `ferrflow migrate --from release-please` also maps `extra-files` (`generic` markers to a `txt` selector, `toml` on `Cargo.toml` and `json` on `$.version` to their formats), `bump-minor-pre-major` and `bump-patch-for-minor-pre-major` to `preMajor` (`breaking: minor`, `feat: patch`), and writes `autoMergeReleases: false` since release-please never merges its release PR. Lockfile updates are enabled when a versioned manifest has one. Entries it cannot express are listed under "Review manually". Only non-default keys are written.
196
+
195
197
  ### JSON Schema
196
198
 
197
199
  Add `$schema` to get autocompletion and validation in VS Code, WebStorm, and any JSON-aware editor:
@@ -391,6 +393,21 @@ versioning = "calver" # override: date-based
391
393
  | `sequential` | `N` | `42` | Simple incrementing build number |
392
394
  | `zerover` | `0.MINOR.PATCH` | `0.15.2` | Permanently unstable, never hits 1.0 |
393
395
 
396
+ ### Pre-1.0 bump rules
397
+
398
+ By default a `semver` project jumps to `1.0.0` on its first breaking change. Set `preMajor` to stay in 0.x: while the current major is `0`, a breaking change bumps what `breaking` says and a `feat` bumps what `feat` says (`minor` or `patch`). `fix` is unchanged.
399
+
400
+ ```toml
401
+ [workspace]
402
+ versioning = "semver"
403
+
404
+ [workspace.preMajor]
405
+ breaking = "minor"
406
+ feat = "patch"
407
+ ```
408
+
409
+ From `0.5.0`: `feat!` gives `0.6.0`, `feat` and `fix` give `0.5.1`. This matches release-please's `bump-minor-pre-major` plus `bump-patch-for-minor-pre-major`. From `1.0.0` on it has no effect, and `ferrflow release --force-version 1.0.0` leaves 0.x. Packages can override it with their own `preMajor`. Unset keeps the standard rules.
410
+
394
411
  ## Tag Template
395
412
 
396
413
  By default, FerrFlow tags single-repo releases as `v1.2.3` and monorepo releases as `api@v1.2.3`. Customize with `tag_template` at the workspace or package level using `{name}` and `{version}` placeholders.
package/package.json CHANGED
@@ -31,13 +31,13 @@
31
31
  "main": "./index.js",
32
32
  "name": "ferrflow",
33
33
  "optionalDependencies": {
34
- "@ferrflow/darwin-arm64": "7.35.6",
35
- "@ferrflow/darwin-x64": "7.35.6",
36
- "@ferrflow/linux-arm": "7.35.6",
37
- "@ferrflow/linux-arm64": "7.35.6",
38
- "@ferrflow/linux-x64": "7.35.6",
39
- "@ferrflow/win32-arm64": "7.35.6",
40
- "@ferrflow/win32-x64": "7.35.6"
34
+ "@ferrflow/darwin-arm64": "7.36.0",
35
+ "@ferrflow/darwin-x64": "7.36.0",
36
+ "@ferrflow/linux-arm": "7.36.0",
37
+ "@ferrflow/linux-arm64": "7.36.0",
38
+ "@ferrflow/linux-x64": "7.36.0",
39
+ "@ferrflow/win32-arm64": "7.36.0",
40
+ "@ferrflow/win32-x64": "7.36.0"
41
41
  },
42
42
  "repository": {
43
43
  "type": "git",
@@ -45,5 +45,5 @@
45
45
  },
46
46
  "type": "module",
47
47
  "types": "./index.d.ts",
48
- "version": "7.35.6"
48
+ "version": "7.36.0"
49
49
  }
package/types/config.d.ts CHANGED
@@ -133,6 +133,32 @@ export interface FerrFlowConfiguration {
133
133
  * Default versioning strategy for all packages.
134
134
  */
135
135
  versioning?: 'semver' | 'calver' | 'calver-short' | 'calver-seq' | 'calver-short-seq' | 'sequential' | 'zerover';
136
+ /**
137
+ * While the current major is 0 on a `semver` project, remaps the bump: `breaking` replaces what a breaking change bumps (normally major) and `feat` replaces what a `feat` bumps (normally minor). `{"breaking": "minor", "feat": "patch"}` matches release-please's bump-minor-pre-major and bump-patch-for-minor-pre-major. No effect from 1.0.0 on, leave 0.x with `ferrflow release --force-version 1.0.0`. Omit for the standard semver rules.
138
+ */
139
+ preMajor?: {
140
+ /**
141
+ * Bump a breaking change takes while the current major is 0.
142
+ */
143
+ breaking?: 'minor' | 'patch';
144
+ /**
145
+ * Bump a `feat` commit takes while the current major is 0.
146
+ */
147
+ feat?: 'minor' | 'patch';
148
+ };
149
+ /**
150
+ * Snake_case form of `preMajor`, both spellings are accepted. While the current major is 0 on a `semver` project, remaps the bump: `breaking` replaces what a breaking change bumps (normally major) and `feat` replaces what a `feat` bumps (normally minor). `{"breaking": "minor", "feat": "patch"}` matches release-please's bump-minor-pre-major and bump-patch-for-minor-pre-major. No effect from 1.0.0 on, leave 0.x with `ferrflow release --force-version 1.0.0`. Omit for the standard semver rules.
151
+ */
152
+ pre_major?: {
153
+ /**
154
+ * Bump a breaking change takes while the current major is 0.
155
+ */
156
+ breaking?: 'minor' | 'patch';
157
+ /**
158
+ * Bump a `feat` commit takes while the current major is 0.
159
+ */
160
+ feat?: 'minor' | 'patch';
161
+ };
136
162
  /**
137
163
  * Version format built from named variables. Variables: year, short_year, month, padded_month, day, padded_day, week, padded_week, quarter, seq, major, minor, patch. Each must be separated by a literal so the previous version can be read back. The literals cannot carry whitespace, control characters, or the characters git reserves in a ref name (~ ^ : ? * [ backslash), because the version becomes a git tag. Takes precedence over 'versioning'.
138
164
  */
@@ -454,6 +480,32 @@ export interface FerrFlowConfiguration {
454
480
  * Versioning strategy for this package. Overrides workspace default.
455
481
  */
456
482
  versioning?: 'semver' | 'calver' | 'calver-short' | 'calver-seq' | 'calver-short-seq' | 'sequential' | 'zerover';
483
+ /**
484
+ * Per-package override for workspace.preMajor. While the current major is 0 on a `semver` project, remaps the bump: `breaking` replaces what a breaking change bumps (normally major) and `feat` replaces what a `feat` bumps (normally minor). `{"breaking": "minor", "feat": "patch"}` matches release-please's bump-minor-pre-major and bump-patch-for-minor-pre-major. No effect from 1.0.0 on, leave 0.x with `ferrflow release --force-version 1.0.0`. Omit for the standard semver rules.
485
+ */
486
+ preMajor?: {
487
+ /**
488
+ * Bump a breaking change takes while the current major is 0.
489
+ */
490
+ breaking?: 'minor' | 'patch';
491
+ /**
492
+ * Bump a `feat` commit takes while the current major is 0.
493
+ */
494
+ feat?: 'minor' | 'patch';
495
+ };
496
+ /**
497
+ * Snake_case form of `preMajor`, both spellings are accepted. Per-package override for workspace.preMajor. While the current major is 0 on a `semver` project, remaps the bump: `breaking` replaces what a breaking change bumps (normally major) and `feat` replaces what a `feat` bumps (normally minor). `{"breaking": "minor", "feat": "patch"}` matches release-please's bump-minor-pre-major and bump-patch-for-minor-pre-major. No effect from 1.0.0 on, leave 0.x with `ferrflow release --force-version 1.0.0`. Omit for the standard semver rules.
498
+ */
499
+ pre_major?: {
500
+ /**
501
+ * Bump a breaking change takes while the current major is 0.
502
+ */
503
+ breaking?: 'minor' | 'patch';
504
+ /**
505
+ * Bump a `feat` commit takes while the current major is 0.
506
+ */
507
+ feat?: 'minor' | 'patch';
508
+ };
457
509
  /**
458
510
  * Version format built from named variables. Variables: year, short_year, month, padded_month, day, padded_day, week, padded_week, quarter, seq, major, minor, patch. Each must be separated by a literal so the previous version can be read back. The literals cannot carry whitespace, control characters, or the characters git reserves in a ref name (~ ^ : ? * [ backslash), because the version becomes a git tag. Overrides workspace default. Takes precedence over 'versioning'.
459
511
  */