@devrouter/cli 0.0.58 → 0.0.59

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.
@@ -461,6 +461,14 @@ if [ -n "$prepare_command" ]; then
461
461
  wait "$preparation_pid" || preparation_status=$?
462
462
  [ "$interrupted" -eq 0 ] || exit "$interrupted"
463
463
  [ "$preparation_status" -eq 0 ] || die "Preparation for '$name' failed (exit $preparation_status)."
464
+ # Build tools can return before short-lived child shutdown finishes. Keep the
465
+ # lifecycle lock while allowing natural drainage; persistent children still fail.
466
+ for ((attempt = 0; attempt < 20; attempt += 1)); do
467
+ [ "$interrupted" -eq 0 ] || exit "$interrupted"
468
+ process_group_alive "$preparation_pid" || break
469
+ sleep 0.1
470
+ done
471
+ [ "$interrupted" -eq 0 ] || exit "$interrupted"
464
472
  if process_group_alive "$preparation_pid"; then
465
473
  die "Preparation for '$name' left running children; a synchronous foreground command is required."
466
474
  fi
@@ -4505,7 +4505,7 @@ function loadRepoConfig(repoPath) {
4505
4505
  const config = parseConfig(parsed ?? {}, configPath);
4506
4506
  const requiredVersion = config.devrouter?.version;
4507
4507
  if (requiredVersion && !hasWarnedVersionMismatch) {
4508
- const cliVersion = true ? "0.0.58" : "0.0.0-dev";
4508
+ const cliVersion = true ? "0.0.59" : "0.0.0-dev";
4509
4509
  if (cliVersion !== "0.0.0-dev" && compareSemver(requiredVersion, cliVersion) > 0) {
4510
4510
  hasWarnedVersionMismatch = true;
4511
4511
  process.stderr.write(
package/dist/devrouter.js CHANGED
@@ -2821,7 +2821,7 @@ function loadRepoConfig(repoPath) {
2821
2821
  const config = parseConfig(parsed ?? {}, configPath);
2822
2822
  const requiredVersion = config.devrouter?.version;
2823
2823
  if (requiredVersion && !hasWarnedVersionMismatch) {
2824
- const cliVersion = true ? "0.0.58" : "0.0.0-dev";
2824
+ const cliVersion = true ? "0.0.59" : "0.0.0-dev";
2825
2825
  if (cliVersion !== "0.0.0-dev" && compareSemver(requiredVersion, cliVersion) > 0) {
2826
2826
  hasWarnedVersionMismatch = true;
2827
2827
  process.stderr.write(
@@ -9209,7 +9209,7 @@ async function buildDoctorReport(options = {}) {
9209
9209
  const config = runtimeConfig.config;
9210
9210
  loadedConfig = config;
9211
9211
  loadedWorkspace = runtimeConfig.workspace;
9212
- const cliVersion = true ? "0.0.58" : "0.0.0-dev";
9212
+ const cliVersion = true ? "0.0.59" : "0.0.0-dev";
9213
9213
  const configVersion = config.devrouter?.version;
9214
9214
  if (configVersion && cliVersion !== "0.0.0-dev" && compareSemver(configVersion, cliVersion) > 0) {
9215
9215
  addCheck(checks, {
@@ -16135,7 +16135,7 @@ var init_version = __esm({
16135
16135
 
16136
16136
  // src/cli.ts
16137
16137
  var import_commander = require("commander");
16138
- var CLI_VERSION = true ? "0.0.58" : "0.0.0-dev";
16138
+ var CLI_VERSION = true ? "0.0.59" : "0.0.0-dev";
16139
16139
  var VERSION_FLAGS = /* @__PURE__ */ new Set(["-V", "--version"]);
16140
16140
  function withErrorHandling(action2) {
16141
16141
  return async (...args) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrouter/cli",
3
- "version": "0.0.58",
3
+ "version": "0.0.59",
4
4
  "description": "Local dev routing CLI with shared Traefik reverse proxy",
5
5
  "author": "Roland Schlaefli",
6
6
  "homepage": "https://github.com/rschlaefli/devrouter#readme",
@@ -0,0 +1,34 @@
1
+ # Upgrade to devrouter 0.0.59
2
+
3
+ This patch lets short-lived preparation children finish naturally after the
4
+ foreground command exits successfully. The helper holds its lifecycle lock and
5
+ checks cancellation during a bounded two-second drain window. Persistent children
6
+ still prevent application startup and use existing owned-group cleanup.
7
+
8
+ ## Task
9
+
10
+ Install the published patch and update `.devrouter.yml` devrouter.version to
11
+ 0.0.59 through the consumer workflow. No schema or dependency migration is needed.
12
+ The next authorized ensure delivers the matching runtime helper automatically.
13
+ Keep preparation synchronous and avoid detached sessions or process groups.
14
+
15
+ ## Validation
16
+
17
+ On an authorized exact checkout, verify preparation finishes and the intended
18
+ profile starts. Test application readiness independently from successful build
19
+ output. Preserve data, stop task-owned runtimes and verify stopped provider status
20
+ and zero exact routes. Do not start another task's runtime to repeat qualification.
21
+
22
+ ## Limits
23
+
24
+ An isolated Linux fixture proves natural drainage of a short-lived child and
25
+ continued rejection of persistent children. The reported Turbo descendant has
26
+ not been identified, so this patch alone does not prove that consumer startup
27
+ succeeds. Warm mount reconciliation, capacity admission and complete OOM protection
28
+ remain outside this patch.
29
+
30
+ ## Report
31
+
32
+ Report installed version, exact checkout/profile, preparation outcome, application
33
+ readiness and final runtime state. Include remaining blockers without treating
34
+ cached build success as successful environment startup.