@absolutejs/absolute 0.20.0-beta.146 → 0.20.0-beta.147

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
@@ -6,6 +6,12 @@ This file is generated by `absolute-changelog` from the entries in
6
6
  `changelog/`. Edit an entry, not this file — and add new ones under
7
7
  `changelog/unreleased/`.
8
8
 
9
+ ## 0.20.0-beta.147 — 2026-10-23
10
+
11
+ ### Fixed
12
+
13
+ - **absolute dev hides the detached Windows server console** (`PrepareResult`, `prepare`, `startDevPrebuild`)
14
+
9
15
  ## 0.20.0-beta.146 — 2026-10-23
10
16
 
11
17
  ### Fixed
@@ -13,6 +19,34 @@ This file is generated by `absolute-changelog` from the entries in
13
19
  - **Give prepare a stable runtime plugin contract across development and production. Prevent exponential Elysia RC error-response type expansion as applications mount plugins, while preserving the types of application routes.** (`prepare`, `PrepareResult`, `startDevPrebuild`)
14
20
  Register internal routes on the same runtime instance without exposing environment-specific internal route unions. No casts, compiler suppressions, or runtime middleware changes are needed in consumers.
15
21
 
22
+ ## 0.20.0-beta.146 — 2026-10-23
23
+
24
+ ### Fixed
25
+
26
+ - **absolute dev no longer opens a detached CMD window on Windows**
27
+
28
+ ### Internal
29
+
30
+ - **Keep generated prebuild declarations aligned with the published surface** (`PrepareResult`, `prepare`, `startDevPrebuild`)
31
+ The release build records the generated PrepareResult, prepare, and startDevPrebuild declaration surface so the package gate can compare the release deterministically.
32
+
33
+ ## 0.20.0-beta.145 — 2026-10-22
34
+
35
+ ### Added
36
+
37
+ - **`absolute fmt` formats with bun fmt, using your Prettier config**
38
+ `absolute fmt` formats with Bun's built-in `bun fmt` (Bun 1.4.4 or newer). It reads the project's existing Prettier configuration (`.prettierrc*`, overrides, `.prettierignore`, `.editorconfig`) and produces the same output as Prettier 3.9, Svelte included, in milliseconds, so it needs no cache. `absolute fmt --check` exits non-zero when files need formatting. On older Bun it says so and points to `absolute prettier`, which stays for projects whose Prettier plugins `bun fmt` doesn't support.
39
+
40
+ ### Changed
41
+
42
+ - **absolute dev uses the patched Bun 1.4.4 build**
43
+ `absolute dev` now selects AbsoluteJS's patched Bun 1.4.4 (`1.4.4+absolute.1`, installed and signature-checked by bvm) for React Fast Refresh. Stock Bun 1.4.4 still ignores `reactFastRefresh` on `Bun.Transpiler` (oven-sh/bun#32919), so React edits keep component state only on the patched build. The patched build now reports its full version as `Bun.version`, and the install check accepts it. Projects on the 1.4.2 patched build are offered the update.
44
+
45
+ ### Fixed
46
+
47
+ - **Projects without a tsconfig.json build on Bun 1.4.3 and newer**
48
+ Builds named `./tsconfig.json` to Bun.build whether or not the project had one. Bun ignored the option until 1.4.3; from 1.4.3 it reads it and fails with `Cannot find tsconfig file`, so on Bun 1.4.3+ a project without a tsconfig.json could not build, compile or start its dev client. The tsconfig is now named only when it exists; otherwise Bun finds the nearest one itself, as it did before.
49
+
16
50
  ## 0.20.0-beta.145 — 2026-10-22
17
51
 
18
52
  ### Added
package/changelog.json CHANGED
@@ -39,6 +39,58 @@
39
39
  "date": "2026-10-22",
40
40
  "version": "0.20.0-beta.145"
41
41
  },
