@deltabox/toolchain 2.1.1 → 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 +398 -628
- 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/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,23 +1,159 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 2.
|
|
3
|
+
## 2.3.2 (November 2026)
|
|
4
4
|
|
|
5
5
|
<!-- release:start -->
|
|
6
6
|
|
|
7
7
|
### Bug fixes
|
|
8
|
-
####
|
|
9
|
-
-
|
|
10
|
-
-
|
|
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
11
|
|
|
12
12
|
<!-- release:end -->
|
|
13
13
|
|
|
14
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
|
+
|
|
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))
|
|
44
|
+
#### Changelog
|
|
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))
|
|
107
|
+
|
|
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`
|
|
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
|
+
|
|
15
151
|
## 2.1.0 (October 2026)
|
|
16
152
|
|
|
17
153
|
### New features
|
|
18
154
|
#### Changelog
|
|
19
155
|
- Configure breaking-change detection ([#f80634f](https://github.com/deltabox-studio/toolchain/commit/f80634f) by [T0chi](https://github.com/T0chi))
|
|
20
|
-
- Detect breaking changes by Conventional Commits rules by default (! in the subject or a BREAKING CHANGE
|
|
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).
|
|
21
157
|
|
|
22
158
|
## 2.0.1 (October 2026)
|
|
23
159
|
|
|
@@ -48,192 +184,122 @@
|
|
|
48
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.
|
|
49
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))
|
|
50
186
|
- Add a New contributors footer ([#1e49596](https://github.com/deltabox-studio/toolchain/commit/1e49596) by [T0chi](https://github.com/T0chi))
|
|
51
|
-
- scanned range (explicit range start, or the oldest commit's parent).
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
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.
|
|
55
190
|
#### Config
|
|
56
191
|
- Type changelog group callbacks ([#a5c6186](https://github.com/deltabox-studio/toolchain/commit/a5c6186) by [T0chi](https://github.com/T0chi))
|
|
57
192
|
- Add the shared ChangelogGroupsSetting types, expose groups on both changelog sections, and regenerate the config schema/types/reference.
|
|
58
193
|
- Revamp config generators and extend tooling customization ([#b924255](https://github.com/deltabox-studio/toolchain/commit/b924255) by [T0chi](https://github.com/T0chi))
|
|
59
|
-
- and generateConfig* functions (optional disk writes, schema metadata)
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
|
|
63
|
-
|
|
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.
|
|
64
201
|
- Support metadata annotations in generated output ([#1417bb2](https://github.com/deltabox-studio/toolchain/commit/1417bb2) by [T0chi](https://github.com/T0chi))
|
|
65
202
|
- Add fmt/lint sections and manual changelog config ([#16000e5](https://github.com/deltabox-studio/toolchain/commit/16000e5) by [T0chi](https://github.com/T0chi))
|
|
66
203
|
- Inherit shared sections and add fmt/lint defaults ([#94add6f](https://github.com/deltabox-studio/toolchain/commit/94add6f) by [T0chi](https://github.com/T0chi))
|
|
67
204
|
- Registry source policies and duplicate template-id prompts ([#e030af7](https://github.com/deltabox-studio/toolchain/commit/e030af7) by [T0chi](https://github.com/T0chi))
|
|
68
|
-
- host and path globs, enforced for local paths, npm registries and
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
builtin or project source; non-interactive runs fail with a clear
|
|
72
|
-
`--id` hint instead of prompting.
|
|
73
|
-
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.
|
|
74
208
|
- Ambient Zod meta types and project-tsconfig typechecks ([#e73661b](https://github.com/deltabox-studio/toolchain/commit/e73661b) by [T0chi](https://github.com/T0chi))
|
|
75
|
-
- `/// <reference types="@deltabox/toolchain/globals" />` and get typed
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
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`.
|
|
79
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))
|
|
80
|
-
- workflows and move the changelog pipeline to `ci.changelog`.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
is `ToolchainCiConfig`.
|
|
88
|
-
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.
|
|
89
220
|
- Let defineConfig accept a promise or a callback ([#111776c](https://github.com/deltabox-studio/toolchain/commit/111776c) by [T0chi](https://github.com/T0chi))
|
|
90
|
-
- `defineConfig` now mirrors Vite's helper: the argument may be a plain object,
|
|
91
|
-
a `Promise<DbxConfig>`, or a `() => DbxConfig | Promise<DbxConfig>` callback.
|
|
92
|
-
The loader resolves the module export (awaits a promise, calls a callback and
|
|
93
|
-
awaits its result), so a config can do async work before returning
|
|
94
|
-
`{ 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 }`.
|
|
95
222
|
#### Vscode
|
|
96
223
|
- Surface workflow conflicts in managed files ([#e692511](https://github.com/deltabox-studio/toolchain/commit/e692511) by [T0chi](https://github.com/T0chi))
|
|
97
224
|
- Read workflowConflicts from the manifest and render them as a warning group with the owning config key.
|
|
98
225
|
- Watch the inputs resolved from the dbx config ([#953f071](https://github.com/deltabox-studio/toolchain/commit/953f071) by [T0chi](https://github.com/T0chi))
|
|
99
|
-
- watch globs: auto-sync now asks the CLI (`dbx watch --list --json`) per
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
`tsconfig.default.json`
|
|
106
|
-
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
|
|
107
232
|
- Add extension settings link to Home ([#f39cb35](https://github.com/deltabox-studio/toolchain/commit/f39cb35) by [T0chi](https://github.com/T0chi))
|
|
108
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))
|
|
109
234
|
- Add the Registries view ([#e3e808e](https://github.com/deltabox-studio/toolchain/commit/e3e808e) by [T0chi](https://github.com/T0chi))
|
|
110
|
-
- A new collapsible **Registries** view (below Templates) shows **Providers** and
|
|
111
|
-
(explorer folder or browser for remote URLs), **Add new registry** (the category's
|
|
112
|
-
add flow) and **Remove registry** (removes the path, keeps the files). The title
|
|
113
|
-
bar has **New registry…** / **Remove registry…** (global or project scope), also
|
|
114
|
-
available in the Home "More actions". Removing a template now offers the stored
|
|
115
|
-
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`).
|
|
116
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))
|
|
117
|
-
- config and code).
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
More actions), prefix More-actions buttons with a play glyph, start Managed
|
|
121
|
-
Files collapsed, expand the Vite+ provider by default, and drop unused icon
|
|
122
|
-
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.
|
|
123
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))
|
|
124
|
-
- Add the `deltabox.templatesSearchPaths` setting, record the VS Code user dir in
|
|
125
|
-
the CLI config on activation, and mirror setting changes into it (so the CLI and
|
|
126
|
-
editor agree). Adding a template now asks whether to register it globally (yes
|
|
127
|
-
by default), and adding a provider asks for a project or global scope; the
|
|
128
|
-
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.
|
|
129
242
|
#### Project
|
|
130
243
|
- Inherit root Oxc config and harden scaffolds ([#56a1895](https://github.com/deltabox-studio/toolchain/commit/56a1895) by [T0chi](https://github.com/T0chi))
|
|
131
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.
|
|
132
245
|
- Make scaffolds runnable and safer ([#eab297b](https://github.com/deltabox-studio/toolchain/commit/eab297b) by [T0chi](https://github.com/T0chi))
|
|
133
|
-
- Fold an existing vite config when generating a config ([#5891154](https://github.com/deltabox-studio/toolchain/
|
|
134
|
-
- `project:config` now checks for a hand-written `vite.config.*` and folds its
|
|
135
|
-
literal props into the generated `dbx.config.ts`'s `toolchain.vite` (using the
|
|
136
|
-
vite migration's extract/scan/fold helpers), adding the `/vite.config.ts` fmt
|
|
137
|
-
ignore. A non-foldable config is reported and left alone. The VS Code "Generate
|
|
138
|
-
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.
|
|
139
248
|
#### Core
|
|
140
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))
|
|
141
|
-
- `watch` globs with function forms resolved (eg. custom
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
resolved tsconfig file names (`{ globs, tsconfig }`) without watching
|
|
145
|
-
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
|
|
146
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))
|
|
147
|
-
- it in the manifest, so a user-owned file a task patches is never pruned by a
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
|
|
156
|
-
`deltabox.providerRegistrySearchPaths` setting; the Registries view
|
|
157
|
-
now manages both kinds and the Providers view can fetch remote
|
|
158
|
-
registries through `loadToolchainProviders()`.
|
|
159
|
-
pre-existing file. Adopted files are unmanaged, never deleted.
|
|
160
|
-
their previous content); the extension shows a notification listing
|
|
161
|
-
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.
|
|
162
263
|
- Merge global providers with the project registry ([#81c510b](https://github.com/deltabox-studio/toolchain/commit/81c510b) by [T0chi](https://github.com/T0chi))
|
|
163
|
-
- Providers can live in `~/.dbx/toolchain/.registry/providers.json` too.
|
|
164
|
-
`readAllProviders` merges them with the project's `.dbx/toolchain/providers.json`
|
|
165
|
-
(project wins on an id clash), and the CLI's provider list and passthrough
|
|
166
|
-
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.
|
|
167
265
|
#### Tsconfig
|
|
168
266
|
- Resolver, `extends`/`baseFile` options and snapshot-backed overrides ([#2b38963](https://github.com/deltabox-studio/toolchain/commit/2b38963) by [T0chi](https://github.com/T0chi))
|
|
169
|
-
- JSONC) and `dbx tsconfig --json/--alias/--paths/--references/--tsconfig/--root/--no-extends`;
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
original defined it, otherwise removes it (pruning emptied parents), and keeps
|
|
178
|
-
a value edited after the override applied it
|
|
179
|
-
`tsconfig.override-edited`) and skip instead of creating missing targets;
|
|
180
|
-
patched files are untracked, so sync/reset never delete them
|
|
181
|
-
(`restoreTsconfigOverrides`), warning with `tsconfig.restore-reapply` while
|
|
182
|
-
the overrides are still configured; `dbx reset` restores before removing the
|
|
183
|
-
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
|
|
184
275
|
#### Vite
|
|
185
276
|
- Add static shims and a configurable shim import ([#bddcb62](https://github.com/deltabox-studio/toolchain/commit/bddcb62) by [T0chi](https://github.com/T0chi))
|
|
186
|
-
- the generated `vite.config.ts`, so Vite+ can load it without a built
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
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
|
|
190
280
|
- Preserve existing imports/comments when regenerating the shim ([#194461c](https://github.com/deltabox-studio/toolchain/commit/194461c) by [T0chi](https://github.com/T0chi))
|
|
191
|
-
- `renderViteConfig` now accepts the existing `vite.config.ts` source: it keeps
|
|
192
|
-
the file's leading comments and import statements and merges `defineConfig` (and
|
|
193
|
-
the config type) into the existing `vite`/`vite-plus` import, preserving default,
|
|
194
|
-
namespace, other named and type-only specifiers. Regeneration is idempotent, and
|
|
195
|
-
the sync task feeds the current file in so a custom import block/comment is not
|
|
196
|
-
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.
|
|
197
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))
|
|
198
|
-
- The generated `vite.config.ts` shim now imports `defineConfig` (and its config
|
|
199
|
-
type) from whichever package the project installs — `vite` or `vite-plus` —
|
|
200
|
-
detected from `package.json` and walking up so a hoisted workspace dependency
|
|
201
|
-
resolves. `resolveVite` is generic so the shim type-checks against both, and
|
|
202
|
-
`ResolveViteOptions` now carries inline `vite` overrides that are deep-merged
|
|
203
|
-
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.
|
|
204
284
|
#### Migrate
|
|
205
285
|
- Add Oxc migration and repeatable --from ([#0f6930d](https://github.com/deltabox-studio/toolchain/commit/0f6930d) by [T0chi](https://github.com/T0chi))
|
|
206
286
|
#### Cli
|
|
207
287
|
- Add config selection and logger suppression ([#9b69e3f](https://github.com/deltabox-studio/toolchain/commit/9b69e3f) by [T0chi](https://github.com/T0chi))
|
|
208
288
|
#### Template
|
|
209
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))
|
|
210
|
-
- one (or fails with an `--id` hint when non-interactive), and accepts
|
|
211
|
-
|
|
212
|
-
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.
|
|
213
292
|
- Unscoped npm packages, custom registries and remote sources ([#08cb68c](https://github.com/deltabox-studio/toolchain/commit/08cb68c) by [T0chi](https://github.com/T0chi))
|
|
214
|
-
- npm create packages. The registry defaults to the project package
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
whose `{ sources }` / `{ templates }` / array is merged recursively.
|
|
218
|
-
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.
|
|
219
296
|
- Add project registries, registry listing and global removal ([#ff3cd16](https://github.com/deltabox-studio/toolchain/commit/ff3cd16) by [T0chi](https://github.com/T0chi))
|
|
220
|
-
- to `<project>/.dbx/toolchain/.registry/templates`; the project paths are
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
(`--add`/`--remove`, `--scope global|project`).
|
|
224
|
-
remove stored global templates; remote registries accept `{ sources }`,
|
|
225
|
-
`{ 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.
|
|
226
300
|
- Add a global template registry ([#638dd3b](https://github.com/deltabox-studio/toolchain/commit/638dd3b) by [T0chi](https://github.com/T0chi))
|
|
227
|
-
- Templates registered with `template:init --add`/`template:add` are also stored
|
|
228
|
-
|
|
229
|
-
available in every project and the VS Code extension. Global templates merge
|
|
230
|
-
with the project's own (project wins on an id clash).
|
|
231
|
-
- Search paths default to that directory and can be configured as a string/array
|
|
232
|
-
of directories or `http(s)` remote registries. They live in
|
|
233
|
-
`~/.dbx/toolchain/cli/config.json` (`templatesSearchPaths`, plus a `vscodeDir`
|
|
234
|
-
pointing at the VS Code user dir) and are managed with the new
|
|
235
|
-
`dbx template:registry` command (`--add`/`--set`/`--remove`/`--clear`), which
|
|
236
|
-
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.
|
|
237
303
|
### Bug fixes
|
|
238
304
|
#### Cli
|
|
239
305
|
- Filter denied providers at registration ([#74c49bb](https://github.com/deltabox-studio/toolchain/commit/74c49bb) by [T0chi](https://github.com/T0chi))
|
|
@@ -244,11 +310,7 @@
|
|
|
244
310
|
- Allow true/false for every fmt/lint tool, honour explicit biome opt-outs, and ignore disabled biome overrides.
|
|
245
311
|
- Honour disabled sections and regenerate config types ([#dddd9a7](https://github.com/deltabox-studio/toolchain/commit/dddd9a7) by [T0chi](https://github.com/T0chi))
|
|
246
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))
|
|
247
|
-
- The combined (`combined: true`) markdown renderer received the untyped
|
|
248
|
-
lowering of Zod scopes, which collapses unions/enums to `any` with a `{}`
|
|
249
|
-
default. Render Zod scopes from `toJSONSchema` instead (resolving the root
|
|
250
|
-
`$ref` into `$defs`), so the reference shows real types and nested options
|
|
251
|
-
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.
|
|
252
314
|
- Finish generator ergonomics and changelog customization ([#38f6d5b](https://github.com/deltabox-studio/toolchain/commit/38f6d5b) by [T0chi](https://github.com/T0chi))
|
|
253
315
|
#### Changelog
|
|
254
316
|
- Honour workflow token overrides and disabled ci ([#de266dd](https://github.com/deltabox-studio/toolchain/commit/de266dd) by [T0chi](https://github.com/T0chi))
|
|
@@ -264,18 +326,13 @@
|
|
|
264
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))
|
|
265
327
|
#### Ci
|
|
266
328
|
- Keep the build tsconfigs for CI typechecks ([#b1502ad](https://github.com/deltabox-studio/toolchain/commit/b1502ad) by [T0chi](https://github.com/T0chi))
|
|
267
|
-
- the
|
|
268
|
-
|
|
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).
|
|
269
332
|
#### Migrate
|
|
270
333
|
- Deep-merge the folded vite config ([#f74d2ed](https://github.com/deltabox-studio/toolchain/commit/f74d2ed) by [T0chi](https://github.com/T0chi))
|
|
271
|
-
- Folding a hand-written `vite.config.*` into an existing `toolchain.vite` now
|
|
272
|
-
|
|
273
|
-
vite config win) instead of replacing the section, and flips a previous
|
|
274
|
-
`config: false` to `true` since the hand-written file is removed.
|
|
275
|
-
- Also fixes `findTopLevelValue` so a scalar last key no longer swallows the
|
|
276
|
-
object's closing `}`, updates the managed-shim detection for the generic
|
|
277
|
-
`resolveVite<T>(...)` form, and corrects the "nothing to migrate" message when
|
|
278
|
-
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.
|
|
279
336
|
### Refactors
|
|
280
337
|
- Run quality checks through vp tasks ([#2fee264](https://github.com/deltabox-studio/toolchain/commit/2fee264) by [T0chi](https://github.com/T0chi))
|
|
281
338
|
- Run build and test through vp tasks too ([#e890665](https://github.com/deltabox-studio/toolchain/commit/e890665) by [T0chi](https://github.com/T0chi))
|
|
@@ -287,55 +344,49 @@
|
|
|
287
344
|
- Cover scaffold --force, root Oxc inheritance, boolean tool opt-ins, workflow package-manager version defaults and the managed-file conflict group.
|
|
288
345
|
- Regenerate config artifacts and document the fixes ([#9be4d73](https://github.com/deltabox-studio/toolchain/commit/9be4d73) by [T0chi](https://github.com/T0chi))
|
|
289
346
|
- Document tsconfig overrides, snapshots and `--restore` ([#dad4084](https://github.com/deltabox-studio/toolchain/commit/dad4084) by [T0chi](https://github.com/T0chi))
|
|
290
|
-
- snapshots, removal rules, restoring, warnings) and the new CLI flags/exports
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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`
|
|
294
351
|
- Document v2 generators, custom logger and changelog customization ([#f0f7f5d](https://github.com/deltabox-studio/toolchain/commit/f0f7f5d) by [T0chi](https://github.com/T0chi))
|
|
295
|
-
- 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))
|
|
296
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))
|
|
297
|
-
- `guide/ci/` section (overview + settings + ci/issues/changelog/sync/
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
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.
|
|
301
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))
|
|
302
|
-
- `guide/changelog.md` into folders with an index + one sibling page per
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
workflows, the commitlint opt-out fallback and the migration from the
|
|
307
|
-
deprecated top-level `changelog` section.
|
|
308
|
-
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.
|
|
309
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))
|
|
310
|
-
- Cover `registrySearchPaths`, project registries, the `registry` command, remote
|
|
311
|
-
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.
|
|
312
365
|
- Document the global template/provider registry ([#55651e1](https://github.com/deltabox-studio/toolchain/commit/55651e1) by [T0chi](https://github.com/T0chi))
|
|
313
|
-
- Cover the global templates dir, `--no-global`, the `template:registry` command,
|
|
314
|
-
the CLI config and `deltabox.templatesSearchPaths` sync, remote registries, and
|
|
315
|
-
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.
|
|
316
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))
|
|
317
|
-
- Cover `defineConfig` promises/callbacks, the shim importing from the project's
|
|
318
|
-
vite package, inline `resolveVite` overrides, and the vite migration deep-merging
|
|
319
|
-
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`.
|
|
320
369
|
#### Vscode
|
|
321
370
|
- Document extension requirements ([#07fd6fa](https://github.com/deltabox-studio/toolchain/commit/07fd6fa) by [T0chi](https://github.com/T0chi))
|
|
322
371
|
#### Config
|
|
323
372
|
- Generate CLI, env and config-type references ([#ba640a3](https://github.com/deltabox-studio/toolchain/commit/ba640a3) by [T0chi](https://github.com/T0chi))
|
|
324
|
-
- `config:docs`) to generate `apps/docs/config/index.md`, `cli.md` from
|
|
325
|
-
|
|
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.
|
|
326
376
|
### Tests
|
|
327
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))
|
|
328
|
-
- `node_modules` link back to the repo install) instead of `tests/emulate`,
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
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`)
|
|
332
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))
|
|
333
383
|
### Build system
|
|
334
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))
|
|
335
|
-
- `tsconfig.workspaces.json` and regenerate every workspace `tsconfig.json`,
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
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
|
|
339
390
|
### Chores
|
|
340
391
|
- Fix lint warnings and remove unused helper ([#ac890d8](https://github.com/deltabox-studio/toolchain/commit/ac890d8) by [T0chi](https://github.com/T0chi))
|
|
341
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))
|
|
@@ -350,24 +401,17 @@
|
|
|
350
401
|
- Updated misleading docs ([#5a5e44c](https://github.com/deltabox-studio/toolchain/commit/5a5e44c) by [T0chi](https://github.com/T0chi))
|
|
351
402
|
### Chores
|
|
352
403
|
#### Vscode
|
|
353
|
-
- 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))
|
|
354
405
|
|
|
355
406
|
## 1.11.3 (October 2026)
|
|
356
407
|
|
|
357
408
|
### Bug fixes
|
|
358
409
|
#### Ci
|
|
359
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))
|
|
360
|
-
- `apps/docs/config/reference.md` is generated by `scripts/generate-config.ts`
|
|
361
|
-
(and the CI `Verify generated config artifacts are up to date` step), so its
|
|
362
|
-
"Full example" fence must be produced by the generator. The docs rebrand added
|
|
363
|
-
a `[dbx.config.ts]` title to that fence by hand, which `yarn config:generate`
|
|
364
|
-
then stripped, failing the drift check. Emit the title from the generator so
|
|
365
|
-
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.
|
|
366
412
|
### Styles
|
|
367
413
|
- Format the docs brand stylesheet ([#fb3a711](https://github.com/deltabox-studio/toolchain/commit/fb3a711) by [T0chi](https://github.com/T0chi))
|
|
368
|
-
- Run the formatter over `apps/docs/.vitepress/theme/style.css` (trailing
|
|
369
|
-
whitespace, indentation, numeric normalization) so `yarn format` no longer
|
|
370
|
-
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.
|
|
371
415
|
|
|
372
416
|
## 1.11.2 (October 2026)
|
|
373
417
|
|
|
@@ -379,53 +423,28 @@
|
|
|
379
423
|
### Bug fixes
|
|
380
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))
|
|
381
425
|
- Two scaffolding robustness fixes:
|
|
382
|
-
- Cancelling any prompt (scope, package manager, include-config, the
|
|
383
|
-
|
|
384
|
-
default and creating orphan files/dirs. The local-template copier also
|
|
385
|
-
reads and renders the entire tree into memory before writing, so a
|
|
386
|
-
failed or interrupted run can never leave a half-copied template.
|
|
387
|
-
- directory it is created in (`--out`/`--root`), so
|
|
388
|
-
`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`.
|
|
389
428
|
- Tests: emulate the `.` name through both `create` and `project:init`.
|
|
390
429
|
#### Shared
|
|
391
430
|
- Quote a Windows command path that contains spaces ([#2e1f2ab](https://github.com/deltabox-studio/toolchain/commit/2e1f2ab) by [T0chi](https://github.com/T0chi))
|
|
392
|
-
- `spawnCross` routes every Windows command through `cmd.exe`, which splits an
|
|
393
|
-
|
|
394
|
-
`C:\Program Files\nodejs\node.exe` was resolved as `C:\Program` and never ran.
|
|
395
|
-
Quote the command when it contains whitespace instead of caret-escaping the
|
|
396
|
-
space (which `cmd.exe` still splits on). The same fix is mirrored in the
|
|
397
|
-
extension's `win-spawn` port.
|
|
398
|
-
- Tests: a functional case that hardlinks `node.exe` into a space-containing
|
|
399
|
-
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`.
|
|
400
433
|
#### Vscode
|
|
401
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))
|
|
402
|
-
- `createFromTemplate` sent online/Vite+ creates to an integrated terminal as a
|
|
403
|
-
|
|
404
|
-
splat of an undefined variable), so the value was dropped and commander failed
|
|
405
|
-
with `option '-s, --scope <scope>' argument missing`.
|
|
406
|
-
- Run every template through the same argv pipeline (`runCli`, no shell) so values
|
|
407
|
-
like an npm scope are never mangled. Vite+ projects skip the post-create sync
|
|
408
|
-
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.
|
|
409
437
|
### Documentation
|
|
410
438
|
- Updated `vscode-example.mp4` ([#58c0061](https://github.com/deltabox-studio/toolchain/commit/58c0061) by [T0chi](https://github.com/T0chi))
|
|
411
439
|
- Rebrand to the new logo and blue theme ([#e28c1f9](https://github.com/deltabox-studio/toolchain/commit/e28c1f9) by [T0chi](https://github.com/T0chi))
|
|
412
|
-
- Swap the toolchain/box2d logos for the new `logo/*` assets, re-theme the
|
|
413
|
-
site with the blue brand tokens and hero/logo animations, update the home
|
|
414
|
-
page (GitHub action, feature icons), and refresh the guide/reference copy
|
|
415
|
-
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`.
|
|
416
441
|
- Adopt the Carbon theme with code-group icons ([#09b2608](https://github.com/deltabox-studio/toolchain/commit/09b2608) by [T0chi](https://github.com/T0chi))
|
|
417
|
-
- Build the docs on vitepress-carbon: spread its base config and override
|
|
418
|
-
`vite.plugins` so the LLM plugin runs once (with our copy instead of
|
|
419
|
-
Carbon's default), add `vitepress-plugin-group-icons` for language icons on
|
|
420
|
-
`::: code-group` / `[title]` blocks, and register the theme. Also refresh
|
|
421
|
-
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.
|
|
422
443
|
- Rename the "LLM context files" page to "LLMs" ([#9a9e8c7](https://github.com/deltabox-studio/toolchain/commit/9a9e8c7) by [T0chi](https://github.com/T0chi))
|
|
423
444
|
### Chores
|
|
424
445
|
#### Vscode
|
|
425
446
|
- Rebrand the extension icon and README ([#bbde675](https://github.com/deltabox-studio/toolchain/commit/bbde675) by [T0chi](https://github.com/T0chi))
|
|
426
|
-
- Point the extension icon at the new `resources/logo.png` / `icon.svg`,
|
|
427
|
-
drop the old `icon.png` / `logo.svg`, and update the README with the new
|
|
428
|
-
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.
|
|
429
448
|
|
|
430
449
|
### Package changes
|
|
431
450
|
#### Added
|
|
@@ -437,21 +456,13 @@
|
|
|
437
456
|
### New features
|
|
438
457
|
#### Vscode
|
|
439
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))
|
|
440
|
-
- project" picker (`template:list --online`) instead of only the dbx builtins;
|
|
441
|
-
|
|
442
|
-
bare `vite-plus` template — through the extension's prompt pipeline: pick a
|
|
443
|
-
concrete Vite+ template, then create like any other template. Consumers no
|
|
444
|
-
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.
|
|
445
461
|
### Bug fixes
|
|
446
462
|
#### Project
|
|
447
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))
|
|
448
|
-
- `resolveType` fell back to the loaded config's `project.type`, but a scaffold
|
|
449
|
-
|
|
450
|
-
when adding a workspace. A workspace was therefore tagged `monorepo-root`, and
|
|
451
|
-
the post-scaffold sync then generated root-only CI, husky and VS Code files
|
|
452
|
-
inside the workspace.
|
|
453
|
-
- Only honour an explicit `--type` (or the command's implied default); ignore the
|
|
454
|
-
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.
|
|
455
466
|
### Documentation
|
|
456
467
|
- Update descriptions and vscode screenshot ([#215bc4f](https://github.com/deltabox-studio/toolchain/commit/215bc4f) by [T0chi](https://github.com/T0chi))
|
|
457
468
|
### Styles
|
|
@@ -459,10 +470,8 @@
|
|
|
459
470
|
- Long single-line descriptions from earlier commits; `vp fmt` wraps them back.
|
|
460
471
|
### Tests
|
|
461
472
|
- Emulate custom templates/providers and workspace scaffolding ([#37d370e](https://github.com/deltabox-studio/toolchain/commit/37d370e) by [T0chi](https://github.com/T0chi))
|
|
462
|
-
- Code extension writes) and assert the CLI lists, scaffolds and runs them —
|
|
463
|
-
|
|
464
|
-
assert the workspace does NOT inherit their outputs
|
|
465
|
-
(.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).
|
|
466
475
|
### Chores
|
|
467
476
|
#### Vscode
|
|
468
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))
|
|
@@ -477,24 +486,14 @@
|
|
|
477
486
|
### Bug fixes
|
|
478
487
|
#### Vscode
|
|
479
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))
|
|
480
|
-
- The Home "Run Vite+" button is disabled while the Home model's `hasVite` is
|
|
481
|
-
|
|
482
|
-
`dbx providers --json` spawn). A webview rendered before the list resolved was
|
|
483
|
-
never re-posted, so the button could stay disabled from a cold start even though
|
|
484
|
-
the `deltabox.hasVite` context key (command palette) was updated.
|
|
485
|
-
- Recompute the context keys and the Home model whenever the provider tree
|
|
486
|
-
reloads, via its `onDidChangeTreeData` event. Vite+ is always contributed by the
|
|
487
|
-
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.
|
|
488
491
|
#### Core
|
|
489
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))
|
|
490
|
-
- The per-project `manifest.json` embedded `syncedAt`, so every sync rewrote a
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
- to `timestamps.json`, so the next sync migrates a legacy inline value
|
|
495
|
-
automatically (the property is gone from `manifest.json`).
|
|
496
|
-
inline `syncedAt` until that migration runs, so nothing breaks in between.
|
|
497
|
-
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.
|
|
498
497
|
### Documentation
|
|
499
498
|
- Added a video preview of the extension ([#6b0ca40](https://github.com/deltabox-studio/toolchain/commit/6b0ca40) by [T0chi](https://github.com/T0chi))
|
|
500
499
|
|
|
@@ -509,85 +508,51 @@
|
|
|
509
508
|
### Bug fixes
|
|
510
509
|
#### Core
|
|
511
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))
|
|
512
|
-
- The config loader retried every failed native import through `tsx`, so a
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
the config "loaded", no error was recorded, and `dbx sync` exited 0 instead of
|
|
517
|
-
failing (the emulation suite caught this in CI).
|
|
518
|
-
- (`ERR_UNKNOWN_FILE_EXTENSION`, `ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX`); let
|
|
519
|
-
genuine errors (module-not-found, syntax errors, throws) propagate.
|
|
520
|
-
`import('tsx/esm/api')` instead of a build-machine path, and promote `tsx` to
|
|
521
|
-
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.
|
|
522
515
|
|
|
523
516
|
## 1.10.0 (October 2026)
|
|
524
517
|
|
|
525
518
|
### New features
|
|
526
519
|
#### Template
|
|
527
520
|
- Scaffold actions, package-manager choice and catalogs ([#6c66c97](https://github.com/deltabox-studio/toolchain/commit/6c66c97) by [T0chi](https://github.com/T0chi))
|
|
528
|
-
- `module` (relative to the template dir, `export default async (ctx) => {}`,
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
when supported: `.yarnrc.yml` (yarn), `pnpm-workspace.yaml` (pnpm),
|
|
535
|
-
`package.json` `workspaces.catalog` (bun); npm pins versions inline.
|
|
536
|
-
task that keeps `.yarnrc.yml` / `pnpm-workspace.yaml` catalogs in sync. It
|
|
537
|
-
only writes a file that is absent or toolchain-managed (marker comment), so a
|
|
538
|
-
hand-written file is never clobbered; bun/npm warn.
|
|
539
|
-
the manager.
|
|
540
|
-
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.
|
|
541
527
|
- Generic builtins + inputs + Vite+ templates; resilient config loading ([#fb8d7cc](https://github.com/deltabox-studio/toolchain/commit/fb8d7cc) by [T0chi](https://github.com/T0chi))
|
|
542
|
-
- `catalog:` protocol from generated projects, add a pinned
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
builtins; document it in the Templates guide.
|
|
549
|
-
`@deltabox/toolchain/tsdown` (the private `@deltabox/toolchain-tsdown` package
|
|
550
|
-
is never published).
|
|
551
|
-
stderr instead of aborting unrelated commands (`template:list`, `providers`,
|
|
552
|
-
...), so the extension views no longer empty out after scaffolding; `sync`
|
|
553
|
-
still fails on a broken config (and `--recursive` reports per project).
|
|
554
|
-
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.
|
|
555
534
|
### Bug fixes
|
|
556
535
|
- Issues found emulating the extension + command palette ([#1049afa](https://github.com/deltabox-studio/toolchain/commit/1049afa) by [T0chi](https://github.com/T0chi))
|
|
557
536
|
- Emulated the extension (bundled and portal `dbx`) against a consumer workspace:
|
|
558
|
-
- name ("No version specified for X") for yarn/pnpm/npm/bun, so `projectToPackageJson`
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
`@deltabox/toolchain/vite` no longer runs `resolveDbx` at module load, so every
|
|
565
|
-
command stopped printing spurious `dbx`-resolution warnings.
|
|
566
|
-
option").
|
|
567
|
-
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.
|
|
568
543
|
#### Project
|
|
569
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))
|
|
570
545
|
- Found by exercising a portal-linked consumer workspace:
|
|
571
|
-
- defines `name` without `scope` (eg. a nested workspace), instead of renaming
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
stops producing it (eg. the user replaces it with a hand-written one) — it
|
|
575
|
-
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.
|
|
576
549
|
### Tests
|
|
577
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))
|
|
578
|
-
- extension and command palette drive) in a per-test scratch workspace under
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
post-scaffold extension flow.
|
|
584
|
-
boundary and never inherits the toolchain repo's own config/manifest. Scratch
|
|
585
|
-
dirs are removed after every test (pass or fail), once more on `afterAll`, and
|
|
586
|
-
again on process exit; the repo's own manifest is snapshotted and restored so
|
|
587
|
-
the working tree stays clean.
|
|
588
|
-
always execute against a fresh CLI bundle.
|
|
589
|
-
emitting a dangling `catalog:` — Bun's catalog lives in `package.json`
|
|
590
|
-
`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.
|
|
591
556
|
|
|
592
557
|
## 1.9.2 (October 2026)
|
|
593
558
|
|
|
@@ -599,75 +564,36 @@
|
|
|
599
564
|
### CI
|
|
600
565
|
#### Vscode
|
|
601
566
|
- Target the release environment by name (drop resourceType) ([#2bbd25a](https://github.com/deltabox-studio/toolchain/commit/2bbd25a) by [T0chi](https://github.com/T0chi))
|
|
602
|
-
- `resourceType` only accepts `virtualMachine`/`Kubernetes`. `resourceType: none`
|
|
603
|
-
made the deployment job look for a resource of type `none`, so it failed with
|
|
604
|
-
"No resource were found in the environment ... ResourceType Undefined". Use the
|
|
605
|
-
string form `environment: 'release'`, which records the deployment against the
|
|
606
|
-
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.
|
|
607
568
|
|
|
608
569
|
## 1.9.0 (October 2026)
|
|
609
570
|
|
|
610
571
|
### New features
|
|
611
572
|
#### Changelog
|
|
612
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))
|
|
613
|
-
- `changelog.workflows.<id>` now accepts a raw YAML string in addition to a
|
|
614
|
-
|
|
615
|
-
workflow file: no default merge, no token replacement and no generated header,
|
|
616
|
-
and the `changelog.branches` defaults don't apply (it defines its own triggers).
|
|
617
|
-
An empty string disables the workflow.
|
|
618
|
-
- Docs: add a "Workflows" section covering the three forms, and a "Writing commit
|
|
619
|
-
messages" section warning about shell escaping (PowerShell backtick escapes and
|
|
620
|
-
bash command substitution) and AI/LLM-drafted messages introducing stray control
|
|
621
|
-
characters, curly quotes, dashes and other typographic characters. Regenerate
|
|
622
|
-
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.
|
|
623
576
|
### CI
|
|
624
577
|
#### Vscode
|
|
625
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))
|
|
626
|
-
- `vsce publish` fails with "already exists" when `deltabox.toolchain-vscode@<version>`
|
|
627
|
-
is already on the Marketplace, failing the whole pipeline. Add a `Check` stage
|
|
628
|
-
before `Build` that reads the version from `packages/vscode/package.json`,
|
|
629
|
-
queries the Marketplace `extensionquery` API, and exposes an `alreadyPublished`
|
|
630
|
-
stage output. `Build` and `Release` now depend on `Check` and skip when it is
|
|
631
|
-
`true` (a failed query assumes "not published" so a release is never silently
|
|
632
|
-
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).
|
|
633
580
|
### Chores
|
|
634
581
|
#### Changelog
|
|
635
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))
|
|
636
|
-
- The shared/core/project/tsconfig/vite commits were authored with PowerShell
|
|
637
|
-
`\``-escaped backticks, so their bodies carried `\` + control-character
|
|
638
|
-
artifacts (e.g. `` `r `` -> `\`+CR, `` `b `` -> backspace). The changelog
|
|
639
|
-
sanitizer stripped the control characters but left the stray backslashes and
|
|
640
|
-
dropped letters, so the 1.8.0 entry read `esolveVite`, `\{ ... }\`, `epo\`, etc.
|
|
641
|
-
Restore the intended text (backticked code, `resolveVite`, `repo`/`repository`,
|
|
642
|
-
`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`).
|
|
643
584
|
|
|
644
585
|
## 1.8.0 (October 2026)
|
|
645
586
|
|
|
646
587
|
### New features
|
|
647
588
|
#### Cli
|
|
648
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))
|
|
649
|
-
- The command context now carries `syncTasks` (`defaultSyncTasks()`) so a package
|
|
650
|
-
command such as `migrate` can regenerate managed files without depending on
|
|
651
|
-
every sync package. Skip the update-check notice when `--json` is passed so it
|
|
652
|
-
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.
|
|
653
591
|
#### Changelog
|
|
654
592
|
- Per-workspace changelogs and configurable branches ([#0aa329c](https://github.com/deltabox-studio/toolchain/commit/0aa329c) by [T0chi](https://github.com/T0chi))
|
|
655
|
-
- Scan a workspace's own commits (plus its transitive dependencies) via
|
|
656
|
-
`relatedWorkspacePaths` and create a missing workspace `CHANGELOG.md` instead of
|
|
657
|
-
skipping it. `changelog.branches.main`/`dev` accept a string or an array, `dev`
|
|
658
|
-
defaults to `main`, and the branch list is injected into the generated
|
|
659
|
-
workflows. Add `changelog.commitlint.dir` for a custom commitlint config
|
|
660
|
-
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.
|
|
661
594
|
#### Migrate
|
|
662
595
|
- Recursive, interactive migration and post-migration sync ([#bb87b33](https://github.com/deltabox-studio/toolchain/commit/bb87b33) by [T0chi](https://github.com/T0chi))
|
|
663
|
-
- `dbx migrate` is now `--recursive` (off by default): it discovers the projects
|
|
664
|
-
under the root and, on a TTY, prompts a multi-select with an "All projects"
|
|
665
|
-
option. The `vite` migration creates a fresh nested `dbx.config.ts` (wrapped in
|
|
666
|
-
`defineConfig`) when the project has none, and removes the folded
|
|
667
|
-
`vite.config.*` unless `--ignore-vite-config-file`. `--write` also regenerates
|
|
668
|
-
the project's managed files unless `--ignore-managed-files`, dropping the
|
|
669
|
-
changelog task when `--ignore-changelog`; removals are reported. Adds
|
|
670
|
-
`@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.
|
|
671
597
|
#### Vite
|
|
672
598
|
- Accept a single options object in resolveVite ([#2e2384b](https://github.com/deltabox-studio/toolchain/commit/2e2384b) by [T0chi](https://github.com/T0chi))
|
|
673
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.
|
|
@@ -686,52 +612,25 @@
|
|
|
686
612
|
### Bug fixes
|
|
687
613
|
#### Vscode
|
|
688
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))
|
|
689
|
-
- Capture the running extension's path and version at activation instead of
|
|
690
|
-
hardcoding the id (`deltabox.toolchain` is stale: the id is
|
|
691
|
-
`<publisher>.<name>`), so `bundledCliEntry()`/`pinnedToolchainSpec()` find the
|
|
692
|
-
shipped `dbx.cjs` and Providers/Templates/scaffolding work without a
|
|
693
|
-
project-local install. Disable the sync commands (`deltabox.canSync`) and the
|
|
694
|
-
Vite+ commands (`deltabox.hasVite`) via context keys + command `enablement` and
|
|
695
|
-
the Home buttons when there is nothing to sync / the provider is unavailable.
|
|
696
|
-
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.
|
|
697
616
|
### Documentation
|
|
698
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))
|
|
699
|
-
- Add per-section guides (project, biome, vite, watch, logger, tsconfig), refresh
|
|
700
|
-
the CLI/config/monorepo/VS Code/api pages and the sidebar, and wire
|
|
701
|
-
`vitepress-plugin-llms` with `apps/docs/llms.md` plus the script that copies the
|
|
702
|
-
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.
|
|
703
619
|
### Build system
|
|
704
620
|
- Make the published package installable ([#b2597ee](https://github.com/deltabox-studio/toolchain/commit/b2597ee) by [T0chi](https://github.com/T0chi))
|
|
705
|
-
- npm runs a dependency's `postinstall` on install, so the repo-only
|
|
706
|
-
`husky && node scripts/bootstrap.mjs` broke every consumer (and global) install
|
|
707
|
-
with `'husky' is not recognized`. Move the logic into `scripts/bootstrap.mjs`,
|
|
708
|
-
publish it, and guard every checkout-only step: husky runs only when `.husky`
|
|
709
|
-
exists and the dist build only when `packages/` exists. A consumer install is
|
|
710
|
-
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.
|
|
711
622
|
### CI
|
|
712
623
|
- Aggregate release notes and refresh the generated workflows ([#9426a40](https://github.com/deltabox-studio/toolchain/commit/9426a40) by [T0chi](https://github.com/T0chi))
|
|
713
|
-
- The release workflow now extracts every changelog entry since the last tag, and
|
|
714
|
-
the generated `ci.yml`/`release.yml` are regenerated from `dbx.config.ts`.
|
|
715
|
-
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.
|
|
716
625
|
#### Vscode
|
|
717
626
|
- Fix the release-vscode Azure Pipelines trigger ([#b59964c](https://github.com/deltabox-studio/toolchain/commit/b59964c) by [T0chi](https://github.com/T0chi))
|
|
718
|
-
- `pr` is a top-level pipeline keyword, not a child of `trigger` (whose full
|
|
719
|
-
syntax only accepts `batch`, `branches`, `paths` and `tags`), so `trigger.pr`
|
|
720
|
-
was reported as an unexpected property. Move `pr: none` to the top level and
|
|
721
|
-
trigger on `v*` tags through `tags` (with `branches: exclude: ['*']` for a
|
|
722
|
-
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*`.
|
|
723
628
|
### Chores
|
|
724
629
|
- Self-host nested dbx configs across the workspaces ([#003cb9f](https://github.com/deltabox-studio/toolchain/commit/003cb9f) by [T0chi](https://github.com/T0chi))
|
|
725
|
-
- Every workspace now has its own `dbx.config.ts` (holding its Vite Task
|
|
726
|
-
definitions) and a generated `vite.config.ts` shim, plus its own tracked
|
|
727
|
-
manifest. The root gains a `@deltabox/toolchain` `portal:.` self-link so the
|
|
728
|
-
shims resolve `@deltabox/toolchain/vite`, and `.gitignore` keeps nested
|
|
729
|
-
manifests while ignoring the rest. The root `tsconfig.monorepo.json` is renamed
|
|
730
|
-
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`.
|
|
731
631
|
#### Deps
|
|
732
632
|
- Refresh the lockfile ([#420c805](https://github.com/deltabox-studio/toolchain/commit/420c805) by [T0chi](https://github.com/T0chi))
|
|
733
|
-
- Covers `vitepress-plugin-llms` (docs), `@clack/prompts`/`glob`/core (migrate)
|
|
734
|
-
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.
|
|
735
634
|
|
|
736
635
|
### Package changes
|
|
737
636
|
#### Added
|
|
@@ -748,7 +647,7 @@
|
|
|
748
647
|
|
|
749
648
|
### CI
|
|
750
649
|
#### Vscode
|
|
751
|
-
- 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))
|
|
752
651
|
|
|
753
652
|
## 1.7.6 (October 2026)
|
|
754
653
|
|
|
@@ -785,7 +684,7 @@
|
|
|
785
684
|
- Set up ci with `Azure Pipelines` ([#5bc736f](https://github.com/deltabox-studio/toolchain/commit/5bc736f) by [T0chi](https://github.com/T0chi))
|
|
786
685
|
- [skip ci]
|
|
787
686
|
### Chores
|
|
788
|
-
- 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))
|
|
789
688
|
|
|
790
689
|
## 1.7.1 (October 2026)
|
|
791
690
|
|
|
@@ -804,7 +703,7 @@
|
|
|
804
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 #######).
|
|
805
704
|
### Chores
|
|
806
705
|
#### Changelog
|
|
807
|
-
- 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))
|
|
808
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.
|
|
809
708
|
|
|
810
709
|
## 1.6.1 (October 2026)
|
|
@@ -844,7 +743,7 @@
|
|
|
844
743
|
|
|
845
744
|
### New features
|
|
846
745
|
#### Changelog
|
|
847
|
-
- 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))
|
|
848
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).
|
|
849
748
|
|
|
850
749
|
## 1.4.1 (October 2026)
|
|
@@ -861,63 +760,46 @@
|
|
|
861
760
|
|
|
862
761
|
### New features
|
|
863
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))
|
|
864
|
-
-
|
|
865
|
-
|
|
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
|
|
866
767
|
#### Vscode
|
|
867
768
|
- Add Providers and Templates views ([#9aa6d12](https://github.com/deltabox-studio/toolchain/commit/9aa6d12) by [T0chi](https://github.com/T0chi))
|
|
868
|
-
-
|
|
869
|
-
|
|
870
|
-
|
|
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
|
|
871
773
|
#### Vite
|
|
872
774
|
- Drive `dbx` from the `dbx()` plugin, drop `defineDbxConfig` ([#8d11557](https://github.com/deltabox-studio/toolchain/commit/8d11557) by [T0chi](https://github.com/T0chi))
|
|
873
|
-
- The Vite/Vite+ integration is now the `dbx()` plugin plus spreading `DBX_TASKS` into
|
|
874
|
-
|
|
875
|
-
- `
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
- Remove the `defineDbxConfig` wrapper (and `DbxViteConfig`) and update the README, the
|
|
880
|
-
Providers guide and the API reference.
|
|
881
|
-
- 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))
|
|
882
|
-
- `toolchain.vite` now holds the whole Vite+ config (a loose object) with a
|
|
883
|
-
`config: false` opt-out, and `dbx sync` generates the managed root
|
|
884
|
-
`vite.config.ts` from it, so `dbx.config.*` is the only hand-authored root config.
|
|
885
|
-
- Add `dbx migrate --from vite` (auto-detected): it extracts the object passed to
|
|
886
|
-
`defineConfig` in an existing root `vite.config.ts` and folds it into `dbx.config.*`'s
|
|
887
|
-
`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.
|
|
888
781
|
- The config-types generator now honors `.catchall`, emitting an index signature.
|
|
889
782
|
#### Config
|
|
890
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))
|
|
891
|
-
- `ToolchainViteConfig` is now Vite+ `ViteUserConfig` intersected with the managed
|
|
892
|
-
|
|
893
|
-
generator gains a hand-written type override plus an imports block, used for the
|
|
894
|
-
vite type, and `vite-plus` becomes an optional peer dependency.
|
|
895
|
-
- Rename every `Tooling*` type, schema id and identifier to `Toolchain*`. That covers
|
|
896
|
-
the config schema ids, `CONFIG_TYPE_SCHEMAS` keys, the provider/migration models
|
|
897
|
-
and the CLI helpers (`toolchainConfigSchema`, `loadToolchainConfig`,
|
|
898
|
-
`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.
|
|
899
786
|
### Bug fixes
|
|
900
787
|
#### Deps
|
|
901
788
|
- Sync the lockfile for `@clack/prompts` ([#568a7c6](https://github.com/deltabox-studio/toolchain/commit/568a7c6) by [T0chi](https://github.com/T0chi))
|
|
902
|
-
- The lockfile was missing the `@clack/prompts` entry for `packages/shared` and
|
|
903
|
-
`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).
|
|
904
790
|
### Refactors
|
|
905
791
|
- Rename Ox to Oxc across the project ([#39b37d3](https://github.com/deltabox-studio/toolchain/commit/39b37d3) by [T0chi](https://github.com/T0chi))
|
|
906
|
-
- (
|
|
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
|
|
907
794
|
### Documentation
|
|
908
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))
|
|
909
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))
|
|
910
|
-
- Note that `toolchain.vite` is typed as Vite's `UserConfig` as augmented by Vite+
|
|
911
|
-
(`ToolchainViteConfig`), and list `ToolchainViteConfig` among the shared config
|
|
912
|
-
types. Covers the unreleased changes since v1.3.1 together with the sections the
|
|
913
|
-
feature commits already added (the Vite+ config in `dbx.config`, the generated
|
|
914
|
-
`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).
|
|
915
798
|
#### Vscode
|
|
916
799
|
- Refresh the extension screenshot and add its `LICENSE` ([#49d4510](https://github.com/deltabox-studio/toolchain/commit/49d4510) by [T0chi](https://github.com/T0chi))
|
|
917
800
|
### Build system
|
|
918
801
|
- Package the VS Code extension in `yarn build` ([#1dd14a1](https://github.com/deltabox-studio/toolchain/commit/1dd14a1) by [T0chi](https://github.com/T0chi))
|
|
919
|
-
- `yarn build` now also runs the vscode `package:vsix`, so `deltabox-toolchain.vsix`
|
|
920
|
-
is always produced.
|
|
802
|
+
- `yarn build` now also runs the vscode `package:vsix`, so `deltabox-toolchain.vsix` is always produced.
|
|
921
803
|
|
|
922
804
|
### Package changes
|
|
923
805
|
#### Added
|
|
@@ -937,72 +819,46 @@
|
|
|
937
819
|
### New features
|
|
938
820
|
#### Core
|
|
939
821
|
- Keep the generated `.dbx` directory out of git ([#9fc1434](https://github.com/deltabox-studio/toolchain/commit/9fc1434) by [T0chi](https://github.com/T0chi))
|
|
940
|
-
- `dbx sync` now appends the `.dbx` ignore block (everything under `.dbx/` except the
|
|
941
|
-
manifest, which holds no absolute paths) to an existing `.gitignore`, and the
|
|
942
|
-
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.
|
|
943
823
|
#### Cli
|
|
944
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))
|
|
945
|
-
- `Commander`'s help and errors now go through the shared logger (help to stdout,
|
|
946
|
-
|
|
947
|
-
passthrough commands keep `commander`'s defaults so the spawned `vp` keeps its own
|
|
948
|
-
coloured logging.
|
|
949
|
-
- Add a `providers` config section (`color?: boolean`): `color: false` forces plain
|
|
950
|
-
provider output, the global `--no-color` still turns it off, and `runVp` sets
|
|
951
|
-
`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.
|
|
952
827
|
- Check for a newer `dbx` version ([#772aae2](https://github.com/deltabox-studio/toolchain/commit/772aae2) by [T0chi](https://github.com/T0chi))
|
|
953
|
-
- On each run, check the npm registry in the background (cached for a day, never
|
|
954
|
-
blocking) and print a short notice with a link to the release when a newer
|
|
955
|
-
`@deltabox/toolchain` exists. Skipped in CI and by `NO_UPDATE_NOTIFIER` or
|
|
956
|
-
`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.
|
|
957
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))
|
|
958
|
-
- `dbx fmt` / `dbx lint` / `dbx run` / `dbx dev` now work: when the first operand
|
|
959
|
-
|
|
960
|
-
`vite` is inserted before it and the whole Vite+ CLI stays reachable without the
|
|
961
|
-
explicit namespace. Built-in commands win, so `dbx migrate` remains the
|
|
962
|
-
toolchain's migration (`dbx vite migrate` is Vite+'s).
|
|
963
|
-
- The Package scripts, Migrations, Monorepo, CLI and Providers guides now show the
|
|
964
|
-
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.
|
|
965
832
|
#### Vscode
|
|
966
833
|
- Bundle the `dbx` CLI into the extension ([#bf12403](https://github.com/deltabox-studio/toolchain/commit/bf12403) by [T0chi](https://github.com/T0chi))
|
|
967
|
-
- Ship a self-contained `dbx.cjs` inside the VSIX (built by the new
|
|
968
|
-
|
|
969
|
-
needs to install `@deltabox/toolchain`. It falls back to a workspace-local
|
|
970
|
-
install and then `npx`.
|
|
971
|
-
- Make the changelog and tsconfig direct-run guards basename-aware so they do not
|
|
972
|
-
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.
|
|
973
836
|
#### Shared
|
|
974
837
|
- Add a configurable shared logger ([#54b51fa](https://github.com/deltabox-studio/toolchain/commit/54b51fa) by [T0chi](https://github.com/T0chi))
|
|
975
|
-
- Add `packages/shared/src/logger.ts`: one level-aware, colour-aware sink (colours
|
|
976
|
-
|
|
977
|
-
`error` and `raw` (unprefixed machine output). It is configurable from `dbx.config`'s
|
|
978
|
-
new `logger` section and from the CLI (`--log-level`, `--no-color`), with the CLI
|
|
979
|
-
taking precedence.
|
|
980
|
-
- Every `console` call in the toolchain now goes through the logger (JSON output
|
|
981
|
-
through `raw`), including the sync/watch log callback and the `run` helper's
|
|
982
|
-
verbose line. The generated config types, the JSON schema, the docs reference
|
|
983
|
-
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.
|
|
984
840
|
### Bug fixes
|
|
985
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))
|
|
986
842
|
- Two bugs found by exercising the CLI against the local consumer projects:
|
|
987
|
-
- instead of
|
|
988
|
-
|
|
989
|
-
spawning the task runner, and prunes itself when the same command runs again
|
|
990
|
-
from the same root. A root task whose script calls `run -r <task>` can no
|
|
991
|
-
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.
|
|
992
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))
|
|
993
|
-
- render commits as a plain short hash instead of a
|
|
994
|
-
|
|
995
|
-
|
|
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
|
|
996
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))
|
|
997
852
|
- Audit pass over the toolchain source:
|
|
998
|
-
- 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
|
|
999
859
|
### Documentation
|
|
1000
860
|
- Document the full public API surface ([#6f78245](https://github.com/deltabox-studio/toolchain/commit/6f78245) by [T0chi](https://github.com/T0chi))
|
|
1001
|
-
- Expand `guide/api.md` to cover the umbrella plus every subpath export, grouped by
|
|
1002
|
-
package. Add the logging API (`logger`, `createLogger`, `setLogConfig`,
|
|
1003
|
-
`setLogOverrides`, levels, colours, `raw`) to the API and Configuration guides, and
|
|
1004
|
-
document the config generator's `formatGenerated` helper and the Vite and CLI
|
|
1005
|
-
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.
|
|
1006
862
|
### Chores
|
|
1007
863
|
- Track only the `.dbx` manifest ([#a254062](https://github.com/deltabox-studio/toolchain/commit/a254062) by [T0chi](https://github.com/T0chi))
|
|
1008
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.
|
|
@@ -1017,50 +873,31 @@
|
|
|
1017
873
|
|
|
1018
874
|
### Documentation
|
|
1019
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))
|
|
1020
|
-
- Use `dbx vite <command>` (the Vite+ passthrough) instead of calling `vp`
|
|
1021
|
-
directly in the Package scripts, Migrations and Monorepo guides, so a project
|
|
1022
|
-
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.
|
|
1023
877
|
|
|
1024
878
|
## 1.2.7 (October 2026)
|
|
1025
879
|
|
|
1026
880
|
### Documentation
|
|
1027
881
|
- Link package script migrations from the Migrations page ([#036ebf5](https://github.com/deltabox-studio/toolchain/commit/036ebf5) by [T0chi](https://github.com/T0chi))
|
|
1028
|
-
- Add a "Package scripts" section to the Migrations guide with the Biome/Turbo
|
|
1029
|
-
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.
|
|
1030
883
|
|
|
1031
884
|
## 1.2.6 (October 2026)
|
|
1032
885
|
|
|
1033
886
|
### Bug fixes
|
|
1034
887
|
#### Config
|
|
1035
888
|
- Tidy generated types and format them with Oxfmt ([#6fef440](https://github.com/deltabox-studio/toolchain/commit/6fef440) by [T0chi](https://github.com/T0chi))
|
|
1036
|
-
- `untyped`'s type generator emits a blank line between every member and verbose
|
|
1037
|
-
|
|
1038
|
-
generated output through Oxfmt's programmatic `format()` (with `jsdoc: true`)
|
|
1039
|
-
at generation time instead of shelling out to the repo-root `vp`, so the file
|
|
1040
|
-
is written already formatted and resembles the hand-written `types.ts`.
|
|
1041
|
-
- Also drop the toolchain-specific `yarn config:types` hint from the generated
|
|
1042
|
-
header: the types ship through `@deltabox/toolchain-shared`, so a script name
|
|
1043
|
-
that only exists in this repo's `package.json` is misleading to consumers (a
|
|
1044
|
-
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).
|
|
1045
891
|
### Documentation
|
|
1046
892
|
- Add Package scripts guide and a navbar version ([#b279739](https://github.com/deltabox-studio/toolchain/commit/b279739) by [T0chi](https://github.com/T0chi))
|
|
1047
|
-
- Add a guide page covering the recommended root scripts (Vite+ format/lint and
|
|
1048
|
-
Vite Task) and how to migrate an existing Biome + Turbo project onto them, and
|
|
1049
|
-
surface it in the sidebar and Getting Started list. Also show the current
|
|
1050
|
-
version in the navbar (linked to the changelog, releases and npm), like the
|
|
1051
|
-
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.
|
|
1052
894
|
|
|
1053
895
|
## 1.2.5 (October 2026)
|
|
1054
896
|
|
|
1055
897
|
### Bug fixes
|
|
1056
898
|
#### Changelog
|
|
1057
899
|
- Keep generated commitlint enums expanded ([#a6ad600](https://github.com/deltabox-studio/toolchain/commit/a6ad600) by [T0chi](https://github.com/T0chi))
|
|
1058
|
-
- Oxfmt collapses an array onto one line when it fits the print width, so a
|
|
1059
|
-
generated `commitlint.config.mjs` whose type/scope enum is short was
|
|
1060
|
-
reformatted by `vp fmt` and then failed `dbx sync --check`. An inert leading
|
|
1061
|
-
line comment inside each enum keeps the list expanded regardless of the
|
|
1062
|
-
consumer's print width, so the generated file is now Oxfmt-idempotent and
|
|
1063
|
-
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.
|
|
1064
901
|
|
|
1065
902
|
## 1.2.4 (October 2026)
|
|
1066
903
|
|
|
@@ -1081,9 +918,7 @@
|
|
|
1081
918
|
|
|
1082
919
|
### Documentation
|
|
1083
920
|
- Show how to load the generated config ([#0f4d0d1](https://github.com/deltabox-studio/toolchain/commit/0f4d0d1) by [T0chi](https://github.com/T0chi))
|
|
1084
|
-
- Add a "Load the config at runtime" section to the config generator guide
|
|
1085
|
-
(`parseEnvTree`, the typed accessors, `applyOverrides`, and schema validation via
|
|
1086
|
-
`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.
|
|
1087
922
|
- Update description and tags ([#64b64aa](https://github.com/deltabox-studio/toolchain/commit/64b64aa) by [T0chi](https://github.com/T0chi))
|
|
1088
923
|
|
|
1089
924
|
## 1.2.0 (October 2026)
|
|
@@ -1091,25 +926,15 @@
|
|
|
1091
926
|
### New features
|
|
1092
927
|
#### Config
|
|
1093
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))
|
|
1094
|
-
- Teach the config engine's Zod->untyped bridge and types generator to handle
|
|
1095
|
-
|
|
1096
|
-
fields on the main interface when it has no `base` group (plus type aliases for
|
|
1097
|
-
non-object roots). Named `$ref`s (via `.meta({ id })`) render as the type name,
|
|
1098
|
-
so the generated config types reference each other instead of inlining.
|
|
1099
|
-
- Generate `packages/shared/src/config-types.ts` from the Zod config model with the
|
|
1100
|
-
engine's `renderConfigTypes` (`yarn config:types`); `config-schema.ts` keeps only
|
|
1101
|
-
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`.
|
|
1102
931
|
### Bug fixes
|
|
1103
932
|
#### Vscode
|
|
1104
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))
|
|
1105
|
-
- The Managed Files view read a manifest per project, so a monorepo's root-level
|
|
1106
|
-
managed files never showed. Read each workspace root's manifest and group its
|
|
1107
|
-
files by the deepest project that owns them. Move the Projects view above
|
|
1108
|
-
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).
|
|
1109
935
|
### Documentation
|
|
1110
936
|
- Document the config generator outputs ([#fcfcd69](https://github.com/deltabox-studio/toolchain/commit/fcfcd69) by [T0chi](https://github.com/T0chi))
|
|
1111
|
-
- Show a short example of each generated output (config types, markdown, env,
|
|
1112
|
-
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.
|
|
1113
938
|
- Update vscode extension preview ([#fd90dda](https://github.com/deltabox-studio/toolchain/commit/fd90dda) by [T0chi](https://github.com/T0chi))
|
|
1114
939
|
|
|
1115
940
|
## 1.1.24 (October 2026)
|
|
@@ -1127,9 +952,7 @@
|
|
|
1127
952
|
### Bug fixes
|
|
1128
953
|
#### Ci
|
|
1129
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))
|
|
1130
|
-
- The VS Code Marketplace publish was the only failing release step (no
|
|
1131
|
-
`VSCE_PAT` set). Make it a no-op while the secret is unset and publish
|
|
1132
|
-
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.
|
|
1133
956
|
- Also remove the temporary OIDC diagnostic step now that the release publishes.
|
|
1134
957
|
|
|
1135
958
|
## 1.1.21 (October 2026)
|
|
@@ -1137,72 +960,43 @@
|
|
|
1137
960
|
### Bug fixes
|
|
1138
961
|
#### Ci
|
|
1139
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))
|
|
1140
|
-
- Try `npm publish` first and fall back to `npm stage publish` on failure, so
|
|
1141
|
-
toggling the trusted publisher's publish/stage permissions on npm never breaks
|
|
1142
|
-
the release: a direct publish succeeds when allowed, and a staged publish (always
|
|
1143
|
-
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.
|
|
1144
964
|
### Documentation
|
|
1145
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))
|
|
1146
|
-
- Replace the static npm-name badge with a shields.io npm/v badge so the README
|
|
1147
|
-
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.
|
|
1148
967
|
|
|
1149
968
|
## 1.1.20 (October 2026)
|
|
1150
969
|
|
|
1151
970
|
### Bug fixes
|
|
1152
971
|
#### Ci
|
|
1153
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))
|
|
1154
|
-
- Default to `npm stage publish` for OIDC trusted publishing: it always stages
|
|
1155
|
-
the version and defers the maintainer's 2FA approval, and is always permitted
|
|
1156
|
-
for a trusted publisher (unlike direct `npm publish`, which the package's 2FA
|
|
1157
|
-
policy rejects). Drop the automation-token fallback and require npm >= 11.15.1
|
|
1158
|
-
(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`).
|
|
1159
974
|
|
|
1160
975
|
## 1.1.19 (October 2026)
|
|
1161
976
|
|
|
1162
977
|
### Chores
|
|
1163
978
|
#### Ci
|
|
1164
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))
|
|
1165
|
-
- The publish still fails after binding the environment, and npm falls back to
|
|
1166
|
-
the (automation) token and 403s. Add a temporary step that decodes the OIDC
|
|
1167
|
-
claims and calls the token-exchange endpoint directly so the exact
|
|
1168
|
-
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.
|
|
1169
981
|
|
|
1170
982
|
## 1.1.18 (October 2026)
|
|
1171
983
|
|
|
1172
984
|
### Bug fixes
|
|
1173
985
|
#### Ci
|
|
1174
986
|
- Bind the release job to the OIDC environment ([#7b8f1b4](https://github.com/deltabox-studio/toolchain/commit/7b8f1b4) by [T0chi](https://github.com/T0chi))
|
|
1175
|
-
- The npm OIDC trusted publisher is bound to the GitHub environment
|
|
1176
|
-
|
|
1177
|
-
environment claim therefore did not match, the token exchange failed, and npm
|
|
1178
|
-
silently fell back to the placeholder token (the misleading E404).
|
|
1179
|
-
- Declare `environment: 'toolchain / release'` on the job and add an optional
|
|
1180
|
-
`NODE_AUTH_TOKEN` fallback (the environment's `NPM_TOKEN`) to the publish step.
|
|
1181
|
-
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.
|
|
1182
989
|
#### Vscode
|
|
1183
990
|
- Spawn the CLI safely on Windows ([#99e3ad1](https://github.com/deltabox-studio/toolchain/commit/99e3ad1) by [T0chi](https://github.com/T0chi))
|
|
1184
|
-
- `spawn('npx.cmd', ...)` throws EINVAL synchronously on Windows, and
|
|
1185
|
-
|
|
1186
|
-
rejected the promise and the command aborted with no UI ("nothing happens").
|
|
1187
|
-
This fired whenever the CLI resolved to the `npx.cmd` fallback (a workspace
|
|
1188
|
-
without a local `@deltabox/toolchain`), e.g. "From template..." which round-trips
|
|
1189
|
-
`template:list --json` through `captureCli`.
|
|
1190
|
-
- Add a pure `win-spawn` module (ported from the shared `spawnCross`) that escapes
|
|
1191
|
-
the command + args and runs a `.cmd` shim through `cmd.exe`; use it from `spawnCli`.
|
|
1192
|
-
`captureCli`/`runCli` no longer reject on a spawn failure. Also fix `cliInvocation`
|
|
1193
|
-
for the integrated terminal: `process.execPath` is the VS Code binary in the
|
|
1194
|
-
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`.
|
|
1195
993
|
|
|
1196
994
|
## 1.1.17 (October 2026)
|
|
1197
995
|
|
|
1198
996
|
### Bug fixes
|
|
1199
997
|
#### Ci
|
|
1200
998
|
- Upgrade npm before publishing for OIDC trusted publishing ([#657d4b9](https://github.com/deltabox-studio/toolchain/commit/657d4b9) by [T0chi](https://github.com/T0chi))
|
|
1201
|
-
- Node 22 bundles npm 10.x, but npm OIDC trusted publishing requires
|
|
1202
|
-
npm >= 11.5.1. Without it `npm publish` fell back to token auth and the
|
|
1203
|
-
registry answered a misleading 404, so every release since 1.0.7 failed
|
|
1204
|
-
at the publish step. Add an explicit npm upgrade step before the publish
|
|
1205
|
-
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.
|
|
1206
1000
|
|
|
1207
1001
|
## 1.1.16 (October 2026)
|
|
1208
1002
|
|
|
@@ -1218,7 +1012,7 @@
|
|
|
1218
1012
|
## 1.1.14 (October 2026)
|
|
1219
1013
|
|
|
1220
1014
|
### Documentation
|
|
1221
|
-
- 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))
|
|
1222
1016
|
|
|
1223
1017
|
## 1.1.13 (October 2026)
|
|
1224
1018
|
|
|
@@ -1249,7 +1043,7 @@
|
|
|
1249
1043
|
|
|
1250
1044
|
### Documentation
|
|
1251
1045
|
- Reindent the README lists ([#1d41d68](https://github.com/deltabox-studio/toolchain/commit/1d41d68) by [T0chi](https://github.com/T0chi))
|
|
1252
|
-
- 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))
|
|
1253
1047
|
### Chores
|
|
1254
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))
|
|
1255
1049
|
|
|
@@ -1298,18 +1092,14 @@
|
|
|
1298
1092
|
### Documentation
|
|
1299
1093
|
|
|
1300
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))
|
|
1301
|
-
|
|
1302
|
-
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.
|
|
1303
1096
|
|
|
1304
1097
|
### CI
|
|
1305
1098
|
|
|
1306
1099
|
#### Release
|
|
1307
1100
|
|
|
1308
1101
|
- Publish to npm via trusted publishing (OIDC) ([#41be869](https://github.com/deltabox-studio/toolchain/commit/41be869) by [T0chi](https://github.com/T0chi))
|
|
1309
|
-
|
|
1310
|
-
trusted publishing: `id-token: write`, setup-node `registry-url`, `yarn pack`
|
|
1311
|
-
(resolves `catalog:`/`workspace:`) + `npm publish <tarball>` — provenance is
|
|
1312
|
-
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`.
|
|
1313
1103
|
|
|
1314
1104
|
## 1.1.0 (October 2026)
|
|
1315
1105
|
|
|
@@ -1318,10 +1108,7 @@
|
|
|
1318
1108
|
#### Vite
|
|
1319
1109
|
|
|
1320
1110
|
- Add a `dbx()` Vite+ plugin and `defineDbxConfig` wrapper ([#a1edaf9](https://github.com/deltabox-studio/toolchain/commit/a1edaf9) by [T0chi](https://github.com/T0chi))
|
|
1321
|
-
|
|
1322
|
-
`dbx sync` before dev/build (or `dbx sync --check` in CI) and re-syncs on
|
|
1323
|
-
input changes; `defineDbxConfig()` also registers the `vp run dbx:*` tasks
|
|
1324
|
-
(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).
|
|
1325
1112
|
|
|
1326
1113
|
### Chores
|
|
1327
1114
|
|
|
@@ -1340,10 +1127,7 @@
|
|
|
1340
1127
|
#### Release
|
|
1341
1128
|
|
|
1342
1129
|
- Manage the release workflow from `dbx.config.ts` ([#bf55b70](https://github.com/deltabox-studio/toolchain/commit/bf55b70) by [T0chi](https://github.com/T0chi))
|
|
1343
|
-
|
|
1344
|
-
GitHub Release with the VSIX + notes, `npm publish`, Marketplace publish) is
|
|
1345
|
-
now defined under `changelog.workflows.release` in the config and generated
|
|
1346
|
-
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.
|
|
1347
1131
|
|
|
1348
1132
|
## 1.0.7 (October 2026)
|
|
1349
1133
|
|
|
@@ -1358,11 +1142,7 @@
|
|
|
1358
1142
|
#### Release
|
|
1359
1143
|
|
|
1360
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))
|
|
1361
|
-
|
|
1362
|
-
each push to `main`, packages the VS Code extension, creates the `v<version>`
|
|
1363
|
-
tag and a GitHub Release (notes from `CHANGELOG.md` + the `.vsix` asset),
|
|
1364
|
-
publishes `@deltabox/toolchain` to npm, and publishes the extension to the VS
|
|
1365
|
-
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.
|
|
1366
1146
|
|
|
1367
1147
|
## 1.0.6 (October 2026)
|
|
1368
1148
|
|
|
@@ -1416,19 +1196,11 @@
|
|
|
1416
1196
|
#### Changelog
|
|
1417
1197
|
|
|
1418
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))
|
|
1419
|
-
|
|
1420
|
-
`CHANGELOG.md` did not exist yet (a fresh repo). Fall back to an empty notes
|
|
1421
|
-
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.
|
|
1422
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))
|
|
1423
|
-
|
|
1424
|
-
run on a repo without a `CHANGELOG.md` failed with `ENOENT`. Seed it with a
|
|
1425
|
-
`# 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`.
|
|
1426
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))
|
|
1427
|
-
|
|
1428
|
-
`node_modules`) walked up from `import.meta.url` and landed on the wrong
|
|
1429
|
-
`package.json`, so it looked for `CHANGELOG.md` in the wrong directory and
|
|
1430
|
-
failed. Resolve the nearest `package.json` above the working directory
|
|
1431
|
-
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.
|
|
1432
1204
|
|
|
1433
1205
|
### Chores
|
|
1434
1206
|
|
|
@@ -1436,6 +1208,4 @@
|
|
|
1436
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))
|
|
1437
1209
|
- Update package description and keywords ([#d75b503](https://github.com/deltabox-studio/toolchain/commit/d75b503) by [T0chi](https://github.com/T0chi))
|
|
1438
1210
|
- Initial commit of `@deltabox/toolchain` ([#ed4673b](https://github.com/deltabox-studio/toolchain/commit/ed4673b) by [T0chi](https://github.com/T0chi))
|
|
1439
|
-
|
|
1440
|
-
commitlint config and Conventional-Commits VS Code settings. Config file is
|
|
1441
|
-
`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`.
|