Skip to content

bunfig: load global ~/.bunfig.toml for runtime commands; fall back past $XDG_CONFIG_HOME - #34987

Closed
robobun wants to merge 10 commits into
mainfrom
claude/farm/55a9ccd1/global-bunfig-runtime
Closed

bunfig: load global ~/.bunfig.toml for runtime commands; fall back past $XDG_CONFIG_HOME#34987
robobun wants to merge 10 commits into
mainfrom
claude/farm/55a9ccd1/global-bunfig-runtime

apply review: RunAsNodeCommand reads runtime bunfig keys; share XDG/H…

a5803c5
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed Jul 21, 2026 in 24m 30s

Code review found 2 potential issues

Found 4 candidates, confirmed 2. See review comments for details.

Details

Severity Count
🔴 Important 0
🟡 Nit 2
🟣 Pre-existing 0
Severity File:Line Issue
🟡 Nit src/options_types/command_tag.rs:90-93 Global bunfig's jsx.runtime/development clobbered by local bunfig defaults
🟡 Nit test/config/bunfig/global-bunfig-runtime.test.ts:96-105 node-shim test pipes stderr but never drains it

Annotations

Check warning on line 93 in src/options_types/command_tag.rs

See this annotation in the file changed.

@claude claude / Claude Code Review

Global bunfig's jsx.runtime/development clobbered by local bunfig defaults

The shallow merge this enables is incomplete for `jsx.runtime`/`jsx.development`: the jsx block in `bunfig.rs` initializes those to `Automatic`/`true` and writes them into `ctx.args.jsx` unconditionally in the `as_mut()` arm (unlike `factory`/`fragment`/`import_source`, which are gated on `!is_empty()`), so a local `bunfig.toml` without a `jsx` key resets a global `jsx = "solid"` back to Automatic. Not a regression — pre-PR the global `jsx` never applied at all for these commands, so observable 

Check warning on line 105 in test/config/bunfig/global-bunfig-runtime.test.ts

See this annotation in the file changed.

@claude claude / Claude Code Review

node-shim test pipes stderr but never drains it

This spawns with `stderr: "pipe"` but the `Promise.all` only drains `stdout` and `exited`, leaving stderr unread — the pattern REVIEW.md → Subprocess tests calls out ("drain pipes concurrently … an unread pipe fills the ~64KB OS buffer and deadlocks the child"). Output here is tiny so it won't actually deadlock, but it discards stderr on failure and diverges from this file's own `run()` helper (line 33) which drains all three. Add `proc.stderr.text()` to the `Promise.all`, or thread `argv0` thro