Initial Commit
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
# 2026-07-27
|
||||
|
||||
진행 중 feature: 없음 (하이퍼워터폴 워크플로우 도입 작업 중)
|
||||
|
||||
- [ ] 토큰 수, 토큰 비용
|
||||
- [x] 하이퍼워터폴 문서 체계 도입 (spec-kit 설치 + docs 폴더 + CLAUDE.md 갱신)
|
||||
@@ -0,0 +1,36 @@
|
||||
# 2026-08-11
|
||||
|
||||
진행 중 feature: **`specs/004-tauri-shell/`** — Tauri 데스크톱 껍데기 (A/B 비교판)
|
||||
|
||||
## 어디까지 했나
|
||||
|
||||
spec → plan → Phase 0/1 산출물까지. **`tasks.md` 아직 없음** (다음 할 일).
|
||||
|
||||
- [x] `/speckit-specify` → `spec.md` (US1~US5, 미결 2건 D1·D2 로 확정)
|
||||
- [x] `/speckit-plan` → `plan.md` + `research.md`(결정 12건) + `data-model.md` + `contracts/transport-mapping.md` + `quickstart.md`
|
||||
- [ ] `/speckit-tasks` → `tasks.md` ← **여기부터**
|
||||
- [ ] US1 구현 (프론트 transport seam) — rust 없이도 가능
|
||||
- [ ] rustup 설치 승인 → US2~US5
|
||||
|
||||
## 다시 시작할 때 읽을 순서
|
||||
|
||||
1. `specs/004-tauri-shell/spec.md` 의 "정해진 것" D1·D2 — 왜 정성 평가인지, 왜 범위가 US5까지인지
|
||||
2. `specs/004-tauri-shell/research.md` R1·R2·R3 — 환경·기존 스캐폴드·docs-lib
|
||||
3. `specs/004-tauri-shell/quickstart.md` A단계 — 회귀 안 내는 법
|
||||
|
||||
## 막혀 있는 것 (사람 결정 필요)
|
||||
|
||||
- [ ] **rustup + VS Build Tools 설치** (2~3GB, MSVC 툴체인). `research.md` R1 에 근거 정리됨.
|
||||
US1(프론트)은 이거 없이 진행되고, **US2부터 막힘**.
|
||||
|
||||
## 알아둘 상태
|
||||
|
||||
- `4_rust_tauri/` 에 **반쯤 만들다 만 스캐폴드**가 있고 **지금 빌드 안 됨**
|
||||
(`Cargo.toml` lib 이름 `codeassist_tauri_lib` ↔ `main.rs` 는 생성기 기본값 `_rust_tauri_lib` 호출).
|
||||
처리 방침은 `research.md` R2 — 아이콘·`build.rs`·`capabilities` 는 신뢰, **손으로 쓴 Rust 는 컴파일 검증 0이라 전부 재검증 대상**.
|
||||
- Tauri v2 API 는 **기억으로 쓰지 말 것.** 첫 Rust 코드 전에 `4_rust_tauri/docs-lib/tauri-v2.md` 부터 만든다 (`research.md` R3, CLAUDE.md §3).
|
||||
- `3_windowsApp`(.NET)은 **비교 기준선이라 무변경**.
|
||||
|
||||
## 덜 급한 것
|
||||
|
||||
- [ ] `specs/003-token-cost/` — spec 초안만 있고 plan 부터 안 됨
|
||||
@@ -0,0 +1,47 @@
|
||||
# 2026-08-15
|
||||
|
||||
진행 중 feature: **`specs/004-tauri-shell/`** — Tauri 데스크톱 껍데기 (A/B 비교판)
|
||||
|
||||
## 오늘 한 것
|
||||
|
||||
- [x] **rust 툴체인 설치** (T001) — 8/11 부터 막혀 있던 사람 결정 항목. 승인받고 진행
|
||||
- `rustup` + `stable-x86_64-pc-windows-msvc` (rustc/cargo 1.97.1)
|
||||
- MSVC 는 **별도 Build Tools 를 새로 안 받고** 이미 있던 **VS 2026 Community 에 컴포넌트만 추가** — `VC.Tools.x86.x64`(14.51.36231) + `Windows11SDK.26100`(10.0.26100.0). 중복 설치 2~3GB 아낌
|
||||
- `rustc` 로 실제 링크까지 되는 것 확인 (버전만 보고 넘기지 않음)
|
||||
- [x] **`/speckit-tasks` → `tasks.md`** — 69개 task, 8 phase. spec→plan→tasks 문서 단계 끝
|
||||
|
||||
- [x] **T002~T005 (Phase 1 나머지) — docs-lib 박제 + 의존성**
|
||||
- `4_rust_tauri/docs-lib/` — `README.md` + `tauri-v2.md`(API 박제) + `tauri-v2-llms-full.md`(공식 가이드 원문 2.4MB)
|
||||
- `2_frontend/docs-lib/tauri-api.md` — `invoke`/`listen` 표면
|
||||
- `2_frontend` 에 `@tauri-apps/api` `^2.11.1` 설치 → 빌드 통과 확인
|
||||
- **Phase 1 전부 끝. 이제 Rust 코드 써도 됨**
|
||||
|
||||
### 박제하다 계획이 바뀐 것 3건 (중요)
|
||||
|
||||
공식 가이드를 안 믿고 **`cargo fetch` 로 받은 실제 crate 소스**에서 뽑았더니 나온 것들. (가이드 안에 `global-shortcut` 핸들러가 2인자/3인자로 둘 다 있어서 시그니처 근거로 못 씀 — R3 이 경고한 함정이 공식 문서에 그대로 있었다.)
|
||||
|
||||
1. **DPI 인지는 할 일이 없어졌다** (T049) — `tao` 가 이벤트 루프 만들 때 `SetProcessDpiAwarenessContext(PER_MONITOR_AWARE_V2)` 를 무조건 부른다. R11 의 "매니페스트 넣기"가 통째로 사라짐. **US4 에서 좌표 어긋나면 원인이 DPI 가 아니라 좌표 변환 쪽**
|
||||
2. **호스트 판별식을 바꿔야 한다** (T012·T015) — `"__TAURI_INTERNALS__" in window` 는 틀린다. 공식 `clearMocks()` 가 속성만 지우고 **빈 객체를 남겨서** 브라우저 모드 테스트가 tauri 로 오판됨 → `typeof window.__TAURI_INTERNALS__?.invoke === "function"` 으로 잰다
|
||||
3. **window-state 기본 플래그가 함정** (T030) — `StateFlags` 기본값이 `all()` 이라 `VISIBLE`·`DECORATIONS` 까지 복원한다. 트레이 상주 + 프레임리스 앱엔 독 → `SIZE | POSITION` 만 켠다
|
||||
|
||||
**공식 테스트 mock 도 찾음** — `@tauri-apps/api/mocks` 의 `mockIPC`/`clearMocks`(+`shouldMockEvents` 로 `listen` 까지). T012~T014 에서 직접 흉내낼 필요 없음.
|
||||
|
||||
## 다음 할 일
|
||||
|
||||
- [ ] **Phase 2 (T006~T011)** ← 여기부터 — 반쯤 만든 스캐폴드 재검증하고 `npm run tauri dev` 첫 통과
|
||||
- T006 `main.rs` lib 이름 정합이 첫 줄
|
||||
- `Cargo.toml` 은 이미 봐뒀는데 멀쩡함(`cargo generate-lockfile`·`cargo fetch` 통과, 488 패키지 잠김)
|
||||
- [ ] Phase 3 = **US1 (MVP)** — 프론트 transport seam. Phase 2 와 **병렬 가능** (rust 없이도 됨)
|
||||
|
||||
## 알아둘 상태
|
||||
|
||||
- `4_rust_tauri/` 는 아직 **커밋 안 된 반쯤 만든 스캐폴드**고 **빌드 안 됨**
|
||||
(`Cargo.toml` lib 이름 `codeassist_tauri_lib` ↔ `main.rs` 는 `_rust_tauri_lib` 호출 — T006 이 이거)
|
||||
손으로 쓴 Rust 는 **컴파일 검증 0줄**이라 전부 재검증 대상 (research R2)
|
||||
- Tauri v2 API 는 **기억으로 쓰지 말 것** — T003 의 docs-lib 박제 후 그걸 보고 짬
|
||||
- **US1 에서 가장 위험한 자리**: 브릿지 테스트 3개(`bridgeNavigate.test.ts`·`snippetBridge.test.ts`·`snippets.api.test.ts`, 약 240줄)가 `window.chrome.webview` 를 **테스트 본문에서 런타임에 심는다.** research R4 의 "모듈 로드 때 호스트 고정" 과 정면 충돌 — T015 에서 판별 시점을 먼저 정하고 테스트를 써야 함
|
||||
- `3_windowsApp`(.NET)은 **비교 기준선이라 무변경**
|
||||
|
||||
## 덜 급한 것
|
||||
|
||||
- [ ] `specs/003-token-cost/` — spec 초안만 있고 plan 부터 안 됨
|
||||
@@ -0,0 +1,60 @@
|
||||
# 2026-09-09
|
||||
|
||||
진행 중 feature: **`specs/004-tauri-shell/`** — Tauri 기준 데스크톱 앱 전환
|
||||
|
||||
## 오늘 할 일
|
||||
|
||||
- [x] Tauri를 기본 실행·배포 대상으로 정함
|
||||
- [x] 기존 .NET 앱을 참고용 legacy로 남기기로 정함
|
||||
- [x] feature spec과 품질 체크리스트를 새 방향으로 수정
|
||||
- [x] 수정된 spec 사용자 검토
|
||||
- [x] plan·tasks를 Tauri 기준으로 다시 맞춤
|
||||
- [x] Phase 2 빌드 베이스라인(T006~T011) 실행
|
||||
- [x] Phase 3 프론트 transport 전환(T012~T025) 완료
|
||||
- [x] Phase 4 Tauri shell 기준 확정(T026~T040) 완료
|
||||
|
||||
## 결정
|
||||
|
||||
- Tauri가 표준 단축키 `Ctrl+Shift+7/8/9`를 사용함
|
||||
- US1~US5를 전부 구현함
|
||||
- A/B 동시 실행·설치물 비교·중간 중단은 범위에서 뺌
|
||||
|
||||
## 같은 날 main에서 진행한 작업 기록
|
||||
|
||||
아래는 당시 기록이며, 통합 후 현재 상태는 `20260911.md`와 feature tasks를 따름.
|
||||
|
||||
진행 중 feature: **`specs/004-tauri-shell/`** — Tauri 데스크톱 껍데기
|
||||
|
||||
## 오늘 한 것
|
||||
|
||||
- [x] 닷넷과 Tauri 단축키 대조. Tauri 조합을 Ctrl+Shift+7/8/9로 통일하고 화면 이동 수신·route 보고·Esc 숨김 연결 수정. 상세: `docs/troubleshootings/2026-09-09-tauri-shortcuts.md`.
|
||||
|
||||
- [x] 밝은 테마 HTML 목업 3안 제작. 사용자 최종 선택인 클린 블루에 지정 색상 `#034EA2` 적용.
|
||||
- [x] 실제 `clean-blue` 팔레트·라이트 기본값 적용, 이전 기본 베이지 한 번 전환. 빌드·변경 TS lint·테마 테스트 5개 및 브라우저 색상/저장 설정 확인 통과. 상세: `docs/design/README.md`.
|
||||
|
||||
- [x] Phase 2 T006~T010 실제 코드·설정 대조 후 완료 처리. 코드 변경 없이 기존 구현 확인.
|
||||
- [x] `npm run tauri dev` Rust 빌드·실행 통과. 사용자가 테스트하도록 앱과 Vite 서버 실행 유지.
|
||||
- [x] `cargo test --locked` 통과. 현재 Rust 테스트는 0개이므로 기능 검증을 뜻하지 않음.
|
||||
- [x] 프론트 테스트 42파일·238개 통과, 프로덕션 빌드 통과.
|
||||
- [x] 프론트 lint 실행: 기존 오류 10개·경고 10개 확인. FileDropZone 접근성 오류 3개, skill-mapping의 any 타입 오류 7개. 이번에 프론트 소스는 수정하지 않음.
|
||||
|
||||
## 다음 할 일
|
||||
|
||||
### 추가 요청: 창 닫기 버튼
|
||||
|
||||
- [x] 추가 요청에 따라 Tauri 메인 창 시작 URL을 `/snap`으로 고정. 개발 서버·배포 앱 모두 같은 창 설정을 사용함. 미인증 시 기존 로그인 후 `/snap` 복귀 동작 유지.
|
||||
|
||||
- [x] Tauri 전 화면에 공통 제목줄과 우측 닫기 버튼 추가. 기존 Rust `window_hide`를 호출해 트레이로 숨김. 제목줄 드래그는 `window_drag` 재사용.
|
||||
- [x] 수정 파일 Prettier·ESLint 및 프론트 빌드 통과. 전체 lint의 기존 오류는 그대로 남아 있음.
|
||||
- [ ] 사용자 직접 확인: 닫기 클릭 시 숨김, 트레이 열기로 복귀, 제목줄 드래그와 화면 높이 확인.
|
||||
|
||||
### 기존 진행 순서
|
||||
|
||||
- [ ] T011: 사용자 직접 테스트 결과로 창 표시·프론트 화면 확인 후 완료 처리. 사용자 요청으로 Computer Use 중단.
|
||||
- [ ] Phase 3 US1: 프론트 transport 구현 및 회귀 검증.
|
||||
- [ ] 기존 프론트 lint 오류 해결 — Phase 3 자동 검사 통과 전에 필요.
|
||||
|
||||
## 실행 중 참고
|
||||
|
||||
- 백엔드 미실행으로 `/api/v1/files` 요청에 `ECONNREFUSED` 발생. 화면 표시 확인과 실제 API 기능 확인을 구분할 것.
|
||||
- 이전 기록의 main.rs 이름 불일치와 미커밋 설명은 현재 상태와 다름. 실제 lib 이름은 일치하고 스캐폴드는 이미 커밋돼 있음.
|
||||
@@ -0,0 +1,23 @@
|
||||
# 2026-09-11
|
||||
|
||||
진행 중 feature: **`specs/004-tauri-shell/`** — Tauri 기준 데스크톱 앱 전환
|
||||
|
||||
## 사용자 요청
|
||||
|
||||
- Raycast 형태 스니펫 개선 승인: 검색창만 시작 → 검색 결과 → 직접 선택 시 코드 프리뷰. 실제 Tauri 창 크기 제어까지 포함.
|
||||
- `urchin`과 같은 방식으로 `AGENTS.md`를 만들고 `CLAUDE.md`를 작업 규칙 원본으로 지정.
|
||||
- `tauri-canonical` 작업을 현재 main 기준으로 합친 뒤 해당 작업 폴더와 브랜치를 제거.
|
||||
|
||||
## 통합 기준
|
||||
|
||||
- 현재 main의 클린 블루, `/snap` 시작 경로, 닫기 버튼, 스니펫 DB 읽기, Enter 복사를 보존.
|
||||
- canonical의 공통 transport, Win32 붙여넣기, 창 상태 저장 범위, Tauri 기준 명세를 반영.
|
||||
- main의 실패 토스트와 WebView2·Windows Tauri 회귀 검사를 공통 transport에서도 유지.
|
||||
- `4_rust_tauri`가 기준 앱이고 `3_windowsApp`은 참고용 legacy로 유지.
|
||||
- 이전 양쪽 작업은 커밋 이력으로 보존. 9월 9일 작업로그는 시간순으로 합침.
|
||||
|
||||
## 다음
|
||||
|
||||
- 단계별 스니펫 화면과 창 크기 전환 구현. 검사 결과와 미완료 저장 기능은 `specs/001-snippet-palette/tasks.md`에서 추적.
|
||||
- 붙여넣기는 코드·컴파일 검사와 실제 대상 앱 검증을 구분. 이번 통합에서 다른 앱에 키 입력을 주입하지 않음.
|
||||
- 스니펫 쓰기·사용기록 저장과 화면 캡처는 여전히 미구현. 기존 feature의 미완료 항목을 계속 추적.
|
||||
@@ -0,0 +1,17 @@
|
||||
# 2026-09-16
|
||||
|
||||
진행 중 feature: **`specs/005-chat-image-input/`** — 채팅 이미지 입력
|
||||
|
||||
## 사용자 요청
|
||||
|
||||
- base-backend의 새 이미지 채팅 계약에 맞춰 화면 캡쳐와 클립보드 이미지를 전송함.
|
||||
|
||||
## 완료
|
||||
|
||||
- 새 대화와 기존 대화에서 PNG/JPEG/WebP 이미지를 질문에 첨부함.
|
||||
- 이미지-only 전송과 서버 동일 제한을 적용함.
|
||||
- 전체 frontend 검사 통과.
|
||||
|
||||
## 다음
|
||||
|
||||
- 실제 backend 환경에서 vision 응답을 수동 확인함.
|
||||
@@ -0,0 +1,5 @@
|
||||
# orders — 오늘 할 일
|
||||
|
||||
- 파일명: `YYYYMMDD.md`, 하루 1파일.
|
||||
- 내용: 체크박스 할 일 + 진행 중 feature 포인터(`specs/<feature>/`).
|
||||
- 세션 부트스트랩 때 최신 파일부터 읽는다. (ztodo.md 승격판 — ztodo.md 는 더 이상 안 씀)
|
||||
Reference in New Issue
Block a user