@tdk-landscape/tdk-cli-core 1.3.65 → 1.3.67

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 CHANGED
@@ -4,6 +4,13 @@ Notable changes to the `tdk` CLI. Versions match [npm](https://www.npmjs.com/pac
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ - The clean-machine quickstart run (`tdk project`, `tdk resource`, `tdk up`, wait for `/health`) now starts by itself after every successful release and tests exactly the version just published. It also still runs nightly and on demand.
8
+
9
+ ## 1.3.66 (2026-09-28)
10
+
11
+ - **`tdk up` on a machine with no base images no longer leaves every service stuck on a 404.** The generated Tiltfile dropped the golden-layers resource name, so app and migrator resources never waited for `golden-layers-build`. Their image builds started at once, failed with "pull access denied" because the base images did not exist yet, and Tilt never retried. Machines that had built the layers before (any second run) were unaffected, which hid it. Found by the clean-machine quickstart run.
12
+ - `tdk doctor` now names a missing golden base image for any project name (`shop-l4-backend`, ...). The hint was hard-coded to the `tdk-project-` prefix, so a real project got the raw BuildKit error.
13
+
7
14
  ## 1.3.64 (2026-09-28)
8
15
 
9
16
  - `traefik.healthCheck` in service.json (the path Traefik's load balancer probes, documented in the schema) is now honored. It was read by discovery but never used, so Traefik always probed `healthCheckPath`. It defaults to `healthCheckPath`, so manifests that only set that generate the same output as before.
@@ -123,6 +123,7 @@ export function parseTiltResourceFailures(jsonText, deferredNames = new Set()) {
123
123
  * Turn noisy Tilt/Docker build errors into an actionable one-liner.
124
124
  * Prefer registry/network root causes over truncated ImageBuild exit lines.
125
125
  */
126
+ const GOLDEN_BASE_IMAGE_PULL_FAILURE = /failed to resolve source metadata for docker\.io\/library\/([A-Za-z0-9._-]+-l[1-4](?:-[a-z]+)*)(?::[^\s:]+)?:/i;
126
127
  export function summarizeTiltBuildError(error) {
127
128
  const normalized = error.replace(/\s+/g, " ").trim();
128
129
  const bindMatch = normalized.match(/Bind for [^ ]+:(\d+) failed: port is already allocated/i);
@@ -141,9 +142,11 @@ export function summarizeTiltBuildError(error) {
141
142
  const more = unique.length > 4 ? ` (+${unique.length - 4} more)` : "";
142
143
  return `private registry ConnectionRefused for ${shown}${more} — Verdaccio (:4873) is down or unreachable from the build`;
143
144
  }
144
- if (/failed to resolve source metadata for docker\.io\/library\/(tdk-project-[^:\s]+)/i.test(normalized)) {
145
- const image = normalized.match(/failed to resolve source metadata for docker\.io\/library\/(tdk-project-[^:\s]+)/i)?.[1];
146
- return `base image ${image ?? "tdk-project-*"} missing locally (golden-layer build not finished or failed)`;
145
+ // Golden base images are named `<project>-l1`, `<project>-l2`, `<project>-l3-backend`,
146
+ // `<project>-l4-migrator`, and so on, for whatever the project is called.
147
+ const goldenBase = normalized.match(GOLDEN_BASE_IMAGE_PULL_FAILURE);
148
+ if (goldenBase) {
149
+ return `base image ${goldenBase[1]} was missing when this build started (the golden layers weren't built yet, or golden-layers-build failed) - Tilt does not retry a failed build by itself`;
147
150
  }
148
151
  if (/install-deps\.sh/i.test(normalized) ||
149
152
  /bun install(?: --production)?/i.test(normalized) ||
package/cli/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tdk-cli-internal",
3
3
  "private": true,
4
- "version": "1.3.65",
4
+ "version": "1.3.67",
5
5
  "description": "TDK CLI - Tilt Development Kit command line interface",
6
6
  "keywords": [
7
7
  "tdk",
@@ -185,7 +185,12 @@ def should_enable(resource_name):
185
185
  # =============================================================================
186
186
 
187
187
  print("🏗️ Loading infrastructure services...")
188
- Infra.load_all(
188
+ # load_all returns the golden-layers build resource's name. It has to reach
189
+ # TILT_CONTEXT below: app and migrator resources add it to their resource_deps
190
+ # so their images build only after the base images exist. Dropping it lets
191
+ # every service image build start at once, fail with "pull access denied" on a
192
+ # machine that has no base images yet, and never retry.
193
+ GOLDEN_IMAGE_RESOURCE = Infra.load_all(
189
194
  should_enable=should_enable,
190
195
  fix_docker_networks_fn=Utils.fix_docker_networks,
191
196
  docker_provider=Docker,
@@ -219,6 +224,7 @@ TILT_CONTEXT = {
219
224
  'global_config': GLOBAL_CONFIG_EXPORT,
220
225
  'project_root': PROJECT_ROOT,
221
226
  'all_services': _app_resources_list,
227
+ 'golden_image_resource': GOLDEN_IMAGE_RESOURCE,
222
228
  }
223
229
 
224
230
  print("🚀 Creating Tilt resources for {} services...".format(len(_app_resources_list)))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tdk-landscape/tdk-cli-core",
3
- "version": "1.3.65",
3
+ "version": "1.3.67",
4
4
  "description": "Run 100 microservices on a 16 GB laptop without Kubernetes. Scaffold services and run them locally with hot reload, built on Tilt.",
5
5
  "homepage": "https://tdk-landscape.github.io/tdk-website",
6
6
  "repository": {