mirror of https://github.com/garrytan/gstack.git
fix(find-browse): resolve source-checkout layout <git-root>/browse/dist/browse[.exe]
windows-setup-e2e.yml runs `bun browse/src/find-browse.ts` against a freshly-built repo where binaries land at browse/dist/browse.exe (no .claude/skills/gstack/ install layout). The previous markers chain only matched .codex/.agents/.claude prefixed paths, so find-browse exited "not found" even when the binary was present. Adds a source-checkout fallback after the marker scan: if no installed layout resolves but <git-root>/browse/dist/browse[.exe] exists, return that. Three real callers hit this path: - gstack repo dev workflow before `./setup` runs - windows-setup-e2e.yml CI (the breakage that surfaced this) - make-pdf consumers running from a sibling source checkout Smoke-verified: a fresh git repo with browse/dist/browse on disk now resolves through the source-checkout branch (was returning null before this commit). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ab277ad27b
commit
ed5294e8cf
|
|
@ -65,6 +65,16 @@ export function locateBinary(): string | null {
|
|||
const found = findExecutable(local);
|
||||
if (found) return found;
|
||||
}
|
||||
|
||||
// Source-checkout fallback (no installed skill layout — the binary
|
||||
// lives directly at <repo>/browse/dist/browse[.exe]). Hit by:
|
||||
// - gstack repo dev workflow before `./setup` runs
|
||||
// - the windows-setup-e2e.yml CI workflow which builds binaries
|
||||
// in place but never installs them under a marker dir
|
||||
// - make-pdf consumers running from a sibling source checkout
|
||||
const sourceCheckout = join(root, 'browse', 'dist', 'browse');
|
||||
const sourceFound = findExecutable(sourceCheckout);
|
||||
if (sourceFound) return sourceFound;
|
||||
}
|
||||
|
||||
// Global fallback
|
||||
|
|
|
|||
|
|
@ -47,4 +47,15 @@ describe('locateBinary', () => {
|
|||
expect(typeof locateBinary).toBe('function');
|
||||
expect(locateBinary.length).toBe(0);
|
||||
});
|
||||
|
||||
test('source-checkout fallback resolves <git-root>/browse/dist/browse[.exe]', () => {
|
||||
// The windows-setup-e2e.yml workflow builds binaries directly under
|
||||
// browse/dist/ (no .claude/skills/gstack/ install layout). find-browse
|
||||
// must resolve those — otherwise every fresh build that hasn't run
|
||||
// ./setup yet looks broken. Static pin so a future refactor that
|
||||
// drops the source-checkout branch trips this test.
|
||||
const src = require('fs').readFileSync(require('path').join(__dirname, '../src/find-browse.ts'), 'utf-8');
|
||||
expect(src).toContain('Source-checkout fallback');
|
||||
expect(src).toContain("join(root, 'browse', 'dist', 'browse')");
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue