Skip to content

feat(ui): meeting block — recording, progressive transcription, notes (MEET-5) - #369

Merged
eliotlim merged 9 commits into
feat/meet-4-meeting-cataloguefrom
feat/meet-5-recorder-ui
Oct 4, 2026
Merged

eliotlim merged 9 commits into
feat/meet-4-meeting-cataloguefrom
feat/meet-5-recorder-ui

Conversation

@eliotlim

@eliotlim eliotlim commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

Problem

OpenBook had no way to record a meeting, see its transcript grow live, or keep structured notes next to it — the core of the MEET epic. Board: MEET-5.

Solution

Full recorder UI for the meeting block (replaces MEET-4's placeholder): MediaRecorder restarted per ~45s chunk (every chunk a standalone playable file), per-chunk upload → transcribe pipeline with independent retries, recorded-time timer, pause/resume, KitFrame chrome with editable title, editable CRDT notes region, slash-menu entry, i18n ×4, exports (transcript/summary/notes). Cross-client guards: duplicate-transcription re-check, remote-recording detection, effective read-only enforcement. Stacked on #366/#367/#368 — merge this LAST; its diff shrinks to the ui layer once those land.

Key files: packages/ui/src/blockeditor/{MeetingBlockView.tsx,meetingRecorder.ts,meetingTime.ts,exportBlocks.ts}, __tests__/meetingRecorder.test.tsx (30 tests), i18n ×4, index.css.

Before / After

Behavior Before After
Record a meeting with live transcript not possible
Finished meeting block (transcript, summary, notes) n/a
Mic permission denied n/a
No AI server (local in-webview) n/a recording + notes still work; transcription affordance disabled with actionable copy (tested)

Test procedure

VITEST_MAX_WORKERS=1 pnpm verify (ui 2,350 incl. 30 meeting tests; both e2e suites green). Targeted: pnpm --filter @book.dev/ui exec vitest run src/blockeditor/__tests__/meetingRecorder.test.tsx. Manual: insert /meeting on any page with a mic, record two chunks across a pause, stop, check transcript offsets and chunk playback.

Operational notes

No env/migration/deps. Transcription requires a connected server with AI configured (local default lands in MEET-3). Chunks ≤10 MiB each (45s opus is ~300 KB). transcriptionCompleted prop is intentionally untyped pending MEET-10. Audio export and desktop mic support are MEET-7/MEET-8. Assets live on chore/artifacts (never merges).


Verify: green serialized. Reviews cleared: design (Devon — BLOCK→CLEAR after 6-major fix round + focus re-verify), code (Quinn). Final HEAD e7da15b.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
app.book.pub Skipped Skipped Oct 4, 2026 2:08pm UTC

Request Review

@eliotlim
eliotlim changed the base branch from main to feat/meet-4-meeting-catalogue October 4, 2026 14:08
@eliotlim
eliotlim merged commit 93b86a8 into feat/meet-4-meeting-catalogue Oct 4, 2026
12 checks passed
@eliotlim
eliotlim deleted the feat/meet-5-recorder-ui branch October 4, 2026 14:09

This branch was previously deployed

1 inactive deployment
Preview — 9b10912c Deployed Oct 4, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant