Repository navigation
Conversation
Co-authored-by: Wolf Mermelstein <wolf@404wolf.com>
…async-openai Whisper - Split crates/dictation into domain (models/ports/service), inbound (axum router) and outbound (Whisper adapter) behind feature flags. - Detect the audio container from the bytes with infer instead of trusting the client Content-Type; LanguageHint newtype for the hint. - Read OPENAI_API_KEY through a macro_env_var newtype and call Whisper through async-openai (audio feature) with a bounded retry budget. - Require a signed-in user (UserOnly) and rate limit each user to 60 transcriptions per hour with the shared rate_limit middleware. - Move the DSS endpoint into the crate's inbound router; wire router state, Redis limiter, and swagger schema in the composition root. - Regenerate workspace-hack and dependency closures. Co-authored-by: Wolf Mermelstein <wolf@404wolf.com>
…t-driven tests - Add AudioRecorder: constructed with the callbacks that receive levels, the finished recording, limit, and errors; only one instance holds the microphone at a time. Levels come from @solid-primitives/stream and every MediaRecorder chunk advances both the timeline and the duration cap, so the recorder has no timers. - Primitives take a recorder factory instead of start-recording and volume-meter functions; confirm() returns a promise that settles when text is committed or the attempt is abandoned. - Replace the 3s finish fallback with a second confirm that commits the words recognized so far. - Rewrite tests around explicit recorder/recognizer events: no fake timers, advanceTimersByTime, or Promise.resolve flushes. Co-authored-by: Wolf Mermelstein <wolf@404wolf.com>
…er-fallback # Conflicts: # apps/web/src/features/channel/Input/ChannelInput.tsx
…er-fallback # Conflicts: # nix-support/node_modules-hashes.json
Resolve composer conflicts by keeping main's agent file attachments and channel flat composer, plus Whisper dictation controls and send guards. Keep the comment-import advisory unlock helper name from main. Co-authored-by: Wolf Mermelstein <wolf@404wolf.com>
bun.lock now includes @solid-primitives/stream on top of latest main. Co-authored-by: Wolf Mermelstein <wolf@404wolf.com>
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Repository: macro-inc/macro/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (38)
📒 Files selected for processing (74)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-authored-by: Wolf Mermelstein <wolf@404wolf.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit bd12090. Configure here.
| ); | ||
| }, | ||
| { discrete: true } | ||
| ); |
There was a problem hiding this comment.
Dictation insert corrupts trailing mentions
Medium Severity
Confirming dictation always does selectEnd().insertText() on the last descendant. When the draft ends in a mention or other decorator, that inserts inside the chip instead of after it, so the mention’s display text (and often its identity) is overwritten. Users who @mention someone and then dictate lose or corrupt that mention.
Reviewed by Cursor Bugbot for commit bd12090. Configure here.
Co-authored-by: Wolf Mermelstein <wolf@404wolf.com>
Keep the native Darwin node_modules hash and touch dictation fixtures so cloud-storage and Nix hash workflows run on HEAD. Co-authored-by: Wolf Mermelstein <wolf@404wolf.com>


Rebases / updates #6527 onto latest
mainso the dictation Whisper work can merge.Conflict resolution:
AgentInputkeeps main’s file-attachment composer (InputProvider, drop zone, chips, attach action) and adds Whisper dictation (mic button, panel, send/send-next guards, inert overlay).ChannelInputkeeps main’sflat/Dynamiccomposer chrome and dictation controls, including collapsed-mic start and send guards.release_import_lockhelper and the explicit advisory-unlock wait.node_moduleshash refreshed for@solid-primitives/streamon currentbun.lock. Darwin hash is still main’s until the native macOS checker reports the new value.Validation:
cargo test -p dictation -p ai_usage— 29 passedcargo test -p macro_db_migrator --bin comment_import --features comment-import— 9 passedjust checkpassed