Fix launcher heap setup for long sessions - #1242
Merged
Merged
Conversation
Relaunch the package executable before loading dist/cli.mjs so OpenClaude starts with an effective V8 heap cap instead of setting NODE_OPTIONS after the current process has already started. The launcher now adds a default 8192 MB max-old-space-size and --expose-gc when they are missing, preserves flags supplied through process.execArgv or NODE_OPTIONS, and provides OPENCLAUDE_DISABLE_HEAP_RELAUNCH plus OPENCLAUDE_NODE_MAX_OLD_SPACE_SIZE_MB escape hatches. Update the headless loop GC hook to use Node global.gc when the launcher exposed it, while preserving the existing Bun.gc path. Clarify the entrypoint NODE_OPTIONS comment so it reflects child-process propagation rather than current-process heap sizing. Add scripts/openclaude-bin-heap.test.ts to guard launcher ordering and user override handling. Validation: bun test scripts/openclaude-bin-heap.test.ts src/entrypoints/cli.test.ts; node bin/openclaude --version returned 0.13.0 (OpenClaude). Earlier full build passed after bun install --frozen-lockfile. bun run typecheck remains blocked by existing repo-wide type errors unrelated to this change.
jatmn
requested review from
Vasanthdev2004,
anandh8x,
gnanam1990 and
techbrewboss
May 19, 2026 04:10
Collaborator
BlockersNone found. Non-BlockingNone. Looks Good
Verdict: Approve — clean heap fix. |
kevincodex1
approved these changes
May 25, 2026
jasonkelly007
pushed a commit
to jasonkelly007/openclaude
that referenced
this pull request
May 26, 2026
Ensures package.json scripts (dev, start), scripts/provider-launch.ts, and Dockerfile route node executions through the bin/openclaude launcher rather than calling node directly on dist/cli.mjs. This resolves PR feedback: 1. Preserves the robust launcher relaunch guard, GC exposure, and test coverage already merged on main (from Twigpine#1242). 2. Prevents hardcoded heap caps (--max-old-space-size=8192) from overriding user-provided NODE_OPTIONS or OPENCLAUDE_NODE_MAX_OLD_SPACE_SIZE_MB settings during development, start, or containerized runs.
kevincodex1
pushed a commit
that referenced
this pull request
May 27, 2026
Ensures package.json scripts (dev, start), scripts/provider-launch.ts, and Dockerfile route node executions through the bin/openclaude launcher rather than calling node directly on dist/cli.mjs. This resolves PR feedback: 1. Preserves the robust launcher relaunch guard, GC exposure, and test coverage already merged on main (from #1242). 2. Prevents hardcoded heap caps (--max-old-space-size=8192) from overriding user-provided NODE_OPTIONS or OPENCLAUDE_NODE_MAX_OLD_SPACE_SIZE_MB settings during development, start, or containerized runs. Co-authored-by: daltoncoder <daltoncoder@example.com>
discopops
pushed a commit
to discopops/openclaude
that referenced
this pull request
May 28, 2026
Relaunch the package executable before loading dist/cli.mjs so OpenClaude starts with an effective V8 heap cap instead of setting NODE_OPTIONS after the current process has already started. The launcher now adds a default 8192 MB max-old-space-size and --expose-gc when they are missing, preserves flags supplied through process.execArgv or NODE_OPTIONS, and provides OPENCLAUDE_DISABLE_HEAP_RELAUNCH plus OPENCLAUDE_NODE_MAX_OLD_SPACE_SIZE_MB escape hatches. Update the headless loop GC hook to use Node global.gc when the launcher exposed it, while preserving the existing Bun.gc path. Clarify the entrypoint NODE_OPTIONS comment so it reflects child-process propagation rather than current-process heap sizing. Add scripts/openclaude-bin-heap.test.ts to guard launcher ordering and user override handling. Validation: bun test scripts/openclaude-bin-heap.test.ts src/entrypoints/cli.test.ts; node bin/openclaude --version returned 0.13.0 (OpenClaude). Earlier full build passed after bun install --frozen-lockfile. bun run typecheck remains blocked by existing repo-wide type errors unrelated to this change.
discopops
pushed a commit
to discopops/openclaude
that referenced
this pull request
May 28, 2026
…ine#1363) Ensures package.json scripts (dev, start), scripts/provider-launch.ts, and Dockerfile route node executions through the bin/openclaude launcher rather than calling node directly on dist/cli.mjs. This resolves PR feedback: 1. Preserves the robust launcher relaunch guard, GC exposure, and test coverage already merged on main (from Twigpine#1242). 2. Prevents hardcoded heap caps (--max-old-space-size=8192) from overriding user-provided NODE_OPTIONS or OPENCLAUDE_NODE_MAX_OLD_SPACE_SIZE_MB settings during development, start, or containerized runs. Co-authored-by: daltoncoder <daltoncoder@example.com>
Gravirei
added a commit
to Gravirei/openclaude
that referenced
this pull request
May 28, 2026
- fix(autocompact): retry circuit breaker after cooldown (Twigpine#1375) - fix(provider): require API key input when adding OpenGateway (Twigpine#1384) - fix(provider): allow remote Ollama without OPENAI_API_KEY (Twigpine#952) - fix(codex-stream): recover tool args delivered only via done events (Twigpine#1262) - fix: route MiniMax compacting through Anthropic-compatible API (Twigpine#1154) - fix(thinking): disable thinking for unsupported Ollama models (Twigpine#1376) - feat(agents): set active session agent from agents menu (Twigpine#1349) - fix(repl): show permission prompts while draft input is present (Twigpine#1393) - fix(model): include profile models in descriptor picker (Twigpine#1361) - Improve warning notice formatting (Twigpine#1415) - fix(codex): allow credential storage fallback (Twigpine#1347) - fix(attribution): make git attribution opt-in by default (Twigpine#1335) - fix(agent): allow custom model overrides (Twigpine#1337) - feat(query): robust multi-lingual and structural continuation nudge (Twigpine#1280) - fix(watchers): debounce skills and settings reload bursts (Twigpine#1370) - feat: configure API retry backoff (Twigpine#370) (Twigpine#1095) - chore(main): release 0.15.0 (Twigpine#1325) - ci: retrigger CodeQL after action download outage (Twigpine#1374) - Fix launcher heap setup for long sessions (Twigpine#1242)
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #1221.
Validation
Note: bun run typecheck still reports existing repo-wide type errors unrelated to this change.