@dbx-tools/projen 0.6.226 → 0.6.228

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -60,9 +60,10 @@ Repository policy stays in the consuming `.projenrc.ts`:
60
60
  - `releaseValidationTasks` names repository tasks that must pass in the release
61
61
  worktree before Cargo tests, compilation, local publication, or approval.
62
62
  Use it for repository-specific guards that also run in release CI.
63
- - `releaseSummary` controls optional AI release notes. It defaults to enabled
64
- with Cursor, Codex, Claude fallback order; pass `false` to disable or provide
65
- a `providers` array to choose the order/subset.
63
+ - `releaseSummary` controls versioned release notes. It defaults to Cursor,
64
+ Codex, Claude fallback order and writes a deterministic Git summary when every
65
+ configured provider is unavailable; pass `false` to disable or provide a
66
+ `providers` array to choose the order/subset.
66
67
  - `pullRequestTitlePolicy` configures semantic title types and scope policy.
67
68
  Omit it or pass `false` to disable the title job.
68
69
  - `workflowCacheIgnorePaths` excludes generated output trees that may contain
@@ -289,6 +290,11 @@ Built-in tag mixins set runtime defaults for `shared`, `node`, `cli`, `server`,
289
290
  `ui`, and `openapi`. Repo-specific mixins layer package-specific dependencies,
290
291
  scripts, and generated files on top.
291
292
 
293
+ AppKit 0.81's `appkitServerConfig()` is the preferred tsdown preset for a
294
+ consumer app using conventional compiled `server/agents/*/agent.ts` entries. It
295
+ does not replace this engine's package discovery, Bun browser build, source-run
296
+ server, publication, or Databricks deployment staging.
297
+
292
298
  A tag layers over a shared compiler floor every package gets at construction:
293
299
  ES2022 plus the web-platform globals available in every runtime, and deliberately
294
300
  no DOM lib and no Node types, so agnostic code stays isomorphic. The tags are what
package/index.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  // Hand edits are overwritten on the next watch; this file is read-only.
4
4
 
5
5
  export const PACKAGE_IDENTIFIER = "@dbx-tools/projen";
6
- export const PACKAGE_VERSION = "0.6.226";
6
+ export const PACKAGE_VERSION = "0.6.228";
7
7
  export * as barrels from "./src/barrels.ts";
8
8
  export * as bunApp from "./src/bun-app.ts";
9
9
  export * as bunWorkflow from "./src/bun-workflow.ts";
package/package.json CHANGED
@@ -25,9 +25,9 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@clack/prompts": "^1.7.0",
28
- "@dbx-tools/core": "0.6.226",
29
- "@dbx-tools/path": "0.6.226",
30
- "@dbx-tools/shared-core": "0.6.226",
28
+ "@dbx-tools/core": "0.6.228",
29
+ "@dbx-tools/path": "0.6.228",
30
+ "@dbx-tools/shared-core": "0.6.228",
31
31
  "commander": "^15.0.0",
32
32
  "concurrently": "^10.0.3",
33
33
  "constructs": "^10.6.0",
@@ -47,7 +47,7 @@
47
47
  },
48
48
  "main": "index.ts",
49
49
  "license": "Apache-2.0",
50
- "version": "0.6.226",
50
+ "version": "0.6.228",
51
51
  "types": "index.ts",
52
52
  "type": "module",
53
53
  "exports": {
@@ -87,8 +87,8 @@ const DEFAULT_CATALOG: Catalog = {
87
87
  tsoa: "^6.6.0",
88
88
  concurrently: "^10.0.3",
89
89
  pnpm: "^11.0.6",
90
- "@databricks/appkit": "^0.60.0",
91
- "@databricks/appkit-ui": "^0.60.0",
90
+ "@databricks/appkit": "0.81.0",
91
+ "@databricks/appkit-ui": "0.81.0",
92
92
  "@databricks/sdk-experimental": "^0.17.0",
93
93
  };
94
94
 
package/src/project-rs.ts CHANGED
@@ -1346,6 +1346,7 @@ function rustGitHubReleaseJob(): Job {
1346
1346
  runsOn: ["ubuntu-latest"],
1347
1347
  permissions: { contents: JobPermission.WRITE },
1348
1348
  steps: [
1349
+ ...releaseSourceSteps(),
1349
1350
  {
1350
1351
  name: "Download release binaries",
1351
1352
  uses: "actions/download-artifact@v8",
@@ -1361,7 +1362,7 @@ function rustGitHubReleaseJob(): Job {
1361
1362
  with: {
1362
1363
  files: "dist/rust-release/*",
1363
1364
  body_path: RELEASE_SUMMARY_FILE,
1364
- "generate-release-notes": true,
1365
+ generate_release_notes: true,
1365
1366
  tag_name: RELEASE_TAG,
1366
1367
  target_commitish: RELEASE_SHA,
1367
1368
  },
@@ -215,7 +215,35 @@ function summaryPrompt(
215
215
  ].join("\n");
216
216
  }
217
217
 
218
- /** Generate one immutable versioned summary, or remove a stale retry artifact. */
218
+ /** Deterministic fallback when every configured AI provider is unavailable. */
219
+ function gitSummary(version: string, commits: string, changedFiles: string): string {
220
+ const subjects = commits
221
+ .split("\n")
222
+ .map((line) => line.trim())
223
+ .filter(Boolean)
224
+ .filter((line, index, lines) => lines.indexOf(line) === index)
225
+ .slice(0, 20);
226
+ const files = changedFiles
227
+ .split("\n")
228
+ .map((line) => line.trim().split(/\s+/).at(-1))
229
+ .filter((value): value is string => Boolean(value));
230
+ const areas = files
231
+ .map((file) => {
232
+ if (file.startsWith("packages/")) return file.split("/").slice(0, 4).join("/");
233
+ return file.split("/")[0] ?? file;
234
+ })
235
+ .filter((area, index, all) => all.indexOf(area) === index)
236
+ .slice(0, 12);
237
+ const bullets = subjects.length ? subjects : areas.map((area) => `Updated ${area}`);
238
+ return [
239
+ `dbx-tools ${version} contains the reviewed changes listed below.`,
240
+ "",
241
+ "## Changes",
242
+ ...(bullets.length ? bullets.map((item) => `- ${item}`) : ["- Release metadata updated."]),
243
+ ].join("\n");
244
+ }
245
+
246
+ /** Generate one immutable versioned summary with an AI or Git fallback. */
219
247
  export async function generateReleaseSummary(options: {
220
248
  readonly root: string;
221
249
  readonly version: string;
@@ -258,13 +286,12 @@ export async function generateReleaseSummary(options: {
258
286
  options.runner,
259
287
  options.providers,
260
288
  );
261
- if (!result) {
262
- logger.info("no supported AI CLI available; skipping release summary");
263
- return undefined;
264
- }
265
- const content = `# Release ${options.version}\n\n${result.summary.trim()}\n`;
289
+ const summary = result?.summary ?? gitSummary(options.version, commits, changedFiles);
290
+ const provider = result?.provider ?? "git";
291
+ if (!result) logger.info("AI providers unavailable; using Git release summary");
292
+ const content = `# Release ${options.version}\n\n${summary.trim()}\n`;
266
293
  mkdirSync(dirname(output), { recursive: true });
267
294
  writeFileSync(output, content);
268
- logger.info("generated", { provider: result.provider, path: output });
295
+ logger.info("generated", { provider, path: output });
269
296
  return content;
270
297
  }