42
+ {
43
+ "changes": [
44
+ {
45
+ "kind": "fixed",
46
+ "summary": "absolute dev hides the detached Windows server console",
47
+ "symbols": ["PrepareResult", "prepare", "startDevPrebuild"]
48
+ }
49
+ ],
50
+ "date": "2026-10-23",
51
+ "version": "0.20.0-beta.147"
52
+ },
53
+ {
54
+ "changes": [
55
+ {
56
+ "kind": "fixed",
57
+ "summary": "absolute dev no longer opens a detached CMD window on Windows"
58
+ },
59
+ {
60
+ "detail": "The release build records the generated PrepareResult, prepare, and startDevPrebuild declaration surface so the package gate can compare the release deterministically.",
61
+ "kind": "internal",
62
+ "summary": "Keep generated prebuild declarations aligned with the published surface",
63
+ "symbols": [
64
+ "PrepareResult",
65
+ "prepare",
66
+ "startDevPrebuild"
67
+ ]
68
+ }
69
+ ],
70
+ "date": "2026-10-23",
71
+ "version": "0.20.0-beta.146"
72
+ },
73
+ {
74
+ "changes": [
75
+ {
76
+ "detail": "`absolute fmt` formats with Bun's built-in `bun fmt` (Bun 1.4.4 or newer). It reads the project's existing Prettier configuration (`.prettierrc*`, overrides, `.prettierignore`, `.editorconfig`) and produces the same output as Prettier 3.9, Svelte included, in milliseconds, so it needs no cache. `absolute fmt --check` exits non-zero when files need formatting. On older Bun it says so and points to `absolute prettier`, which stays for projects whose Prettier plugins `bun fmt` doesn't support.",
77
+ "kind": "added",
78
+ "summary": "`absolute fmt` formats with bun fmt, using your Prettier config"
79
+ },
80
+ {
81
+ "detail": "Builds named `./tsconfig.json` to Bun.build whether or not the project had one. Bun ignored the option until 1.4.3; from 1.4.3 it reads it and fails with `Cannot find tsconfig file`, so on Bun 1.4.3+ a project without a tsconfig.json could not build, compile or start its dev client. The tsconfig is now named only when it exists; otherwise Bun finds the nearest one itself, as it did before.",
82
+ "kind": "fixed",
83
+ "summary": "Projects without a tsconfig.json build on Bun 1.4.3 and newer"
84
+ },
85
+ {
86
+ "detail": "`absolute dev` now selects AbsoluteJS's patched Bun 1.4.4 (`1.4.4+absolute.1`, installed and signature-checked by bvm) for React Fast Refresh. Stock Bun 1.4.4 still ignores `reactFastRefresh` on `Bun.Transpiler` (oven-sh/bun#32919), so React edits keep component state only on the patched build. The patched build now reports its full version as `Bun.version`, and the install check accepts it. Projects on the 1.4.2 patched build are offered the update.",
87
+ "kind": "changed",
88
+ "summary": "absolute dev uses the patched Bun 1.4.4 build"
89
+ }
90
+ ],
91
+ "date": "2026-10-22",
92
+ "version": "0.20.0-beta.145"
93
+ },
42
94
  {
43
95
  "changes": [
44
96
  {
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- // .angular-partial-tmp-Ebcz5o/src/core/streamingSlotRegistrar.ts
2
+ // .angular-partial-tmp-BTRbNV/src/core/streamingSlotRegistrar.ts
3
3
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
4
4
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
5
5
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- // .angular-partial-tmp-Ebcz5o/src/core/streamingSlotRegistrar.ts
2
+ // .angular-partial-tmp-BTRbNV/src/core/streamingSlotRegistrar.ts
3
3
  var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
4
4
  var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
5
5
  var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
@@ -46,7 +46,7 @@ var warnMissingStreamingSlotCollector = (primitiveName) => {
46
46
  getWarningController()?.maybeWarn(primitiveName);
47
47
  };
48
48
 
49
- // .angular-partial-tmp-Ebcz5o/src/core/streamingSlotRegistry.ts
49
+ // .angular-partial-tmp-BTRbNV/src/core/streamingSlotRegistry.ts
50
50
  var STREAMING_SLOT_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotAsyncLocalStorage");
51
51
  var isObjectRecord2 = (value) => Boolean(value) && typeof value === "object";
52
52
  var isAsyncLocalStorage = (value) => isObjectRecord2(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
@@ -1256,6 +1256,15 @@ var createInteractiveHandler = (actions) => {
1256
1256
  return { clearPrompt, dispose, showPrompt };
1257
1257
  };
1258
1258
 
1259
+ // src/cli/devSpawn.ts
1260
+ var devChildSpawnOptions = (cwd, env) => ({
1261
+ cwd,
1262
+ detached: true,
1263
+ env,
1264
+ stdio: ["ignore", "pipe", "pipe", "pipe"],
1265
+ windowsHide: process.platform === "win32"
1266
+ });
1267
+
1259
1268
  // src/utils/resolveDevPort.ts
1260
1269
  import { createServer } from "net";
1261
1270
  var isPortFree = (port, host = "localhost") => new Promise((resolve) => {
@@ -2539,34 +2548,32 @@ var dev = async (serverEntry, configPath, options = {}) => {
2539
2548
  markBoot("dev child spawn requested");
2540
2549
  const prescanForSpawn = prescan;
2541
2550
  prescan = null;
2551
+ const childEnv = {
2552
+ ...process.env,
2553
+ ...readDotenvFiles(),
2554
+ ABSOLUTE_HOST: resolvedDev.host,
2555
+ ABSOLUTE_INSTANCE_MANAGED: "1",
2556
+ ABSOLUTE_PORT: String(port),
2557
+ ABSOLUTE_SERVER_ENTRY: resolvePath(serverEntry),
2558
+ ...parentListener ? { [PARENT_LISTENER_ENV]: "1" } : {},
2559
+ ...bootTimelineChildEnv(),
2560
+ ...prescanForSpawn ? { ABSOLUTE_DEV_PRESCAN: prescanForSpawn.path } : {},
2561
+ ...options.eager ? { ABSOLUTE_DEV_EAGER: "1" } : {},
2562
+ ...process.stdout.isTTY === true ? { ABSOLUTE_DEV_TTY: "1" } : {},
2563
+ ...mobileConfig ? { ABSOLUTE_MOBILE_PREVIEW: "1" } : {},
2564
+ FORCE_COLOR: "1",
2565
+ NODE_ENV: "development",
2566
+ PORT: String(port),
2567
+ ...configPath ? { ABSOLUTE_CONFIG: configPath } : {},
2568
+ ...httpsEnabled ? { ABSOLUTE_HTTPS: "true" } : {}
2569
+ };
2542
2570
  const proc = nodeSpawn(bunExecutable, [
2543
2571
  "--no-clear-screen",
2544
2572
  ...heapSnapshotEnabled ? ["--preload", heapPreloadPath] : [],
2545
2573
  ...importCostEnabled() ? ["--preload", importCostPreload] : [],
2546
2574
  serverBootstrap
2547
2575
  ], {
2548
- cwd: process.cwd(),
2549
- detached: true,
2550
- env: {
2551
- ...process.env,
2552
- ...readDotenvFiles(),
2553
- ABSOLUTE_HOST: resolvedDev.host,
2554
- ABSOLUTE_INSTANCE_MANAGED: "1",
2555
- ABSOLUTE_PORT: String(port),
2556
- ABSOLUTE_SERVER_ENTRY: resolvePath(serverEntry),
2557
- ...parentListener ? { [PARENT_LISTENER_ENV]: "1" } : {},
2558
- ...bootTimelineChildEnv(),
2559
- ...prescanForSpawn ? { ABSOLUTE_DEV_PRESCAN: prescanForSpawn.path } : {},
2560
- ...options.eager ? { ABSOLUTE_DEV_EAGER: "1" } : {},
2561
- ...process.stdout.isTTY === true ? { ABSOLUTE_DEV_TTY: "1" } : {},
2562
- ...mobileConfig ? { ABSOLUTE_MOBILE_PREVIEW: "1" } : {},
2563
- FORCE_COLOR: "1",
2564
- NODE_ENV: "development",
2565
- PORT: String(port),
2566
- ...configPath ? { ABSOLUTE_CONFIG: configPath } : {},
2567
- ...httpsEnabled ? { ABSOLUTE_HTTPS: "true" } : {}
2568
- },
2569
- stdio: ["ignore", "pipe", "pipe", "pipe"]
2576
+ ...devChildSpawnOptions(process.cwd(), childEnv)
2570
2577
  });
2571
2578
  prescanForSpawn?.start();
2572
2579
  const [, , , handoffPipe] = proc.stdio;
package/dist/cli/index.js CHANGED
@@ -54,7 +54,7 @@ if (command === "dev") {
54
54
  }
55
55
  const positionalArgs = stripNamedArgs("--config", "--android-device", "--ios-device").filter((arg) => arg !== "--no-mobile" && arg !== "--eager");
56
56
  const serverEntry = positionalArgs[0] ?? DEFAULT_SERVER_ENTRY;
57
- const { dev } = await import("./dev-4qz8gk8x.js");
57
+ const { dev } = await import("./dev-2s1wgybw.js");
58
58
  await dev(serverEntry, configPath, {
59
59
  androidDevice,
60
60
  eager: args.includes("--eager"),
@@ -0,0 +1,8 @@
1
+ import type { SpawnOptions } from 'node:child_process';
2
+ /** Options shared by the detached server child used by `absolute dev`.
3
+ *
4
+ * The child needs its own process group so the parent can clean up the server
5
+ * tree. On Windows, detached children otherwise get a visible console window;
6
+ * keep the process group without opening a second CMD window.
7
+ */
8
+ export declare const devChildSpawnOptions: (cwd: string, env: NodeJS.ProcessEnv) => SpawnOptions;
package/package.json CHANGED
@@ -563,7 +563,7 @@
563
563
  ]
564
564
  }
565
565
  },
566
- "version": "0.20.0-beta.146",
566
+ "version": "0.20.0-beta.147",
567
567
  "workspaces": [
568
568
  "tests/fixtures/*",
569
569
  "tests/fixtures/_packages/*"