@levistudio/redline 0.5.1 → 0.5.2

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,11 @@ All notable changes to Redline are documented here. The format follows [Keep a C
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.5.2] - 2026-05-16
8
+
9
+ ### Fixed
10
+ - `redline-review` now launches Redline through a Node detached process group instead of `nohup`, so Codex-style shell runners that clean up the shell process group do not kill the review server after startup.
11
+
7
12
  ## [0.5.1] - 2026-05-15
8
13
 
9
14
  ### Fixed
@@ -79,7 +84,8 @@ Initial public release on npm as `@levistudio/redline`.
79
84
  - Auto-installs missing dependencies on first CLI run.
80
85
  - Initial test suite: server, sidecar, parsing, model-picking, rendering, diff, SSE, integration, happy-dom client.
81
86
 
82
- [Unreleased]: https://github.com/alevi/redline/compare/v0.5.1...HEAD
87
+ [Unreleased]: https://github.com/alevi/redline/compare/v0.5.2...HEAD
88
+ [0.5.2]: https://github.com/alevi/redline/compare/v0.5.1...v0.5.2
83
89
  [0.5.1]: https://github.com/alevi/redline/compare/v0.5.0...v0.5.1
84
90
  [0.5.0]: https://github.com/alevi/redline/compare/v0.4.1...v0.5.0
85
91
  [0.4.1]: https://github.com/alevi/redline/compare/v0.4.0...v0.4.1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levistudio/redline",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "Inline comments on Markdown files, for human-in-the-loop AI doc review.",
5
5
  "keywords": [
6
6
  "markdown",
@@ -11,7 +11,7 @@ When you've produced a markdown document that the human needs to read, comment o
11
11
 
12
12
  The redline launcher lives at `__REDLINE_BIN__` (substituted at install time — if you see the literal placeholder string, the skill was installed incorrectly; tell the human to re-run `redline install-skill`). Always invoke it by this absolute path. Do not call bare `redline` and do not try to "fix" PATH issues by running `bun link` or guessing where the repo lives.
13
13
 
14
- **Always detach the launcher with `nohup` and poll.** Never run `__REDLINE_BIN__` as a foreground/blocking shell call: agent shell tools often buffer stdout until the process exits, so you would never see the URL the human needs to click and your "I'll wait while you review" message would be a lie. Also do not use a plain trailing `&` without `nohup`: in Codex-style short shell calls, the shell can exit and take the Redline server with it. Use this pattern:
14
+ **Always detach the launcher with Node and poll.** Never run `__REDLINE_BIN__` as a foreground/blocking shell call: agent shell tools often buffer stdout until the process exits, so you would never see the URL the human needs to click and your "I'll wait while you review" message would be a lie. Also do not use `nohup` or a plain trailing `&`: in Codex-style short shell calls, the runner can clean up the shell's process group and take the Redline server with it. Use this pattern:
15
15
 
16
16
  ```bash
17
17
  FILE=/abs/path/to/file.md
@@ -20,8 +20,20 @@ STARTUP="$DIR/.review/$BASE.startup.json"
20
20
  RESULT="$DIR/.review/$BASE.result"
21
21
  LOG=/tmp/redline-$BASE.log
22
22
 
23
- # Kick off the review detached from this short-lived shell and open it in the user's real browser.
24
- nohup __REDLINE_BIN__ "$FILE" --open > "$LOG" 2>&1 < /dev/null &
23
+ # Kick off the review in a detached process group and open it in the user's real browser.
24
+ node - "__REDLINE_BIN__" "$FILE" "$LOG" <<'JS'
25
+ const { spawn } = require("node:child_process");
26
+ const fs = require("node:fs");
27
+ const [launcher, file, logPath] = process.argv.slice(2);
28
+ const out = fs.openSync(logPath, "a");
29
+ const child = spawn(launcher, [file, "--open"], {
30
+ detached: true,
31
+ stdio: ["ignore", out, out],
32
+ env: process.env,
33
+ });
34
+ child.unref();
35
+ console.log(child.pid);
36
+ JS
25
37
 
26
38
  # Step 1: wait for startup, read the URL.
27
39
  for i in $(seq 1 60); do [ -f "$STARTUP" ] && break; sleep 0.5; done