Skip to content

feat: add migration modal to prompt users to import notes from previous versions#2881

Merged
yujonglee merged 1 commit intomainfrom
devin/1767795653-migration-modal
Jan 16, 2026
Merged

feat: add migration modal to prompt users to import notes from previous versions#2881
yujonglee merged 1 commit intomainfrom
devin/1767795653-migration-modal

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Jan 7, 2026

Summary

Adds a migration notification modal that automatically detects existing Hyprnote meeting notes from previous versions (v0 stable/nightly) and prompts users to import them on app startup. This addresses the discoverability issue where users wouldn't find the manual scan option in settings.

The modal:

  • Checks for existing Hyprnote v0 data on startup
  • Shows stats about what will be imported (notes, transcripts, contacts)
  • Allows users to import or dismiss (persisted across restarts)
  • Reuses the existing import logic from settings

Changes:

  • Added MigrationDismissed StoreKey and getter/setter methods in Rust
  • Added Tauri commands to expose migration dismissed state to TypeScript
  • Created MigrationModal component with import functionality
  • Integrated modal into MainAppLayout

Review & Testing Checklist for Human

  • Verify Rust compilation: Run cargo check to ensure the Rust changes compile (I couldn't verify due to a pre-existing workspace issue with missing plugins/export)
  • Test with real v0 data: Place a db.sqlite file in ~/Library/Application Support/com.hyprnote.stable/ (macOS) or equivalent data directory and verify the modal appears on startup
  • Test import flow: Click "Import notes" and verify data is actually migrated correctly
  • Test dismiss persistence: Click "Skip for now", restart the app, and verify the modal doesn't reappear
  • Test interaction with other modals: Verify the migration modal doesn't conflict with onboarding or trial expired modal flows

Recommended test plan:

  1. Create a test v0 database with some notes
  2. Launch the app fresh and verify modal appears
  3. Test both import and dismiss flows
  4. Verify data integrity after import

Notes

  • The TypeScript bindings in tauri.gen.ts were manually added (codegen had issues) - may need regeneration
  • Modal only shows for hyprnote_v0_stable and hyprnote_v0_nightly sources, not other import sources like Granola

Link to Devin run: https://app.devin.ai/sessions/c5580f51a6c54dd6a2964a2917e59b85
Requested by: @ComputelessComputer


Open with Devin

…us versions

- Add MigrationDismissed StoreKey to track if user has dismissed the modal
- Add getter/setter methods for migration dismissed state in Rust
- Add Tauri commands to expose migration dismissed state to TypeScript
- Create MigrationModal component that shows on startup when migration is needed
- Integrate modal into MainAppLayout alongside TrialExpiredModal
- Modal detects existing Hyprnote v0 stable/nightly data and prompts import

Co-Authored-By: john@hyprnote.com <john@hyprnote.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 Jan 7, 2026

Deploy Preview for howto-fix-macos-audio-selection canceled.

Name Link
🔨 Latest commit 9058511
🔍 Latest deploy log https://app.netlify.com/projects/howto-fix-macos-audio-selection/deploys/695e6c0f29a1390008022d02

@netlify
Copy link

netlify bot commented Jan 7, 2026

Deploy Preview for hyprnote canceled.

Name Link
🔨 Latest commit 9058511
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote/deploys/695e6c0f43be610008325abf

@netlify
Copy link

netlify bot commented Jan 7, 2026

Deploy Preview for hyprnote-storybook canceled.

Name Link
🔨 Latest commit 9058511
🔍 Latest deploy log https://app.netlify.com/projects/hyprnote-storybook/deploys/695e6c0f54c5fd0008beace6

@ComputelessComputer ComputelessComputer requested review from yujonglee and removed request for ComputelessComputer January 16, 2026 01:45
Copy link
Contributor Author

@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: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 4 additional flags.

Open in Devin Review

@yujonglee yujonglee merged commit 97f832c into main Jan 16, 2026
21 of 22 checks passed
@yujonglee yujonglee deleted the devin/1767795653-migration-modal branch January 16, 2026 01:49
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.

2 participants