@deltabox/toolchain 2.1.0 → 2.3.2
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/CHANGELOG.md +404 -627
- package/README.md +6 -0
- package/dist/changelog.d.ts +6 -5
- package/dist/changelog.js +1 -1
- package/dist/cli/commands/providers.js +1 -1
- package/dist/cli/commands/reset.js +1 -1
- package/dist/cli/config-selection.js +1 -1
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.js +1 -1
- package/dist/cli/register.js +1 -1
- package/dist/cli/update-check.js +1 -1
- package/dist/config.d.ts +2 -2
- package/dist/config.js +1 -1
- package/dist/index.d.ts +38 -30
- package/dist/index.js +1 -1
- package/dist/migrate.d.ts +2 -2
- package/dist/migrate.js +1 -1
- package/dist/package.js +1 -1
- package/dist/packages/changelog/src/cli/index.js +1 -1
- package/dist/packages/changelog/src/index.d.ts +7 -6
- package/dist/packages/changelog/src/index.js +1 -1
- package/dist/packages/changelog/src/run-workflows.d.ts +39 -2
- package/dist/packages/changelog/src/run-workflows.js +1 -1
- package/dist/packages/changelog/src/run.d.ts +1 -1
- package/dist/packages/changelog/src/run.js +1 -1
- package/dist/packages/changelog/src/sync.js +1 -1
- package/dist/packages/changelog/src/templates.js +1 -1
- package/dist/packages/changelog/src/utils/format.d.ts +5 -3
- package/dist/packages/changelog/src/utils/format.js +5 -5
- package/dist/packages/changelog/src/utils/git.d.ts +1 -1
- package/dist/packages/changelog/src/utils/git.js +1 -1
- package/dist/packages/changelog/src/utils/reformat.d.ts +7 -2
- package/dist/packages/changelog/src/utils/reformat.js +5 -4
- package/dist/packages/changelog/src/utils/release-notes.js +1 -1
- package/dist/packages/changelog/src/utils/repo.js +1 -1
- package/dist/packages/changelog/src/utils/summary.d.ts +1 -1
- package/dist/packages/changelog/src/utils/types.d.ts +9 -46
- package/dist/packages/changelog/src/utils/versioning.d.ts +11 -14
- package/dist/packages/changelog/src/utils/write.js +1 -1
- package/dist/packages/changelog/src/workflows.d.ts +11 -3
- package/dist/packages/changelog/src/workflows.js +5 -5
- package/dist/packages/config/src/cli/index.d.ts +1 -1
- package/dist/packages/config/src/collect.js +1 -1
- package/dist/packages/config/src/config-json.js +1 -1
- package/dist/packages/config/src/generators/env.js +2 -2
- package/dist/packages/config/src/generators/markdown.js +8 -8
- package/dist/packages/config/src/generators/output.js +1 -0
- package/dist/packages/config/src/generators/types.js +3 -3
- package/dist/packages/config/src/index.d.ts +3 -3
- package/dist/packages/config/src/index.js +1 -1
- package/dist/packages/config/src/schema.d.ts +16 -0
- package/dist/packages/config/src/schema.js +1 -1
- package/dist/packages/config/src/types.d.ts +5 -0
- package/dist/packages/core/src/editor-config.js +1 -1
- package/dist/packages/core/src/loader.js +1 -1
- package/dist/packages/core/src/manifest.js +1 -1
- package/dist/packages/core/src/paths.js +1 -0
- package/dist/packages/core/src/provider-registry.js +1 -1
- package/dist/packages/core/src/reset.d.ts +3 -0
- package/dist/packages/core/src/reset.js +1 -1
- package/dist/packages/core/src/sync.js +1 -1
- package/dist/packages/core/src/vscode.js +1 -1
- package/dist/packages/core/src/watch.d.ts +1 -1
- package/dist/packages/core/src/watch.js +1 -1
- package/dist/packages/migrate/src/cli/index.js +1 -1
- package/dist/packages/migrate/src/eslint.js +1 -1
- package/dist/packages/migrate/src/index.d.ts +2 -2
- package/dist/packages/migrate/src/index.js +1 -1
- package/dist/packages/migrate/src/prettier.d.ts +2 -0
- package/dist/packages/migrate/src/prettier.js +2 -2
- package/dist/packages/migrate/src/vite-target.js +1 -1
- package/dist/packages/project/src/cli/index.js +1 -1
- package/dist/packages/project/src/index.d.ts +4 -4
- package/dist/packages/project/src/index.js +1 -1
- package/dist/packages/project/src/typescript.d.ts +4 -2
- package/dist/packages/project/src/typescript.js +2 -2
- package/dist/packages/shared/src/changelog-callbacks.d.ts +72 -0
- package/dist/packages/shared/src/config-schema/biome.d.ts +8 -1
- package/dist/packages/shared/src/config-schema/biome.js +1 -1
- package/dist/packages/shared/src/config-schema/changelog.d.ts +3049 -30
- package/dist/packages/shared/src/config-schema/changelog.js +1 -1
- package/dist/packages/shared/src/config-schema/ci.d.ts +1163 -23
- package/dist/packages/shared/src/config-schema/external.js +1 -0
- package/dist/packages/shared/src/config-schema/format.d.ts +16 -10
- package/dist/packages/shared/src/config-schema/format.js +1 -1
- package/dist/packages/shared/src/config-schema/generated/azure-pipelines.d.ts +10501 -0
- package/dist/packages/shared/src/config-schema/generated/biome-config.d.ts +5962 -0
- package/dist/packages/shared/src/config-schema/generated/github-workflow.d.ts +179 -0
- package/dist/packages/shared/src/config-schema/generated/gitlab-ci.d.ts +296 -0
- package/dist/packages/shared/src/config-schema/generated/oxfmt-config.d.ts +411 -0
- package/dist/packages/shared/src/config-schema/generated/oxlint-config.d.ts +2218 -0
- package/dist/packages/shared/src/config-schema/index.d.ts +5355 -142
- package/dist/packages/shared/src/config-schema/index.js +1 -1
- package/dist/packages/shared/src/config-schema/json.d.ts +18 -0
- package/dist/packages/shared/src/config-schema/json.js +1 -0
- package/dist/packages/shared/src/config-schema/logger.d.ts +10 -1
- package/dist/packages/shared/src/config-schema/logger.js +1 -1
- package/dist/packages/shared/src/config-schema/tsconfig.d.ts +5 -4
- package/dist/packages/shared/src/config-schema/tsconfig.js +1 -1
- package/dist/packages/shared/src/config-schema/vite.d.ts +5 -3
- package/dist/packages/shared/src/config-schema/vite.js +1 -1
- package/dist/packages/shared/src/config-schema/workflow.d.ts +946 -31
- package/dist/packages/shared/src/config-schema/workflow.js +1 -1
- package/dist/packages/shared/src/config-types.d.ts +257 -33
- package/dist/packages/shared/src/fs-utils.d.ts +12 -0
- package/dist/packages/shared/src/fs-utils.js +8 -1
- package/dist/packages/shared/src/index.d.ts +19 -11
- package/dist/packages/shared/src/index.js +1 -1
- package/dist/packages/shared/src/object-utils.d.ts +2 -0
- package/dist/packages/shared/src/object-utils.js +1 -1
- package/dist/packages/shared/src/registry-policy.d.ts +3 -2
- package/dist/packages/shared/src/registry-policy.js +1 -1
- package/dist/packages/shared/src/run.d.ts +2 -0
- package/dist/packages/shared/src/run.js +1 -1
- package/dist/packages/shared/src/string-utils.d.ts +7 -5
- package/dist/packages/shared/src/string-utils.js +2 -2
- package/dist/packages/shared/src/template.d.ts +2 -1
- package/dist/packages/shared/src/template.js +1 -1
- package/dist/packages/shared/src/toolchain.d.ts +14 -7
- package/dist/packages/shared/src/toolchain.js +1 -1
- package/dist/packages/shared/src/types.d.ts +5 -0
- package/dist/packages/shared/src/vite-defaults.d.ts +4 -3
- package/dist/packages/shared/src/vite-defaults.js +1 -1
- package/dist/packages/shared/src/yaml.js +5 -5
- package/dist/packages/template/src/scaffold.js +1 -1
- package/dist/packages/tsconfig/src/cli/generate/index.js +1 -1
- package/dist/packages/tsconfig/src/overrides.d.ts +5 -5
- package/dist/packages/tsdown/src/config/node.d.ts +5 -0
- package/dist/packages/tsdown/src/config/node.js +2 -2
- package/dist/packages/tsdown/src/index.d.ts +3 -3
- package/dist/packages/tsdown/src/index.js +1 -1
- package/dist/packages/vite/src/plugin.js +1 -1
- package/dist/packages/vite/src/vp.js +1 -1
- package/dist/project.d.ts +3 -3
- package/dist/project.js +1 -1
- package/dist/shared.d.ts +18 -10
- package/dist/shared.js +1 -1
- package/dist/tooling.js +1 -1
- package/dist/tsdown.d.ts +2 -2
- package/dist/tsdown.js +1 -1
- package/package.json +25 -13
package/CHANGELOG.md
CHANGED
|
@@ -1,16 +1,159 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 2.
|
|
3
|
+
## 2.3.2 (November 2026)
|
|
4
4
|
|
|
5
5
|
<!-- release:start -->
|
|
6
6
|
|
|
7
|
+
### Bug fixes
|
|
8
|
+
#### Vscode
|
|
9
|
+
- Load the tsdown base config from source ([#0537c62](https://github.com/deltabox-studio/toolchain/commit/0537c62) by [T0chi](https://github.com/T0chi))
|
|
10
|
+
- The VS Code integration job builds the extension after only \yarn install\, so the private \@deltabox/toolchain-tsdown\ dist does not exist and unrun failed to load the config. Import baseTsdownConfig\ from the workspace source instead (as the root tsdown config already does).
|
|
11
|
+
|
|
12
|
+
<!-- release:end -->
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## 2.3.1 (November 2026)
|
|
16
|
+
|
|
17
|
+
### Bug fixes
|
|
18
|
+
#### Vscode
|
|
19
|
+
- Validate webview messages and use a secure nonce ([#94bed68](https://github.com/deltabox-studio/toolchain/commit/94bed68) by [T0chi](https://github.com/T0chi))
|
|
20
|
+
- The Home webview handler trusted the incoming shape and acted on arbitrary project paths, and the CSP nonce came from Math.random. Validate every message, only act on projects the dashboard listed, and generate the nonce from crypto.randomBytes.
|
|
21
|
+
#### Vite
|
|
22
|
+
- Use the Oxlint rule name react/exhaustive-deps ([#ea02ef7](https://github.com/deltabox-studio/toolchain/commit/ea02ef7) by [T0chi](https://github.com/T0chi))
|
|
23
|
+
- The dogfood config used the legacy ESLint name, so the generated Oxc configs carried both spellings. Rename it to the name in the vendored Oxlint schema and add a guard that every default rule exists there.
|
|
24
|
+
#### Changelog
|
|
25
|
+
- Keep hash links when git history is incomplete ([#182b68a](https://github.com/deltabox-studio/toolchain/commit/182b68a) by [T0chi](https://github.com/T0chi))
|
|
26
|
+
- A shallow clone or no-git checkout cannot resolve every referenced commit, so valid hashes were left unlinked. Fall back to treating letter-containing refs as commits when history is incomplete, and mock the numeric-hash fixture so the tests do not depend on the checkout's history.
|
|
27
|
+
#### Config
|
|
28
|
+
- Contain generator output paths and render object metadata ([#fe94053](https://github.com/deltabox-studio/toolchain/commit/fe94053) by [T0chi](https://github.com/T0chi))
|
|
29
|
+
- Scope names and file options were used as paths directly, so a \../\ value could write outside the output directory. Resolve every generated file through a containment check. Also render an object node's own description/annotations before its child fields in per-scope markdown.
|
|
30
|
+
- Derive the CLI reference from the registered commands ([#95dc39f](https://github.com/deltabox-studio/toolchain/commit/95dc39f) by [T0chi](https://github.com/T0chi))
|
|
31
|
+
- The docs generator kept its own command list, so a new builtin could be missing from the generated reference. Use builtinCommands\ (the CLI's source of truth) and mark registry-dependent provider passthroughs as hidden.
|
|
32
|
+
#### Core
|
|
33
|
+
- Preserve .vscode settings comments when adding keys ([#9b4a105](https://github.com/deltabox-studio/toolchain/commit/9b4a105) by [T0chi](https://github.com/T0chi))
|
|
34
|
+
- Merging VS Code settings parsed and reserialized the file, dropping its JSONC comments. Insert missing keys in place (preserving layout) and fall back to a full rewrite only when an existing value or array must change.
|
|
35
|
+
#### Ci
|
|
36
|
+
- Check and regenerate nested workspace configs recursively ([#711c7b4](https://github.com/deltabox-studio/toolchain/commit/711c7b4) by [T0chi](https://github.com/T0chi))
|
|
37
|
+
- The generated schema types are formatted at printWidth 300 and excluded from the formatter, but the ignore patterns were repo-root-relative. Per-workspace vp fmt resolves them from each package directory, so yarn format reformatted biome-config.ts and failed the artifact check. Use **/ globs and make the generated CI/sync workflows run dbx sync --check --recursive so stale workspace configs are caught and regenerated.
|
|
38
|
+
|
|
39
|
+
## 2.3.0 (November 2026)
|
|
40
|
+
|
|
7
41
|
### New features
|
|
42
|
+
#### Vscode
|
|
43
|
+
- Show the workflow provider in the run picker ([#af4cc3f](https://github.com/deltabox-studio/toolchain/commit/af4cc3f) by [T0chi](https://github.com/T0chi))
|
|
8
44
|
#### Changelog
|
|
9
|
-
-
|
|
10
|
-
|
|
45
|
+
- Dispatch workflows with their vendor CLI ([#eea38ae](https://github.com/deltabox-studio/toolchain/commit/eea38ae) by [T0chi](https://github.com/T0chi))
|
|
46
|
+
#### Config
|
|
47
|
+
- Generate Oxfmt and Oxlint types from vendored schemas ([#8ff5e90](https://github.com/deltabox-studio/toolchain/commit/8ff5e90) by [T0chi](https://github.com/T0chi))
|
|
48
|
+
- Accept complete GitHub, GitLab and Azure workflows ([#070a7f2](https://github.com/deltabox-studio/toolchain/commit/070a7f2) by [T0chi](https://github.com/T0chi))
|
|
49
|
+
- Type tool options and changelog callbacks ([#10bd933](https://github.com/deltabox-studio/toolchain/commit/10bd933) by [T0chi](https://github.com/T0chi))
|
|
50
|
+
### Bug fixes
|
|
51
|
+
#### Config
|
|
52
|
+
- Escape CLI reference tables and fail on missing output ([#15978be](https://github.com/deltabox-studio/toolchain/commit/15978be) by [T0chi](https://github.com/T0chi))
|
|
53
|
+
- Respect secret defaults, `envPathOf` and changelog disabling ([#5cabab8](https://github.com/deltabox-studio/toolchain/commit/5cabab8) by [T0chi](https://github.com/T0chi))
|
|
54
|
+
- Keep named `$ref` schema properties ([#0aa03a1](https://github.com/deltabox-studio/toolchain/commit/0aa03a1) by [T0chi](https://github.com/T0chi))
|
|
55
|
+
#### Vscode
|
|
56
|
+
- Prefer CLI descriptors and sync all workspace roots ([#e68301a](https://github.com/deltabox-studio/toolchain/commit/e68301a) by [T0chi](https://github.com/T0chi))
|
|
57
|
+
- Report signal and timeout exits as failures ([#b7b1ad5](https://github.com/deltabox-studio/toolchain/commit/b7b1ad5) by [T0chi](https://github.com/T0chi))
|
|
58
|
+
#### Cli
|
|
59
|
+
- Forward passthrough flags and validate the update cache ([#a36d586](https://github.com/deltabox-studio/toolchain/commit/a36d586) by [T0chi](https://github.com/T0chi))
|
|
60
|
+
- Leave `reset --config` to the reset command ([#8a3fbec](https://github.com/deltabox-studio/toolchain/commit/8a3fbec) by [T0chi](https://github.com/T0chi))
|
|
61
|
+
#### Vite
|
|
62
|
+
- Surface sync failures and preserve config values ([#93ee933](https://github.com/deltabox-studio/toolchain/commit/93ee933) by [T0chi](https://github.com/T0chi))
|
|
63
|
+
#### Tsdown
|
|
64
|
+
- Write sorted package exports ([#3886a56](https://github.com/deltabox-studio/toolchain/commit/3886a56) by [T0chi](https://github.com/T0chi))
|
|
65
|
+
#### Tsconfig
|
|
66
|
+
- Read referenced configs as JSONC ([#49ded19](https://github.com/deltabox-studio/toolchain/commit/49ded19) by [T0chi](https://github.com/T0chi))
|
|
67
|
+
#### Migrate
|
|
68
|
+
- Surface unsupported and incomplete migrations ([#f50a5d2](https://github.com/deltabox-studio/toolchain/commit/f50a5d2) by [T0chi](https://github.com/T0chi))
|
|
69
|
+
#### Core
|
|
70
|
+
- Keep VS Code files user-owned and guard registry cycles ([#9ef027a](https://github.com/deltabox-studio/toolchain/commit/9ef027a) by [T0chi](https://github.com/T0chi))
|
|
71
|
+
- Keep watch sessions alive and re-sync config edits ([#2849757](https://github.com/deltabox-studio/toolchain/commit/2849757) by [T0chi](https://github.com/T0chi))
|
|
72
|
+
- Reject conflicting `--config` flags ([#1044f2a](https://github.com/deltabox-studio/toolchain/commit/1044f2a) by [T0chi](https://github.com/T0chi))
|
|
73
|
+
- Skip parent hooks for config-less workspaces ([#9658c36](https://github.com/deltabox-studio/toolchain/commit/9658c36) by [T0chi](https://github.com/T0chi))
|
|
74
|
+
- Keep managed paths inside the project root ([#2496bee](https://github.com/deltabox-studio/toolchain/commit/2496bee) by [T0chi](https://github.com/T0chi))
|
|
75
|
+
#### Shared
|
|
76
|
+
- Harden URL policy, merges and token replacement ([#bae1dc8](https://github.com/deltabox-studio/toolchain/commit/bae1dc8) by [T0chi](https://github.com/T0chi))
|
|
77
|
+
- Detect relative Windows `.cmd` shims ([#058430c](https://github.com/deltabox-studio/toolchain/commit/058430c) by [T0chi](https://github.com/T0chi))
|
|
78
|
+
- Restore `PowerShell`-escaped letters ([#4d2be6a](https://github.com/deltabox-studio/toolchain/commit/4d2be6a) by [T0chi](https://github.com/T0chi))
|
|
79
|
+
#### Changelog
|
|
80
|
+
- Fix workflow staging, `commitlint` and YAML escaping ([#1bb19ad](https://github.com/deltabox-studio/toolchain/commit/1bb19ad) by [T0chi](https://github.com/T0chi))
|
|
81
|
+
- Preserve formatting, links and workspace history ([#af5c5dc](https://github.com/deltabox-studio/toolchain/commit/af5c5dc) by [T0chi](https://github.com/T0chi))
|
|
82
|
+
- Restore the standalone bin and `--dry-run` handling ([#97ecef2](https://github.com/deltabox-studio/toolchain/commit/97ecef2) by [T0chi](https://github.com/T0chi))
|
|
83
|
+
- Preserve hand-corrected text in `--format-only` ([#2041e5f](https://github.com/deltabox-studio/toolchain/commit/2041e5f) by [T0chi](https://github.com/T0chi))
|
|
84
|
+
- Resolve hash links and preserve descriptions ([#7633d24](https://github.com/deltabox-studio/toolchain/commit/7633d24) by [T0chi](https://github.com/T0chi))
|
|
85
|
+
- Keep numeric hashes as commits and bold breaking markers ([#0521aee](https://github.com/deltabox-studio/toolchain/commit/0521aee) by [T0chi](https://github.com/T0chi))
|
|
86
|
+
- Unwrap descriptions and keep list items ([#0dc4bda](https://github.com/deltabox-studio/toolchain/commit/0dc4bda) by [T0chi](https://github.com/T0chi))
|
|
87
|
+
#### Project
|
|
88
|
+
- Validate workspace paths before writing ([#0ef515e](https://github.com/deltabox-studio/toolchain/commit/0ef515e) by [T0chi](https://github.com/T0chi))
|
|
89
|
+
### Documentation
|
|
90
|
+
- Document vendor workflows, typed builders and `--format-only` ([#eb66982](https://github.com/deltabox-studio/toolchain/commit/eb66982) by [T0chi](https://github.com/T0chi))
|
|
91
|
+
- Normalize changelog links and breaking markers ([#c3875e4](https://github.com/deltabox-studio/toolchain/commit/c3875e4) by [T0chi](https://github.com/T0chi))
|
|
92
|
+
- Reflow changelog descriptions ([#bc6a40c](https://github.com/deltabox-studio/toolchain/commit/bc6a40c) by [T0chi](https://github.com/T0chi))
|
|
93
|
+
#### Config
|
|
94
|
+
- Document the open `WorkflowJob` type ([#779566b](https://github.com/deltabox-studio/toolchain/commit/779566b) by [T0chi](https://github.com/T0chi))
|
|
95
|
+
#### Changelog
|
|
96
|
+
- Document `formatLine` ([#61e28ec](https://github.com/deltabox-studio/toolchain/commit/61e28ec) by [T0chi](https://github.com/T0chi))
|
|
97
|
+
### CI
|
|
98
|
+
- Add VS Code integration job ([#18b2b7b](https://github.com/deltabox-studio/toolchain/commit/18b2b7b) by [T0chi](https://github.com/T0chi))
|
|
99
|
+
### Chores
|
|
100
|
+
#### Changelog
|
|
101
|
+
- Update the lockfile bin entry ([#f946648](https://github.com/deltabox-studio/toolchain/commit/f946648) by [T0chi](https://github.com/T0chi))
|
|
102
|
+
#### Config
|
|
103
|
+
- Regenerate config-types, schema and docs ([#0b0ca20](https://github.com/deltabox-studio/toolchain/commit/0b0ca20) by [T0chi](https://github.com/T0chi))
|
|
104
|
+
- Shrink the generated `BiomeConfig` type ([#0522932](https://github.com/deltabox-studio/toolchain/commit/0522932) by [T0chi](https://github.com/T0chi))
|
|
105
|
+
#### Vscode
|
|
106
|
+
- Move mocha types to the default tsconfig ([#b604811](https://github.com/deltabox-studio/toolchain/commit/b604811) by [T0chi](https://github.com/T0chi))
|
|
11
107
|
|
|
12
|
-
|
|
108
|
+
### Package changes
|
|
109
|
+
#### Added
|
|
110
|
+
- `@dprint/types` `^0.4.0`
|
|
111
|
+
- `eslint` `^10.14.0`
|
|
112
|
+
- `prettier` `^3.6.2`
|
|
113
|
+
|
|
114
|
+
## 2.2.0 (November 2026)
|
|
115
|
+
|
|
116
|
+
### New features
|
|
117
|
+
#### Core
|
|
118
|
+
- Improve formatter/linter auto-detection ([#8324e9a](https://github.com/deltabox-studio/toolchain/commit/8324e9a) by [T0chi](https://github.com/T0chi))
|
|
119
|
+
- Prefer the project .vscode/settings.json, then the nearest workspace package.json/config file before walking to the root, and include tooling config files as detection candidates.
|
|
120
|
+
### Tests
|
|
121
|
+
#### Vscode
|
|
122
|
+
- Add extension host test setup ([#66aeda6](https://github.com/deltabox-studio/toolchain/commit/66aeda6) by [T0chi](https://github.com/T0chi))
|
|
123
|
+
- Add @vscode/test-cli/test-electron integration tests, a fixture workspace, build/debug launch tasks, source maps, and documented local test commands.
|
|
124
|
+
|
|
125
|
+
### Package changes
|
|
126
|
+
#### Added
|
|
127
|
+
- `@types/mocha` `^10.0.10`
|
|
128
|
+
- `@vscode/test-cli` `^0.0.15`
|
|
129
|
+
- `@vscode/test-electron` `^3.1.0`
|
|
13
130
|
|
|
131
|
+
## 2.1.3 (November 2026)
|
|
132
|
+
|
|
133
|
+
### Bug fixes
|
|
134
|
+
#### Core
|
|
135
|
+
- Read JSONC VS Code settings and bundle jsonc-parser ([#57d908d](https://github.com/deltabox-studio/toolchain/commit/57d908d) by [T0chi](https://github.com/T0chi))
|
|
136
|
+
- Parse .vscode/settings.json as JSONC so comments/trailing commas don't block editor defaults, and resolve jsonc-parser's ESM entry in the bundled dbx CLI to avoid the missing ./impl/format module.
|
|
137
|
+
|
|
138
|
+
## 2.1.2 (November 2026)
|
|
139
|
+
|
|
140
|
+
### Bug fixes
|
|
141
|
+
#### Vscode
|
|
142
|
+
- Align Home action icons with provider commands ([#05fd6c8](https://github.com/deltabox-studio/toolchain/commit/05fd6c8) by [T0chi](https://github.com/T0chi))
|
|
143
|
+
|
|
144
|
+
## 2.1.1 (October 2026)
|
|
145
|
+
|
|
146
|
+
### Bug fixes
|
|
147
|
+
#### Changelog
|
|
148
|
+
- Use the release-notes helper for releases ([#36616f0](https://github.com/deltabox-studio/toolchain/commit/36616f0) by [T0chi](https://github.com/T0chi))
|
|
149
|
+
- Replace the custom release workflow's awk/git-describe extraction with dbx changelog --release-notes, treat --release-notes as machine output, and normalize v-prefixed current versions.
|
|
150
|
+
|
|
151
|
+
## 2.1.0 (October 2026)
|
|
152
|
+
|
|
153
|
+
### New features
|
|
154
|
+
#### Changelog
|
|
155
|
+
- Configure breaking-change detection ([#f80634f](https://github.com/deltabox-studio/toolchain/commit/f80634f) by [T0chi](https://github.com/T0chi))
|
|
156
|
+
- Detect breaking changes by Conventional Commits rules by default (! in the subject or a **BREAKING CHANGE:** footer) and add a changelog.breaking / ci.changelog.breaking override (conventional, any, false, pattern/match, or a callback).
|
|
14
157
|
|
|
15
158
|
## 2.0.1 (October 2026)
|
|
16
159
|
|
|
@@ -41,192 +184,122 @@
|
|
|
41
184
|
- Support ordered arrays, title records, hidden groups and callbacks for the whole group config and per-group title/order/hidden values, including --format-only.
|
|
42
185
|
- Add custom workflow paths, listing and non-Yarn support ([#2e96e6e](https://github.com/deltabox-studio/toolchain/commit/2e96e6e) by [T0chi](https://github.com/T0chi))
|
|
43
186
|
- Add a New contributors footer ([#1e49596](https://github.com/deltabox-studio/toolchain/commit/1e49596) by [T0chi](https://github.com/T0chi))
|
|
44
|
-
- scanned range (explicit range start, or the oldest commit's parent).
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
only the CC rule/scope grouping is replaced by major/minor/patch.
|
|
187
|
+
- Detect first-time contributors by checking the authors before the scanned range (explicit range start, or the oldest commit's parent).
|
|
188
|
+
- Render them as a footer with the contributor (linked when the GitHub login is known) and a nested list of their commit messages, reusing the normal commit bullet formatting without the author/body.
|
|
189
|
+
- Keep the same formatting in the commitlint-disabled fallback summary; only the CC rule/scope grouping is replaced by major/minor/patch.
|
|
48
190
|
#### Config
|
|
49
191
|
- Type changelog group callbacks ([#a5c6186](https://github.com/deltabox-studio/toolchain/commit/a5c6186) by [T0chi](https://github.com/T0chi))
|
|
50
192
|
- Add the shared ChangelogGroupsSetting types, expose groups on both changelog sections, and regenerate the config schema/types/reference.
|
|
51
193
|
- Revamp config generators and extend tooling customization ([#b924255](https://github.com/deltabox-studio/toolchain/commit/b924255) by [T0chi](https://github.com/T0chi))
|
|
52
|
-
- and generateConfig* functions (optional disk writes, schema metadata)
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
194
|
+
- replace env-first ConfigScopes/ConfigScopeDef/render* APIs with ConfigSchema and generateConfig* functions (optional disk writes, schema metadata)
|
|
195
|
+
- consolidate configSchema and remove duplicated schema maps/descriptions
|
|
196
|
+
- support Zod and untyped Schema inputs with env/cli metadata
|
|
197
|
+
- add markdown frontmatter customization and env/cli JSDoc output
|
|
198
|
+
- add custom logger support and shorthand fmt/lint tool inference
|
|
199
|
+
- add changelog bump rules, over-bump opt-in, and provider/commit options
|
|
200
|
+
- **BREAKING CHANGE:** ConfigScopes, ConfigScopeDef, CONFIG_SECTION_SCHEMAS, CONFIG_TYPE_SCHEMAS and CONFIG_SECTION_DESCRIPTIONS are removed. Consumers should use ConfigSchema with generateConfigTypes/Env/Markdown/Cli/All and read section descriptions from schema metadata.
|
|
57
201
|
- Support metadata annotations in generated output ([#1417bb2](https://github.com/deltabox-studio/toolchain/commit/1417bb2) by [T0chi](https://github.com/T0chi))
|
|
58
202
|
- Add fmt/lint sections and manual changelog config ([#16000e5](https://github.com/deltabox-studio/toolchain/commit/16000e5) by [T0chi](https://github.com/T0chi))
|
|
59
203
|
- Inherit shared sections and add fmt/lint defaults ([#94add6f](https://github.com/deltabox-studio/toolchain/commit/94add6f) by [T0chi](https://github.com/T0chi))
|
|
60
204
|
- Registry source policies and duplicate template-id prompts ([#e030af7](https://github.com/deltabox-studio/toolchain/commit/e030af7) by [T0chi](https://github.com/T0chi))
|
|
61
|
-
- host and path globs, enforced for local paths, npm registries and
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
builtin or project source; non-interactive runs fail with a clear
|
|
65
|
-
`--id` hint instead of prompting.
|
|
66
|
-
plus Templates/Providers docs.
|
|
205
|
+
- Add `toolchain.registry.{templates,providers}` with `allow`/`deny` host and path globs, enforced for local paths, npm registries and remote URLs (also when loading global/remote registries and the provider/registry listings).
|
|
206
|
+
- Prompt for a unique template id when `template:add` collides with a builtin or project source; non-interactive runs fail with a clear `--id` hint instead of prompting.
|
|
207
|
+
- Add `--id` to `template:add`, policy tests and the generated reference plus Templates/Providers docs.
|
|
67
208
|
- Ambient Zod meta types and project-tsconfig typechecks ([#e73661b](https://github.com/deltabox-studio/toolchain/commit/e73661b) by [T0chi](https://github.com/T0chi))
|
|
68
|
-
- `/// <reference types="@deltabox/toolchain/globals" />` and get typed
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
instead of `tsconfig.build.json`.
|
|
209
|
+
- Export `@deltabox/toolchain/globals` so a consumer can add `/// <reference types="@deltabox/toolchain/globals" />` and get typed `.meta({ env, path, required, example, ... })` fields.
|
|
210
|
+
- Add the shared/config ambient declarations and make `ConfigBaseMeta.deprecated` the JSON-Schema boolean.
|
|
211
|
+
- Run the root and every workspace typecheck against `tsconfig.json` instead of `tsconfig.build.json`.
|
|
72
212
|
- Move CI workflows and changelog config under toolchain.ci ([#af1b536](https://github.com/deltabox-studio/toolchain/commit/af1b536) by [T0chi](https://github.com/T0chi))
|
|
73
|
-
- workflows and move the changelog pipeline to `ci.changelog`.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
is `ToolchainCiConfig`.
|
|
81
|
-
generated types.
|
|
213
|
+
- Add the opt-in `ci` section for the ci/release/issues/changelog/sync workflows and move the changelog pipeline to `ci.changelog`.
|
|
214
|
+
- Make every workflow setting opt-in; disable commitlint with `ci.changelog.commitlint: false` and fall back to coarse major/minor/patch changelog groups.
|
|
215
|
+
- Move `types`/`scopes` to `ci.changelog.commitlint` and extract `ChangelogBranchesConfig` as a named schema.
|
|
216
|
+
- Keep the old top-level `changelog` schema marked deprecated for older consumers, but reject it in the loader with a migration error.
|
|
217
|
+
- Add `withEnabled()` to the schema model and split `config-schema.ts` into the `config-schema/` folder.
|
|
218
|
+
- Rename the workflow types: the workflow map is `WorkflowConfig`, the per-workflow overrides are `WorkflowOptions`, and the new section type is `ToolchainCiConfig`.
|
|
219
|
+
- Surface `.meta()` descriptions for `$ref` and object nodes in the generated types.
|
|
82
220
|
- Let defineConfig accept a promise or a callback ([#111776c](https://github.com/deltabox-studio/toolchain/commit/111776c) by [T0chi](https://github.com/T0chi))
|
|
83
|
-
- `defineConfig` now mirrors Vite's helper: the argument may be a plain object,
|
|
84
|
-
a `Promise<DbxConfig>`, or a `() => DbxConfig | Promise<DbxConfig>` callback.
|
|
85
|
-
The loader resolves the module export (awaits a promise, calls a callback and
|
|
86
|
-
awaits its result), so a config can do async work before returning
|
|
87
|
-
`{ toolchain }`.
|
|
221
|
+
- `defineConfig` now mirrors Vite's helper: the argument may be a plain object, a `Promise<DbxConfig>`, or a `() => DbxConfig | Promise<DbxConfig>` callback. The loader resolves the module export (awaits a promise, calls a callback and awaits its result), so a config can do async work before returning `{ toolchain }`.
|
|
88
222
|
#### Vscode
|
|
89
223
|
- Surface workflow conflicts in managed files ([#e692511](https://github.com/deltabox-studio/toolchain/commit/e692511) by [T0chi](https://github.com/T0chi))
|
|
90
224
|
- Read workflowConflicts from the manifest and render them as a warning group with the owning config key.
|
|
91
225
|
- Watch the inputs resolved from the dbx config ([#953f071](https://github.com/deltabox-studio/toolchain/commit/953f071) by [T0chi](https://github.com/T0chi))
|
|
92
|
-
- watch globs: auto-sync now asks the CLI (`dbx watch --list --json`) per
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
`tsconfig.default.json`
|
|
99
|
-
the behaviour
|
|
226
|
+
- drop the hard-coded `tsconfig.default.json` / `tsconfig.workspaces.json` watch globs: auto-sync now asks the CLI (`dbx watch --list --json`) per workspace root and watches the returned globs relative to that root, so custom `tsconfig.rootFile`/`defaultFile` names are respected
|
|
227
|
+
- re-resolve the inputs (debounced) whenever a `dbx.config.*` changes, and ignore stale results from an older resolve
|
|
228
|
+
- fall back to the default inputs when the CLI cannot report them (eg. an older pinned `dbx`)
|
|
229
|
+
- `deltabox.toolchain.watch` now defaults to `[]` (resolved); an explicitly set value, in any scope, still replaces the resolved inputs
|
|
230
|
+
- detect workspace projects with the resolved `defaultFile` instead of `tsconfig.default.json`
|
|
231
|
+
- unit-test the parsing and watch planning (`watch-inputs.ts`) and document the behaviour
|
|
100
232
|
- Add extension settings link to Home ([#f39cb35](https://github.com/deltabox-studio/toolchain/commit/f39cb35) by [T0chi](https://github.com/T0chi))
|
|
101
233
|
- Add Select dbx version to the Home More actions ([#13ef688](https://github.com/deltabox-studio/toolchain/commit/13ef688) by [T0chi](https://github.com/T0chi))
|
|
102
234
|
- Add the Registries view ([#e3e808e](https://github.com/deltabox-studio/toolchain/commit/e3e808e) by [T0chi](https://github.com/T0chi))
|
|
103
|
-
- A new collapsible **Registries** view (below Templates) shows **Providers** and
|
|
104
|
-
(explorer folder or browser for remote URLs), **Add new registry** (the category's
|
|
105
|
-
add flow) and **Remove registry** (removes the path, keeps the files). The title
|
|
106
|
-
bar has **New registry…** / **Remove registry…** (global or project scope), also
|
|
107
|
-
available in the Home "More actions". Removing a template now offers the stored
|
|
108
|
-
global templates too (`template:remove --global`).
|
|
235
|
+
- A new collapsible **Registries** view (below Templates) shows **Providers** and (explorer folder or browser for remote URLs), **Add new registry** (the category's add flow) and **Remove registry** (removes the path, keeps the files). The title bar has **New registry…** / **Remove registry…** (global or project scope), also available in the Home "More actions". Removing a template now offers the stored global templates too (`template:remove --global`).
|
|
109
236
|
- Rename registry paths, add a version picker and UI polish ([#9c8b51c](https://github.com/deltabox-studio/toolchain/commit/9c8b51c) by [T0chi](https://github.com/T0chi))
|
|
110
|
-
- config and code).
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
More actions), prefix More-actions buttons with a play glyph, start Managed
|
|
114
|
-
Files collapsed, expand the Vite+ provider by default, and drop unused icon
|
|
115
|
-
resources.
|
|
237
|
+
- Rename `templatesSearchPaths` to `registrySearchPaths` (VS Code setting, CLI config and code).
|
|
238
|
+
- Show the detected project/extension `@deltabox/toolchain` versions in the "which dbx?" notification, only ask when they differ, and add a **Select dbx version…** command that pins one in the workspace settings (npx fallback).
|
|
239
|
+
- Replace the Home "Run Vite+…" quick action with **Add provider…** (also in More actions), prefix More-actions buttons with a play glyph, start Managed Files collapsed, expand the Vite+ provider by default, and drop unused icon resources.
|
|
116
240
|
- Sync the global registry with the VS Code settings ([#86a0671](https://github.com/deltabox-studio/toolchain/commit/86a0671) by [T0chi](https://github.com/T0chi))
|
|
117
|
-
- Add the `deltabox.templatesSearchPaths` setting, record the VS Code user dir in
|
|
118
|
-
the CLI config on activation, and mirror setting changes into it (so the CLI and
|
|
119
|
-
editor agree). Adding a template now asks whether to register it globally (yes
|
|
120
|
-
by default), and adding a provider asks for a project or global scope; the
|
|
121
|
-
Providers view reads the merged registry.
|
|
241
|
+
- Add the `deltabox.templatesSearchPaths` setting, record the VS Code user dir in the CLI config on activation, and mirror setting changes into it (so the CLI and editor agree). Adding a template now asks whether to register it globally (yes by default), and adding a provider asks for a project or global scope; the Providers view reads the merged registry.
|
|
122
242
|
#### Project
|
|
123
243
|
- Inherit root Oxc config and harden scaffolds ([#56a1895](https://github.com/deltabox-studio/toolchain/commit/56a1895) by [T0chi](https://github.com/T0chi))
|
|
124
244
|
- Nested projects omit local Oxc files/opt-ins when the root owns them, template create gains --force, and scaffold writes now reject duplicates, BOM catalogs and root scope fallbacks are handled.
|
|
125
245
|
- Make scaffolds runnable and safer ([#eab297b](https://github.com/deltabox-studio/toolchain/commit/eab297b) by [T0chi](https://github.com/T0chi))
|
|
126
|
-
- Fold an existing vite config when generating a config ([#5891154](https://github.com/deltabox-studio/toolchain/
|
|
127
|
-
- `project:config` now checks for a hand-written `vite.config.*` and folds its
|
|
128
|
-
literal props into the generated `dbx.config.ts`'s `toolchain.vite` (using the
|
|
129
|
-
vite migration's extract/scan/fold helpers), adding the `/vite.config.ts` fmt
|
|
130
|
-
ignore. A non-foldable config is reported and left alone. The VS Code "Generate
|
|
131
|
-
config" actions run `dbx sync` afterwards so the managed shim is written.
|
|
246
|
+
- Fold an existing vite config when generating a config ([#5891154](https://github.com/deltabox-studio/toolchain/commit/5891154) by [T0chi](https://github.com/T0chi))
|
|
247
|
+
- `project:config` now checks for a hand-written `vite.config.*` and folds its literal props into the generated `dbx.config.ts`'s `toolchain.vite` (using the vite migration's extract/scan/fold helpers), adding the `/vite.config.ts` fmt ignore. A non-foldable config is reported and left alone. The VS Code "Generate config" actions run `dbx sync` afterwards so the managed shim is written.
|
|
132
248
|
#### Core
|
|
133
249
|
- Resolve watched inputs from the config and add `dbx watch --list` ([#0ab08a9](https://github.com/deltabox-studio/toolchain/commit/0ab08a9) by [T0chi](https://github.com/T0chi))
|
|
134
|
-
- `watch` globs with function forms resolved (eg. custom
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
resolved tsconfig file names (`{ globs, tsconfig }`) without watching
|
|
138
|
-
a `tsconfig` section
|
|
250
|
+
- add `resolveWatchGlobs(tasks, config, projectType?)`: the active tasks' `watch` globs with function forms resolved (eg. custom `tsconfig.rootFile`/`defaultFile` names); `runWatch` now uses it, so only the inputs of tasks that actually run are watched
|
|
251
|
+
- add `dbx watch --list [--json]`, printing the resolved input globs plus the resolved tsconfig file names (`{ globs, tsconfig }`) without watching
|
|
252
|
+
- emulate the report for the default names, custom names and a config without a `tsconfig` section
|
|
139
253
|
- Untracked managed files, config-derived task globs and a reset restore hook ([#5da6691](https://github.com/deltabox-studio/toolchain/commit/5da6691) by [T0chi](https://github.com/T0chi))
|
|
140
|
-
- it in the manifest, so a user-owned file a task patches is never pruned by a
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
|
|
149
|
-
`deltabox.providerRegistrySearchPaths` setting; the Registries view
|
|
150
|
-
now manages both kinds and the Providers view can fetch remote
|
|
151
|
-
registries through `loadToolchainProviders()`.
|
|
152
|
-
pre-existing file. Adopted files are unmanaged, never deleted.
|
|
153
|
-
their previous content); the extension shows a notification listing
|
|
154
|
-
removed files with Restore/Close.
|
|
254
|
+
- `ManagedFile.track: false` writes and drift-checks a file without recording it in the manifest, so a user-owned file a task patches is never pruned by a later sync or removed by `dbx reset`
|
|
255
|
+
- `SyncTask.watch` / `SyncTask.keep` accept `config => string[]`, so globs can follow configured file names
|
|
256
|
+
- `SyncContext.manifest` persists task metadata in the manifest between syncs (written before `files`/`origins`, which it can never clobber), and `SyncContext.check` flags `dbx sync --check`
|
|
257
|
+
- `resetToolchain` / `resetProjects` take a `restore` hook that runs before the manifest is removed and report the `restored` files
|
|
258
|
+
- Provider registry search paths and safer managed-file sync ([#4033009](https://github.com/deltabox-studio/toolchain/commit/4033009) by [T0chi](https://github.com/T0chi))
|
|
259
|
+
- Load providers from project/global search paths (JSON files, dirs or http(s) URLs), keeping the legacy provider files for compatibility.
|
|
260
|
+
- Add provider search-path management to `dbx registry` (`--kind providers`, `--set`, `--clear`), the CLI config and the VS Code `deltabox.providerRegistrySearchPaths` setting; the Registries view now manages both kinds and the Providers view can fetch remote registries through `loadToolchainProviders()`.
|
|
261
|
+
- Track whether a managed file was created by dbx or adopted from a pre-existing file. Adopted files are unmanaged, never deleted.
|
|
262
|
+
- `dbx sync --json` reports the sync result (including removed files and their previous content); the extension shows a notification listing removed files with Restore/Close.
|
|
155
263
|
- Merge global providers with the project registry ([#81c510b](https://github.com/deltabox-studio/toolchain/commit/81c510b) by [T0chi](https://github.com/T0chi))
|
|
156
|
-
- Providers can live in `~/.dbx/toolchain/.registry/providers.json` too.
|
|
157
|
-
`readAllProviders` merges them with the project's `.dbx/toolchain/providers.json`
|
|
158
|
-
(project wins on an id clash), and the CLI's provider list and passthrough
|
|
159
|
-
commands use it so a global provider works in every project.
|
|
264
|
+
- Providers can live in `~/.dbx/toolchain/.registry/providers.json` too. `readAllProviders` merges them with the project's `.dbx/toolchain/providers.json` (project wins on an id clash), and the CLI's provider list and passthrough commands use it so a global provider works in every project.
|
|
160
265
|
#### Tsconfig
|
|
161
266
|
- Resolver, `extends`/`baseFile` options and snapshot-backed overrides ([#2b38963](https://github.com/deltabox-studio/toolchain/commit/2b38963) by [T0chi](https://github.com/T0chi))
|
|
162
|
-
- JSONC) and `dbx tsconfig --json/--alias/--paths/--references/--tsconfig/--root/--no-extends`;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
original defined it, otherwise removes it (pruning emptied parents), and keeps
|
|
171
|
-
a value edited after the override applied it
|
|
172
|
-
`tsconfig.override-edited`) and skip instead of creating missing targets;
|
|
173
|
-
patched files are untracked, so sync/reset never delete them
|
|
174
|
-
(`restoreTsconfigOverrides`), warning with `tsconfig.restore-reapply` while
|
|
175
|
-
the overrides are still configured; `dbx reset` restores before removing the
|
|
176
|
-
manifest
|
|
267
|
+
- add an extends-aware `resolveTsconfig` (+ `readTsconfig`/`parseTsconfig` for JSONC) and `dbx tsconfig --json/--alias/--paths/--references/--tsconfig/--root/--no-extends`; the generator now resolves the workspaces tsconfig through it
|
|
268
|
+
- add `tsconfig.extends` for the `extends` of scaffolded base/default/build templates, and `tsconfig.baseFile` for the root base tsconfig
|
|
269
|
+
- add `tsconfig.overrides` (`base`, `root`, `default`, `build`): deep-merged into the user-owned tsconfigs on sync, honouring custom `baseFile`/`rootFile`/`defaultFile`/`buildFile` names (also in the task's watched/kept globs and in `dbx tsconfig`)
|
|
270
|
+
- snapshot the original files in the manifest's top-level `snapshots` tree (repo-relative paths only) and record the applied override per file in `tsconfigOverrides`; removing a key restores the snapshot value when the original defined it, otherwise removes it (pruning emptied parents), and keeps a value edited after the override applied it
|
|
271
|
+
- warn (`tsconfig.missing-file`, `tsconfig.outside-root`, `tsconfig.override-edited`) and skip instead of creating missing targets; patched files are untracked, so sync/reset never delete them
|
|
272
|
+
- add `dbx tsconfig --restore [base|root|default|build]` (`restoreTsconfigOverrides`), warning with `tsconfig.restore-reapply` while the overrides are still configured; `dbx reset` restores before removing the manifest
|
|
273
|
+
- type the override bodies as `TsConfigJson` (`type-fest` is now a dependency)
|
|
274
|
+
- cover the overrides with unit and emulate tests
|
|
177
275
|
#### Vite
|
|
178
276
|
- Add static shims and a configurable shim import ([#bddcb62](https://github.com/deltabox-studio/toolchain/commit/bddcb62) by [T0chi](https://github.com/T0chi))
|
|
179
|
-
- the generated `vite.config.ts`, so Vite+ can load it without a built
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
generated config
|
|
277
|
+
- `vite.shim: 'static'` serializes the resolved `toolchain.vite` config into the generated `vite.config.ts`, so Vite+ can load it without a built `@deltabox/toolchain` (rejects functions, regexps and class instances)
|
|
278
|
+
- `vite.shimImport` changes the `resolveVite` import specifier of runtime shims; relative values resolve from the repo root and are rewritten per generated config
|
|
279
|
+
- type both options in `ToolchainViteConfig` and document them
|
|
183
280
|
- Preserve existing imports/comments when regenerating the shim ([#194461c](https://github.com/deltabox-studio/toolchain/commit/194461c) by [T0chi](https://github.com/T0chi))
|
|
184
|
-
- `renderViteConfig` now accepts the existing `vite.config.ts` source: it keeps
|
|
185
|
-
the file's leading comments and import statements and merges `defineConfig` (and
|
|
186
|
-
the config type) into the existing `vite`/`vite-plus` import, preserving default,
|
|
187
|
-
namespace, other named and type-only specifiers. Regeneration is idempotent, and
|
|
188
|
-
the sync task feeds the current file in so a custom import block/comment is not
|
|
189
|
-
dropped.
|
|
281
|
+
- `renderViteConfig` now accepts the existing `vite.config.ts` source: it keeps the file's leading comments and import statements and merges `defineConfig` (and the config type) into the existing `vite`/`vite-plus` import, preserving default, namespace, other named and type-only specifiers. Regeneration is idempotent, and the sync task feeds the current file in so a custom import block/comment is not dropped.
|
|
190
282
|
- Detect the project's vite package and allow resolveVite overrides ([#dfaedee](https://github.com/deltabox-studio/toolchain/commit/dfaedee) by [T0chi](https://github.com/T0chi))
|
|
191
|
-
- The generated `vite.config.ts` shim now imports `defineConfig` (and its config
|
|
192
|
-
type) from whichever package the project installs — `vite` or `vite-plus` —
|
|
193
|
-
detected from `package.json` and walking up so a hoisted workspace dependency
|
|
194
|
-
resolves. `resolveVite` is generic so the shim type-checks against both, and
|
|
195
|
-
`ResolveViteOptions` now carries inline `vite` overrides that are deep-merged
|
|
196
|
-
over the loaded section.
|
|
283
|
+
- The generated `vite.config.ts` shim now imports `defineConfig` (and its config type) from whichever package the project installs — `vite` or `vite-plus` — detected from `package.json` and walking up so a hoisted workspace dependency resolves. `resolveVite` is generic so the shim type-checks against both, and `ResolveViteOptions` now carries inline `vite` overrides that are deep-merged over the loaded section.
|
|
197
284
|
#### Migrate
|
|
198
285
|
- Add Oxc migration and repeatable --from ([#0f6930d](https://github.com/deltabox-studio/toolchain/commit/0f6930d) by [T0chi](https://github.com/T0chi))
|
|
199
286
|
#### Cli
|
|
200
287
|
- Add config selection and logger suppression ([#9b69e3f](https://github.com/deltabox-studio/toolchain/commit/9b69e3f) by [T0chi](https://github.com/T0chi))
|
|
201
288
|
#### Template
|
|
202
289
|
- Re-prompt on duplicate ids in init and the editor ([#a4d7cde](https://github.com/deltabox-studio/toolchain/commit/a4d7cde) by [T0chi](https://github.com/T0chi))
|
|
203
|
-
- one (or fails with an `--id` hint when non-interactive), and accepts
|
|
204
|
-
|
|
205
|
-
the provider already exists, updating its command names too.
|
|
290
|
+
- `template:init --add` checks builtin + project ids, prompts for a unique one (or fails with an `--id` hint when non-interactive), and accepts `--id`.
|
|
291
|
+
- The VS Code Add provider flow suggests and validates a renamed id when the provider already exists, updating its command names too.
|
|
206
292
|
- Unscoped npm packages, custom registries and remote sources ([#08cb68c](https://github.com/deltabox-studio/toolchain/commit/08cb68c) by [T0chi](https://github.com/T0chi))
|
|
207
|
-
- npm create packages. The registry defaults to the project package
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
whose `{ sources }` / `{ templates }` / array is merged recursively.
|
|
211
|
-
docs.
|
|
293
|
+
- Support scoped (`@scope/create`) and unscoped (`create-*`, `*-create`) npm create packages. The registry defaults to the project package manager's (`npmRegistryServer` / `.npmrc`) and can be overridden per source with `--registry` or the new `ToolchainTemplateSource.registry`.
|
|
294
|
+
- Add the `remote` template source type: an `http(s)` JSON source registry whose `{ sources }` / `{ templates }` / array is merged recursively.
|
|
295
|
+
- Refresh the generated schema/types/reference and the online template docs.
|
|
212
296
|
- Add project registries, registry listing and global removal ([#ff3cd16](https://github.com/deltabox-studio/toolchain/commit/ff3cd16) by [T0chi](https://github.com/T0chi))
|
|
213
|
-
- to `<project>/.dbx/toolchain/.registry/templates`; the project paths are
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
(`--add`/`--remove`, `--scope global|project`).
|
|
217
|
-
remove stored global templates; remote registries accept `{ sources }`,
|
|
218
|
-
`{ templates }` or an array of sources.
|
|
297
|
+
- Project-scoped registries live in `.dbx/toolchain/registries.json` and default to `<project>/.dbx/toolchain/.registry/templates`; the project paths are resolved before the global ones (remote `http(s)` entries are kept as URLs).
|
|
298
|
+
- `listRegistries(cwd)` exposes the detected template/provider registries, the `dbx registry` command lists them (`--json`) and adds/removes template paths (`--add`/`--remove`, `--scope global|project`).
|
|
299
|
+
- `dbx template:list --global` and `dbx template:remove --global <id>` list and remove stored global templates; remote registries accept `{ sources }`, `{ templates }` or an array of sources.
|
|
219
300
|
- Add a global template registry ([#638dd3b](https://github.com/deltabox-studio/toolchain/commit/638dd3b) by [T0chi](https://github.com/T0chi))
|
|
220
|
-
- Templates registered with `template:init --add`/`template:add` are also stored
|
|
221
|
-
|
|
222
|
-
available in every project and the VS Code extension. Global templates merge
|
|
223
|
-
with the project's own (project wins on an id clash).
|
|
224
|
-
- Search paths default to that directory and can be configured as a string/array
|
|
225
|
-
of directories or `http(s)` remote registries. They live in
|
|
226
|
-
`~/.dbx/toolchain/cli/config.json` (`templatesSearchPaths`, plus a `vscodeDir`
|
|
227
|
-
pointing at the VS Code user dir) and are managed with the new
|
|
228
|
-
`dbx template:registry` command (`--add`/`--set`/`--remove`/`--clear`), which
|
|
229
|
-
also writes the VS Code `deltabox.templatesSearchPaths` setting.
|
|
301
|
+
- Templates registered with `template:init --add`/`template:add` are also stored under `~/.dbx/toolchain/.registry/templates` (unless `--no-global`), so they are available in every project and the VS Code extension. Global templates merge with the project's own (project wins on an id clash).
|
|
302
|
+
- Search paths default to that directory and can be configured as a string/array of directories or `http(s)` remote registries. They live in `~/.dbx/toolchain/cli/config.json` (`templatesSearchPaths`, plus a `vscodeDir` pointing at the VS Code user dir) and are managed with the new `dbx template:registry` command (`--add`/`--set`/`--remove`/`--clear`), which also writes the VS Code `deltabox.templatesSearchPaths` setting.
|
|
230
303
|
### Bug fixes
|
|
231
304
|
#### Cli
|
|
232
305
|
- Filter denied providers at registration ([#74c49bb](https://github.com/deltabox-studio/toolchain/commit/74c49bb) by [T0chi](https://github.com/T0chi))
|
|
@@ -237,11 +310,7 @@
|
|
|
237
310
|
- Allow true/false for every fmt/lint tool, honour explicit biome opt-outs, and ignore disabled biome overrides.
|
|
238
311
|
- Honour disabled sections and regenerate config types ([#dddd9a7](https://github.com/deltabox-studio/toolchain/commit/dddd9a7) by [T0chi](https://github.com/T0chi))
|
|
239
312
|
- Keep union, enum and nested types in the combined markdown reference ([#2eaa373](https://github.com/deltabox-studio/toolchain/commit/2eaa373) by [T0chi](https://github.com/T0chi))
|
|
240
|
-
- The combined (`combined: true`) markdown renderer received the untyped
|
|
241
|
-
lowering of Zod scopes, which collapses unions/enums to `any` with a `{}`
|
|
242
|
-
default. Render Zod scopes from `toJSONSchema` instead (resolving the root
|
|
243
|
-
`$ref` into `$defs`), so the reference shows real types and nested options
|
|
244
|
-
again.
|
|
313
|
+
- The combined (`combined: true`) markdown renderer received the untyped lowering of Zod scopes, which collapses unions/enums to `any` with a `{}` default. Render Zod scopes from `toJSONSchema` instead (resolving the root `$ref` into `$defs`), so the reference shows real types and nested options again.
|
|
245
314
|
- Finish generator ergonomics and changelog customization ([#38f6d5b](https://github.com/deltabox-studio/toolchain/commit/38f6d5b) by [T0chi](https://github.com/T0chi))
|
|
246
315
|
#### Changelog
|
|
247
316
|
- Honour workflow token overrides and disabled ci ([#de266dd](https://github.com/deltabox-studio/toolchain/commit/de266dd) by [T0chi](https://github.com/T0chi))
|
|
@@ -257,18 +326,13 @@
|
|
|
257
326
|
- Make sync generation quiet, one-pass and non-fatal ([#f0d7663](https://github.com/deltabox-studio/toolchain/commit/f0d7663) by [T0chi](https://github.com/T0chi))
|
|
258
327
|
#### Ci
|
|
259
328
|
- Keep the build tsconfigs for CI typechecks ([#b1502ad](https://github.com/deltabox-studio/toolchain/commit/b1502ad) by [T0chi](https://github.com/T0chi))
|
|
260
|
-
- the
|
|
261
|
-
|
|
329
|
+
- Revert the package/root `typecheck` tasks to `tsconfig.build.json`.
|
|
330
|
+
- Add `typecheck:ci` (the old build-based pipeline) for CI and run it in the generated CI workflow.
|
|
331
|
+
- Make `yarn typecheck` a development-only workspace check that uses the root + package `tsconfig.json` (including tests).
|
|
262
332
|
#### Migrate
|
|
263
333
|
- Deep-merge the folded vite config ([#f74d2ed](https://github.com/deltabox-studio/toolchain/commit/f74d2ed) by [T0chi](https://github.com/T0chi))
|
|
264
|
-
- Folding a hand-written `vite.config.*` into an existing `toolchain.vite` now
|
|
265
|
-
|
|
266
|
-
vite config win) instead of replacing the section, and flips a previous
|
|
267
|
-
`config: false` to `true` since the hand-written file is removed.
|
|
268
|
-
- Also fixes `findTopLevelValue` so a scalar last key no longer swallows the
|
|
269
|
-
object's closing `}`, updates the managed-shim detection for the generic
|
|
270
|
-
`resolveVite<T>(...)` form, and corrects the "nothing to migrate" message when
|
|
271
|
-
the migration is registered but no source is detected.
|
|
334
|
+
- Folding a hand-written `vite.config.*` into an existing `toolchain.vite` now deep-merges object literals (nested objects combine; arrays/scalars from the vite config win) instead of replacing the section, and flips a previous `config: false` to `true` since the hand-written file is removed.
|
|
335
|
+
- Also fixes `findTopLevelValue` so a scalar last key no longer swallows the object's closing `}`, updates the managed-shim detection for the generic `resolveVite<T>(...)` form, and corrects the "nothing to migrate" message when the migration is registered but no source is detected.
|
|
272
336
|
### Refactors
|
|
273
337
|
- Run quality checks through vp tasks ([#2fee264](https://github.com/deltabox-studio/toolchain/commit/2fee264) by [T0chi](https://github.com/T0chi))
|
|
274
338
|
- Run build and test through vp tasks too ([#e890665](https://github.com/deltabox-studio/toolchain/commit/e890665) by [T0chi](https://github.com/T0chi))
|
|
@@ -280,55 +344,49 @@
|
|
|
280
344
|
- Cover scaffold --force, root Oxc inheritance, boolean tool opt-ins, workflow package-manager version defaults and the managed-file conflict group.
|
|
281
345
|
- Regenerate config artifacts and document the fixes ([#9be4d73](https://github.com/deltabox-studio/toolchain/commit/9be4d73) by [T0chi](https://github.com/T0chi))
|
|
282
346
|
- Document tsconfig overrides, snapshots and `--restore` ([#dad4084](https://github.com/deltabox-studio/toolchain/commit/dad4084) by [T0chi](https://github.com/T0chi))
|
|
283
|
-
- snapshots, removal rules, restoring, warnings) and the new CLI flags/exports
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
347
|
+
- `guide/tsconfig.md`: `baseFile`, custom file names, overrides (deep merge, snapshots, removal rules, restoring, warnings) and the new CLI flags/exports
|
|
348
|
+
- `migration-v1-v2.md`: overrides, manifest `snapshots`/`tsconfigOverrides`, the sync task API additions and an upgrade step
|
|
349
|
+
- note the override revert in the `dbx reset` / `dbx tsconfig` CLI docs and the package reference
|
|
350
|
+
- regenerate `config/reference.md`, `config/cli.md`, `config.schema.json` and `llms-full.txt`
|
|
287
351
|
- Document v2 generators, custom logger and changelog customization ([#f0f7f5d](https://github.com/deltabox-studio/toolchain/commit/f0f7f5d) by [T0chi](https://github.com/T0chi))
|
|
288
|
-
- Update README highlights and regenerate LLM docs ([#6380770](https://github.com/deltabox-studio/toolchain/
|
|
352
|
+
- Update README highlights and regenerate LLM docs ([#6380770](https://github.com/deltabox-studio/toolchain/commit/6380770) by [T0chi](https://github.com/T0chi))
|
|
289
353
|
- Add the CI guide, TypeScript page and interactive CLI sections ([#fc6099a](https://github.com/deltabox-studio/toolchain/commit/fc6099a) by [T0chi](https://github.com/T0chi))
|
|
290
|
-
- `guide/ci/` section (overview + settings + ci/issues/changelog/sync/
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
354
|
+
- Move the workflow/release pages from the Changelog guide into a new `guide/ci/` section (overview + settings + ci/issues/changelog/sync/ releases) and retitle the overview to "CI".
|
|
355
|
+
- Add `guide/typescript.md` (defineConfig, config types, ambient Zod metadata, programmatic API, Vite+ generics).
|
|
356
|
+
- Add `## Interactive CLI` sections and update the provider registry, VS Code sync notification and CLI `sync --json` docs.
|
|
357
|
+
- Refresh the LLM bundles.
|
|
294
358
|
- Split the config, API, config-generator and changelog guides ([#4153d86](https://github.com/deltabox-studio/toolchain/commit/4153d86) by [T0chi](https://github.com/T0chi))
|
|
295
|
-
- `guide/changelog.md` into folders with an index + one sibling page per
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
workflows, the commitlint opt-out fallback and the migration from the
|
|
300
|
-
deprecated top-level `changelog` section.
|
|
301
|
-
LLM bundles.
|
|
359
|
+
- Turn `guide/api.md`, `guide/config.md`, `guide/config-generator.md` and `guide/changelog.md` into folders with an index + one sibling page per second-level section.
|
|
360
|
+
- Retitle the changelog index to "Changelog" and move Workflows, Branches, commitlint, Versioning, CLI, writing messages, Troubleshooting and Releases into sibling pages.
|
|
361
|
+
- Document the new `toolchain.ci` / `ci.changelog` structure, opt-in workflows, the commitlint opt-out fallback and the migration from the deprecated top-level `changelog` section.
|
|
362
|
+
- Update sidebar entries, cross-links, the generated reference and the LLM bundles.
|
|
302
363
|
- Document the Registries view, project registries and dbx version picker ([#752d1cd](https://github.com/deltabox-studio/toolchain/commit/752d1cd) by [T0chi](https://github.com/T0chi))
|
|
303
|
-
- Cover `registrySearchPaths`, project registries, the `registry` command, remote
|
|
304
|
-
registries, the Registries view/actions, and the extension's version selection.
|
|
364
|
+
- Cover `registrySearchPaths`, project registries, the `registry` command, remote registries, the Registries view/actions, and the extension's version selection.
|
|
305
365
|
- Document the global template/provider registry ([#55651e1](https://github.com/deltabox-studio/toolchain/commit/55651e1) by [T0chi](https://github.com/T0chi))
|
|
306
|
-
- Cover the global templates dir, `--no-global`, the `template:registry` command,
|
|
307
|
-
the CLI config and `deltabox.templatesSearchPaths` sync, remote registries, and
|
|
308
|
-
global providers.
|
|
366
|
+
- Cover the global templates dir, `--no-global`, the `template:registry` command, the CLI config and `deltabox.templatesSearchPaths` sync, remote registries, and global providers.
|
|
309
367
|
- Document defineConfig callbacks, shim detection and deep-merge migration ([#701de7c](https://github.com/deltabox-studio/toolchain/commit/701de7c) by [T0chi](https://github.com/T0chi))
|
|
310
|
-
- Cover `defineConfig` promises/callbacks, the shim importing from the project's
|
|
311
|
-
vite package, inline `resolveVite` overrides, and the vite migration deep-merging
|
|
312
|
-
into `toolchain.vite`.
|
|
368
|
+
- Cover `defineConfig` promises/callbacks, the shim importing from the project's vite package, inline `resolveVite` overrides, and the vite migration deep-merging into `toolchain.vite`.
|
|
313
369
|
#### Vscode
|
|
314
370
|
- Document extension requirements ([#07fd6fa](https://github.com/deltabox-studio/toolchain/commit/07fd6fa) by [T0chi](https://github.com/T0chi))
|
|
315
371
|
#### Config
|
|
316
372
|
- Generate CLI, env and config-type references ([#ba640a3](https://github.com/deltabox-studio/toolchain/commit/ba640a3) by [T0chi](https://github.com/T0chi))
|
|
317
|
-
- `config:docs`) to generate `apps/docs/config/index.md`, `cli.md` from
|
|
318
|
-
|
|
373
|
+
- Add `scripts/generate-config-docs.ts` (wired into `config:generate` and `config:docs`) to generate `apps/docs/config/index.md`, `cli.md` from the ToolchainCommand descriptors, and `env.md` from ConfigMeta.
|
|
374
|
+
- Add the three pages to the config sidebar and frontmatter outlines.
|
|
375
|
+
- Extend the CI drift check to cover the new generated files.
|
|
319
376
|
### Tests
|
|
320
377
|
- Run the emulate suite in a temp sandbox outside the repo ([#a94fa4c](https://github.com/deltabox-studio/toolchain/commit/a94fa4c) by [T0chi](https://github.com/T0chi))
|
|
321
|
-
- `node_modules` link back to the repo install) instead of `tests/emulate`,
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
378
|
+
- create the scratch workspaces under `<tmp>/dbx-emulate-*` (with a `node_modules` link back to the repo install) instead of `tests/emulate`, so a stray sync can never touch the toolchain repo
|
|
379
|
+
- snapshot and restore the repo's managed files (not only the manifest) after every test, and clean up on `SIGHUP`/`SIGBREAK` too
|
|
380
|
+
- add `yarn test:clean` (`scripts/clean-emulate.mjs`) to remove leftover sandboxes
|
|
381
|
+
- update the README development section (source-first workflow, `test:clean`)
|
|
325
382
|
- Cover provider search paths, registry policy and remote sources ([#91a5859](https://github.com/deltabox-studio/toolchain/commit/91a5859) by [T0chi](https://github.com/T0chi))
|
|
326
383
|
### Build system
|
|
327
384
|
- Run typechecks, tests and Vite+ from source without a built `dist` ([#4353a36](https://github.com/deltabox-studio/toolchain/commit/4353a36) by [T0chi](https://github.com/T0chi))
|
|
328
|
-
- `tsconfig.workspaces.json` and regenerate every workspace `tsconfig.json`,
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
385
|
+
- alias `@deltabox/toolchain` (+ subpaths) to `src` in `tsconfig.workspaces.json` and regenerate every workspace `tsconfig.json`, so typechecks resolve workspace source instead of `dist`
|
|
386
|
+
- enable `resolve.tsconfigPaths` for Vite/Vitest (root + every workspace)
|
|
387
|
+
- dogfood `vite.shim: 'static'`, so `vp` loads the generated shims without building the package first
|
|
388
|
+
- drop the `typecheck:ci` script, tasks and CI step; `typecheck` already runs the source tsconfigs
|
|
389
|
+
- apply pending formatter output to the config/changelog sources
|
|
332
390
|
### Chores
|
|
333
391
|
- Fix lint warnings and remove unused helper ([#ac890d8](https://github.com/deltabox-studio/toolchain/commit/ac890d8) by [T0chi](https://github.com/T0chi))
|
|
334
392
|
- Add lint and check vp tasks to every workspace ([#83bb7e5](https://github.com/deltabox-studio/toolchain/commit/83bb7e5) by [T0chi](https://github.com/T0chi))
|
|
@@ -343,24 +401,17 @@
|
|
|
343
401
|
- Updated misleading docs ([#5a5e44c](https://github.com/deltabox-studio/toolchain/commit/5a5e44c) by [T0chi](https://github.com/T0chi))
|
|
344
402
|
### Chores
|
|
345
403
|
#### Vscode
|
|
346
|
-
- Rearranged views order ([#0620097](https://github.com/deltabox-studio/toolchain/
|
|
404
|
+
- Rearranged views order ([#0620097](https://github.com/deltabox-studio/toolchain/commit/0620097) by [T0chi](https://github.com/T0chi))
|
|
347
405
|
|
|
348
406
|
## 1.11.3 (October 2026)
|
|
349
407
|
|
|
350
408
|
### Bug fixes
|
|
351
409
|
#### Ci
|
|
352
410
|
- Emit the dbx.config.ts fence title in the generated reference ([#d154039](https://github.com/deltabox-studio/toolchain/commit/d154039) by [T0chi](https://github.com/T0chi))
|
|
353
|
-
- `apps/docs/config/reference.md` is generated by `scripts/generate-config.ts`
|
|
354
|
-
(and the CI `Verify generated config artifacts are up to date` step), so its
|
|
355
|
-
"Full example" fence must be produced by the generator. The docs rebrand added
|
|
356
|
-
a `[dbx.config.ts]` title to that fence by hand, which `yarn config:generate`
|
|
357
|
-
then stripped, failing the drift check. Emit the title from the generator so
|
|
358
|
-
the regenerated (and formatted) file matches the committed one.
|
|
411
|
+
- `apps/docs/config/reference.md` is generated by `scripts/generate-config.ts` (and the CI `Verify generated config artifacts are up to date` step), so its "Full example" fence must be produced by the generator. The docs rebrand added a `[dbx.config.ts]` title to that fence by hand, which `yarn config:generate` then stripped, failing the drift check. Emit the title from the generator so the regenerated (and formatted) file matches the committed one.
|
|
359
412
|
### Styles
|
|
360
413
|
- Format the docs brand stylesheet ([#fb3a711](https://github.com/deltabox-studio/toolchain/commit/fb3a711) by [T0chi](https://github.com/T0chi))
|
|
361
|
-
- Run the formatter over `apps/docs/.vitepress/theme/style.css` (trailing
|
|
362
|
-
whitespace, indentation, numeric normalization) so `yarn format` no longer
|
|
363
|
-
dirties the tree.
|
|
414
|
+
- Run the formatter over `apps/docs/.vitepress/theme/style.css` (trailing whitespace, indentation, numeric normalization) so `yarn format` no longer dirties the tree.
|
|
364
415
|
|
|
365
416
|
## 1.11.2 (October 2026)
|
|
366
417
|
|
|
@@ -372,53 +423,28 @@
|
|
|
372
423
|
### Bug fixes
|
|
373
424
|
- Write scaffold files only at the end and resolve "." names ([#c01fcf3](https://github.com/deltabox-studio/toolchain/commit/c01fcf3) by [T0chi](https://github.com/T0chi))
|
|
374
425
|
- Two scaffolding robustness fixes:
|
|
375
|
-
- Cancelling any prompt (scope, package manager, include-config, the
|
|
376
|
-
|
|
377
|
-
default and creating orphan files/dirs. The local-template copier also
|
|
378
|
-
reads and renders the entire tree into memory before writing, so a
|
|
379
|
-
failed or interrupted run can never leave a half-copied template.
|
|
380
|
-
- directory it is created in (`--out`/`--root`), so
|
|
381
|
-
`dbx create --name . --out ./my-app` names the package `my-app`.
|
|
426
|
+
- A scaffold now writes nothing until every prompt has been answered. Cancelling any prompt (scope, package manager, include-config, the folder picker) aborts the whole command instead of falling back to a default and creating orphan files/dirs. The local-template copier also reads and renders the entire tree into memory before writing, so a failed or interrupted run can never leave a half-copied template.
|
|
427
|
+
- A project/workspace name of `.` resolves to the basename of the directory it is created in (`--out`/`--root`), so `dbx create --name . --out ./my-app` names the package `my-app`.
|
|
382
428
|
- Tests: emulate the `.` name through both `create` and `project:init`.
|
|
383
429
|
#### Shared
|
|
384
430
|
- Quote a Windows command path that contains spaces ([#2e1f2ab](https://github.com/deltabox-studio/toolchain/commit/2e1f2ab) by [T0chi](https://github.com/T0chi))
|
|
385
|
-
- `spawnCross` routes every Windows command through `cmd.exe`, which splits an
|
|
386
|
-
|
|
387
|
-
`C:\Program Files\nodejs\node.exe` was resolved as `C:\Program` and never ran.
|
|
388
|
-
Quote the command when it contains whitespace instead of caret-escaping the
|
|
389
|
-
space (which `cmd.exe` still splits on). The same fix is mirrored in the
|
|
390
|
-
extension's `win-spawn` port.
|
|
391
|
-
- Tests: a functional case that hardlinks `node.exe` into a space-containing
|
|
392
|
-
temp dir and runs it, plus unit assertions for `escapeCmdCommand`.
|
|
431
|
+
- `spawnCross` routes every Windows command through `cmd.exe`, which splits an unquoted command at whitespace, so an absolute path like `C:\Program Files\nodejs\node.exe` was resolved as `C:\Program` and never ran. Quote the command when it contains whitespace instead of caret-escaping the space (which `cmd.exe` still splits on). The same fix is mirrored in the extension's `win-spawn` port.
|
|
432
|
+
- Tests: a functional case that hardlinks `node.exe` into a space-containing temp dir and runs it, plus unit assertions for `escapeCmdCommand`.
|
|
393
433
|
#### Vscode
|
|
394
434
|
- Run template create without a shell so npm scopes survive ([#0863cf2](https://github.com/deltabox-studio/toolchain/commit/0863cf2) by [T0chi](https://github.com/T0chi))
|
|
395
|
-
- `createFromTemplate` sent online/Vite+ creates to an integrated terminal as a
|
|
396
|
-
|
|
397
|
-
splat of an undefined variable), so the value was dropped and commander failed
|
|
398
|
-
with `option '-s, --scope <scope>' argument missing`.
|
|
399
|
-
- Run every template through the same argv pipeline (`runCli`, no shell) so values
|
|
400
|
-
like an npm scope are never mangled. Vite+ projects skip the post-create sync
|
|
401
|
-
since they are not dbx-managed.
|
|
435
|
+
- `createFromTemplate` sent online/Vite+ creates to an integrated terminal as a shell string. On PowerShell a bare `@scope` is read as splatting (`@deltabox` -> splat of an undefined variable), so the value was dropped and commander failed with `option '-s, --scope <scope>' argument missing`.
|
|
436
|
+
- Run every template through the same argv pipeline (`runCli`, no shell) so values like an npm scope are never mangled. Vite+ projects skip the post-create sync since they are not dbx-managed.
|
|
402
437
|
### Documentation
|
|
403
438
|
- Updated `vscode-example.mp4` ([#58c0061](https://github.com/deltabox-studio/toolchain/commit/58c0061) by [T0chi](https://github.com/T0chi))
|
|
404
439
|
- Rebrand to the new logo and blue theme ([#e28c1f9](https://github.com/deltabox-studio/toolchain/commit/e28c1f9) by [T0chi](https://github.com/T0chi))
|
|
405
|
-
- Swap the toolchain/box2d logos for the new `logo/*` assets, re-theme the
|
|
406
|
-
site with the blue brand tokens and hero/logo animations, update the home
|
|
407
|
-
page (GitHub action, feature icons), and refresh the guide/reference copy
|
|
408
|
-
and code fences. Regenerated `llms.txt` / `llms-full.txt`.
|
|
440
|
+
- Swap the toolchain/box2d logos for the new `logo/*` assets, re-theme the site with the blue brand tokens and hero/logo animations, update the home page (GitHub action, feature icons), and refresh the guide/reference copy and code fences. Regenerated `llms.txt` / `llms-full.txt`.
|
|
409
441
|
- Adopt the Carbon theme with code-group icons ([#09b2608](https://github.com/deltabox-studio/toolchain/commit/09b2608) by [T0chi](https://github.com/T0chi))
|
|
410
|
-
- Build the docs on vitepress-carbon: spread its base config and override
|
|
411
|
-
`vite.plugins` so the LLM plugin runs once (with our copy instead of
|
|
412
|
-
Carbon's default), add `vitepress-plugin-group-icons` for language icons on
|
|
413
|
-
`::: code-group` / `[title]` blocks, and register the theme. Also refresh
|
|
414
|
-
the year/footer config. Adds the two dev dependencies.
|
|
442
|
+
- Build the docs on vitepress-carbon: spread its base config and override `vite.plugins` so the LLM plugin runs once (with our copy instead of Carbon's default), add `vitepress-plugin-group-icons` for language icons on `::: code-group` / `[title]` blocks, and register the theme. Also refresh the year/footer config. Adds the two dev dependencies.
|
|
415
443
|
- Rename the "LLM context files" page to "LLMs" ([#9a9e8c7](https://github.com/deltabox-studio/toolchain/commit/9a9e8c7) by [T0chi](https://github.com/T0chi))
|
|
416
444
|
### Chores
|
|
417
445
|
#### Vscode
|
|
418
446
|
- Rebrand the extension icon and README ([#bbde675](https://github.com/deltabox-studio/toolchain/commit/bbde675) by [T0chi](https://github.com/T0chi))
|
|
419
|
-
- Point the extension icon at the new `resources/logo.png` / `icon.svg`,
|
|
420
|
-
drop the old `icon.png` / `logo.svg`, and update the README with the new
|
|
421
|
-
banner.
|
|
447
|
+
- Point the extension icon at the new `resources/logo.png` / `icon.svg`, drop the old `icon.png` / `logo.svg`, and update the README with the new banner.
|
|
422
448
|
|
|
423
449
|
### Package changes
|
|
424
450
|
#### Added
|
|
@@ -430,21 +456,13 @@
|
|
|
430
456
|
### New features
|
|
431
457
|
#### Vscode
|
|
432
458
|
- Scaffold any template and drive Vite+ create from the extension ([#fb4a55c](https://github.com/deltabox-studio/toolchain/commit/fb4a55c) by [T0chi](https://github.com/T0chi))
|
|
433
|
-
- project" picker (`template:list --online`) instead of only the dbx builtins;
|
|
434
|
-
|
|
435
|
-
bare `vite-plus` template — through the extension's prompt pipeline: pick a
|
|
436
|
-
concrete Vite+ template, then create like any other template. Consumers no
|
|
437
|
-
longer land in the interactive `vp create` CLI menu.
|
|
459
|
+
- List every template (builtin + local + npm/git + Vite+) in the "Scaffold project" picker (`template:list --online`) instead of only the dbx builtins; each entry runs the same create pipeline (name/scope/variables/actions).
|
|
460
|
+
- Route `vite:create` — from the Vite+ command picker, the provider tree and the bare `vite-plus` template — through the extension's prompt pipeline: pick a concrete Vite+ template, then create like any other template. Consumers no longer land in the interactive `vp create` CLI menu.
|
|
438
461
|
### Bug fixes
|
|
439
462
|
#### Project
|
|
440
463
|
- Tag a scaffolded workspace with its own project type ([#9d05637](https://github.com/deltabox-studio/toolchain/commit/9d05637) by [T0chi](https://github.com/T0chi))
|
|
441
|
-
- `resolveType` fell back to the loaded config's `project.type`, but a scaffold
|
|
442
|
-
|
|
443
|
-
when adding a workspace. A workspace was therefore tagged `monorepo-root`, and
|
|
444
|
-
the post-scaffold sync then generated root-only CI, husky and VS Code files
|
|
445
|
-
inside the workspace.
|
|
446
|
-
- Only honour an explicit `--type` (or the command's implied default); ignore the
|
|
447
|
-
ambient config type.
|
|
464
|
+
- `resolveType` fell back to the loaded config's `project.type`, but a scaffold runs with the config of the directory it is invoked from — the monorepo root when adding a workspace. A workspace was therefore tagged `monorepo-root`, and the post-scaffold sync then generated root-only CI, husky and VS Code files inside the workspace.
|
|
465
|
+
- Only honour an explicit `--type` (or the command's implied default); ignore the ambient config type.
|
|
448
466
|
### Documentation
|
|
449
467
|
- Update descriptions and vscode screenshot ([#215bc4f](https://github.com/deltabox-studio/toolchain/commit/215bc4f) by [T0chi](https://github.com/T0chi))
|
|
450
468
|
### Styles
|
|
@@ -452,10 +470,8 @@
|
|
|
452
470
|
- Long single-line descriptions from earlier commits; `vp fmt` wraps them back.
|
|
453
471
|
### Tests
|
|
454
472
|
- Emulate custom templates/providers and workspace scaffolding ([#37d370e](https://github.com/deltabox-studio/toolchain/commit/37d370e) by [T0chi](https://github.com/T0chi))
|
|
455
|
-
- Code extension writes) and assert the CLI lists, scaffolds and runs them —
|
|
456
|
-
|
|
457
|
-
assert the workspace does NOT inherit their outputs
|
|
458
|
-
(.github/.husky/.vscode/commitlint.config.mjs).
|
|
473
|
+
- Register a custom local template plus a custom provider (the JSON shape the VS Code extension writes) and assert the CLI lists, scaffolds and runs them — i.e. the payloads the extension's trees consume.
|
|
474
|
+
- Scaffold a workspace into a root that enables the root-only sections, and assert the workspace does NOT inherit their outputs (.github/.husky/.vscode/commitlint.config.mjs).
|
|
459
475
|
### Chores
|
|
460
476
|
#### Vscode
|
|
461
477
|
- Rename the Home "All actions" section to "More actions" ([#b8a2137](https://github.com/deltabox-studio/toolchain/commit/b8a2137) by [T0chi](https://github.com/T0chi))
|
|
@@ -470,24 +486,14 @@
|
|
|
470
486
|
### Bug fixes
|
|
471
487
|
#### Vscode
|
|
472
488
|
- Recompute the Home model when the provider list loads ([#fd6f6f1](https://github.com/deltabox-studio/toolchain/commit/fd6f6f1) by [T0chi](https://github.com/T0chi))
|
|
473
|
-
- The Home "Run Vite+" button is disabled while the Home model's `hasVite` is
|
|
474
|
-
|
|
475
|
-
`dbx providers --json` spawn). A webview rendered before the list resolved was
|
|
476
|
-
never re-posted, so the button could stay disabled from a cold start even though
|
|
477
|
-
the `deltabox.hasVite` context key (command palette) was updated.
|
|
478
|
-
- Recompute the context keys and the Home model whenever the provider tree
|
|
479
|
-
reloads, via its `onDidChangeTreeData` event. Vite+ is always contributed by the
|
|
480
|
-
toolchain, so `hasVite` is true as soon as the list loads.
|
|
489
|
+
- The Home "Run Vite+" button is disabled while the Home model's `hasVite` is false, and that value comes from the asynchronously-loaded provider list (a `dbx providers --json` spawn). A webview rendered before the list resolved was never re-posted, so the button could stay disabled from a cold start even though the `deltabox.hasVite` context key (command palette) was updated.
|
|
490
|
+
- Recompute the context keys and the Home model whenever the provider tree reloads, via its `onDidChangeTreeData` event. Vite+ is always contributed by the toolchain, so `hasVite` is true as soon as the list loads.
|
|
481
491
|
#### Core
|
|
482
492
|
- Split the last-sync timestamp into a gitignored timestamps.json ([#0aa6f77](https://github.com/deltabox-studio/toolchain/commit/0aa6f77) by [T0chi](https://github.com/T0chi))
|
|
483
|
-
- The per-project `manifest.json` embedded `syncedAt`, so every sync rewrote a
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
- to `timestamps.json`, so the next sync migrates a legacy inline value
|
|
488
|
-
automatically (the property is gone from `manifest.json`).
|
|
489
|
-
inline `syncedAt` until that migration runs, so nothing breaks in between.
|
|
490
|
-
only the block's comment was updated.
|
|
493
|
+
- The per-project `manifest.json` embedded `syncedAt`, so every sync rewrote a committed file with a new clock value — noisy diffs in the repo and in every consumer. Move the timestamp out into a sibling, gitignored `.dbx/toolchain/timestamps.json`:
|
|
494
|
+
- `writeManifest` writes only the file list to `manifest.json` and the timestamp to `timestamps.json`, so the next sync migrates a legacy inline value automatically (the property is gone from `manifest.json`).
|
|
495
|
+
- `readManifest`/`readSyncedAt` (and the VS Code reader) fall back to a legacy inline `syncedAt` until that migration runs, so nothing breaks in between.
|
|
496
|
+
- The new file is covered by the existing `.dbx/toolchain/*` gitignore glob; only the block's comment was updated.
|
|
491
497
|
### Documentation
|
|
492
498
|
- Added a video preview of the extension ([#6b0ca40](https://github.com/deltabox-studio/toolchain/commit/6b0ca40) by [T0chi](https://github.com/T0chi))
|
|
493
499
|
|
|
@@ -502,85 +508,51 @@
|
|
|
502
508
|
### Bug fixes
|
|
503
509
|
#### Core
|
|
504
510
|
- Only fall back to tsx when Node cannot load TypeScript ([#c96ae7d](https://github.com/deltabox-studio/toolchain/commit/c96ae7d) by [T0chi](https://github.com/T0chi))
|
|
505
|
-
- The config loader retried every failed native import through `tsx`, so a
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
the config "loaded", no error was recorded, and `dbx sync` exited 0 instead of
|
|
510
|
-
failing (the emulation suite caught this in CI).
|
|
511
|
-
- (`ERR_UNKNOWN_FILE_EXTENSION`, `ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX`); let
|
|
512
|
-
genuine errors (module-not-found, syntax errors, throws) propagate.
|
|
513
|
-
`import('tsx/esm/api')` instead of a build-machine path, and promote `tsx` to
|
|
514
|
-
a runtime dependency so the config-loader fallback works for consumers.
|
|
511
|
+
- The config loader retried every failed native import through `tsx`, so a genuinely broken `dbx.config.*` could be silently loaded as an empty config. On Linux the root build had baked an absolute path to `tsx` into the bundle, which happened to resolve there: tsx elided the unresolvable (unused) import, the config "loaded", no error was recorded, and `dbx sync` exited 0 instead of failing (the emulation suite caught this in CI).
|
|
512
|
+
- Only use the `tsx` fallback for errors that mean Node cannot load TS itself (`ERR_UNKNOWN_FILE_EXTENSION`, `ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX`); let genuine errors (module-not-found, syntax errors, throws) propagate.
|
|
513
|
+
- Unwrap tsx's possibly-nested default export.
|
|
514
|
+
- Keep `tsx` external in the root bundle so `dist` keeps the portable bare `import('tsx/esm/api')` instead of a build-machine path, and promote `tsx` to a runtime dependency so the config-loader fallback works for consumers.
|
|
515
515
|
|
|
516
516
|
## 1.10.0 (October 2026)
|
|
517
517
|
|
|
518
518
|
### New features
|
|
519
519
|
#### Template
|
|
520
520
|
- Scaffold actions, package-manager choice and catalogs ([#6c66c97](https://github.com/deltabox-studio/toolchain/commit/6c66c97) by [T0chi](https://github.com/T0chi))
|
|
521
|
-
- `module` (relative to the template dir, `export default async (ctx) => {}`,
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
when supported: `.yarnrc.yml` (yarn), `pnpm-workspace.yaml` (pnpm),
|
|
528
|
-
`package.json` `workspaces.catalog` (bun); npm pins versions inline.
|
|
529
|
-
task that keeps `.yarnrc.yml` / `pnpm-workspace.yaml` catalogs in sync. It
|
|
530
|
-
only writes a file that is absent or toolchain-managed (marker comment), so a
|
|
531
|
-
hand-written file is never clobbered; bun/npm warn.
|
|
532
|
-
the manager.
|
|
533
|
-
config reference/schema/types regenerated.
|
|
521
|
+
- Templates can declare post-scaffold `actions`: a `builtin` (`install`), a JS `module` (relative to the template dir, `export default async (ctx) => {}`, not copied to the output) or a shell `command`. Actions run through the same pipeline everywhere (CLI prompts / `--action <id>`, extension prompts, programmatic API `actions: string[]`).
|
|
522
|
+
- Built-in templates declare an opt-in **Install dependencies?** action (`builtin: 'install'`, default off) and a `packageManager` input (yarn default | pnpm | npm | bun).
|
|
523
|
+
- Scaffolds write the chosen manager's catalog file and reference `catalog:` when supported: `.yarnrc.yml` (yarn), `pnpm-workspace.yaml` (pnpm), `package.json` `workspaces.catalog` (bun); npm pins versions inline.
|
|
524
|
+
- Add a `catalogs` config section (`packages` + `named`) and a `catalogs` sync task that keeps `.yarnrc.yml` / `pnpm-workspace.yaml` catalogs in sync. It only writes a file that is absent or toolchain-managed (marker comment), so a hand-written file is never clobbered; bun/npm warn.
|
|
525
|
+
- `project:init*` gains `--package-manager`; the extension scaffold prompts for the manager.
|
|
526
|
+
- Docs: templates (inputs + actions), project (package manager & catalogs), config reference/schema/types regenerated.
|
|
534
527
|
- Generic builtins + inputs + Vite+ templates; resilient config loading ([#fb8d7cc](https://github.com/deltabox-studio/toolchain/commit/fb8d7cc) by [T0chi](https://github.com/T0chi))
|
|
535
|
-
- `catalog:` protocol from generated projects, add a pinned
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
builtins; document it in the Templates guide.
|
|
542
|
-
`@deltabox/toolchain/tsdown` (the private `@deltabox/toolchain-tsdown` package
|
|
543
|
-
is never published).
|
|
544
|
-
stderr instead of aborting unrelated commands (`template:list`, `providers`,
|
|
545
|
-
...), so the extension views no longer empty out after scaffolding; `sync`
|
|
546
|
-
still fails on a broken config (and `--recursive` reports per project).
|
|
547
|
-
choice, and add a "Need help? Go to documentation" link to the Home view.
|
|
528
|
+
- Templates: drop Turbo (no `turbo.json`, dep or scripts) and the repo-internal `catalog:` protocol from generated projects, add a pinned `@deltabox/toolchain` devDependency, and generate a `dbx.config.ts` with only the `project` section — every other section is now opt-in.
|
|
529
|
+
- Add a bare `monorepo` builtin (no example workspace), keep `monorepo-example`, and expose every Vite+ template (`vite-plus-monorepo`, `-application`, `-library`, `-generator`).
|
|
530
|
+
- Add a template input pipeline (`variables` with prompt/default/options/required) shared by the CLI, the programmatic API, the VS Code extension and the builtins; document it in the Templates guide.
|
|
531
|
+
- Fix the generated workspace `tsdown.config.ts` to import `@deltabox/toolchain/tsdown` (the private `@deltabox/toolchain-tsdown` package is never published).
|
|
532
|
+
- Load `dbx.config.*` tolerantly in the CLI: a broken config now warns on stderr instead of aborting unrelated commands (`template:list`, `providers`, ...), so the extension views no longer empty out after scaffolding; `sync` still fails on a broken config (and `--recursive` reports per project).
|
|
533
|
+
- Extension: prompt for template inputs, offer a bare/example monorepo scaffold choice, and add a "Need help? Go to documentation" link to the Home view.
|
|
548
534
|
### Bug fixes
|
|
549
535
|
- Issues found emulating the extension + command palette ([#1049afa](https://github.com/deltabox-studio/toolchain/commit/1049afa) by [T0chi](https://github.com/T0chi))
|
|
550
536
|
- Emulated the extension (bundled and portal `dbx`) against a consumer workspace:
|
|
551
|
-
- name ("No version specified for X") for yarn/pnpm/npm/bun, so `projectToPackageJson`
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
`@deltabox/toolchain/vite` no longer runs `resolveDbx` at module load, so every
|
|
558
|
-
command stopped printing spurious `dbx`-resolution warnings.
|
|
559
|
-
option").
|
|
560
|
-
template), so the Managed Files and Home views populate instead of staying empty.
|
|
537
|
+
- `packageManager` is never written without a version. Corepack rejects a bare name ("No version specified for X") for yarn/pnpm/npm/bun, so `projectToPackageJson` skips the field when no version is known, and scaffolds/`project:config` seed a default version (`DEFAULT_PACKAGE_MANAGER_VERSIONS`) or the existing package.json manager. `renderToolchainConfig` always emits `packageManagerVersion`.
|
|
538
|
+
- `resolveVp`'s `npx` fallback names the bin (`npx --yes --package vite-plus vp`): `vite-plus` ships two bins, so `npx vite-plus` failed with "could not determine executable to run" (broke `dbx vite:*`).
|
|
539
|
+
- `DBX_TASKS` computes its commands lazily (getters): importing `@deltabox/toolchain/vite` no longer runs `resolveDbx` at module load, so every command stopped printing spurious `dbx`-resolution warnings.
|
|
540
|
+
- `template:info` accepts `--json` (the extension passed it; it errored "unknown option").
|
|
541
|
+
- The extension syncs right after a successful scaffold (project/root/workspace/ template), so the Managed Files and Home views populate instead of staying empty.
|
|
542
|
+
- Regression tests for the version-less `packageManager` and the versioned scaffold.
|
|
561
543
|
#### Project
|
|
562
544
|
- Preserve scoped package name and never delete catalog files ([#dbb0b21](https://github.com/deltabox-studio/toolchain/commit/dbb0b21) by [T0chi](https://github.com/T0chi))
|
|
563
545
|
- Found by exercising a portal-linked consumer workspace:
|
|
564
|
-
- defines `name` without `scope` (eg. a nested workspace), instead of renaming
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
stops producing it (eg. the user replaces it with a hand-written one) — it
|
|
568
|
-
already refused to overwrite it, but `runSync` would still remove it.
|
|
546
|
+
- `projectSyncTask` now falls back to the `package.json` scope when a config defines `name` without `scope` (eg. a nested workspace), instead of renaming `@acme/a` to `a`. Mirrors the token resolution in the config loader.
|
|
547
|
+
- `catalogsSyncTask` declares `keep: ['.yarnrc.yml', 'pnpm-workspace.yaml']`, so a previously toolchain-managed catalog file is never deleted when the task stops producing it (eg. the user replaces it with a hand-written one) — it already refused to overwrite it, but `runSync` would still remove it.
|
|
548
|
+
- Regression tests for both.
|
|
569
549
|
### Tests
|
|
570
550
|
- Add a real CLI emulation suite under tests/emulate ([#2c76d66](https://github.com/deltabox-studio/toolchain/commit/2c76d66) by [T0chi](https://github.com/T0chi))
|
|
571
|
-
- extension and command palette drive) in a per-test scratch workspace under
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
post-scaffold extension flow.
|
|
577
|
-
boundary and never inherits the toolchain repo's own config/manifest. Scratch
|
|
578
|
-
dirs are removed after every test (pass or fail), once more on `afterAll`, and
|
|
579
|
-
again on process exit; the repo's own manifest is snapshotted and restored so
|
|
580
|
-
the working tree stays clean.
|
|
581
|
-
always execute against a fresh CLI bundle.
|
|
582
|
-
emitting a dangling `catalog:` — Bun's catalog lives in `package.json`
|
|
583
|
-
`workspaces.catalog`, which only a monorepo root writes. Regression tests added.
|
|
551
|
+
- `tests/emulate.test.ts` spawns the **built** `dbx` CLI (the surface the VS Code extension and command palette drive) in a per-test scratch workspace under `tests/emulate/<id>` and asserts on real behavior: builtins + inputs/actions, per-package-manager scaffolding (catalog vs pinned), bare/nested monorepos, custom module/command actions, the opt-in install action, catalog sync + never-delete, config-load resilience, `template:info --json`, and the post-scaffold extension flow.
|
|
552
|
+
- Each scratch root carries an empty `.git` so `dbx` treats it as a repository boundary and never inherits the toolchain repo's own config/manifest. Scratch dirs are removed after every test (pass or fail), once more on `afterAll`, and again on process exit; the repo's own manifest is snapshotted and restored so the working tree stays clean.
|
|
553
|
+
- `.gitignore`: ignore `tests/emulate/*` (the scratch content).
|
|
554
|
+
- root `test` script now runs `vp run build:root` first, so the emulation tests always execute against a fresh CLI bundle.
|
|
555
|
+
- fix(project): a single Bun project now pins its dependencies instead of emitting a dangling `catalog:` — Bun's catalog lives in `package.json` `workspaces.catalog`, which only a monorepo root writes. Regression tests added.
|
|
584
556
|
|
|
585
557
|
## 1.9.2 (October 2026)
|
|
586
558
|
|
|
@@ -592,75 +564,36 @@
|
|
|
592
564
|
### CI
|
|
593
565
|
#### Vscode
|
|
594
566
|
- Target the release environment by name (drop resourceType) ([#2bbd25a](https://github.com/deltabox-studio/toolchain/commit/2bbd25a) by [T0chi](https://github.com/T0chi))
|
|
595
|
-
- `resourceType` only accepts `virtualMachine`/`Kubernetes`. `resourceType: none`
|
|
596
|
-
made the deployment job look for a resource of type `none`, so it failed with
|
|
597
|
-
"No resource were found in the environment ... ResourceType Undefined". Use the
|
|
598
|
-
string form `environment: 'release'`, which records the deployment against the
|
|
599
|
-
resource-less environment and still applies its approvals/checks.
|
|
567
|
+
- `resourceType` only accepts `virtualMachine`/`Kubernetes`. `resourceType: none` made the deployment job look for a resource of type `none`, so it failed with "No resource were found in the environment ... ResourceType Undefined". Use the string form `environment: 'release'`, which records the deployment against the resource-less environment and still applies its approvals/checks.
|
|
600
568
|
|
|
601
569
|
## 1.9.0 (October 2026)
|
|
602
570
|
|
|
603
571
|
### New features
|
|
604
572
|
#### Changelog
|
|
605
573
|
- Allow a raw YAML string as a workflow setting ([#aa0e1b7](https://github.com/deltabox-studio/toolchain/commit/aa0e1b7) by [T0chi](https://github.com/T0chi))
|
|
606
|
-
- `changelog.workflows.<id>` now accepts a raw YAML string in addition to a
|
|
607
|
-
|
|
608
|
-
workflow file: no default merge, no token replacement and no generated header,
|
|
609
|
-
and the `changelog.branches` defaults don't apply (it defines its own triggers).
|
|
610
|
-
An empty string disables the workflow.
|
|
611
|
-
- Docs: add a "Workflows" section covering the three forms, and a "Writing commit
|
|
612
|
-
messages" section warning about shell escaping (PowerShell backtick escapes and
|
|
613
|
-
bash command substitution) and AI/LLM-drafted messages introducing stray control
|
|
614
|
-
characters, curly quotes, dashes and other typographic characters. Regenerate
|
|
615
|
-
the schema, types and docs reference.
|
|
574
|
+
- `changelog.workflows.<id>` now accepts a raw YAML string in addition to a boolean or a `WorkflowConfig` object. A raw string is written verbatim as the workflow file: no default merge, no token replacement and no generated header, and the `changelog.branches` defaults don't apply (it defines its own triggers). An empty string disables the workflow.
|
|
575
|
+
- Docs: add a "Workflows" section covering the three forms, and a "Writing commit messages" section warning about shell escaping (PowerShell backtick escapes and bash command substitution) and AI/LLM-drafted messages introducing stray control characters, curly quotes, dashes and other typographic characters. Regenerate the schema, types and docs reference.
|
|
616
576
|
### CI
|
|
617
577
|
#### Vscode
|
|
618
578
|
- Skip the release when the extension version is already published ([#0d54cfe](https://github.com/deltabox-studio/toolchain/commit/0d54cfe) by [T0chi](https://github.com/T0chi))
|
|
619
|
-
- `vsce publish` fails with "already exists" when `deltabox.toolchain-vscode@<version>`
|
|
620
|
-
is already on the Marketplace, failing the whole pipeline. Add a `Check` stage
|
|
621
|
-
before `Build` that reads the version from `packages/vscode/package.json`,
|
|
622
|
-
queries the Marketplace `extensionquery` API, and exposes an `alreadyPublished`
|
|
623
|
-
stage output. `Build` and `Release` now depend on `Check` and skip when it is
|
|
624
|
-
`true` (a failed query assumes "not published" so a release is never silently
|
|
625
|
-
skipped).
|
|
579
|
+
- `vsce publish` fails with "already exists" when `deltabox.toolchain-vscode@<version>` is already on the Marketplace, failing the whole pipeline. Add a `Check` stage before `Build` that reads the version from `packages/vscode/package.json`, queries the Marketplace `extensionquery` API, and exposes an `alreadyPublished` stage output. `Build` and `Release` now depend on `Check` and skip when it is `true` (a failed query assumes "not published" so a release is never silently skipped).
|
|
626
580
|
### Chores
|
|
627
581
|
#### Changelog
|
|
628
582
|
- Repair escaped text in the 1.8.0 entry ([#587e47d](https://github.com/deltabox-studio/toolchain/commit/587e47d) by [T0chi](https://github.com/T0chi))
|
|
629
|
-
- The shared/core/project/tsconfig/vite commits were authored with PowerShell
|
|
630
|
-
`\``-escaped backticks, so their bodies carried `\` + control-character
|
|
631
|
-
artifacts (e.g. `` `r `` -> `\`+CR, `` `b `` -> backspace). The changelog
|
|
632
|
-
sanitizer stripped the control characters but left the stray backslashes and
|
|
633
|
-
dropped letters, so the 1.8.0 entry read `esolveVite`, `\{ ... }\`, `epo\`, etc.
|
|
634
|
-
Restore the intended text (backticked code, `resolveVite`, `repo`/`repository`,
|
|
635
|
-
`name`/`scope`/`description`/`type`, `rootFile`/`defaultFile`/`buildFile`).
|
|
583
|
+
- The shared/core/project/tsconfig/vite commits were authored with PowerShell `\``-escaped backticks, so their bodies carried `\` + control-character artifacts (e.g. `` `r `` -> `\`+CR, `` `b `` -> backspace). The changelog sanitizer stripped the control characters but left the stray backslashes and dropped letters, so the 1.8.0 entry read `esolveVite`, `\{ ... }\`, `epo\`, etc. Restore the intended text (backticked code, `resolveVite`, `repo`/`repository`, `name`/`scope`/`description`/`type`, `rootFile`/`defaultFile`/`buildFile`).
|
|
636
584
|
|
|
637
585
|
## 1.8.0 (October 2026)
|
|
638
586
|
|
|
639
587
|
### New features
|
|
640
588
|
#### Cli
|
|
641
589
|
- Expose the sync tasks to commands and keep --json output clean ([#1e4ecec](https://github.com/deltabox-studio/toolchain/commit/1e4ecec) by [T0chi](https://github.com/T0chi))
|
|
642
|
-
- The command context now carries `syncTasks` (`defaultSyncTasks()`) so a package
|
|
643
|
-
command such as `migrate` can regenerate managed files without depending on
|
|
644
|
-
every sync package. Skip the update-check notice when `--json` is passed so it
|
|
645
|
-
never lands on stdout and corrupts machine output.
|
|
590
|
+
- The command context now carries `syncTasks` (`defaultSyncTasks()`) so a package command such as `migrate` can regenerate managed files without depending on every sync package. Skip the update-check notice when `--json` is passed so it never lands on stdout and corrupts machine output.
|
|
646
591
|
#### Changelog
|
|
647
592
|
- Per-workspace changelogs and configurable branches ([#0aa329c](https://github.com/deltabox-studio/toolchain/commit/0aa329c) by [T0chi](https://github.com/T0chi))
|
|
648
|
-
- Scan a workspace's own commits (plus its transitive dependencies) via
|
|
649
|
-
`relatedWorkspacePaths` and create a missing workspace `CHANGELOG.md` instead of
|
|
650
|
-
skipping it. `changelog.branches.main`/`dev` accept a string or an array, `dev`
|
|
651
|
-
defaults to `main`, and the branch list is injected into the generated
|
|
652
|
-
workflows. Add `changelog.commitlint.dir` for a custom commitlint config
|
|
653
|
-
location. Release notes aggregate every changelog entry since the last tag.
|
|
593
|
+
- Scan a workspace's own commits (plus its transitive dependencies) via `relatedWorkspacePaths` and create a missing workspace `CHANGELOG.md` instead of skipping it. `changelog.branches.main`/`dev` accept a string or an array, `dev` defaults to `main`, and the branch list is injected into the generated workflows. Add `changelog.commitlint.dir` for a custom commitlint config location. Release notes aggregate every changelog entry since the last tag.
|
|
654
594
|
#### Migrate
|
|
655
595
|
- Recursive, interactive migration and post-migration sync ([#bb87b33](https://github.com/deltabox-studio/toolchain/commit/bb87b33) by [T0chi](https://github.com/T0chi))
|
|
656
|
-
- `dbx migrate` is now `--recursive` (off by default): it discovers the projects
|
|
657
|
-
under the root and, on a TTY, prompts a multi-select with an "All projects"
|
|
658
|
-
option. The `vite` migration creates a fresh nested `dbx.config.ts` (wrapped in
|
|
659
|
-
`defineConfig`) when the project has none, and removes the folded
|
|
660
|
-
`vite.config.*` unless `--ignore-vite-config-file`. `--write` also regenerates
|
|
661
|
-
the project's managed files unless `--ignore-managed-files`, dropping the
|
|
662
|
-
changelog task when `--ignore-changelog`; removals are reported. Adds
|
|
663
|
-
`@clack/prompts`, `@deltabox/toolchain-core` and `glob` to the package.
|
|
596
|
+
- `dbx migrate` is now `--recursive` (off by default): it discovers the projects under the root and, on a TTY, prompts a multi-select with an "All projects" option. The `vite` migration creates a fresh nested `dbx.config.ts` (wrapped in `defineConfig`) when the project has none, and removes the folded `vite.config.*` unless `--ignore-vite-config-file`. `--write` also regenerates the project's managed files unless `--ignore-managed-files`, dropping the changelog task when `--ignore-changelog`; removals are reported. Adds `@clack/prompts`, `@deltabox/toolchain-core` and `glob` to the package.
|
|
664
597
|
#### Vite
|
|
665
598
|
- Accept a single options object in resolveVite ([#2e2384b](https://github.com/deltabox-studio/toolchain/commit/2e2384b) by [T0chi](https://github.com/T0chi))
|
|
666
599
|
- `resolveVite(options?: DbxConfig & ResolveViteOptions)` replaces the two-argument form. The generated shim passes `{ cwd: import.meta.dirname }` so a nested shim resolves its own `dbx.config.*` instead of the process cwd's.
|
|
@@ -679,52 +612,25 @@
|
|
|
679
612
|
### Bug fixes
|
|
680
613
|
#### Vscode
|
|
681
614
|
- Resolve the bundled CLI and gate commands on availability ([#5220ed3](https://github.com/deltabox-studio/toolchain/commit/5220ed3) by [T0chi](https://github.com/T0chi))
|
|
682
|
-
- Capture the running extension's path and version at activation instead of
|
|
683
|
-
hardcoding the id (`deltabox.toolchain` is stale: the id is
|
|
684
|
-
`<publisher>.<name>`), so `bundledCliEntry()`/`pinnedToolchainSpec()` find the
|
|
685
|
-
shipped `dbx.cjs` and Providers/Templates/scaffolding work without a
|
|
686
|
-
project-local install. Disable the sync commands (`deltabox.canSync`) and the
|
|
687
|
-
Vite+ commands (`deltabox.hasVite`) via context keys + command `enablement` and
|
|
688
|
-
the Home buttons when there is nothing to sync / the provider is unavailable.
|
|
689
|
-
Exclude `dbx.config.ts` and `.dbx/**` from the VSIX.
|
|
615
|
+
- Capture the running extension's path and version at activation instead of hardcoding the id (`deltabox.toolchain` is stale: the id is `<publisher>.<name>`), so `bundledCliEntry()`/`pinnedToolchainSpec()` find the shipped `dbx.cjs` and Providers/Templates/scaffolding work without a project-local install. Disable the sync commands (`deltabox.canSync`) and the Vite+ commands (`deltabox.hasVite`) via context keys + command `enablement` and the Home buttons when there is nothing to sync / the provider is unavailable. Exclude `dbx.config.ts` and `.dbx/**` from the VSIX.
|
|
690
616
|
### Documentation
|
|
691
617
|
- Add guides for every config section and the llms output ([#4c231dc](https://github.com/deltabox-studio/toolchain/commit/4c231dc) by [T0chi](https://github.com/T0chi))
|
|
692
|
-
- Add per-section guides (project, biome, vite, watch, logger, tsconfig), refresh
|
|
693
|
-
the CLI/config/monorepo/VS Code/api pages and the sidebar, and wire
|
|
694
|
-
`vitepress-plugin-llms` with `apps/docs/llms.md` plus the script that copies the
|
|
695
|
-
generated `llms.txt`/`llms-full.txt` to the repo root.
|
|
618
|
+
- Add per-section guides (project, biome, vite, watch, logger, tsconfig), refresh the CLI/config/monorepo/VS Code/api pages and the sidebar, and wire `vitepress-plugin-llms` with `apps/docs/llms.md` plus the script that copies the generated `llms.txt`/`llms-full.txt` to the repo root.
|
|
696
619
|
### Build system
|
|
697
620
|
- Make the published package installable ([#b2597ee](https://github.com/deltabox-studio/toolchain/commit/b2597ee) by [T0chi](https://github.com/T0chi))
|
|
698
|
-
- npm runs a dependency's `postinstall` on install, so the repo-only
|
|
699
|
-
`husky && node scripts/bootstrap.mjs` broke every consumer (and global) install
|
|
700
|
-
with `'husky' is not recognized`. Move the logic into `scripts/bootstrap.mjs`,
|
|
701
|
-
publish it, and guard every checkout-only step: husky runs only when `.husky`
|
|
702
|
-
exists and the dist build only when `packages/` exists. A consumer install is
|
|
703
|
-
now a clean no-op.
|
|
621
|
+
- npm runs a dependency's `postinstall` on install, so the repo-only `husky && node scripts/bootstrap.mjs` broke every consumer (and global) install with `'husky' is not recognized`. Move the logic into `scripts/bootstrap.mjs`, publish it, and guard every checkout-only step: husky runs only when `.husky` exists and the dist build only when `packages/` exists. A consumer install is now a clean no-op.
|
|
704
622
|
### CI
|
|
705
623
|
- Aggregate release notes and refresh the generated workflows ([#9426a40](https://github.com/deltabox-studio/toolchain/commit/9426a40) by [T0chi](https://github.com/T0chi))
|
|
706
|
-
- The release workflow now extracts every changelog entry since the last tag, and
|
|
707
|
-
the generated `ci.yml`/`release.yml` are regenerated from `dbx.config.ts`.
|
|
708
|
-
Includes the hand-written `release-vscode.yml` pipeline.
|
|
624
|
+
- The release workflow now extracts every changelog entry since the last tag, and the generated `ci.yml`/`release.yml` are regenerated from `dbx.config.ts`. Includes the hand-written `release-vscode.yml` pipeline.
|
|
709
625
|
#### Vscode
|
|
710
626
|
- Fix the release-vscode Azure Pipelines trigger ([#b59964c](https://github.com/deltabox-studio/toolchain/commit/b59964c) by [T0chi](https://github.com/T0chi))
|
|
711
|
-
- `pr` is a top-level pipeline keyword, not a child of `trigger` (whose full
|
|
712
|
-
syntax only accepts `batch`, `branches`, `paths` and `tags`), so `trigger.pr`
|
|
713
|
-
was reported as an unexpected property. Move `pr: none` to the top level and
|
|
714
|
-
trigger on `v*` tags through `tags` (with `branches: exclude: ['*']` for a
|
|
715
|
-
tag-only trigger) instead of the invalid `branches.include: refs/tags/v*`.
|
|
627
|
+
- `pr` is a top-level pipeline keyword, not a child of `trigger` (whose full syntax only accepts `batch`, `branches`, `paths` and `tags`), so `trigger.pr` was reported as an unexpected property. Move `pr: none` to the top level and trigger on `v*` tags through `tags` (with `branches: exclude: ['*']` for a tag-only trigger) instead of the invalid `branches.include: refs/tags/v*`.
|
|
716
628
|
### Chores
|
|
717
629
|
- Self-host nested dbx configs across the workspaces ([#003cb9f](https://github.com/deltabox-studio/toolchain/commit/003cb9f) by [T0chi](https://github.com/T0chi))
|
|
718
|
-
- Every workspace now has its own `dbx.config.ts` (holding its Vite Task
|
|
719
|
-
definitions) and a generated `vite.config.ts` shim, plus its own tracked
|
|
720
|
-
manifest. The root gains a `@deltabox/toolchain` `portal:.` self-link so the
|
|
721
|
-
shims resolve `@deltabox/toolchain/vite`, and `.gitignore` keeps nested
|
|
722
|
-
manifests while ignoring the rest. The root `tsconfig.monorepo.json` is renamed
|
|
723
|
-
to `tsconfig.workspaces.json`.
|
|
630
|
+
- Every workspace now has its own `dbx.config.ts` (holding its Vite Task definitions) and a generated `vite.config.ts` shim, plus its own tracked manifest. The root gains a `@deltabox/toolchain` `portal:.` self-link so the shims resolve `@deltabox/toolchain/vite`, and `.gitignore` keeps nested manifests while ignoring the rest. The root `tsconfig.monorepo.json` is renamed to `tsconfig.workspaces.json`.
|
|
724
631
|
#### Deps
|
|
725
632
|
- Refresh the lockfile ([#420c805](https://github.com/deltabox-studio/toolchain/commit/420c805) by [T0chi](https://github.com/T0chi))
|
|
726
|
-
- Covers `vitepress-plugin-llms` (docs), `@clack/prompts`/`glob`/core (migrate)
|
|
727
|
-
and the root `@deltabox/toolchain` `portal:.` self-link.
|
|
633
|
+
- Covers `vitepress-plugin-llms` (docs), `@clack/prompts`/`glob`/core (migrate) and the root `@deltabox/toolchain` `portal:.` self-link.
|
|
728
634
|
|
|
729
635
|
### Package changes
|
|
730
636
|
#### Added
|
|
@@ -741,7 +647,7 @@
|
|
|
741
647
|
|
|
742
648
|
### CI
|
|
743
649
|
#### Vscode
|
|
744
|
-
- Upload `release-vscode.yml` pipeline ([#3080357](https://github.com/deltabox-studio/toolchain/
|
|
650
|
+
- Upload `release-vscode.yml` pipeline ([#3080357](https://github.com/deltabox-studio/toolchain/commit/3080357) by [T0chi](https://github.com/T0chi))
|
|
745
651
|
|
|
746
652
|
## 1.7.6 (October 2026)
|
|
747
653
|
|
|
@@ -778,7 +684,7 @@
|
|
|
778
684
|
- Set up ci with `Azure Pipelines` ([#5bc736f](https://github.com/deltabox-studio/toolchain/commit/5bc736f) by [T0chi](https://github.com/T0chi))
|
|
779
685
|
- [skip ci]
|
|
780
686
|
### Chores
|
|
781
|
-
- Remove `azure-pipelines.yml` ([#7965965](https://github.com/deltabox-studio/toolchain/
|
|
687
|
+
- Remove `azure-pipelines.yml` ([#7965965](https://github.com/deltabox-studio/toolchain/commit/7965965) by [T0chi](https://github.com/T0chi))
|
|
782
688
|
|
|
783
689
|
## 1.7.1 (October 2026)
|
|
784
690
|
|
|
@@ -797,7 +703,7 @@
|
|
|
797
703
|
- Add stripControlChars/stripEscapeArtifacts/sanitizeText to the shared string utils: they strip the predictable shell-escape artifacts (a backslash before a control character) and any remaining bare control characters, while leaving ordinary backslashes and normal whitespace alone. Apply them to the config markdown generator's descriptions and the changelog commit reader/formatter, and cap generated headings at h6 (VitePress dropped the literal #######).
|
|
798
704
|
### Chores
|
|
799
705
|
#### Changelog
|
|
800
|
-
- Repair escaped commit text and label code refs ([#1425419](https://github.com/deltabox-studio/toolchain/
|
|
706
|
+
- Repair escaped commit text and label code refs ([#1425419](https://github.com/deltabox-studio/toolchain/commit/1425419) by [T0chi](https://github.com/T0chi))
|
|
801
707
|
- PowerShell interpreted the escaped backticks in the commit bodies as control-character escapes, so the changelog carried backslash+control artifacts (TAB/CR/LF/BS/FF/VT) and mojibake. Repair the affected 1.4.1-1.6.1 entries and add backticks around commands, paths, flags, types and identifiers throughout the file.
|
|
802
708
|
|
|
803
709
|
## 1.6.1 (October 2026)
|
|
@@ -837,7 +743,7 @@
|
|
|
837
743
|
|
|
838
744
|
### New features
|
|
839
745
|
#### Changelog
|
|
840
|
-
- Emit the husky `commit-msg` hook for consumers ([#6898386](https://github.com/deltabox-studio/toolchain/
|
|
746
|
+
- Emit the husky `commit-msg` hook for consumers ([#6898386](https://github.com/deltabox-studio/toolchain/commit/6898386) by [T0chi](https://github.com/T0chi))
|
|
841
747
|
- `dbx sync` now writes `.husky/commit-msg` (running `commitlint`) alongside the workflows and `commitlint.config.mjs`, so consumers using the Conventional-Commits CI lint commits locally too. The docs recommend `postinstall: husky` (Yarn Berry never runs `prepare`) and `.husky/* text eol=lf` (a trailing CR breaks the hook).
|
|
842
748
|
|
|
843
749
|
## 1.4.1 (October 2026)
|
|
@@ -854,63 +760,46 @@
|
|
|
854
760
|
|
|
855
761
|
### New features
|
|
856
762
|
- Render the `dbx` CLI with `clack`, author the Vite+ config in `dbx.config` ([#fb8b9ef](https://github.com/deltabox-studio/toolchain/commit/fb8b9ef) by [T0chi](https://github.com/T0chi))
|
|
857
|
-
-
|
|
858
|
-
|
|
763
|
+
- resolveVite() + a generated vite.config.ts shim (no drift); dbx migrate folds vite.config.ts in and adds the fmt ignore; dbx resolves its own binary first
|
|
764
|
+
- render dbx output with @clack/prompts (logger, intro/outro, create prompts) and colour Commander's help
|
|
765
|
+
- fix the Toolchain* typecheck errors and stale tsdown rename leftovers
|
|
766
|
+
- add a dist bootstrap so the generated shim resolves on a fresh checkout
|
|
859
767
|
#### Vscode
|
|
860
768
|
- Add Providers and Templates views ([#9aa6d12](https://github.com/deltabox-studio/toolchain/commit/9aa6d12) by [T0chi](https://github.com/T0chi))
|
|
861
|
-
-
|
|
862
|
-
|
|
863
|
-
|
|
769
|
+
- Providers: lists providers (dbx providers --json + a custom registry) with add/remove/run-command/open-homepage/copy-id actions
|
|
770
|
+
- Templates: lists templates with add/remove-source/create/info actions
|
|
771
|
+
- custom provider registry (.dbx/toolchain/providers.json) merged into toolchainProviders(), so a registered provider's commands become dbx commands
|
|
772
|
+
- viewsWelcome empty states; view order Home -> Providers -> Projects -> Templates -> Managed Files
|
|
864
773
|
#### Vite
|
|
865
774
|
- Drive `dbx` from the `dbx()` plugin, drop `defineDbxConfig` ([#8d11557](https://github.com/deltabox-studio/toolchain/commit/8d11557) by [T0chi](https://github.com/T0chi))
|
|
866
|
-
- The Vite/Vite+ integration is now the `dbx()` plugin plus spreading `DBX_TASKS` into
|
|
867
|
-
|
|
868
|
-
- `
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
- Remove the `defineDbxConfig` wrapper (and `DbxViteConfig`) and update the README, the
|
|
873
|
-
Providers guide and the API reference.
|
|
874
|
-
- Author the Vite+ config in `dbx.config`, generate `vite.config.ts` ([#9885225](https://github.com/deltabox-studio/toolchain/issues/9885225) by [T0chi](https://github.com/T0chi))
|
|
875
|
-
- `toolchain.vite` now holds the whole Vite+ config (a loose object) with a
|
|
876
|
-
`config: false` opt-out, and `dbx sync` generates the managed root
|
|
877
|
-
`vite.config.ts` from it, so `dbx.config.*` is the only hand-authored root config.
|
|
878
|
-
- Add `dbx migrate --from vite` (auto-detected): it extracts the object passed to
|
|
879
|
-
`defineConfig` in an existing root `vite.config.ts` and folds it into `dbx.config.*`'s
|
|
880
|
-
`toolchain.vite`, refusing configs it cannot migrate faithfully.
|
|
775
|
+
- The Vite/Vite+ integration is now the `dbx()` plugin plus spreading `DBX_TASKS` into `run.tasks`, so the consumer's own `vite` config stays the config:
|
|
776
|
+
- `export default defineConfig({` `plugins: [dbx()],` `run: { tasks: { ...DBX_TASKS } },` `});`
|
|
777
|
+
- Remove the `defineDbxConfig` wrapper (and `DbxViteConfig`) and update the README, the Providers guide and the API reference.
|
|
778
|
+
- Author the Vite+ config in `dbx.config`, generate `vite.config.ts` ([#9885225](https://github.com/deltabox-studio/toolchain/commit/9885225) by [T0chi](https://github.com/T0chi))
|
|
779
|
+
- `toolchain.vite` now holds the whole Vite+ config (a loose object) with a `config: false` opt-out, and `dbx sync` generates the managed root `vite.config.ts` from it, so `dbx.config.*` is the only hand-authored root config.
|
|
780
|
+
- Add `dbx migrate --from vite` (auto-detected): it extracts the object passed to `defineConfig` in an existing root `vite.config.ts` and folds it into `dbx.config.*`'s `toolchain.vite`, refusing configs it cannot migrate faithfully.
|
|
881
781
|
- The config-types generator now honors `.catchall`, emitting an index signature.
|
|
882
782
|
#### Config
|
|
883
783
|
- Expose the Vite+ config type, rename `Tooling*` to `Toolchain*` ([#088de56](https://github.com/deltabox-studio/toolchain/commit/088de56) by [T0chi](https://github.com/T0chi))
|
|
884
|
-
- `ToolchainViteConfig` is now Vite+ `ViteUserConfig` intersected with the managed
|
|
885
|
-
|
|
886
|
-
generator gains a hand-written type override plus an imports block, used for the
|
|
887
|
-
vite type, and `vite-plus` becomes an optional peer dependency.
|
|
888
|
-
- Rename every `Tooling*` type, schema id and identifier to `Toolchain*`. That covers
|
|
889
|
-
the config schema ids, `CONFIG_TYPE_SCHEMAS` keys, the provider/migration models
|
|
890
|
-
and the CLI helpers (`toolchainConfigSchema`, `loadToolchainConfig`,
|
|
891
|
-
`toolchainProviders`, `registerToolchainCommands`). Regenerated types/schema/docs.
|
|
784
|
+
- `ToolchainViteConfig` is now Vite+ `ViteUserConfig` intersected with the managed `config?: boolean` opt-out, instead of a generated loose object. The config-types generator gains a hand-written type override plus an imports block, used for the vite type, and `vite-plus` becomes an optional peer dependency.
|
|
785
|
+
- Rename every `Tooling*` type, schema id and identifier to `Toolchain*`. That covers the config schema ids, `CONFIG_TYPE_SCHEMAS` keys, the provider/migration models and the CLI helpers (`toolchainConfigSchema`, `loadToolchainConfig`, `toolchainProviders`, `registerToolchainCommands`). Regenerated types/schema/docs.
|
|
892
786
|
### Bug fixes
|
|
893
787
|
#### Deps
|
|
894
788
|
- Sync the lockfile for `@clack/prompts` ([#568a7c6](https://github.com/deltabox-studio/toolchain/commit/568a7c6) by [T0chi](https://github.com/T0chi))
|
|
895
|
-
- The lockfile was missing the `@clack/prompts` entry for `packages/shared` and
|
|
896
|
-
`packages/template`, so `yarn install --immutable` failed in CI (YN0028).
|
|
789
|
+
- The lockfile was missing the `@clack/prompts` entry for `packages/shared` and `packages/template`, so `yarn install --immutable` failed in CI (YN0028).
|
|
897
790
|
### Refactors
|
|
898
791
|
- Rename Ox to Oxc across the project ([#39b37d3](https://github.com/deltabox-studio/toolchain/commit/39b37d3) by [T0chi](https://github.com/T0chi))
|
|
899
|
-
- (
|
|
792
|
+
- migrate: the target tool value is 'oxc' and the ids are *-to-oxc (Oxfmt/Oxlint and .oxlintrc/.oxfmtrc are unchanged)
|
|
793
|
+
- docs + README prose
|
|
900
794
|
### Documentation
|
|
901
795
|
- Cover the clack CLI output, prompts and `dbx` binary resolution ([#f45ed3f](https://github.com/deltabox-studio/toolchain/commit/f45ed3f) by [T0chi](https://github.com/T0chi))
|
|
902
796
|
- Document the Vite+ config type and the `Toolchain*` names ([#1e70950](https://github.com/deltabox-studio/toolchain/commit/1e70950) by [T0chi](https://github.com/T0chi))
|
|
903
|
-
- Note that `toolchain.vite` is typed as Vite's `UserConfig` as augmented by Vite+
|
|
904
|
-
(`ToolchainViteConfig`), and list `ToolchainViteConfig` among the shared config
|
|
905
|
-
types. Covers the unreleased changes since v1.3.1 together with the sections the
|
|
906
|
-
feature commits already added (the Vite+ config in `dbx.config`, the generated
|
|
907
|
-
`vite.config.ts`, the vite migration and the `dbx` plugin).
|
|
797
|
+
- Note that `toolchain.vite` is typed as Vite's `UserConfig` as augmented by Vite+ (`ToolchainViteConfig`), and list `ToolchainViteConfig` among the shared config types. Covers the unreleased changes since v1.3.1 together with the sections the feature commits already added (the Vite+ config in `dbx.config`, the generated `vite.config.ts`, the vite migration and the `dbx` plugin).
|
|
908
798
|
#### Vscode
|
|
909
799
|
- Refresh the extension screenshot and add its `LICENSE` ([#49d4510](https://github.com/deltabox-studio/toolchain/commit/49d4510) by [T0chi](https://github.com/T0chi))
|
|
910
800
|
### Build system
|
|
911
801
|
- Package the VS Code extension in `yarn build` ([#1dd14a1](https://github.com/deltabox-studio/toolchain/commit/1dd14a1) by [T0chi](https://github.com/T0chi))
|
|
912
|
-
- `yarn build` now also runs the vscode `package:vsix`, so `deltabox-toolchain.vsix`
|
|
913
|
-
is always produced.
|
|
802
|
+
- `yarn build` now also runs the vscode `package:vsix`, so `deltabox-toolchain.vsix` is always produced.
|
|
914
803
|
|
|
915
804
|
### Package changes
|
|
916
805
|
#### Added
|
|
@@ -930,72 +819,46 @@
|
|
|
930
819
|
### New features
|
|
931
820
|
#### Core
|
|
932
821
|
- Keep the generated `.dbx` directory out of git ([#9fc1434](https://github.com/deltabox-studio/toolchain/commit/9fc1434) by [T0chi](https://github.com/T0chi))
|
|
933
|
-
- `dbx sync` now appends the `.dbx` ignore block (everything under `.dbx/` except the
|
|
934
|
-
manifest, which holds no absolute paths) to an existing `.gitignore`, and the
|
|
935
|
-
installation guide documents the pattern and the automatic step.
|
|
822
|
+
- `dbx sync` now appends the `.dbx` ignore block (everything under `.dbx/` except the manifest, which holds no absolute paths) to an existing `.gitignore`, and the installation guide documents the pattern and the automatic step.
|
|
936
823
|
#### Cli
|
|
937
824
|
- Route CLI output through the logger, add a providers colour option ([#ce76a4d](https://github.com/deltabox-studio/toolchain/commit/ce76a4d) by [T0chi](https://github.com/T0chi))
|
|
938
|
-
- `Commander`'s help and errors now go through the shared logger (help to stdout,
|
|
939
|
-
|
|
940
|
-
passthrough commands keep `commander`'s defaults so the spawned `vp` keeps its own
|
|
941
|
-
coloured logging.
|
|
942
|
-
- Add a `providers` config section (`color?: boolean`): `color: false` forces plain
|
|
943
|
-
provider output, the global `--no-color` still turns it off, and `runVp` sets
|
|
944
|
-
`NO_COLOR` / `FORCE_COLOR` on the child when colour is disabled.
|
|
825
|
+
- `Commander`'s help and errors now go through the shared logger (help to stdout, errors to stderr, colour-aware, ANSI stripped when colour is off). Vite+ passthrough commands keep `commander`'s defaults so the spawned `vp` keeps its own coloured logging.
|
|
826
|
+
- Add a `providers` config section (`color?: boolean`): `color: false` forces plain provider output, the global `--no-color` still turns it off, and `runVp` sets `NO_COLOR` / `FORCE_COLOR` on the child when colour is disabled.
|
|
945
827
|
- Check for a newer `dbx` version ([#772aae2](https://github.com/deltabox-studio/toolchain/commit/772aae2) by [T0chi](https://github.com/T0chi))
|
|
946
|
-
- On each run, check the npm registry in the background (cached for a day, never
|
|
947
|
-
blocking) and print a short notice with a link to the release when a newer
|
|
948
|
-
`@deltabox/toolchain` exists. Skipped in CI and by `NO_UPDATE_NOTIFIER` or
|
|
949
|
-
`DBX_NO_UPDATE_CHECK`, and can be turned off with the new `--no-update-check` flag.
|
|
828
|
+
- On each run, check the npm registry in the background (cached for a day, never blocking) and print a short notice with a link to the release when a newer `@deltabox/toolchain` exists. Skipped in CI and by `NO_UPDATE_NOTIFIER` or `DBX_NO_UPDATE_CHECK`, and can be turned off with the new `--no-update-check` flag.
|
|
950
829
|
- Default a bare Vite+ command to the `vite` passthrough ([#75770e4](https://github.com/deltabox-studio/toolchain/commit/75770e4) by [T0chi](https://github.com/T0chi))
|
|
951
|
-
- `dbx fmt` / `dbx lint` / `dbx run` / `dbx dev` now work: when the first operand
|
|
952
|
-
|
|
953
|
-
`vite` is inserted before it and the whole Vite+ CLI stays reachable without the
|
|
954
|
-
explicit namespace. Built-in commands win, so `dbx migrate` remains the
|
|
955
|
-
toolchain's migration (`dbx vite migrate` is Vite+'s).
|
|
956
|
-
- The Package scripts, Migrations, Monorepo, CLI and Providers guides now show the
|
|
957
|
-
bare form, and the consumers' root scripts were updated to match.
|
|
830
|
+
- `dbx fmt` / `dbx lint` / `dbx run` / `dbx dev` now work: when the first operand is not a built-in command but names a Vite+ subcommand (or one of its aliases), `vite` is inserted before it and the whole Vite+ CLI stays reachable without the explicit namespace. Built-in commands win, so `dbx migrate` remains the toolchain's migration (`dbx vite migrate` is Vite+'s).
|
|
831
|
+
- The Package scripts, Migrations, Monorepo, CLI and Providers guides now show the bare form, and the consumers' root scripts were updated to match.
|
|
958
832
|
#### Vscode
|
|
959
833
|
- Bundle the `dbx` CLI into the extension ([#bf12403](https://github.com/deltabox-studio/toolchain/commit/bf12403) by [T0chi](https://github.com/T0chi))
|
|
960
|
-
- Ship a self-contained `dbx.cjs` inside the VSIX (built by the new
|
|
961
|
-
|
|
962
|
-
needs to install `@deltabox/toolchain`. It falls back to a workspace-local
|
|
963
|
-
install and then `npx`.
|
|
964
|
-
- Make the changelog and tsconfig direct-run guards basename-aware so they do not
|
|
965
|
-
fire when the module is inlined into the single-file bundle.
|
|
834
|
+
- Ship a self-contained `dbx.cjs` inside the VSIX (built by the new `tsdown.bin.config.ts`) and prefer it in the extension, so a consumer no longer needs to install `@deltabox/toolchain`. It falls back to a workspace-local install and then `npx`.
|
|
835
|
+
- Make the changelog and tsconfig direct-run guards basename-aware so they do not fire when the module is inlined into the single-file bundle.
|
|
966
836
|
#### Shared
|
|
967
837
|
- Add a configurable shared logger ([#54b51fa](https://github.com/deltabox-studio/toolchain/commit/54b51fa) by [T0chi](https://github.com/T0chi))
|
|
968
|
-
- Add `packages/shared/src/logger.ts`: one level-aware, colour-aware sink (colours
|
|
969
|
-
|
|
970
|
-
`error` and `raw` (unprefixed machine output). It is configurable from `dbx.config`'s
|
|
971
|
-
new `logger` section and from the CLI (`--log-level`, `--no-color`), with the CLI
|
|
972
|
-
taking precedence.
|
|
973
|
-
- Every `console` call in the toolchain now goes through the logger (JSON output
|
|
974
|
-
through `raw`), including the sync/watch log callback and the `run` helper's
|
|
975
|
-
verbose line. The generated config types, the JSON schema, the docs reference
|
|
976
|
-
and the Configuration/CLI guides document the new `logger` section.
|
|
838
|
+
- Add `packages/shared/src/logger.ts`: one level-aware, colour-aware sink (colours via `picocolors`, the same package Vite uses) with `debug`, `info`, `success`, `warn`, `error` and `raw` (unprefixed machine output). It is configurable from `dbx.config`'s new `logger` section and from the CLI (`--log-level`, `--no-color`), with the CLI taking precedence.
|
|
839
|
+
- Every `console` call in the toolchain now goes through the logger (JSON output through `raw`), including the sync/watch log callback and the `run` helper's verbose line. The generated config types, the JSON schema, the docs reference and the Configuration/CLI guides document the new `logger` section.
|
|
977
840
|
### Bug fixes
|
|
978
841
|
- Correct tsconfig aliases under `--cwd`, prune self-referential task runs ([#40e0c34](https://github.com/deltabox-studio/toolchain/commit/40e0c34) by [T0chi](https://github.com/T0chi))
|
|
979
842
|
- Two bugs found by exercising the CLI against the local consumer projects:
|
|
980
|
-
- instead of
|
|
981
|
-
|
|
982
|
-
spawning the task runner, and prunes itself when the same command runs again
|
|
983
|
-
from the same root. A root task whose script calls `run -r <task>` can no
|
|
984
|
-
longer recurse.
|
|
843
|
+
- tsconfig: monorepo path aliases are now resolved against the project root instead of process.cwd(), so `dbx sync --cwd <dir>` (run from elsewhere) writes correct relative paths rather than paths pointing at the caller.
|
|
844
|
+
- run: a `run` command records its root and operands in an env marker before spawning the task runner, and prunes itself when the same command runs again from the same root. A root task whose script calls `run -r <task>` can no longer recurse.
|
|
985
845
|
- Changelog links, oxfmt map, build idempotency, watch timer, vscode spawn ([#2389c98](https://github.com/deltabox-studio/toolchain/commit/2389c98) by [T0chi](https://github.com/T0chi))
|
|
986
|
-
- render commits as a plain short hash instead of a
|
|
987
|
-
|
|
988
|
-
|
|
846
|
+
- changelog: with no GitHub remote (and a non-GitHub package.json repository), render commits as a plain short hash instead of a github.com/undefined link
|
|
847
|
+
- migrate: read javascript.formatter.jsxQuoteStyle so it is reported unmapped
|
|
848
|
+
- set the changelog and tsconfig package.json bin to the object form, so `yarn build` no longer rewrites it and the working tree stays idempotent
|
|
849
|
+
- core watch: clear the pending debounce timer on SIGINT/SIGTERM
|
|
850
|
+
- vscode: document the ELECTRON_RUN_AS_NODE mechanism consistently between spawnCli and cliInvocation
|
|
989
851
|
- Sync `--check` writes, quiet level, log flags and template tokens ([#7f5690f](https://github.com/deltabox-studio/toolchain/commit/7f5690f) by [T0chi](https://github.com/T0chi))
|
|
990
852
|
- Audit pass over the toolchain source:
|
|
991
|
-
- actually generated by
|
|
853
|
+
- include the vite sync task in defaultSyncTasks, so a `vite` config section is actually generated by dbx sync
|
|
854
|
+
- stop dbx sync --check from writing the project graph (it must not write)
|
|
855
|
+
- make --quiet hide info/debug/warn but still show errors
|
|
856
|
+
- stop the logger flag pre-scan at `--`, and reject inherited level keys
|
|
857
|
+
- strip a UTF-8 BOM from a JSON dbx.config
|
|
858
|
+
- let explicit --name/--scope win over dbx.config project values in dbx create
|
|
992
859
|
### Documentation
|
|
993
860
|
- Document the full public API surface ([#6f78245](https://github.com/deltabox-studio/toolchain/commit/6f78245) by [T0chi](https://github.com/T0chi))
|
|
994
|
-
- Expand `guide/api.md` to cover the umbrella plus every subpath export, grouped by
|
|
995
|
-
package. Add the logging API (`logger`, `createLogger`, `setLogConfig`,
|
|
996
|
-
`setLogOverrides`, levels, colours, `raw`) to the API and Configuration guides, and
|
|
997
|
-
document the config generator's `formatGenerated` helper and the Vite and CLI
|
|
998
|
-
programmatic helpers.
|
|
861
|
+
- Expand `guide/api.md` to cover the umbrella plus every subpath export, grouped by package. Add the logging API (`logger`, `createLogger`, `setLogConfig`, `setLogOverrides`, levels, colours, `raw`) to the API and Configuration guides, and document the config generator's `formatGenerated` helper and the Vite and CLI programmatic helpers.
|
|
999
862
|
### Chores
|
|
1000
863
|
- Track only the `.dbx` manifest ([#a254062](https://github.com/deltabox-studio/toolchain/commit/a254062) by [T0chi](https://github.com/T0chi))
|
|
1001
864
|
- Ignore everything under `.dbx/` except `.dbx/toolchain/manifest.json`, which records the managed files and holds no absolute paths. The project graph (which embeds the absolute root) stays ignored.
|
|
@@ -1010,50 +873,31 @@
|
|
|
1010
873
|
|
|
1011
874
|
### Documentation
|
|
1012
875
|
- Drive Vite+ from `dbx` in the recommended package scripts ([#6131c59](https://github.com/deltabox-studio/toolchain/commit/6131c59) by [T0chi](https://github.com/T0chi))
|
|
1013
|
-
- Use `dbx vite <command>` (the Vite+ passthrough) instead of calling `vp`
|
|
1014
|
-
directly in the Package scripts, Migrations and Monorepo guides, so a project
|
|
1015
|
-
only needs the one `dbx` command.
|
|
876
|
+
- Use `dbx vite <command>` (the Vite+ passthrough) instead of calling `vp` directly in the Package scripts, Migrations and Monorepo guides, so a project only needs the one `dbx` command.
|
|
1016
877
|
|
|
1017
878
|
## 1.2.7 (October 2026)
|
|
1018
879
|
|
|
1019
880
|
### Documentation
|
|
1020
881
|
- Link package script migrations from the Migrations page ([#036ebf5](https://github.com/deltabox-studio/toolchain/commit/036ebf5) by [T0chi](https://github.com/T0chi))
|
|
1021
|
-
- Add a "Package scripts" section to the Migrations guide with the Biome/Turbo
|
|
1022
|
-
script swaps and a link to the full Package scripts page.
|
|
882
|
+
- Add a "Package scripts" section to the Migrations guide with the Biome/Turbo script swaps and a link to the full Package scripts page.
|
|
1023
883
|
|
|
1024
884
|
## 1.2.6 (October 2026)
|
|
1025
885
|
|
|
1026
886
|
### Bug fixes
|
|
1027
887
|
#### Config
|
|
1028
888
|
- Tidy generated types and format them with Oxfmt ([#6fef440](https://github.com/deltabox-studio/toolchain/commit/6fef440) by [T0chi](https://github.com/T0chi))
|
|
1029
|
-
- `untyped`'s type generator emits a blank line between every member and verbose
|
|
1030
|
-
|
|
1031
|
-
generated output through Oxfmt's programmatic `format()` (with `jsdoc: true`)
|
|
1032
|
-
at generation time instead of shelling out to the repo-root `vp`, so the file
|
|
1033
|
-
is written already formatted and resembles the hand-written `types.ts`.
|
|
1034
|
-
- Also drop the toolchain-specific `yarn config:types` hint from the generated
|
|
1035
|
-
header: the types ship through `@deltabox/toolchain-shared`, so a script name
|
|
1036
|
-
that only exists in this repo's `package.json` is misleading to consumers (a
|
|
1037
|
-
consumer supplies its own header via the `header` option).
|
|
889
|
+
- `untyped`'s type generator emits a blank line between every member and verbose multi-line JSDoc. Strip the member blank lines in the generator, then run the generated output through Oxfmt's programmatic `format()` (with `jsdoc: true`) at generation time instead of shelling out to the repo-root `vp`, so the file is written already formatted and resembles the hand-written `types.ts`.
|
|
890
|
+
- Also drop the toolchain-specific `yarn config:types` hint from the generated header: the types ship through `@deltabox/toolchain-shared`, so a script name that only exists in this repo's `package.json` is misleading to consumers (a consumer supplies its own header via the `header` option).
|
|
1038
891
|
### Documentation
|
|
1039
892
|
- Add Package scripts guide and a navbar version ([#b279739](https://github.com/deltabox-studio/toolchain/commit/b279739) by [T0chi](https://github.com/T0chi))
|
|
1040
|
-
- Add a guide page covering the recommended root scripts (Vite+ format/lint and
|
|
1041
|
-
Vite Task) and how to migrate an existing Biome + Turbo project onto them, and
|
|
1042
|
-
surface it in the sidebar and Getting Started list. Also show the current
|
|
1043
|
-
version in the navbar (linked to the changelog, releases and npm), like the
|
|
1044
|
-
Proxified docs.
|
|
893
|
+
- Add a guide page covering the recommended root scripts (Vite+ format/lint and Vite Task) and how to migrate an existing Biome + Turbo project onto them, and surface it in the sidebar and Getting Started list. Also show the current version in the navbar (linked to the changelog, releases and npm), like the Proxified docs.
|
|
1045
894
|
|
|
1046
895
|
## 1.2.5 (October 2026)
|
|
1047
896
|
|
|
1048
897
|
### Bug fixes
|
|
1049
898
|
#### Changelog
|
|
1050
899
|
- Keep generated commitlint enums expanded ([#a6ad600](https://github.com/deltabox-studio/toolchain/commit/a6ad600) by [T0chi](https://github.com/T0chi))
|
|
1051
|
-
- Oxfmt collapses an array onto one line when it fits the print width, so a
|
|
1052
|
-
generated `commitlint.config.mjs` whose type/scope enum is short was
|
|
1053
|
-
reformatted by `vp fmt` and then failed `dbx sync --check`. An inert leading
|
|
1054
|
-
line comment inside each enum keeps the list expanded regardless of the
|
|
1055
|
-
consumer's print width, so the generated file is now Oxfmt-idempotent and
|
|
1056
|
-
consumers no longer need to exclude it from formatting.
|
|
900
|
+
- Oxfmt collapses an array onto one line when it fits the print width, so a generated `commitlint.config.mjs` whose type/scope enum is short was reformatted by `vp fmt` and then failed `dbx sync --check`. An inert leading line comment inside each enum keeps the list expanded regardless of the consumer's print width, so the generated file is now Oxfmt-idempotent and consumers no longer need to exclude it from formatting.
|
|
1057
901
|
|
|
1058
902
|
## 1.2.4 (October 2026)
|
|
1059
903
|
|
|
@@ -1074,9 +918,7 @@
|
|
|
1074
918
|
|
|
1075
919
|
### Documentation
|
|
1076
920
|
- Show how to load the generated config ([#0f4d0d1](https://github.com/deltabox-studio/toolchain/commit/0f4d0d1) by [T0chi](https://github.com/T0chi))
|
|
1077
|
-
- Add a "Load the config at runtime" section to the config generator guide
|
|
1078
|
-
(`parseEnvTree`, the typed accessors, `applyOverrides`, and schema validation via
|
|
1079
|
-
`compileZodSchema`) plus a short loading example in the README.
|
|
921
|
+
- Add a "Load the config at runtime" section to the config generator guide (`parseEnvTree`, the typed accessors, `applyOverrides`, and schema validation via `compileZodSchema`) plus a short loading example in the README.
|
|
1080
922
|
- Update description and tags ([#64b64aa](https://github.com/deltabox-studio/toolchain/commit/64b64aa) by [T0chi](https://github.com/T0chi))
|
|
1081
923
|
|
|
1082
924
|
## 1.2.0 (October 2026)
|
|
@@ -1084,25 +926,15 @@
|
|
|
1084
926
|
### New features
|
|
1085
927
|
#### Config
|
|
1086
928
|
- Generate the shared config types via the config generator ([#a063a2d](https://github.com/deltabox-studio/toolchain/commit/a063a2d) by [T0chi](https://github.com/T0chi))
|
|
1087
|
-
- Teach the config engine's Zod->untyped bridge and types generator to handle
|
|
1088
|
-
|
|
1089
|
-
fields on the main interface when it has no `base` group (plus type aliases for
|
|
1090
|
-
non-object roots). Named `$ref`s (via `.meta({ id })`) render as the type name,
|
|
1091
|
-
so the generated config types reference each other instead of inlining.
|
|
1092
|
-
- Generate `packages/shared/src/config-types.ts` from the Zod config model with the
|
|
1093
|
-
engine's `renderConfigTypes` (`yarn config:types`); `config-schema.ts` keeps only
|
|
1094
|
-
the schemas and the types are exported from `config-types.ts`.
|
|
929
|
+
- Teach the config engine's Zod->untyped bridge and types generator to handle unions (`anyOf`/`oneOf`), `const`, and unknown records, and to render a schema's fields on the main interface when it has no `base` group (plus type aliases for non-object roots). Named `$ref`s (via `.meta({ id })`) render as the type name, so the generated config types reference each other instead of inlining.
|
|
930
|
+
- Generate `packages/shared/src/config-types.ts` from the Zod config model with the engine's `renderConfigTypes` (`yarn config:types`); `config-schema.ts` keeps only the schemas and the types are exported from `config-types.ts`.
|
|
1095
931
|
### Bug fixes
|
|
1096
932
|
#### Vscode
|
|
1097
933
|
- Group managed files by project and reorder the views ([#f5b49d9](https://github.com/deltabox-studio/toolchain/commit/f5b49d9) by [T0chi](https://github.com/T0chi))
|
|
1098
|
-
- The Managed Files view read a manifest per project, so a monorepo's root-level
|
|
1099
|
-
managed files never showed. Read each workspace root's manifest and group its
|
|
1100
|
-
files by the deepest project that owns them. Move the Projects view above
|
|
1101
|
-
Managed Files (renamed from Files).
|
|
934
|
+
- The Managed Files view read a manifest per project, so a monorepo's root-level managed files never showed. Read each workspace root's manifest and group its files by the deepest project that owns them. Move the Projects view above Managed Files (renamed from Files).
|
|
1102
935
|
### Documentation
|
|
1103
936
|
- Document the config generator outputs ([#fcfcd69](https://github.com/deltabox-studio/toolchain/commit/fcfcd69) by [T0chi](https://github.com/T0chi))
|
|
1104
|
-
- Show a short example of each generated output (config types, markdown, env,
|
|
1105
|
-
JSON schema) in the config generator guide and the README.
|
|
937
|
+
- Show a short example of each generated output (config types, markdown, env, JSON schema) in the config generator guide and the README.
|
|
1106
938
|
- Update vscode extension preview ([#fd90dda](https://github.com/deltabox-studio/toolchain/commit/fd90dda) by [T0chi](https://github.com/T0chi))
|
|
1107
939
|
|
|
1108
940
|
## 1.1.24 (October 2026)
|
|
@@ -1120,9 +952,7 @@
|
|
|
1120
952
|
### Bug fixes
|
|
1121
953
|
#### Ci
|
|
1122
954
|
- Skip the Marketplace publish when `VSCE_PAT` is unset ([#fe4b3ad](https://github.com/deltabox-studio/toolchain/commit/fe4b3ad) by [T0chi](https://github.com/T0chi))
|
|
1123
|
-
- The VS Code Marketplace publish was the only failing release step (no
|
|
1124
|
-
`VSCE_PAT` set). Make it a no-op while the secret is unset and publish
|
|
1125
|
-
automatically once it is added to the `toolchain / release` environment.
|
|
955
|
+
- The VS Code Marketplace publish was the only failing release step (no `VSCE_PAT` set). Make it a no-op while the secret is unset and publish automatically once it is added to the `toolchain / release` environment.
|
|
1126
956
|
- Also remove the temporary OIDC diagnostic step now that the release publishes.
|
|
1127
957
|
|
|
1128
958
|
## 1.1.21 (October 2026)
|
|
@@ -1130,72 +960,43 @@
|
|
|
1130
960
|
### Bug fixes
|
|
1131
961
|
#### Ci
|
|
1132
962
|
- Publish to npm directly, falling back to a staged publish ([#85cffe7](https://github.com/deltabox-studio/toolchain/commit/85cffe7) by [T0chi](https://github.com/T0chi))
|
|
1133
|
-
- Try `npm publish` first and fall back to `npm stage publish` on failure, so
|
|
1134
|
-
toggling the trusted publisher's publish/stage permissions on npm never breaks
|
|
1135
|
-
the release: a direct publish succeeds when allowed, and a staged publish (always
|
|
1136
|
-
permitted) is used otherwise.
|
|
963
|
+
- Try `npm publish` first and fall back to `npm stage publish` on failure, so toggling the trusted publisher's publish/stage permissions on npm never breaks the release: a direct publish succeeds when allowed, and a staged publish (always permitted) is used otherwise.
|
|
1137
964
|
### Documentation
|
|
1138
965
|
- Show the published npm version in the README badge ([#5f83ca2](https://github.com/deltabox-studio/toolchain/commit/5f83ca2) by [T0chi](https://github.com/T0chi))
|
|
1139
|
-
- Replace the static npm-name badge with a shields.io npm/v badge so the README
|
|
1140
|
-
shows the currently published version.
|
|
966
|
+
- Replace the static npm-name badge with a shields.io npm/v badge so the README shows the currently published version.
|
|
1141
967
|
|
|
1142
968
|
## 1.1.20 (October 2026)
|
|
1143
969
|
|
|
1144
970
|
### Bug fixes
|
|
1145
971
|
#### Ci
|
|
1146
972
|
- Stage npm releases via OIDC instead of publishing directly ([#53d1f52](https://github.com/deltabox-studio/toolchain/commit/53d1f52) by [T0chi](https://github.com/T0chi))
|
|
1147
|
-
- Default to `npm stage publish` for OIDC trusted publishing: it always stages
|
|
1148
|
-
the version and defers the maintainer's 2FA approval, and is always permitted
|
|
1149
|
-
for a trusted publisher (unlike direct `npm publish`, which the package's 2FA
|
|
1150
|
-
policy rejects). Drop the automation-token fallback and require npm >= 11.15.1
|
|
1151
|
-
(the first with `npm stage`).
|
|
973
|
+
- Default to `npm stage publish` for OIDC trusted publishing: it always stages the version and defers the maintainer's 2FA approval, and is always permitted for a trusted publisher (unlike direct `npm publish`, which the package's 2FA policy rejects). Drop the automation-token fallback and require npm >= 11.15.1 (the first with `npm stage`).
|
|
1152
974
|
|
|
1153
975
|
## 1.1.19 (October 2026)
|
|
1154
976
|
|
|
1155
977
|
### Chores
|
|
1156
978
|
#### Ci
|
|
1157
979
|
- Add a temporary OIDC diagnostic to the release workflow ([#7b42e33](https://github.com/deltabox-studio/toolchain/commit/7b42e33) by [T0chi](https://github.com/T0chi))
|
|
1158
|
-
- The publish still fails after binding the environment, and npm falls back to
|
|
1159
|
-
the (automation) token and 403s. Add a temporary step that decodes the OIDC
|
|
1160
|
-
claims and calls the token-exchange endpoint directly so the exact
|
|
1161
|
-
trusted-publisher mismatch is visible in the log. Removed once fixed.
|
|
980
|
+
- The publish still fails after binding the environment, and npm falls back to the (automation) token and 403s. Add a temporary step that decodes the OIDC claims and calls the token-exchange endpoint directly so the exact trusted-publisher mismatch is visible in the log. Removed once fixed.
|
|
1162
981
|
|
|
1163
982
|
## 1.1.18 (October 2026)
|
|
1164
983
|
|
|
1165
984
|
### Bug fixes
|
|
1166
985
|
#### Ci
|
|
1167
986
|
- Bind the release job to the OIDC environment ([#7b8f1b4](https://github.com/deltabox-studio/toolchain/commit/7b8f1b4) by [T0chi](https://github.com/T0chi))
|
|
1168
|
-
- The npm OIDC trusted publisher is bound to the GitHub environment
|
|
1169
|
-
|
|
1170
|
-
environment claim therefore did not match, the token exchange failed, and npm
|
|
1171
|
-
silently fell back to the placeholder token (the misleading E404).
|
|
1172
|
-
- Declare `environment: 'toolchain / release'` on the job and add an optional
|
|
1173
|
-
`NODE_AUTH_TOKEN` fallback (the environment's `NPM_TOKEN`) to the publish step.
|
|
1174
|
-
OIDC is still tried first, so the token is never relied on.
|
|
987
|
+
- The npm OIDC trusted publisher is bound to the GitHub environment "toolchain / release", but the release job declared no environment. The OIDC environment claim therefore did not match, the token exchange failed, and npm silently fell back to the placeholder token (the misleading E404).
|
|
988
|
+
- Declare `environment: 'toolchain / release'` on the job and add an optional `NODE_AUTH_TOKEN` fallback (the environment's `NPM_TOKEN`) to the publish step. OIDC is still tried first, so the token is never relied on.
|
|
1175
989
|
#### Vscode
|
|
1176
990
|
- Spawn the CLI safely on Windows ([#99e3ad1](https://github.com/deltabox-studio/toolchain/commit/99e3ad1) by [T0chi](https://github.com/T0chi))
|
|
1177
|
-
- `spawn('npx.cmd', ...)` throws EINVAL synchronously on Windows, and
|
|
1178
|
-
|
|
1179
|
-
rejected the promise and the command aborted with no UI ("nothing happens").
|
|
1180
|
-
This fired whenever the CLI resolved to the `npx.cmd` fallback (a workspace
|
|
1181
|
-
without a local `@deltabox/toolchain`), e.g. "From template..." which round-trips
|
|
1182
|
-
`template:list --json` through `captureCli`.
|
|
1183
|
-
- Add a pure `win-spawn` module (ported from the shared `spawnCross`) that escapes
|
|
1184
|
-
the command + args and runs a `.cmd` shim through `cmd.exe`; use it from `spawnCli`.
|
|
1185
|
-
`captureCli`/`runCli` no longer reject on a spawn failure. Also fix `cliInvocation`
|
|
1186
|
-
for the integrated terminal: `process.execPath` is the VS Code binary in the
|
|
1187
|
-
extension host, so it now uses `npx dbx` / `npx --yes @deltabox/toolchain`.
|
|
991
|
+
- `spawn('npx.cmd', ...)` throws EINVAL synchronously on Windows, and `captureCli`/`runCli` call spawn inside a Promise executor, so the throw rejected the promise and the command aborted with no UI ("nothing happens"). This fired whenever the CLI resolved to the `npx.cmd` fallback (a workspace without a local `@deltabox/toolchain`), e.g. "From template..." which round-trips `template:list --json` through `captureCli`.
|
|
992
|
+
- Add a pure `win-spawn` module (ported from the shared `spawnCross`) that escapes the command + args and runs a `.cmd` shim through `cmd.exe`; use it from `spawnCli`. `captureCli`/`runCli` no longer reject on a spawn failure. Also fix `cliInvocation` for the integrated terminal: `process.execPath` is the VS Code binary in the extension host, so it now uses `npx dbx` / `npx --yes @deltabox/toolchain`.
|
|
1188
993
|
|
|
1189
994
|
## 1.1.17 (October 2026)
|
|
1190
995
|
|
|
1191
996
|
### Bug fixes
|
|
1192
997
|
#### Ci
|
|
1193
998
|
- Upgrade npm before publishing for OIDC trusted publishing ([#657d4b9](https://github.com/deltabox-studio/toolchain/commit/657d4b9) by [T0chi](https://github.com/T0chi))
|
|
1194
|
-
- Node 22 bundles npm 10.x, but npm OIDC trusted publishing requires
|
|
1195
|
-
npm >= 11.5.1. Without it `npm publish` fell back to token auth and the
|
|
1196
|
-
registry answered a misleading 404, so every release since 1.0.7 failed
|
|
1197
|
-
at the publish step. Add an explicit npm upgrade step before the publish
|
|
1198
|
-
step in the generated release workflow.
|
|
999
|
+
- Node 22 bundles npm 10.x, but npm OIDC trusted publishing requires npm >= 11.5.1. Without it `npm publish` fell back to token auth and the registry answered a misleading 404, so every release since 1.0.7 failed at the publish step. Add an explicit npm upgrade step before the publish step in the generated release workflow.
|
|
1199
1000
|
|
|
1200
1001
|
## 1.1.16 (October 2026)
|
|
1201
1002
|
|
|
@@ -1211,7 +1012,7 @@
|
|
|
1211
1012
|
## 1.1.14 (October 2026)
|
|
1212
1013
|
|
|
1213
1014
|
### Documentation
|
|
1214
|
-
- Highlight the Vite/Vite+ plugin in the README and docs ([#8218179](https://github.com/deltabox-studio/toolchain/
|
|
1015
|
+
- Highlight the Vite/Vite+ plugin in the README and docs ([#8218179](https://github.com/deltabox-studio/toolchain/commit/8218179) by [T0chi](https://github.com/T0chi))
|
|
1215
1016
|
|
|
1216
1017
|
## 1.1.13 (October 2026)
|
|
1217
1018
|
|
|
@@ -1242,7 +1043,7 @@
|
|
|
1242
1043
|
|
|
1243
1044
|
### Documentation
|
|
1244
1045
|
- Reindent the README lists ([#1d41d68](https://github.com/deltabox-studio/toolchain/commit/1d41d68) by [T0chi](https://github.com/T0chi))
|
|
1245
|
-
- Mirror the VS Code extension installation guide from the README ([#1889832](https://github.com/deltabox-studio/toolchain/
|
|
1046
|
+
- Mirror the VS Code extension installation guide from the README ([#1889832](https://github.com/deltabox-studio/toolchain/commit/1889832) by [T0chi](https://github.com/T0chi))
|
|
1246
1047
|
### Chores
|
|
1247
1048
|
- Update VS Code extension installation guide in `README.md` ([#aab06d5](https://github.com/deltabox-studio/toolchain/commit/aab06d5) by [T0chi](https://github.com/T0chi))
|
|
1248
1049
|
|
|
@@ -1291,18 +1092,14 @@
|
|
|
1291
1092
|
### Documentation
|
|
1292
1093
|
|
|
1293
1094
|
- Publish `config.schema.json` at the docs site root ([#b7680cb](https://github.com/deltabox-studio/toolchain/commit/b7680cb) by [T0chi](https://github.com/T0chi))
|
|
1294
|
-
|
|
1295
|
-
root, so it is served at https://toolchain.deltabox.studio/config.schema.json.
|
|
1095
|
+
- - The VitePress build now copies the generated `dbx` JSON schema into the dist root, so it is served at https://toolchain.deltabox.studio/config.schema.json.
|
|
1296
1096
|
|
|
1297
1097
|
### CI
|
|
1298
1098
|
|
|
1299
1099
|
#### Release
|
|
1300
1100
|
|
|
1301
1101
|
- Publish to npm via trusted publishing (OIDC) ([#41be869](https://github.com/deltabox-studio/toolchain/commit/41be869) by [T0chi](https://github.com/T0chi))
|
|
1302
|
-
|
|
1303
|
-
trusted publishing: `id-token: write`, setup-node `registry-url`, `yarn pack`
|
|
1304
|
-
(resolves `catalog:`/`workspace:`) + `npm publish <tarball>` — provenance is
|
|
1305
|
-
generated automatically. Re-enable `publishConfig.provenance`.
|
|
1102
|
+
- - Drop the `NPM_TOKEN`-based `yarn npm publish` (which also staged). Use npm trusted publishing: `id-token: write`, setup-node `registry-url`, `yarn pack` (resolves `catalog:`/`workspace:`) + `npm publish <tarball>` — provenance is generated automatically. Re-enable `publishConfig.provenance`.
|
|
1306
1103
|
|
|
1307
1104
|
## 1.1.0 (October 2026)
|
|
1308
1105
|
|
|
@@ -1311,10 +1108,7 @@
|
|
|
1311
1108
|
#### Vite
|
|
1312
1109
|
|
|
1313
1110
|
- Add a `dbx()` Vite+ plugin and `defineDbxConfig` wrapper ([#a1edaf9](https://github.com/deltabox-studio/toolchain/commit/a1edaf9) by [T0chi](https://github.com/T0chi))
|
|
1314
|
-
|
|
1315
|
-
`dbx sync` before dev/build (or `dbx sync --check` in CI) and re-syncs on
|
|
1316
|
-
input changes; `defineDbxConfig()` also registers the `vp run dbx:*` tasks
|
|
1317
|
-
(Vite+ reads `run.tasks` from the static config, not a plugin hook).
|
|
1111
|
+
- - Lets Vite+-only consumers drive `dbx` from `vite.config.ts`: `dbx()` runs `dbx sync` before dev/build (or `dbx sync --check` in CI) and re-syncs on input changes; `defineDbxConfig()` also registers the `vp run dbx:*` tasks (Vite+ reads `run.tasks` from the static config, not a plugin hook).
|
|
1318
1112
|
|
|
1319
1113
|
### Chores
|
|
1320
1114
|
|
|
@@ -1333,10 +1127,7 @@
|
|
|
1333
1127
|
#### Release
|
|
1334
1128
|
|
|
1335
1129
|
- Manage the release workflow from `dbx.config.ts` ([#bf55b70](https://github.com/deltabox-studio/toolchain/commit/bf55b70) by [T0chi](https://github.com/T0chi))
|
|
1336
|
-
|
|
1337
|
-
GitHub Release with the VSIX + notes, `npm publish`, Marketplace publish) is
|
|
1338
|
-
now defined under `changelog.workflows.release` in the config and generated
|
|
1339
|
-
by `dbx sync`. Removes the need to hand-write CI.
|
|
1130
|
+
- - Drop the hand-written `.github/workflows/release.yml`; the release flow (tag + GitHub Release with the VSIX + notes, `npm publish`, Marketplace publish) is now defined under `changelog.workflows.release` in the config and generated by `dbx sync`. Removes the need to hand-write CI.
|
|
1340
1131
|
|
|
1341
1132
|
## 1.0.7 (October 2026)
|
|
1342
1133
|
|
|
@@ -1351,11 +1142,7 @@
|
|
|
1351
1142
|
#### Release
|
|
1352
1143
|
|
|
1353
1144
|
- Release on push to `main` (tag + GitHub Release + npm + Marketplace) ([#4714b1a](https://github.com/deltabox-studio/toolchain/commit/4714b1a) by [T0chi](https://github.com/T0chi))
|
|
1354
|
-
|
|
1355
|
-
each push to `main`, packages the VS Code extension, creates the `v<version>`
|
|
1356
|
-
tag and a GitHub Release (notes from `CHANGELOG.md` + the `.vsix` asset),
|
|
1357
|
-
publishes `@deltabox/toolchain` to npm, and publishes the extension to the VS
|
|
1358
|
-
Code Marketplace. Idempotent: skipped when the tag already exists.
|
|
1145
|
+
- - Replaces the generated release-PR workflow with a hand-written one that, on each push to `main`, packages the VS Code extension, creates the `v<version>` tag and a GitHub Release (notes from `CHANGELOG.md` + the `.vsix` asset), publishes `@deltabox/toolchain` to npm, and publishes the extension to the VS Code Marketplace. Idempotent: skipped when the tag already exists.
|
|
1359
1146
|
|
|
1360
1147
|
## 1.0.6 (October 2026)
|
|
1361
1148
|
|
|
@@ -1409,19 +1196,11 @@
|
|
|
1409
1196
|
#### Changelog
|
|
1410
1197
|
|
|
1411
1198
|
- Tolerate a missing `CHANGELOG.md` in the release workflow ([#18ad219](https://github.com/deltabox-studio/toolchain/commit/18ad219) by [T0chi](https://github.com/T0chi))
|
|
1412
|
-
|
|
1413
|
-
`CHANGELOG.md` did not exist yet (a fresh repo). Fall back to an empty notes
|
|
1414
|
-
string.
|
|
1199
|
+
- - The release PR job extracted notes with `awk`, which failed when `CHANGELOG.md` did not exist yet (a fresh repo). Fall back to an empty notes string.
|
|
1415
1200
|
- Create `CHANGELOG.md` when missing; ignore dry-run output ([#f5e4926](https://github.com/deltabox-studio/toolchain/commit/f5e4926) by [T0chi](https://github.com/T0chi))
|
|
1416
|
-
|
|
1417
|
-
run on a repo without a `CHANGELOG.md` failed with `ENOENT`. Seed it with a
|
|
1418
|
-
`# Changelog` header instead. Also gitignore `CHANGELOG.proposed.md`.
|
|
1201
|
+
- - `prependChangelogEntry` read the existing file unconditionally, so the first run on a repo without a `CHANGELOG.md` failed with `ENOENT`. Seed it with a `# Changelog` header instead. Also gitignore `CHANGELOG.proposed.md`.
|
|
1419
1202
|
- Resolve repo root from `cwd` instead of the module location ([#5278e57](https://github.com/deltabox-studio/toolchain/commit/5278e57) by [T0chi](https://github.com/T0chi))
|
|
1420
|
-
|
|
1421
|
-
`node_modules`) walked up from `import.meta.url` and landed on the wrong
|
|
1422
|
-
`package.json`, so it looked for `CHANGELOG.md` in the wrong directory and
|
|
1423
|
-
failed. Resolve the nearest `package.json` above the working directory
|
|
1424
|
-
instead.
|
|
1203
|
+
- - Running `dbx changelog` from source (or from the published package in `node_modules`) walked up from `import.meta.url` and landed on the wrong `package.json`, so it looked for `CHANGELOG.md` in the wrong directory and failed. Resolve the nearest `package.json` above the working directory instead.
|
|
1425
1204
|
|
|
1426
1205
|
### Chores
|
|
1427
1206
|
|
|
@@ -1429,6 +1208,4 @@
|
|
|
1429
1208
|
- Drop Netlify config (docs move to Railway); move `PLAN.md` out of the repo ([#e51b714](https://github.com/deltabox-studio/toolchain/commit/e51b714) by [T0chi](https://github.com/T0chi))
|
|
1430
1209
|
- Update package description and keywords ([#d75b503](https://github.com/deltabox-studio/toolchain/commit/d75b503) by [T0chi](https://github.com/T0chi))
|
|
1431
1210
|
- Initial commit of `@deltabox/toolchain` ([#ed4673b](https://github.com/deltabox-studio/toolchain/commit/ed4673b) by [T0chi](https://github.com/T0chi))
|
|
1432
|
-
|
|
1433
|
-
commitlint config and Conventional-Commits VS Code settings. Config file is
|
|
1434
|
-
`dbx.config.*` with sections wrapped under `toolchain`.
|
|
1211
|
+
- - Self-hosts CI + changelog: `dbx.config.ts` drives the generated workflows, commitlint config and Conventional-Commits VS Code settings. Config file is `dbx.config.*` with sections wrapped under `toolchain`.
|