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);
|
const found = findExecutable(local);
|
||||||
if (found) return found;
|
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
|
// Global fallback
|
||||||
|
|
|
||||||
|
|
@ -47,4 +47,15 @@ describe('locateBinary', () => {
|
||||||
expect(typeof locateBinary).toBe('function');
|
expect(typeof locateBinary).toBe('function');
|
||||||
expect(locateBinary.length).toBe(0);
|
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