Repository navigation
Conversation
Meeting recording sub-feature, the requirements for recordings on a note, the Meeting Recording runtime sequence, ADR 0048 (AAC in an ADTS stream, 16 kHz mono, 32 kbps) and the Android MediaRecorder tech chapter. Plan +meeting-recording, entry spec-recording (90bc0d51-e8f6-4272-a0e1-a856fa33a047). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The desktop transcribes a downloaded meeting recording through the gpt-4o-transcribe Foundry deployment once per sha256, remuxing ADTS to M4A in parts of at most 5 minutes, appends Transcript and Summary to the note, then removes the audio. Adds the model to tech/cloud.md and the amendment notes to ADRs 0023 and 0014. Plan entry 78334a1c-f50b-429a-b21b-17781572cacf (spec-transcription). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…6-4272-a0e1-a856fa33a047 docs(devbook): specify meeting recording on a phone note
…a-b21b-17781572cacf Resolve the ADR index conflict by listing 0048 (entry 1) before 0049, and point 0049's Context and audio types at ADR 0048 now that it has landed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…b-429a-b21b-17781572cacf docs(devbook): record the meeting transcription decision (ADR 0049)
* feat(mobile): record a meeting into a phone note Record sits in the note editor beside Dictate and Photo. It records AAC in an ADTS stream (16 kHz mono, 32 kbps, local ADR 0048) through an Android microphone foreground service with an ongoing notification, shows a recording bar (dot, timer, level meter, Pause, Stop), and on Stop attaches each part as "Recording · <duration>". A recording rolls over to a new part at 24 MiB on a frame boundary with no gap, and a file left by a killed app is attached as "Recording (interrupted)" on the next start. The web harness records the same screen through the browser's MediaRecorder for Playwright. Plan +meeting-recording, entry record-on-phone (07b9cfd0-7289-428f-b952-d2e8ac9e4266). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(devbook): keep ADR 0046 clear of a .dsl path and an undeclared c4 embed Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> (cherry picked from commit 10027f6) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…ow space and a deleted note - A phone call (AudioManager mode, no new permission) pauses the recording with "Paused: a phone call has the microphone." and only Resume starts it again. - A capture another app silences shows a notice (AudioRecordingCallback, API 29+); below that, ten seconds at a flat level shows a hint. - A start needs about twice a part free; the recording stops cleanly at 200 MB free and says why. - A note deleted elsewhere while recording keeps recording; Stop saves to a new note "Recording · <date>". - A refused microphone reads the same as dictation on each host. Plan +meeting-recording, entry 5 (4e8927db-2e77-451f-8ba7-81fe87edca40). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…7-451f-8ba7-81fe87edca40 feat(mobile): a meeting recording survives calls, silenced capture, low space and a deleted note
…oth sides The sync service took no audio, so every recording a phone note carried was refused with a 415 and the note stayed "Waiting to sync". Recordings now travel like photos and play where they land. - SyncAttachmentLimits.DefaultContentTypes takes audio/aac, audio/mp4 and audio/x-m4a (ADR 0048 §5); the phone's own audio exception goes, so the phone and the service cannot disagree. - A shared AudioPlayer component plays a file through a blob URL built from a stream, released on dispose; a missing or unreadable file is said in words. It has its own storybook page. - The phone's attachment tile plays a recording while its bytes are still on the phone (drafts/ or outbox/). - The desktop Inbox item detail plays a downloaded recording. Backlog plan +meeting-recording, entry c2560f69-ed55-4f44-a273-a91f0bedfd8d. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 of 5 tasks
…5-4f44-a273-a91f0bedfd8d feat(sync): send meeting recordings to the desktop and play them on both sides
Implements local ADR 0049 (plan +meeting-recording, entry 6 transcribe-on-desktop, 7dbb8d53-02af-4cf5-b715-3dbd9cfd7c03). - AdtsRemuxer lifts AAC frames out of an ADTS stream into M4A without re-encoding, cut on frame boundaries into parts of at most 5 minutes, each with its offset. - AzureFoundryTranscriptionClient gains an api-key credential and a part prompt; on the desktop its options are read from AzureFoundrySettings on every call, with a new TranscriptionDeployment setting (default gpt-4o-transcribe) shown in Settings > AI. - AzureFoundryInboxRecordingTranscriber answers the Inbox's new IInboxRecordingTranscriber port: parts out with the previous part's last words as prompt, no language, no speaker labels, timestamps per part, then a summary with action items over the chat deployment. - TranscribeRecordingsCommand runs in a background worker once a note's recording has downloaded, once per sha256 (records kept in the inbox folder), re-reads the note, appends ## Transcript and ## Summary and removes the recording in the same save; failure leaves both in place. A phone edit that drops the sections or names the file again is repaired from the kept record. - The sync service releases the blob of a file a note edit drops, read from the note the replica held, once the edit has landed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…f-4cf5-b715-3dbd9cfd7c03 feat(inbox): transcribe and summarize meeting recordings on the desktop (meeting-recording 6)
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closing pull request for the Backlog plan
+meeting-recording:plan/meeting-recording→main. Merging it signs the plan off. It stays a draft until entries 7 and 8 are done.The plan branch also carries three merges of
main, done so each wave of entries started from a green base.What could not be proved
No entry ran on a real Android phone, and the phone → sync → desktop → transcript path never ran end to end: on the build machine Docker had run out of network address ranges, so the sync service's Cosmos emulator never started. Entry 7 is that check. Each entry's own pull request lists what it could not prove.
Still open
Merge Danger
One-way door for data: once a desktop with Foundry configured runs this, meeting audio is sent to Azure and removed from the note after transcription (ADR 0049). Don't merge before entry 7 passes.
Opened by an unattended
execute-planrun.🤖 Generated with Claude Code