Skip to content

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Dec 10, 2025

feat: add HyprnoteCloud batch transcription provider

Summary

This PR adds support for batch audio transcription via Hyprnote Cloud (Restate-powered) from the desktop app. When users select the "hyprnote" provider (non-AM model), the desktop app will upload the audio file to Supabase storage and use the apps/api /file-transcription endpoints to process it through Restate.

Key changes:

  • Restate workflow: Now returns full provider-specific responses (with word-level data) instead of just extracted transcript text
  • listener2 plugin: Added HyprnoteCloud provider variant with HTTP polling logic to check transcription status
  • Frontend: Updated useRunBatch hook to upload files to Supabase and pass cloud-specific params
  • API schema: Changed from transcript to providerResponse field to support full provider responses

Updates since last revision

  • Resolved merge conflicts with main branch
  • Incorporated main's lint fix (void prefix on promise resolve/reject calls in stt-file.ts)
  • Regenerated listener2 bindings to include both HyprnoteCloud changes and main's speaker field additions to Token/VttWord types

Review & Testing Checklist for Human

  • Critical: Verify BatchCloudResponse event handling - A new event type is emitted but the frontend handler for converting the raw provider_response JSON string to word-level data may be missing. Check useListener and related stores.
  • Critical: Test apps/web file-transcription - The API schema changed from transcript to providerResponse. Verify this doesn't break the existing web file transcription feature.
  • Verify Supabase RLS - Ensure the "audio-files" bucket allows authenticated users to upload files with the path pattern {userId}/{timestamp}-{fileName}
  • End-to-end test - Upload an audio file via desktop with Hyprnote Cloud provider selected and verify:
    • File uploads to Supabase successfully
    • Restate workflow processes the file
    • BatchCloudResponse event is received with full provider data
    • Words are properly persisted to TinyBase

Recommended test plan:

  1. Configure desktop to use Hyprnote Cloud STT provider
  2. Import an audio file into a session
  3. Verify transcription completes and words appear with timestamps

Notes

  • Status restoration on navigate-away/revisit was intentionally skipped per user request (TinyBase schema update deferred for simplicity)
  • The extractSonioxTranscriptText function was added but is currently unused - it's available for future use when implementing client-side segmentation
  • Polling timeout is set to 180 seconds (120 attempts × 1.5s interval)

Link to Devin run: https://app.devin.ai/sessions/2152bd5364914957acd19c22b22965ab
Requested by: yujonglee (@yujonglee)

- Modify Restate workflow to return full provider-specific responses (not just extracted text)
- Update Deepgram callback schema to capture word-level data with timestamps
- Update Soniox to return full transcript response with tokens
- Add BatchProvider::HyprnoteCloud variant to listener2 plugin
- Implement HTTP polling logic for cloud batch transcription
- Add BatchCloudResponse event for cloud provider responses
- Update frontend useRunBatch hook to handle Supabase file upload for cloud provider
- Update apps/api StatusResponseSchema to use providerResponse field

Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR that start with 'DevinAI' or '@devin'.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@netlify
Copy link

netlify bot commented Dec 10, 2025

Deploy Preview for hyprnote ready!

Name Link
🔨 Latest commit 7d4b6fa
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/6951045abe18c40008be38eb
😎 Deploy Preview https://deploy-preview-2200--hyprnote.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@netlify
Copy link

netlify bot commented Dec 10, 2025

Deploy Preview for hyprnote-storybook ready!

Name Link
🔨 Latest commit 7d4b6fa
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/6951045ab0222a00084491ed
😎 Deploy Preview https://deploy-preview-2200--hyprnote-storybook.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 10, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands and usage tips.

devin-ai-integration bot and others added 2 commits December 28, 2025 10:19
Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
Co-Authored-By: yujonglee <yujonglee.dev@gmail.com>
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