diff --git a/docs/issues/2026-03-31-quick-voice-input/definition.md b/docs/issues/2026-03-31-quick-voice-input/definition.md new file mode 100644 index 000000000..9c8b5cd22 --- /dev/null +++ b/docs/issues/2026-03-31-quick-voice-input/definition.md @@ -0,0 +1,47 @@ +## Background & Context + +Memos is a self-hosted note-taking product whose main write path is the React memo composer in `web/src/components/MemoEditor`. Memo content is stored as Markdown text, attachments are uploaded through the v1 attachment API, and the server already has dedicated file-serving behavior for media playback. The most recent relevant change in this area was commit `63a17d89`, which refactored audio attachment rendering into reusable playback components. That change improved how audio files are displayed after upload; it did not add a microphone-driven input path inside the compose flow. + +## Issue Statement + +Memo creation currently starts from typed text plus file upload and metadata pickers, while audio support in the product begins only after an audio file already exists as an attachment. Users who want to capture memo content by speaking must leave the compose flow to record elsewhere, then upload or manually transcribe the result, because the editor has no direct path from microphone input to memo text or an in-progress audio attachment. + +## Current State + +- `web/src/components/MemoEditor/index.tsx:26-154` assembles the compose flow from `EditorContent`, `EditorMetadata`, and `EditorToolbar`, and persists drafts through `memoService.save`. +- `web/src/components/MemoEditor/Editor/index.tsx:27-214` implements the editor surface as a `