You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fleet 은 Electron 데스크톱 앱이지만 배포 산출물(설치 파일)을 만드는 파이프라인이 전혀 없다. 현재 빌드 체인은 electron-vite 로 out/ 디렉터리에 번들만 만들 뿐, 설치 가능한 바이너리(.exe/.dmg/.AppImage)·자동 업데이트·코드 서명이 없다.
검증한 현재 상태:
package.json:12-23 의 scripts 에 dev/build/preview/typecheck/lint/test/brain 만 존재 — package/make/dist/release 류 스크립트 없음.
package.json:24-46 의 devDependencies 에 electron-builder·@electron-forge/* 없음. 빌드 도구는 electron-vite ^2.3.0 (package.json:35) 뿐.
electron.vite.config.ts:5-29 는 main/preload/renderer 번들 입력만 정의 — 패키징/배포 설정 일절 없음.
별도 electron-builder.{json,yml} / forge.config.{js,ts} 파일 없음(글롭 검색 0건).
src/ 전체에 electron-builder·electron-forge·autoUpdater·app-update 사용 0건(grep 검증).
.github/workflows/ci.yml:38-39 의 build 잡은 npm run build(= electron-vite build)를 "기동 가능성 smoke" 로만 돌릴 뿐, 릴리스/아티팩트 업로드/퍼블리시 단계가 없다. 릴리스 전용 워크플로도 부재.
DESIGN.md:212 도 npm run build 를 "산출물 생성 = 기동 가능성 smoke" 로 규정 — 즉 현재 "build" 의 의미는 설치 패키지가 아니라 번들 smoke 이다.
패키징 설정 파일(electron-builder.yml 또는 forge.config.ts) 추가 — appId·productName·아이콘·파일 포함 규칙.
autoUpdater 도입(GitHub Releases 또는 별도 피드 채널) + 업데이트 확인/적용 main 프로세스 배선.
코드 서명: macOS(Apple Developer ID + notarization), Windows(Authenticode) — 유료 인증서 종속이므로 인증서 미보유 시 unsigned 빌드도 산출 가능하게 분기.
릴리스 전용 CI 워크플로(.github/workflows/release.yml) 추가 — 태그 푸시 시 멀티 플랫폼 빌드·서명·릴리스 업로드. 인증서/토큰은 GitHub Secrets.
시크릿(서명 인증서·퍼블리시 토큰)은 CI Secrets 로만 주입, 리포지토리 미커밋 보장.
README.md/DESIGN.md 에 배포 절차·릴리스 프로세스 문서화(현행 DESIGN.md:193-213 MVP 범위/품질 게이트 갱신).
근거
점수(7차 재랭킹): 가치 2 / 노력 4 / 위험 3, 🟡 Later(6차 확정).
가치 2 — 다운그레이드/부분 반증. 로드맵 노트의 "키스톤 블로커" 표현은 사실이나, 코드 대조 결과 보호할 사용자 베이스가 없다: git 태그·릴리스 0건, private: true, v0.1.0(package.json:3-4), 설치 유저 0명. 즉 "배포 채널 부재" 는 실재하지만 그로 인한 현 시점 피해는 이론에 그친다. 6차 재랭킹에서 Later 로 확정된 근거가 코드로도 재확인됨.
배경 / 문제
Fleet 은 Electron 데스크톱 앱이지만 배포 산출물(설치 파일)을 만드는 파이프라인이 전혀 없다. 현재 빌드 체인은
electron-vite로out/디렉터리에 번들만 만들 뿐, 설치 가능한 바이너리(.exe/.dmg/.AppImage)·자동 업데이트·코드 서명이 없다.검증한 현재 상태:
package.json:12-23의scripts에dev/build/preview/typecheck/lint/test/brain만 존재 —package/make/dist/release류 스크립트 없음.package.json:24-46의devDependencies에electron-builder·@electron-forge/*없음. 빌드 도구는electron-vite ^2.3.0(package.json:35) 뿐.electron.vite.config.ts:5-29는 main/preload/renderer 번들 입력만 정의 — 패키징/배포 설정 일절 없음.electron-builder.{json,yml}/forge.config.{js,ts}파일 없음(글롭 검색 0건).src/전체에electron-builder·electron-forge·autoUpdater·app-update사용 0건(grep 검증)..github/workflows/ci.yml:38-39의build잡은npm run build(=electron-vite build)를 "기동 가능성 smoke" 로만 돌릴 뿐, 릴리스/아티팩트 업로드/퍼블리시 단계가 없다. 릴리스 전용 워크플로도 부재.DESIGN.md:212도npm run build를 "산출물 생성 = 기동 가능성 smoke" 로 규정 — 즉 현재 "build" 의 의미는 설치 패키지가 아니라 번들 smoke 이다.package.json:3-4:version: 0.1.0,private: true. git 태그/릴리스 0건.결론: 코드 변경분이 실제 사용자에게 전달될 경로가 없다. 특히 Electron 메이저 업그레이드(
electron ^33.0.0,package.json:34)의 EOL/CVE 수정 페이로드가 사용자에게 닿으려면 이 파이프라인이 선행 조건이다.범위
electron-builder또는@electron-forge/*). electron-vite 통합 호환성 우선 검토(context7 로 현행 버전 가이드 확인)..exe), macOS(.dmg), Linux(.AppImage) — 최소 1개 플랫폼부터.package.json:12-23에package/dist(또는make) 스크립트 추가,electron-vite build산출물(out/)을 패키징 입력으로 연결.electron-builder.yml또는forge.config.ts) 추가 — appId·productName·아이콘·파일 포함 규칙.autoUpdater도입(GitHub Releases 또는 별도 피드 채널) + 업데이트 확인/적용 main 프로세스 배선..github/workflows/release.yml) 추가 — 태그 푸시 시 멀티 플랫폼 빌드·서명·릴리스 업로드. 인증서/토큰은 GitHub Secrets.README.md/DESIGN.md에 배포 절차·릴리스 프로세스 문서화(현행DESIGN.md:193-213MVP 범위/품질 게이트 갱신).근거
점수(7차 재랭킹): 가치 2 / 노력 4 / 위험 3, 🟡 Later(6차 확정).
private: true,v0.1.0(package.json:3-4), 설치 유저 0명. 즉 "배포 채널 부재" 는 실재하지만 그로 인한 현 시점 피해는 이론에 그친다. 6차 재랭킹에서 Later 로 확정된 근거가 코드로도 재확인됨.DESIGN.md:193-204MVP 범위는 "빌드·기동되는 Electron 앱(smoke 통과)" 까지만 정의하고 패키징/배포를 의도적으로 제외했다. 본 이슈는 MVP 이후 출하(ship) 단계 작업이다.^33EOL)의 CVE 수정이 사용자에게 전달되려면 본 파이프라인이 prereq. 따라서 "electron-major 업그레이드 → 출하" 순서에서 본 이슈가 출하 측 선행 조건이다.의존성
없음(블로킹 이슈/PR 없음). 단, electron-major 업그레이드 작업의 출하(ship) prereq — 메이저 범프의 보안 페이로드가 사용자에게 닿으려면 본 파이프라인이 먼저 존재해야 한다(역방향 시퀀싱).
완료 조건
npm run package(또는 동등 스크립트)가 최소 1개 플랫폼의 설치 가능한 산출물을 생성한다.autoUpdater가 릴리스 피드를 확인하고 업데이트를 적용할 수 있다(또는 인증서 미보유 시 unsigned 경로로 graceful degrade).npm run typecheck/lint/test/build전부 통과(DESIGN.md:207-213).참조
package.json:12-23(scripts),package.json:24-46(devDependencies — 패키징 도구 부재),package.json:3-4(version/private),package.json:34(electron ^33.0.0)electron.vite.config.ts:5-29(번들 설정 — 패키징 무관).github/workflows/ci.yml:38-39(build = smoke, 릴리스 단계 없음)DESIGN.md:193-204(MVP 범위 — 패키징 의도 제외),DESIGN.md:207-213(품질 게이트 — build = smoke)