feat: make SDD/brainstorming workspace root configurable via SUPERPOWERS_WORKSPACE_DIR#1999
Open
aznikline wants to merge 3 commits into
Open
feat: make SDD/brainstorming workspace root configurable via SUPERPOWERS_WORKSPACE_DIR#1999aznikline wants to merge 3 commits into
aznikline wants to merge 3 commits into
Conversation
aznikline
force-pushed
the
feat/workspace-dir-configurable
branch
from
July 21, 2026 02:02
486a69b to
2609c1d
Compare
…bra#1957) Replace cp.exec(cmd + url) with cp.execFile over a quote-aware tokenized argv, matching the platform launchers' no-shell pattern. Adds shellArgv() helper and a regression test asserting the URL arrives as a single argv element.
…regression test Fold in two bits from muunkky's parallel run on obra#1957 (offered as a follow-up, not a competing PR): - visual-companion.md: a BRAINSTORM_OPEN_CMD section — accepted shapes (bare command, command+args, quoted argv), trust posture (env var = user authority), and the no-shell note (the launcher tokenizes and runs without a shell, so the semicolon/ampersand in the value are literal, not interpreted). The issue title mentions docs and obra#1964 was code-only. - lifecycle.test.js: a direct shell-injection test — BRAINSTORM_OPEN_CMD set to a capture command plus a touch of a pwned flag asserts the pwned flag is never created, proving metacharacters can't splice a second command. Complements the existing URL-integrity assertion (which proves the URL query chars stay intact).
…ERS_WORKSPACE_DIR Closes obra#1991. - sdd-workspace now uses ${SUPERPOWERS_WORKSPACE_DIR:-$root/.superpowers} instead of hardcoded $root/.superpowers - start-server.sh uses ${SUPERPOWERS_WORKSPACE_DIR:-${PROJECT_DIR}/.superpowers} for brainstorm session files, port file, and token file - visual-companion.md updated to document the env var - Full backward compatible: defaults to .superpowers when env var is unset
aznikline
force-pushed
the
feat/workspace-dir-configurable
branch
from
July 21, 2026 02:10
2609c1d to
e1d4b1e
Compare
|
This solves a concrete Perl Module::Build distribution problem for me: .gitignore keeps SDD artifacts out of git status, but distcheck uses MANIFEST.SKIP, so in-tree artifacts become unlisted distribution files. Moving the workspace outside the source tree avoids ecosystem-specific exclusions. Thanks for implementing this. |
1 task
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
Closes #1991. Makes the SDD and brainstorming workspace directory configurable instead of hardcoded to
<repo-root>/.superpowers.Changes
SDD (
sdd-workspace)dir="$root/.superpowers/sdd"withdir="${SUPERPOWERS_WORKSPACE_DIR:-$root/.superpowers}/sdd"Brainstorming (
start-server.sh)"${PROJECT_DIR}/.superpowers/brainstorm/"with"${ws_root}/brainstorm/"wherews_root="${SUPERPOWERS_WORKSPACE_DIR:-${PROJECT_DIR}/.superpowers}"$ws_rootautomaticallySUPERPOWERS_WORKSPACE_DIRis unset, behaves exactly as beforeDocs
visual-companion.md: Added$SUPERPOWERS_WORKSPACE_DIRalongside the hardcoded path mentionBackward compatibility
Fully backward compatible. When
SUPERPOWERS_WORKSPACE_DIRis not set, all paths resolve to the same.superpowers/locations as before. The env var is a pure additive override — no existing workflows are affected.Testing
bash -nsyntax check passed for both shell scripts