code-foundry 0.32.3 → 0.32.4
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/.github/code-foundry.yml +7 -1
- package/CHANGELOG.md +9 -0
- package/package.json +1 -1
- package/src/commands/sync.mjs +17 -2
- package/src/lib/release-manifest.mjs +1 -1
package/.github/code-foundry.yml
CHANGED
|
@@ -11,7 +11,7 @@ dependency_review: auto
|
|
|
11
11
|
package_manager: bun
|
|
12
12
|
toolchain: auto
|
|
13
13
|
runtime_repository: 0xPlayerOne/code-foundry
|
|
14
|
-
runtime_ref: v0.
|
|
14
|
+
runtime_ref: v0.32.3
|
|
15
15
|
release_type: node
|
|
16
16
|
npm_publish: true
|
|
17
17
|
license: agpl-3.0-or-later
|
|
@@ -31,3 +31,9 @@ codeql_runner: ubuntu-latest
|
|
|
31
31
|
pr_runner: ubuntu-slim
|
|
32
32
|
release_runner: ubuntu-slim
|
|
33
33
|
prune_standard: false
|
|
34
|
+
post_release: false
|
|
35
|
+
post_release_workflow:
|
|
36
|
+
post_release_mode: auto
|
|
37
|
+
opencode_security: false
|
|
38
|
+
sync_mode: overlay
|
|
39
|
+
custom_workflows: preserve
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.32.4](https://github.com/0xPlayerOne/code-foundry/compare/v0.32.3...v0.32.4) (2026-08-01)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **sync:** never leak runtime release-type into consumer configs ([b7c51f3](https://github.com/0xPlayerOne/code-foundry/commit/b7c51f3e465e048be933292e0db9ca08d5420c9a))
|
|
9
|
+
* **sync:** quote collection-like config values so prettier accepts them ([b0d4fea](https://github.com/0xPlayerOne/code-foundry/commit/b0d4fea815b6417de23cf577cba525e2017004dc))
|
|
10
|
+
* **sync:** satisfy JSDoc type-check for baseline merge ([ce54339](https://github.com/0xPlayerOne/code-foundry/commit/ce54339b2092722e4d0d4e43afdb7ab5bacd2bc1))
|
|
11
|
+
|
|
3
12
|
## [0.32.3](https://github.com/0xPlayerOne/code-foundry/compare/v0.32.2...v0.32.3) (2026-07-31)
|
|
4
13
|
|
|
5
14
|
|
package/package.json
CHANGED
package/src/commands/sync.mjs
CHANGED
|
@@ -182,18 +182,27 @@ export function syncRepository(options) {
|
|
|
182
182
|
return { changed, config }
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Baseline keys that are safe to merge into a repository's release config.
|
|
187
|
+
* Package and release-type policy is detected from the repository itself and
|
|
188
|
+
* must never leak from the runtime template.
|
|
189
|
+
*/
|
|
190
|
+
const RELEASE_BASELINE_KEYS = ['$schema', 'bump-minor-pre-major', 'changelog-sections', 'include-component-in-tag']
|
|
191
|
+
|
|
185
192
|
/** @param {string} target @param {string} sourceFile @returns {Record<string, any>} */
|
|
186
193
|
function mergeReleaseConfig(target, sourceFile) {
|
|
194
|
+
/** @type {Record<string, any>} */
|
|
187
195
|
let baseline = {}
|
|
188
196
|
try { baseline = JSON.parse(readFileSync(sourceFile, 'utf8')) }
|
|
189
197
|
catch { baseline = {} }
|
|
198
|
+
const safeBaseline = Object.fromEntries(RELEASE_BASELINE_KEYS.filter((key) => key in baseline).map((key) => [key, baseline[key]]))
|
|
190
199
|
const destination = join(target, 'release-please-config.json')
|
|
191
200
|
let existing = baseline
|
|
192
201
|
if (existsSync(destination)) {
|
|
193
202
|
try { existing = JSON.parse(readFileSync(destination, 'utf8')) }
|
|
194
203
|
catch { existing = baseline }
|
|
195
204
|
}
|
|
196
|
-
return buildReleaseConfig(target, { ...
|
|
205
|
+
return buildReleaseConfig(target, { ...safeBaseline, ...existing })
|
|
197
206
|
}
|
|
198
207
|
|
|
199
208
|
/** @param {string} target @param {string} sourceFile @returns {string} */
|
|
@@ -371,7 +380,13 @@ function createDefaultConfig(root, source) {
|
|
|
371
380
|
/** @param {Record<string,string>} config */
|
|
372
381
|
function renderConfig(config) { return `${Object.entries(config).map(([key, value]) => renderConfigLine(key, value)).join('\n')}\n` }
|
|
373
382
|
/** @param {string} key @param {string} value */
|
|
374
|
-
function renderConfigLine(key, value) {
|
|
383
|
+
function renderConfigLine(key, value) {
|
|
384
|
+
if (value === '') return `${key}:`
|
|
385
|
+
// Quote values that YAML would parse as collections or that would trip
|
|
386
|
+
// prettier's formatter (e.g. codeql_rust_shards: '["all"]').
|
|
387
|
+
const needsQuotes = /^[\[\]{]|[:,#]\s|\s#/.test(value)
|
|
388
|
+
return needsQuotes ? `${key}: '${value.replace(/'/g, "''")}'` : `${key}: ${value}`
|
|
389
|
+
}
|
|
375
390
|
/** @param {string} root */
|
|
376
391
|
function readPackageVersion(root) {
|
|
377
392
|
try { return JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')).version ?? '0.0.0' } catch { return '0.0.0' }
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { existsSync, readFileSync, readdirSync } from 'node:fs'
|
|
4
4
|
import { join } from 'node:path'
|
|
5
5
|
|
|
6
|
-
const ignored = new Set(['.git', '.code-foundry', '.venv', 'node_modules', 'target', 'vendor', 'dist', 'build'])
|
|
6
|
+
const ignored = new Set(['.git', '.code-foundry', '.venv', 'node_modules', 'target', 'vendor', 'dist', 'build', '.next', '.kilo', '.turbo', '.cache', '.vercel', '.output', '.nuxt', '.svelte-kit', '.parcel-cache', 'out', 'coverage'])
|
|
7
7
|
|
|
8
8
|
/** @typedef {{ directory: string, manifest: string, releaseType: 'node'|'python'|'rust', packageName?: string, extraFiles: string[] }} ReleasePackage */
|
|
9
9
|
|