code-foundry 0.32.2 → 0.32.3

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.
@@ -17,7 +17,7 @@ npm_publish: true
17
17
  license: agpl-3.0-or-later
18
18
  git_workflow: staging-release
19
19
  merge_strategy: rebase
20
- release_merge_strategy: rebase
20
+ release_merge_strategy: squash
21
21
  runner: ubuntu-latest
22
22
  unit_runner: ubuntu-slim
23
23
  cache_packages: auto
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.32.3](https://github.com/0xPlayerOne/code-foundry/compare/v0.32.2...v0.32.3) (2026-07-31)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **release:** no-op when staging already points at main's commit ([a47180a](https://github.com/0xPlayerOne/code-foundry/commit/a47180a16ae8b9fd66548aba284939b3cdfaeba8))
9
+ * **release:** squash Release Please PRs for release-please compatibility ([41c808b](https://github.com/0xPlayerOne/code-foundry/commit/41c808b8c2502ca78e271cb6702334daf90169da))
10
+
3
11
  ## [0.32.2](https://github.com/0xPlayerOne/code-foundry/compare/v0.32.1...v0.32.2) (2026-07-31)
4
12
 
5
13
 
package/docs/RELEASES.md CHANGED
@@ -36,15 +36,17 @@ release_merge_strategy: rebase # merge, squash, or rebase; used for Release Plea
36
36
 
37
37
  `merge_strategy` applies to promotion PRs (`staging` into `main`) and
38
38
  `release_merge_strategy` to Release Please version PRs; both default to
39
- `merge` when unset. Use **rebase** for both. Rebase merges keep `main` fully
40
- linear, which is what makes the post-release reconciliation possible:
41
- `staging` requires linear history, and any merge commit on `main` becomes an
42
- uncrossable barrier for `staging` (the linear-history rule rejects pushes
43
- whose new commits contain merge commits). With a linear `main`, the release
44
- workflow mirrors `staging` onto `main`'s tip after every release a verified
45
- fast-forward when possible, otherwise a forced linear update, otherwise a
46
- single-parent synchronization commit so `staging` is never left behind and
47
- never needs a manual rebase.
39
+ `merge` when unset. Use **rebase** for promotion PRs and **squash** for
40
+ Release Please PRs. Both keep `main` fully linear, which is what makes the
41
+ post-release reconciliation possible: `staging` requires linear history, and
42
+ any merge commit on `main` becomes an uncrossable barrier for `staging` (the
43
+ linear-history rule rejects pushes whose new commits contain merge commits).
44
+ Release Please itself also requires squash merges for its version PRs (rebase
45
+ merges rewrite commit SHAs and break its merged-PR detection). With a linear
46
+ `main`, the release workflow mirrors `staging` onto `main`'s tip after every
47
+ release a verified fast-forward when possible, otherwise a forced linear
48
+ update, otherwise a single-parent synchronization commit — so `staging` is
49
+ never left behind and never needs a manual rebase.
48
50
 
49
51
  `auto` selects a supported manifest. Use `simple` with `version.txt` for a
50
52
  repository without a package manifest and `none` for a repository that should
@@ -76,6 +78,6 @@ the generated version pull request before using the token to merge it.
76
78
 
77
79
  1. Merge tested changes from `staging` into `main`.
78
80
  2. Review the generated Release Please PR and changelog.
79
- 3. Merge the release PR with the repository's configured `release_merge_strategy` (default `merge`, recommended `rebase`).
81
+ 3. Merge the release PR with the repository.s configured `release_merge_strategy` (default `merge`, recommended `squash`).
80
82
  4. Confirm the GitHub Release and any package publication.
81
83
  5. Synchronize `staging` with the new `main` release commit.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "0.32.2",
3
+ "version": "0.32.3",
4
4
  "description": "A fast, language-aware repository factory for agent-ready workflows, testing, security, and release automation.",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-or-later",
@@ -40,6 +40,7 @@ export function reconcileRelease(root, options) {
40
40
  console.log(JSON.stringify({ base, head, ...plan }, null, 2))
41
41
  if (plan.action === 'fail') throw new Error(plan.reason + (plan.unexpected?.length ? ` Unexpected paths: ${plan.unexpected.join(', ')}` : ''))
42
42
  if (!['fast-forward', 'pull-request', 'aligned'].includes(plan.action) || !options.github || options.dryRun) return plan
43
+ if (!plan.targetSha) return plan
43
44
  if (!process.env.GITHUB_REPOSITORY) throw new Error('GITHUB_REPOSITORY is required for --github reconciliation.')
44
45
  const token = process.env.GH_TOKEN || process.env.GITHUB_TOKEN
45
46
  if (!token) throw new Error('GH_TOKEN or GITHUB_TOKEN is required for --github reconciliation.')
@@ -364,7 +364,7 @@ function createDefaultConfig(root, source) {
364
364
  post_release: 'false', post_release_workflow: '', post_release_mode: 'auto',
365
365
  opencode_security: 'false',
366
366
  sync_mode: 'overlay', custom_workflows: 'preserve',
367
- license: existsSync(join(root, 'LICENSE')) ? 'preserve' : 'gpl-3.0-or-later', git_workflow: 'staging-release', merge_strategy: 'rebase', release_merge_strategy: 'rebase',
367
+ license: existsSync(join(root, 'LICENSE')) ? 'preserve' : 'gpl-3.0-or-later', git_workflow: 'staging-release', merge_strategy: 'rebase', release_merge_strategy: 'squash',
368
368
  }
369
369
  }
370
370