diff --git a/docs/superpowers/specs/2026-04-25-dogfood-feedback.md b/docs/superpowers/specs/2026-04-25-dogfood-feedback.md index 4adf57e..a991f2d 100644 --- a/docs/superpowers/specs/2026-04-25-dogfood-feedback.md +++ b/docs/superpowers/specs/2026-04-25-dogfood-feedback.md @@ -1307,8 +1307,77 @@ app.on('activate', () => { --- +## F22. NoteCard 이미지가 회색 placeholder 만 표시 (🚀 promoted → docs/superpowers/specs/2026-05-09-v028-cut-a-design.md) + +**진행 상태:** 🚀 promoted → v0.2.8 Cut A. inkling-media:// custom protocol + NoteCard `` + IPC inbox:open-media + OS viewer 클릭. (commit 470384b + f6bea62 + 9cdea15) + +**발견:** 2026-05-09 v0.2.7 release 후 본인 dogfood. 사용자 표현: "이미지 렌더링이 제대로 되지 않는 것 같아". + +### 관찰 + +[src/renderer/inbox/components/NoteCard.tsx:334-340](src/renderer/inbox/components/NoteCard.tsx#L334-L340): + +```tsx +{local.media.length > 0 && ( +
+ {local.media.map((m) => ( +
+ ))} +
+)} +``` + +**`` 가 아니라 회색 `
`**. 즉 capture 시 첨부한 이미지가 보관함에서 회색 48x48 사각형만 표시 — title attribute (relPath) 만 hover tooltip 으로 보임. 실제 이미지 렌더링 자체 부재. + +`MediaStore` 는 `/media//` 절대 경로로 파일 보존. relPath = `media//` 형태. Electron renderer 에서 직접 `file://` 또는 custom protocol 로 src 매핑 필요. + +### 추정 원인 (placeholder 인 이유) + +- 초기 v0.4 slice 단계에 thumbnail 렌더는 후순위로 미루고 placeholder 로 둔 채 그대로 잔류. +- Electron renderer 가 raw `file://` 경로 보안 정책상 직접 접근 어려움 — custom protocol (`inkling-media://`) 또는 IPC handle 로 base64 변환 필요. + +### 제안 방향 + +**A. Custom protocol 등록** (권장): +- main process 에서 `protocol.registerFileProtocol('inkling-media', ...)` 등록 — `/media/` 하위 경로를 `inkling-media:///` 으로 매핑 +- NoteCard: `` +- 보안: scheme 별 allowlist + protocol handler 가 path traversal 검사 + +**B. IPC 로 base64 변환** (작은 이미지에 한정): +- `inboxApi.getMediaDataUrl(relPath)` → main 이 file 읽고 `data:image/png;base64,...` 반환 +- renderer 에 `` +- 큰 이미지 (수 MB) 시 메모리 부담 + +**C. file:// 직접** (Electron 특수 설정 필요): +- `webPreferences.webSecurity: false` — 보안 약화 risk. **Reject**. + +### 결정 대기 + +- thumbnail 표시 vs 클릭 시 full-size modal — UX 선택 +- 다중 이미지 (현재 capture 가 N개 첨부 가능) 의 grid layout +- 이미지 alt text — capture 시 입력 또는 AI 자동 생성 (옵션) + +### 가설·측정 + +- 본인 dogfood: capture 시 이미지 첨부 빈도 — 현재 추정치 < 일 1건. ≥ 일 1건이면 이미지 흐름 가치 큼. +- 옵션 A 도입 후 NoteCard 클릭 시 modal full-size 사용 빈도 — UX 선택 검증. + +### 범위 + +- A (custom protocol + thumbnail): 1-2일. +- A + click → full-size modal: + 0.5일. +- alt text AI 생성: 별도 cut. + +### 영향 + +- 명확한 bug 수정 — 사용자 마찰 명백. +- F19 (recall) 의 시각적 단서 — 이미지 보일 때 메모 회상 ↑. +- v0.2.8 narrow scope 에 포함 가치 (1-2일 작업). + +--- + ## (다음 항목 자리) -새 피드백 추가 시 `## F17. 짧은 제목 (🌱 raw)` 헤더로 시작. 표준 슬롯 6개 채우거나 비워둔 채 시작 가능. +새 피드백 추가 시 `## F23. 짧은 제목 (🌱 raw)` 헤더로 시작. 표준 슬롯 6개 채우거나 비워둔 채 시작 가능. -dogfood ≥1주 soak (v0.2.6 release 후) 동안 새 발견 항목들 여기 누적 → v0.2.7 brainstorm 트리거. +v0.2.8 release 후 dogfood ≥1주 soak 동안 새 발견 항목들 여기 누적 → v0.2.9 brainstorm 트리거. diff --git a/package.json b/package.json index db019cc..0a19a87 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "inkling", - "version": "0.2.7", + "version": "0.2.8", "private": true, "description": "Inkling — local-first 한 줄 보관 도구", "author": "altair823 ",