Skip to content

refactor: extract restate services into crates with type-safe pipeline status#3919

Merged
yujonglee merged 4 commits intomainfrom
refactor/onboarding-in-app
Feb 12, 2026
Merged

refactor: extract restate services into crates with type-safe pipeline status#3919
yujonglee merged 4 commits intomainfrom
refactor/onboarding-in-app

Conversation

@yujonglee
Copy link
Contributor

@yujonglee yujonglee commented Feb 12, 2026

Summary

  • Extract rate limiter and STT workflow from apps/restate into standalone crates (crates/restate-rate-limit, crates/restate-stt)
  • Introduce crates/restate-stt-types with a shared PipelineStatus enum and SttStatusResponse struct, replacing all hardcoded status strings with type-safe variants
  • Add a basic GET /stt/status/{pipeline_id} route in transcribe-proxy that proxies to the Restate workflow's getStatus handler
  • Wire the types through the full OpenAPI -> @hypr/api-client generation pipeline so apps/web and apps/desktop can import PipelineStatus and SttStatusResponse instead of hardcoding string unions

Test plan

  • cargo check -p restate-stt-types -p restate-stt -p transcribe-proxy -p api passes
  • dprint fmt clean
  • OpenAPI spec (apps/api/openapi.gen.json) includes PipelineStatus enum and SttStatusResponse schema
  • Generated TypeScript types (packages/api-client/src/generated/types.gen.ts) contain PipelineStatus and SttStatusResponse

Made with Cursor


Open with Devin

yujonglee and others added 4 commits February 12, 2026 17:22
- Remove separate onboarding route, integrate into main layout
- Add onboarding body component for in-app onboarding flow
- Add calendar and folder-location onboarding steps
- Consolidate onboarding config, login, permissions components
- Remove useOnboardingState hook, welcome.tsx
- Update routes and store initialization

Co-authored-by: Cursor <cursoragent@cursor.com>
…e status

- Extract rate limiter from apps/restate into crates/restate-rate-limit
- Extract STT workflow from apps/restate into crates/restate-stt
- Create crates/restate-stt-types with PipelineStatus enum and SttStatusResponse,
  replacing hardcoded status strings with a shared enum
- Add basic /stt/status/{pipeline_id} route in transcribe-proxy for polling
  Restate workflow status
- Wire PipelineStatus through OpenAPI -> api-client type generation pipeline
  so apps/web and apps/desktop get typed PipelineStatus and SttStatusResponse

Co-authored-by: Cursor <cursoragent@cursor.com>
@netlify
Copy link

netlify bot commented Feb 12, 2026

Deploy Preview for hyprnote-storybook canceled.

Name Link
🔨 Latest commit 19231d3
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/698db5641f27dd00085890d8

@netlify
Copy link

netlify bot commented Feb 12, 2026

Deploy Preview for hyprnote ready!

Name Link
🔨 Latest commit 19231d3
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/698db564dd3c2e0008b7444a
😎 Deploy Preview https://deploy-preview-3919--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.

@yujonglee yujonglee merged commit 50a60ed into main Feb 12, 2026
28 checks passed
@yujonglee yujonglee deleted the refactor/onboarding-in-app branch February 12, 2026 11:18
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 potential issue.

View 9 additional findings in Devin Review.

Open in Devin Review

Comment on lines +12 to +17
const STEPS_MACOS: OnboardingStep[] = [
"permissions",
"login",
"calendar",
"final",
];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 "folder-location" onboarding step rendered but never reachable because it's missing from all platform step arrays

The TabContentOnboarding component renders a "Storage" OnboardingSection for the "folder-location" step with getStepStatus("folder-location", currentStep), but "folder-location" is absent from both STEPS_MACOS and STEPS_OTHER in the config.

Root Cause

In apps/desktop/src/components/onboarding/config.tsx:12-18, the step arrays are:

STEPS_MACOS = ["permissions", "login", "calendar", "final"]
STEPS_OTHER = ["login", "final"]

Neither includes "folder-location", even though it's defined in the OnboardingStep type union at line 9.

When getStepStatus("folder-location", currentStep) is called (apps/desktop/src/components/main/body/onboarding/index.tsx:171), steps.indexOf("folder-location") returns -1, so the function returns null. The OnboardingSection component (apps/desktop/src/components/onboarding/shared.tsx:24) returns null when status is null.

Impact: The entire Storage/folder-location section — including FolderLocationSection with its folder picker UI — is completely invisible on every platform. The step was clearly intended to be part of the onboarding flow (it has onContinue={goNext} wired up), but users will never see it.

Suggested change
const STEPS_MACOS: OnboardingStep[] = [
"permissions",
"login",
"calendar",
"final",
];
const STEPS_MACOS: OnboardingStep[] = [
"permissions",
"login",
"calendar",
"folder-location",
"final",
];
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

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