@hienlh/ppm 0.5.5 → 0.5.7

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
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.5.7] - 2026-03-18
4
+
5
+ ### Fixed
6
+ - **Windows: PowerShell Start-Process rejects same file for stdout/stderr** — use separate `.err.log` for stderr redirect
7
+
8
+ ## [0.5.6] - 2026-03-18
9
+
10
+ ### Added
11
+ - All CLI commands now print PPM version before execution for easy version verification
12
+
3
13
  ## [0.5.5] - 2026-03-18
4
14
 
5
15
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hienlh/ppm",
3
- "version": "0.5.5",
3
+ "version": "0.5.7",
4
4
  "description": "Personal Project Manager — mobile-first web IDE with AI assistance",
5
5
  "module": "src/index.ts",
6
6
  "type": "module",
package/src/index.ts CHANGED
@@ -7,7 +7,10 @@ const program = new Command();
7
7
  program
8
8
  .name("ppm")
9
9
  .description("Personal Project Manager — mobile-first web IDE")
10
- .version(VERSION);
10
+ .version(VERSION)
11
+ .hook("preAction", () => {
12
+ console.log(` PPM v${VERSION}\n`);
13
+ });
11
14
 
12
15
  program
13
16
  .command("start")
@@ -310,13 +310,15 @@ export async function startServer(options: {
310
310
  // Windows: Bun.spawn child may die when parent exits (same job object).
311
311
  // Use PowerShell Start-Process to create a truly detached process.
312
312
  const bunExe = process.execPath.replace(/\\/g, "\\\\");
313
+ const logEscaped = logFile.replace(/\\/g, "\\\\");
314
+ const errLog = logFile.replace(/\.log$/, ".err.log").replace(/\\/g, "\\\\");
313
315
  const argStr = ["run", script, ...args].map((a) => `'${a}'`).join(",");
314
316
  const psCmd = [
315
317
  `$p = Start-Process -PassThru -WindowStyle Hidden`,
316
318
  `-FilePath '${bunExe}'`,
317
319
  `-ArgumentList ${argStr}`,
318
- `-RedirectStandardOutput '${logFile.replace(/\\/g, "\\\\")}'`,
319
- `-RedirectStandardError '${logFile.replace(/\\/g, "\\\\")}'`,
320
+ `-RedirectStandardOutput '${logEscaped}'`,
321
+ `-RedirectStandardError '${errLog}'`,
320
322
  `; Write-Output $p.Id`,
321
323
  ].join(" ");
322
324
  const result = Bun.spawnSync({
@@ -358,7 +360,7 @@ export async function startServer(options: {
358
360
  writeFileSync(statusFile, JSON.stringify(status));
359
361
  writeFileSync(pidFile, String(childPid));
360
362
 
361
- console.log(`\n PPM v${VERSION} daemon started (PID: ${childPid})\n`);
363
+ console.log(` Daemon started (PID: ${childPid})\n`);
362
364
  console.log(` ➜ Local: http://localhost:${port}/`);
363
365
  if (shareUrl) {
364
366
  console.log(` ➜ Share: ${shareUrl}`);
@@ -441,7 +443,7 @@ export async function startServer(options: {
441
443
  // Start background usage polling
442
444
  import("../services/claude-usage.service.ts").then(({ startUsagePolling }) => startUsagePolling()).catch(() => {});
443
445
 
444
- console.log(`\n PPM v${VERSION} ready\n`);
446
+ console.log(`\n PPM ready\n`);
445
447
  console.log(` ➜ Local: http://localhost:${server.port}/`);
446
448
 
447
449
  const { networkInterfaces } = await import("node:os");