Commit fe5a81f
feat: VS Code / Cursor preview extension (#18)
* docs: design for VS Code/Cursor preview extension
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
* docs: implementation plan for VS Code/Cursor extension
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
* feat: scaffold reefdoc VS Code extension with stub command
* feat: add binary-path resolution and free-port selection
* feat: spawn reefdoc binary and wait until it serves
* fix: reject on reefdoc spawn error instead of crashing host
startServer attached no 'error' listener on the spawned child. When spawn
fails to launch the binary (bad/missing binaryPath, ENOENT, permissions),
Node emits an 'error' event with no listener, producing an uncaught
exception that crashes the host process; 'exit' never fires so the existing
early-exit detection never engaged.
Add a child.on('error') listener that marks the child as exited and records
the error, and surface it in the rejection ("reefdoc failed to start: ...").
Add a regression test asserting startServer rejects (rather than crashing)
on a bad binary path.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
* feat: webview panel that frames the reefdoc server
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
* feat: wire reefdoc.openPreview command with lifecycle and errors
* fix: guard openPreview against concurrent double-spawn
* chore: bundle per-platform binaries and package the extension
* fix: honor reefdoc.host in webview CSP and stop server on panel-create failure
Derive the webview CSP frame-src from the actual server URL origin instead
of a hardcoded loopback allowlist, so a non-loopback reefdoc.host doesn't
get silently blocked. Thread the host into findFreePort so the port probe
binds the same interface the server will use. Also stop the spawned server
if panel creation throws, so the child process doesn't leak.
* chore: commit extension package-lock for reproducible installs
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
* docs: add managed agent-policy block to CLAUDE.md
Co-Authored-By: Claude Fable 5 <[email protected]>
* feat: list .worktrees and disable dir filtering inside them
.worktrees was swept up by the blanket dot-directory skip in isNoiseDir,
so sibling worktree checkouts were invisible in the tree. Add it to a
named dotDirAllowlist alongside .allium/.claude, and switch directory
noise filtering off entirely below any .worktrees segment: a worktree is
a whole checkout, and hiding its .git/node_modules misrepresents it.
The file-level isViewable filter is unchanged.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
* fix(test): import ReefdocServer as a type in the smoke test
ReefdocServer is an interface, so a value import of it fails under
Node's type-stripping loader with "does not provide an export named
ReefdocServer" — breaking the Frontend (node --test) CI job.
Split it into a separate `import type`, which is erased before the
runtime import list is built.
Verified: node --test → 111 tests, 111 pass, 0 fail (was 110/111).
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>1 parent 1135d72 commit fe5a81f
15 files changed
Lines changed: 3005 additions & 4 deletions
File tree
- editor/vscode
- scripts
- src
- internal/server
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
1 | 40 | | |
2 | 41 | | |
3 | 42 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
0 commit comments