Skip to content

feat(vscode): Maestro 서버 임베드 VS Code 확장 - #60

Merged
redsunjin merged 2 commits into
mainfrom
feat/vscode-extension
Aug 5, 2026
Merged

feat(vscode): Maestro 서버 임베드 VS Code 확장#60
redsunjin merged 2 commits into
mainfrom
feat/vscode-extension

Conversation

@redsunjin

Copy link
Copy Markdown
Owner

요약

2026-07 다음 후보 목록의 마지막 항목 — Claude Code 플러그인과 같은 소비자 패턴의 VS Code 확장.
스펙: docs/superpowers/specs/2026-08-05-vscode-extension-design.md

  • 명령 4종: 서버 시작(설정 포트·워크스페이스 저장소, 기존 서버 재사용 표시) / 중지(소유 서버만 — 재사용 서버 불간섭) / 대시보드 열기(Simple Browser 우선, 폴백 외부 브라우저) / 로그 보기(Output "Maestro").
  • 상태바 토글: ▶ Maestro 8080(클릭=대시보드) ↔ ⊘ Maestro(클릭=시작). deactivate 시 소유 서버 정리.
  • 테스트 가능 구조: 라이프사이클 상태 머신을 vscode 비의존 lifecycle.cjs로 분리 — 루트 스위트 tests/vscode-lifecycle.test.mjs 5건(중복 start 핸들 유지, stop→재시작, 실패 시 idle, 재사용 구분, idle stop no-op).
  • F5 개발 호스트 실행법·수동 스모크 체크리스트·패키징 전제(레포 동봉)는 확장 README에.

검증

루트 서버 76건(신규 5 포함) + UI 125건 전체 통과. 서버·lib 무변경(소비자 추가만).

참고: 로컬 test:ui가 17파일 수집 실패했던 것은 코드 문제가 아니라 로컬 node_modules 구버전(@capacitor/haptics 부재) — npm ci로 해소, CI에는 영향 없음.

🤖 Generated with Claude Code

selimDGAX and others added 2 commits August 5, 2026 16:11
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
lib/server-embed.mjs를 재사용하는 얇은 소비자: 명령 4종(시작/중지/
대시보드/로그), 상태바 토글, Output 채널 로그, Simple Browser 우선
대시보드. 서버 소유권 의미(재사용 서버 불간섭)는 embed 핸들 그대로.
라이프사이클 상태 머신은 vscode 비의존 모듈로 분리해 루트 스위트에서
단위 테스트(중복 시작·정지·실패·재사용 5건).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 18aab48c0f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

}

async function activate(context) {
const { startMaestroServer } = await import(EMBED_PATH);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Load the embed module via a file URL

On Windows, EMBED_PATH is a drive-letter path such as C:\...\lib\server-embed.mjs; passing that string directly to dynamic import() makes Node treat c: as a URL scheme and reject with ERR_UNSUPPORTED_ESM_URL_SCHEME, so the extension fails during activation before any Maestro commands are usable. Convert the filesystem path with pathToFileURL(EMBED_PATH).href before importing.

Useful? React with 👍 / 👎.

},

async stop() {
if (!handle) return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Honor stop requests during startup

If the user runs Stop Server or VS Code calls deactivate() while startServer() is still waiting for embed() to finish, handle is still null and this returns immediately; when startup later resolves, line 19 stores a live handle that was never stopped, leaving the server running after the stop/deactivate request. Track pending startup cancellation or await starting here and stop the resulting handle so stops during the health-check window are respected.

Useful? React with 👍 / 👎.

@redsunjin
redsunjin merged commit 44ba08d into main Aug 5, 2026
4 checks passed
@redsunjin
redsunjin deleted the feat/vscode-extension branch August 5, 2026 07:27
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.

2 participants