Skip to content

Use portable shebang in all shell scripts#700

Closed
skallet wants to merge 1 commit into
obra:mainfrom
skallet:fix/portable-bash-shebangs
Closed

Use portable shebang in all shell scripts#700
skallet wants to merge 1 commit into
obra:mainfrom
skallet:fix/portable-bash-shebangs

Conversation

@skallet

@skallet skallet commented Mar 12, 2026

Copy link
Copy Markdown

Summary

  • Replace #!/bin/bash with #!/usr/bin/env bash in all 13 shell scripts
  • #!/bin/bash assumes bash lives at /bin/bash, which isn't true on NixOS, FreeBSD, or macOS with Homebrew
  • #!/usr/bin/env bash is the portable, POSIX-friendly alternative

Files changed

  • skills/brainstorming/scripts/start-server.sh
  • skills/brainstorming/scripts/stop-server.sh
  • tests/explicit-skill-requests/run-*.sh (6 files)
  • tests/skill-triggering/run-*.sh (2 files)
  • tests/subagent-driven-dev/run-test.sh
  • tests/subagent-driven-dev/*/scaffold.sh (2 files)

Test plan

  • Verify scripts remain executable on Linux
  • No functional changes — only the shebang line is modified

🤖 Generated with Claude Code

#!/bin/bash assumes bash is at /bin/bash, which isn't true on NixOS,
FreeBSD, or macOS with Homebrew. #!/usr/bin/env bash is portable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Mar 12, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 720b6672-b439-45d3-964a-3720e0a622da

📥 Commits

Reviewing files that changed from the base of the PR and between 363923f and 2ea06e4.

📒 Files selected for processing (13)
  • skills/brainstorming/scripts/start-server.sh
  • skills/brainstorming/scripts/stop-server.sh
  • tests/explicit-skill-requests/run-all.sh
  • tests/explicit-skill-requests/run-claude-describes-sdd.sh
  • tests/explicit-skill-requests/run-extended-multiturn-test.sh
  • tests/explicit-skill-requests/run-haiku-test.sh
  • tests/explicit-skill-requests/run-multiturn-test.sh
  • tests/explicit-skill-requests/run-test.sh
  • tests/skill-triggering/run-all.sh
  • tests/skill-triggering/run-test.sh
  • tests/subagent-driven-dev/go-fractals/scaffold.sh
  • tests/subagent-driven-dev/run-test.sh
  • tests/subagent-driven-dev/svelte-todo/scaffold.sh

📝 Walkthrough

Walkthrough

This pull request updates the shebang line in twelve bash scripts across the skills and tests directories from #!/bin/bash to #!/usr/bin/env bash. This change improves script portability by using the environment to locate bash instead of assuming it exists at a fixed path.

Changes

Cohort / File(s) Summary
Skills Brainstorming Scripts
skills/brainstorming/scripts/start-server.sh, skills/brainstorming/scripts/stop-server.sh
Updated shebang from #!/bin/bash to #!/usr/bin/env bash for improved portability.
Explicit Skill Requests Tests
tests/explicit-skill-requests/run-*.sh
Updated shebang across five test runner scripts (run-all.sh, run-claude-describes-sdd.sh, run-extended-multiturn-test.sh, run-haiku-test.sh, run-multiturn-test.sh, run-test.sh) from #!/bin/bash to #!/usr/bin/env bash.
Skill Triggering Tests
tests/skill-triggering/run-*.sh
Updated shebang in test runner scripts (run-all.sh, run-test.sh) from #!/bin/bash to #!/usr/bin/env bash.
Subagent Driven Development Tests
tests/subagent-driven-dev/run-test.sh, tests/subagent-driven-dev/.../scaffold.sh
Updated shebang in run-test.sh and scaffold.sh files from #!/bin/bash to #!/usr/bin/env bash.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Possibly related PRs

Poem

🐰 A hop through scripts both far and wide,
Where bash shebangs cast off their pride!
From fixed paths to env's embrace,
These scripts now run in any place.
Portability springs forth with glee! 🌱

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: updating shell script shebangs for portability across different operating systems.
Description check ✅ Passed The description is directly related to the changeset, explaining the rationale for the shebang changes and listing all affected files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

obra pushed a commit that referenced this pull request Mar 16, 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@obra obra closed this in addfe85 Mar 17, 2026
vladivis pushed a commit to vladivis/superpowers that referenced this pull request Mar 18, 2026
Replace #!/bin/bash with #!/usr/bin/env bash in 13 scripts. The
hardcoded path fails on NixOS, FreeBSD, and macOS with Homebrew bash.
#!/usr/bin/env bash is the portable POSIX-friendly alternative.

Tested on Linux and Windows (Git Bash + CMD). macOS is the primary
beneficiary since Homebrew installs bash to /opt/homebrew/bin/bash.

Based on obra#700, closes obra#700.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
vladivis pushed a commit to vladivis/superpowers that referenced this pull request Mar 18, 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@skallet skallet deleted the fix/portable-bash-shebangs branch March 23, 2026 14:33
shihao-hc pushed a commit to shihao-hc/superpowers that referenced this pull request Apr 6, 2026
Replace #!/bin/bash with #!/usr/bin/env bash in 13 scripts. The
hardcoded path fails on NixOS, FreeBSD, and macOS with Homebrew bash.
#!/usr/bin/env bash is the portable POSIX-friendly alternative.

Tested on Linux and Windows (Git Bash + CMD). macOS is the primary
beneficiary since Homebrew installs bash to /opt/homebrew/bin/bash.

Based on obra#700, closes obra#700.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
shihao-hc pushed a commit to shihao-hc/superpowers that referenced this pull request Apr 6, 2026
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ronnyf pushed a commit to ronnyf/superpowers that referenced this pull request Apr 25, 2026
commit 7e51643
Merge: 3cee13e 8a0a5ca
Author: Jesse Vincent <jesse@fsck.com>
Date:   Tue Mar 17 15:02:02 2026 -0700

    Merge branch 'dev' for v5.0.5 release

commit 8a0a5ca
Author: Jesse Vincent <jesse@fsck.com>
Date:   Tue Mar 17 15:01:57 2026 -0700

    Release v5.0.5: brainstorm server ESM fix, Windows PID fix, stop-server reliability

commit 2d46da1
Author: Jesse Vincent <jesse@fsck.com>
Date:   Tue Mar 17 14:51:02 2026 -0700

    Credit @lucasyhzhu-debug for Windows brainstorm docs (PR obra#768)

commit 0002948
Author: Jesse Vincent <jesse@fsck.com>
Date:   Tue Mar 17 14:35:03 2026 -0700

    Update RELEASE-NOTES.md with brainstorm server ESM fix

commit 3128a2c
Author: sarbojitrana <sarbojitrana47c@gmail.com>
Date:   Tue Mar 17 19:44:46 2026 +0530

    fix : resolve ESM/CommonJS module confict in brainstorming server

commit f34ee47
Author: jesse <jesse@magic-kingdom>
Date:   Tue Mar 17 04:09:36 2026 +0000

    fix: Windows brainstorm server lifecycle, restore execution choice

    - Skip OWNER_PID monitoring on Windows/MSYS2 where the PID namespace is
      invisible to Node.js, preventing server self-termination after 60s (obra#770)
    - Document run_in_background: true for Claude Code on Windows (obra#767)
    - Restore user choice between subagent-driven and inline execution after
      plan writing; subagent-driven is recommended but no longer mandatory
    - Add Windows lifecycle test script verified on Windows 11 VM
    - Note obra#723 (stop-server.sh reliability) as already fixed

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 3cee13e
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 20:10:15 2026 -0700

    Add Community section with Discord link and Prime Radiant attribution

commit 1128a72
Merge: 825a142 d1b5f57
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:56:02 2026 -0700

    Merge branch 'dev'

commit d1b5f57
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:55:49 2026 -0700

    Release v5.0.4: review loop refinements, OpenCode one-line install, bug fixes

commit 61a64d7
Author: savvyinsight <ecedwdpf@outlook.com>
Date:   Mon Mar 16 01:23:32 2026 +0800

    fix: verify server actually stopped in stop-server.sh

commit 825a142
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:23:54 2026 -0700

    Revert "Merge pull request obra#751 from savvyinsight/fix/stop-server-verify"

    This reverts commit bd537d8, reversing
    changes made to 363923f.

commit bd537d8
Merge: 363923f 6d21e9c
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:14:47 2026 -0700

    Merge pull request obra#751 from savvyinsight/fix/stop-server-verify

    fix: verify server actually stopped in stop-server.sh

commit 24be2e8
Merge: a479e10 687a661
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:12:03 2026 -0700

    Merge pull request obra#749 from ynyyn/fix-codex-multi-agent-flag

    fix(docs): replace deprecated `collab` flag with `multi_agent` for Codex docs

commit a479e10
Merge: a4c4871 f4b54a1
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:08:09 2026 -0700

    Merge pull request obra#753 from obra/f/opencode-plugin

    Auto-register skills from plugin, simplify OpenCode install

commit a4c4871
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 15:57:27 2026 -0700

    Use generic "the agent" instead of "Claude" in brainstorm server

commit 2c6a8a3
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 15:57:23 2026 -0700

    Tone down review loops: single-pass plan review, raise issue bar

    - Remove chunk-based plan review in favor of single whole-plan review
    - Add Calibration sections to both reviewer prompts so only serious
      issues block approval
    - Reduce max review iterations from 5 to 3
    - Streamline reviewer checklists (spec: 7→5, plan: 7→4 categories)

commit 2b25774
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 19:35:36 2026 +0000

    Update changelog with Cursor hooks support (obra#709)

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit f4b54a1
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 21:29:25 2026 +0000

    Auto-register skills from plugin, simplify OpenCode install to one line

    The plugin's new `config` hook injects the skills directory into
    OpenCode's live config singleton, so skills are discovered automatically
    without symlinks or manual config edits.

    Installation is now just adding one line to opencode.json:
      "plugin": ["superpowers@git+https://github.com/obra/superpowers.git"]

    Rewrote docs/README.opencode.md and .opencode/INSTALL.md to reflect
    the new approach, removing ~200 lines of platform-specific symlink
    instructions. Added migration notes for existing users.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 911fa1d
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 20:08:51 2026 +0000

    test: add package.json for opencode npm plugin test

commit 4e7c084
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 19:35:18 2026 +0000

    feat: add Cursor-compatible hooks and fix platform detection

    Add hooks/hooks-cursor.json with Cursor's camelCase format (sessionStart,
    version: 1) and update .cursor-plugin/plugin.json to reference it. Uses
    ${CURSOR_PLUGIN_ROOT} and run-hook.cmd for cross-platform support.

    Fix session-start platform detection: check CURSOR_PLUGIN_ROOT first
    (Cursor may also set CLAUDE_PLUGIN_ROOT), ensuring correct output format
    for each platform.

    Based on PR obra#709 with fixes for: wrong filename (.sh extension), missing
    Windows support, fragile relative paths, and incorrect platform detection.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 689f27c
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 19:14:54 2026 +0000

    Update changelog: add bash 5.3+ fix, link all issues/PRs

    Add obra#572/obra#571 entry, add "already fixed" section for obra#630/obra#529/obra#539,
    and convert all issue/PR references to markdown links.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 537ec64
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 19:14:34 2026 +0000

    fix(hooks): replace heredoc with printf to fix bash 5.3+ hang

    Bash 5.3 has a regression where heredoc variable expansion blocks when
    content exceeds ~512 bytes. The session_context variable is ~4,500 bytes,
    causing the SessionStart hook to hang indefinitely on macOS with Homebrew
    bash 5.3+. Replace cat <<EOF with printf.

    Tested on Linux (bash 5.2) and Windows (Git Bash 5.2). The hang only
    affects 5.3+ but printf works correctly on all versions.

    Based on obra#572, closes obra#572. Fixes obra#571.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit c5e9538
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:40:54 2026 +0000

    Update changelog with POSIX hook fix (obra#553)

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit fd318b1
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:40:33 2026 +0000

    fix(hooks): replace BASH_SOURCE with POSIX-safe $0

    Replace ${BASH_SOURCE[0]:-$0} with $0 in hooks/session-start and the
    polyglot-hooks docs example. BASH_SOURCE uses bash array syntax that
    causes 'Bad substitution' on systems where /bin/sh is dash (Ubuntu).

    Since session-start is always executed (never sourced), $0 and
    BASH_SOURCE give the same result. Tested on Linux (bash + dash) and
    Windows (Git Bash via CMD and direct).

    Based on obra#553, closes obra#553.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit ea472de
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:38:16 2026 +0000

    Update changelog with portable shebang fix (obra#700)

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit addfe85
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:38:00 2026 +0000

    fix: use portable shebang #!/usr/bin/env bash in all shell scripts

    Replace #!/bin/bash with #!/usr/bin/env bash in 13 scripts. The
    hardcoded path fails on NixOS, FreeBSD, and macOS with Homebrew bash.
    #!/usr/bin/env bash is the portable POSIX-friendly alternative.

    Tested on Linux and Windows (Git Bash + CMD). macOS is the primary
    beneficiary since Homebrew installs bash to /opt/homebrew/bin/bash.

    Based on obra#700, closes obra#700.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit c6a2b1b
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:24:23 2026 +0000

    fix: auto-foreground brainstorm server on Windows/Git Bash

    Windows/Git Bash reaps nohup background processes, causing the brainstorm
    server to die silently after launch. Auto-detect Windows via OSTYPE
    (msys/cygwin/mingw) and MSYSTEM env vars, switching to foreground mode
    automatically. Tested on Windows 11 from CMD, PowerShell, and Git Bash —
    all route through Git Bash and hit the same issue.

    Based on obra#740, fixes obra#737. Also adds CHANGELOG.md documenting the fix and
    a known OWNER_PID/WINPID mismatch on the main branch.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit d19703b
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:28:55 2026 +0000

    fix: stop firing SessionStart hook on --resume

    Resumed sessions already have injected context in their conversation
    history. Re-firing the hook was redundant and could cause issues.
    The hook now fires only on startup, clear, and compact.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 6d21e9c
Author: savvyinsight <ecedwdpf@outlook.com>
Date:   Mon Mar 16 01:23:32 2026 +0800

    fix: verify server actually stopped in stop-server.sh

commit 687a661
Author: ynyyn <6551531+ynyyn@users.noreply.github.com>
Date:   Sun Mar 15 21:21:09 2026 +0800

    Fix deprecated collab flag in Codex docs
ronnyf pushed a commit to ronnyf/superpowers that referenced this pull request Apr 27, 2026
commit 7e51643
Merge: 3cee13e 8a0a5ca
Author: Jesse Vincent <jesse@fsck.com>
Date:   Tue Mar 17 15:02:02 2026 -0700

    Merge branch 'dev' for v5.0.5 release

commit 8a0a5ca
Author: Jesse Vincent <jesse@fsck.com>
Date:   Tue Mar 17 15:01:57 2026 -0700

    Release v5.0.5: brainstorm server ESM fix, Windows PID fix, stop-server reliability

commit 2d46da1
Author: Jesse Vincent <jesse@fsck.com>
Date:   Tue Mar 17 14:51:02 2026 -0700

    Credit @lucasyhzhu-debug for Windows brainstorm docs (PR obra#768)

commit 0002948
Author: Jesse Vincent <jesse@fsck.com>
Date:   Tue Mar 17 14:35:03 2026 -0700

    Update RELEASE-NOTES.md with brainstorm server ESM fix

commit 3128a2c
Author: sarbojitrana <sarbojitrana47c@gmail.com>
Date:   Tue Mar 17 19:44:46 2026 +0530

    fix : resolve ESM/CommonJS module confict in brainstorming server

commit f34ee47
Author: jesse <jesse@magic-kingdom>
Date:   Tue Mar 17 04:09:36 2026 +0000

    fix: Windows brainstorm server lifecycle, restore execution choice

    - Skip OWNER_PID monitoring on Windows/MSYS2 where the PID namespace is
      invisible to Node.js, preventing server self-termination after 60s (obra#770)
    - Document run_in_background: true for Claude Code on Windows (obra#767)
    - Restore user choice between subagent-driven and inline execution after
      plan writing; subagent-driven is recommended but no longer mandatory
    - Add Windows lifecycle test script verified on Windows 11 VM
    - Note obra#723 (stop-server.sh reliability) as already fixed

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 3cee13e
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 20:10:15 2026 -0700

    Add Community section with Discord link and Prime Radiant attribution

commit 1128a72
Merge: 825a142 d1b5f57
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:56:02 2026 -0700

    Merge branch 'dev'

commit d1b5f57
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:55:49 2026 -0700

    Release v5.0.4: review loop refinements, OpenCode one-line install, bug fixes

commit 61a64d7
Author: savvyinsight <ecedwdpf@outlook.com>
Date:   Mon Mar 16 01:23:32 2026 +0800

    fix: verify server actually stopped in stop-server.sh

commit 825a142
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:23:54 2026 -0700

    Revert "Merge pull request obra#751 from savvyinsight/fix/stop-server-verify"

    This reverts commit bd537d8, reversing
    changes made to 363923f.

commit bd537d8
Merge: 363923f 6d21e9c
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:14:47 2026 -0700

    Merge pull request obra#751 from savvyinsight/fix/stop-server-verify

    fix: verify server actually stopped in stop-server.sh

commit 24be2e8
Merge: a479e10 687a661
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:12:03 2026 -0700

    Merge pull request obra#749 from ynyyn/fix-codex-multi-agent-flag

    fix(docs): replace deprecated `collab` flag with `multi_agent` for Codex docs

commit a479e10
Merge: a4c4871 f4b54a1
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 17:08:09 2026 -0700

    Merge pull request obra#753 from obra/f/opencode-plugin

    Auto-register skills from plugin, simplify OpenCode install

commit a4c4871
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 15:57:27 2026 -0700

    Use generic "the agent" instead of "Claude" in brainstorm server

commit 2c6a8a3
Author: Jesse Vincent <jesse@fsck.com>
Date:   Mon Mar 16 15:57:23 2026 -0700

    Tone down review loops: single-pass plan review, raise issue bar

    - Remove chunk-based plan review in favor of single whole-plan review
    - Add Calibration sections to both reviewer prompts so only serious
      issues block approval
    - Reduce max review iterations from 5 to 3
    - Streamline reviewer checklists (spec: 7→5, plan: 7→4 categories)

commit 2b25774
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 19:35:36 2026 +0000

    Update changelog with Cursor hooks support (obra#709)

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit f4b54a1
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 21:29:25 2026 +0000

    Auto-register skills from plugin, simplify OpenCode install to one line

    The plugin's new `config` hook injects the skills directory into
    OpenCode's live config singleton, so skills are discovered automatically
    without symlinks or manual config edits.

    Installation is now just adding one line to opencode.json:
      "plugin": ["superpowers@git+https://github.com/obra/superpowers.git"]

    Rewrote docs/README.opencode.md and .opencode/INSTALL.md to reflect
    the new approach, removing ~200 lines of platform-specific symlink
    instructions. Added migration notes for existing users.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 911fa1d
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 20:08:51 2026 +0000

    test: add package.json for opencode npm plugin test

commit 4e7c084
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 19:35:18 2026 +0000

    feat: add Cursor-compatible hooks and fix platform detection

    Add hooks/hooks-cursor.json with Cursor's camelCase format (sessionStart,
    version: 1) and update .cursor-plugin/plugin.json to reference it. Uses
    ${CURSOR_PLUGIN_ROOT} and run-hook.cmd for cross-platform support.

    Fix session-start platform detection: check CURSOR_PLUGIN_ROOT first
    (Cursor may also set CLAUDE_PLUGIN_ROOT), ensuring correct output format
    for each platform.

    Based on PR obra#709 with fixes for: wrong filename (.sh extension), missing
    Windows support, fragile relative paths, and incorrect platform detection.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 689f27c
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 19:14:54 2026 +0000

    Update changelog: add bash 5.3+ fix, link all issues/PRs

    Add obra#572/obra#571 entry, add "already fixed" section for obra#630/obra#529/obra#539,
    and convert all issue/PR references to markdown links.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 537ec64
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 19:14:34 2026 +0000

    fix(hooks): replace heredoc with printf to fix bash 5.3+ hang

    Bash 5.3 has a regression where heredoc variable expansion blocks when
    content exceeds ~512 bytes. The session_context variable is ~4,500 bytes,
    causing the SessionStart hook to hang indefinitely on macOS with Homebrew
    bash 5.3+. Replace cat <<EOF with printf.

    Tested on Linux (bash 5.2) and Windows (Git Bash 5.2). The hang only
    affects 5.3+ but printf works correctly on all versions.

    Based on obra#572, closes obra#572. Fixes obra#571.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit c5e9538
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:40:54 2026 +0000

    Update changelog with POSIX hook fix (obra#553)

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit fd318b1
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:40:33 2026 +0000

    fix(hooks): replace BASH_SOURCE with POSIX-safe $0

    Replace ${BASH_SOURCE[0]:-$0} with $0 in hooks/session-start and the
    polyglot-hooks docs example. BASH_SOURCE uses bash array syntax that
    causes 'Bad substitution' on systems where /bin/sh is dash (Ubuntu).

    Since session-start is always executed (never sourced), $0 and
    BASH_SOURCE give the same result. Tested on Linux (bash + dash) and
    Windows (Git Bash via CMD and direct).

    Based on obra#553, closes obra#553.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit ea472de
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:38:16 2026 +0000

    Update changelog with portable shebang fix (obra#700)

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit addfe85
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:38:00 2026 +0000

    fix: use portable shebang #!/usr/bin/env bash in all shell scripts

    Replace #!/bin/bash with #!/usr/bin/env bash in 13 scripts. The
    hardcoded path fails on NixOS, FreeBSD, and macOS with Homebrew bash.
    #!/usr/bin/env bash is the portable POSIX-friendly alternative.

    Tested on Linux and Windows (Git Bash + CMD). macOS is the primary
    beneficiary since Homebrew installs bash to /opt/homebrew/bin/bash.

    Based on obra#700, closes obra#700.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit c6a2b1b
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:24:23 2026 +0000

    fix: auto-foreground brainstorm server on Windows/Git Bash

    Windows/Git Bash reaps nohup background processes, causing the brainstorm
    server to die silently after launch. Auto-detect Windows via OSTYPE
    (msys/cygwin/mingw) and MSYSTEM env vars, switching to foreground mode
    automatically. Tested on Windows 11 from CMD, PowerShell, and Git Bash —
    all route through Git Bash and hit the same issue.

    Based on obra#740, fixes obra#737. Also adds CHANGELOG.md documenting the fix and
    a known OWNER_PID/WINPID mismatch on the main branch.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit d19703b
Author: jesse <jesse@magic-kingdom>
Date:   Sun Mar 15 18:28:55 2026 +0000

    fix: stop firing SessionStart hook on --resume

    Resumed sessions already have injected context in their conversation
    history. Re-firing the hook was redundant and could cause issues.
    The hook now fires only on startup, clear, and compact.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

commit 6d21e9c
Author: savvyinsight <ecedwdpf@outlook.com>
Date:   Mon Mar 16 01:23:32 2026 +0800

    fix: verify server actually stopped in stop-server.sh

commit 687a661
Author: ynyyn <6551531+ynyyn@users.noreply.github.com>
Date:   Sun Mar 15 21:21:09 2026 +0800

    Fix deprecated collab flag in Codex docs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant