Skip to content

Conversation

@beastoin
Copy link
Collaborator

@beastoin beastoin commented Dec 27, 2025

sync audio from the device (sd card / on-device storage) to the phone first, completely, and keep it.

then sync to the STT later - don't delete anything. let users decide when to delete based on their needs.

add a fast transfer mode for omi devices that use wifi. don't forget to check whether this feature is available on the device via a feature flag.

#3847

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a significant improvement to the SD card data synchronization process by implementing a two-phase sync mechanism. This change enhances data safety by first transferring recordings from the SD card to the phone's local storage before attempting to process or upload them to the cloud. The changes are extensive, touching UI, state management, and core services. New features include the ability to cancel an ongoing SD card transfer, and the UI has been updated to display transfer speed and ETA. My review focuses on potential race conditions in the UI when displaying feedback to the user after an operation.

Comment on lines 516 to 517
// Pop back to refresh the list since WAL has moved to phone storage
Navigator.of(context).pop();
Copy link
Contributor

Choose a reason for hiding this comment

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

high

The manual Navigator.of(context).pop() call here is redundant and can cause a race condition with the SnackBar not being displayed. The UI is already designed to reactively pop the screen when the WAL's storage location changes after a successful transfer (see lines 143-151). Removing this explicit pop will make the behavior more robust and ensure the "Transfer complete" message is visible to the user.

Comment on lines +530 to +531
// Pop back since the WAL state will change
Navigator.of(context).pop();
Copy link
Contributor

Choose a reason for hiding this comment

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

high

Calling Navigator.of(context).pop() immediately after _showSnackBar can prevent the user from seeing the "Transfer cancelled" message, as the page's context is destroyed. To ensure the feedback is visible, you should pop the navigator after a short delay.

Suggested change
// Pop back since the WAL state will change
Navigator.of(context).pop();
// Pop back after a short delay to ensure the user sees the snackbar.
Future.delayed(const Duration(milliseconds: 400), () => mounted ? Navigator.of(context).pop() : null);

@beastoin
Copy link
Collaborator Author

basically 1/2/ is done. but feel free to modify it especially the ui haha.

@mdmohsin7

@beastoin
Copy link
Collaborator Author

image

@mdmohsin7
Copy link
Member

mdmohsin7 commented Dec 28, 2025

Screenshot 2025-12-29 at 3 19 16 PM

@mdmohsin7
Copy link
Member

ScreenRecording_12-29-2025.20-50-59_1.MP4

@mdmohsin7 mdmohsin7 marked this pull request as ready for review December 31, 2025 05:49
@mdmohsin7
Copy link
Member

  • added support for wifi sync
  • limitless sync as well is now consistent with the new wal system

Copy link
Collaborator Author

@beastoin beastoin left a comment

Choose a reason for hiding this comment

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

lgtm sir @mdmohsin7

@beastoin beastoin merged commit f3aa85e into main Dec 31, 2025
1 check passed
@beastoin beastoin deleted the ps9b7_syncs branch December 31, 2025 11:01
@beastoin
Copy link
Collaborator Author

beastoin commented Jan 3, 2026

--
1/ Wi-Fi sync isn't working for me.
=> i used a random ssid/password but not the personal hotspot (so case closed).
=> but please enhance the UX to let the device test the connection every single time before syncing via wifi.

2/ Can we automatically create the SSID and password without asking the user?
=> cannot so case closed
=> but if we have the chance to do it on any platform (android?), please do it.

3/ I’m not sure if the current sync mode is Wi-Fi or BLE. It might be better to let users choose whether they want to use BLE or Wi-Fi for the next sync, or at least allow them to switch.
=> please improve the UI/UX. i don't think users need to know about wifi or ble; it should just be about fast transfers or normal.

4/ Can we display the speed after 5 seconds of syncing and recalculate it every 5 seconds? I think it would improve the UX since waiting too long for the first bytes might lead users to think our sync is slow.

5/ Is BLE sync now 17KB/s? I remember it being 30KB/s last time. Just double-checking.

6/ After a while, the app shows "Device disconnected," and the device's LED is still blue, but I cannot find it using either Omi or NRF Connect. I turned the device off by pressing the button, but now I cannot turn it on again. So, red flag.

7/ I also cannot find a way to update my SSID/password for my hotspot. If allowing users to enter it manually is the only way, we need to let users edit it. It would be great if we could run some tests to let users know that their hotspot is good to go.
=> i can find it now (device settings) but please improve the UX.
=> make sure everything is good (firmware feature, wifi module on the device, the hotspot connection) before starting to transfer via wifi.

8/ On the firmware side, please also handle cases where the hotspot credentials are incorrect to protect the device.
=> and again, verifying is a must; make sure everything is good (firmware feature, wifi module on the device, the hotspot connection) before starting to transfer via wifi.

(updates: add 6, 7, 8)

app: testflight 1.0.517 (553)
firmware: 1.0.14 build 2 (built from main, attached)
ssid: one, password: two

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.

3 participants