diff --git a/PLAN.md b/PLAN.md index b516d93..8b7db25 100644 --- a/PLAN.md +++ b/PLAN.md @@ -16,16 +16,16 @@ Voice-first authoring tool for single-user Ghost blog. Capture audio, refine wit - [x] Build password gate (frontend form + backend verification). - [x] Connect FE<->BE via Vite proxy and enable CORS. - [x] Load .env in API with explicit path. - - [ ] Bootstrap base admin layout with navigation placeholders. + - [x] Bootstrap base admin layout with navigation placeholders. - [ ] Document manual test checklist for auth flow. - **M2 · Voice Capture Pipeline** (Scope: Goal 2) - - [ ] Add browser audio recorder UI & permissions handling. - - [ ] Stream/upload audio blobs to backend endpoint. - - [ ] Persist raw audio (S3/local) with metadata. + - [x] Add browser audio recorder UI & permissions handling. + - [x] Stream/upload audio blobs to backend endpoint. + - [x] Persist raw audio (S3/local) with metadata. - **M3 · Speech-to-Text Integration** (Scope: Goal 3) - - [ ] Invoke OpenAI STT API server-side. - - [ ] Surface transcript in rich editor state with status feedback. - - [ ] Log conversion lifecycle for debug. + - [x] Invoke OpenAI STT API server-side. + - [x] Surface transcript in rich editor state with status feedback. + - [x] Log conversion lifecycle for debug. - **M4 · Rich Editor Enhancements** (Scope: Goal 4) - [ ] Integrate block-based editor (e.g., TipTap/Rich text) with custom nodes. - [ ] Implement file/image upload widget wired to storage. @@ -51,7 +51,7 @@ Voice-first authoring tool for single-user Ghost blog. Capture audio, refine wit - [ ] ESLint + Prettier shared config. - [ ] Commit hooks (lint-staged, Husky) optional. - **Secrets** - - [ ] `.env.example` for common keys (ADMIN_PASSWORD_HASH, OPENAI_API_KEY, GHOST_ADMIN_API_KEY, S3 credentials). + - [x] `.env.example` for common keys (ADMIN_PASSWORD_HASH, OPENAI_API_KEY, GHOST_ADMIN_API_KEY, S3 credentials). - [ ] Instructions for local secret population. ## Tooling Decisions @@ -74,7 +74,7 @@ Voice-first authoring tool for single-user Ghost blog. Capture audio, refine wit ## Next Priorities - [x] Save transcript into an editor document (draft state) and display in editor. - [x] Add simple document persistence API (filesystem) at `/api/drafts` (list/get/save). -- [ ] Wire editor to use `/api/drafts` (load/save) instead of only localStorage. +- [x] Wire editor to use `/api/drafts` (load/save) instead of only localStorage. - [ ] List uploaded media items and allow re-use/deletion. ## Verification Steps