Beta - native app - #374
Draft
TheAngryRaven wants to merge 10 commits into
Draft
Conversation
- Pad the MyChron/Alfano/DovesLogger/Fledgling download dialogs with safe-area-modal so they clear notches on edge-to-edge Android. - Pass the native FileEntry date/meta through the adapters into LoggerFile (new optional fields) and show the session date in FileListPanel, so Alfano sessions aren't bare hex ids. - Normalize download filenames (new pure fileNaming helpers): MyChron swaps the device's .xrz for .xrk instead of stacking extensions, and Alfano appends .csv to its extensionless session ids for save/import. - Update the adapter tests for the pass-through, add fileNaming tests, and record it all in the CHANGELOG under Unreleased. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PdpAnoQ6Y1dqDX3ScnQekD
Inside the Tauri/Android WebView, window.location.origin is the shell's synthetic http://tauri.localhost, so the redirectTo/emailRedirectTo URLs baked into Supabase registration-confirmation and password-reset emails were dead links. New platform helper authRedirectOrigin() returns the canonical https://lapwingdata.com origin when isNativeApp() (emailed auth links open in a mail client / real browser, never the app WebView) and the current origin on the web; authBackend's resetPassword and signUp now use it. Since on native the emailed link completes in the browser rather than the app, the Register success and Forgot-Password sent toasts gain native-specific copy (all locales) telling the user to confirm via the email link in their browser, then return to the app and sign in. Also on the same screen: the check-login-rate pre-check now fails open — an infrastructure failure of the edge function (network error/throw) no longer aborts sign-in with a generic error, while a genuine rate-limit rejection still blocks with its message. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PdpAnoQ6Y1dqDX3ScnQekD
The Device tab (settings, tracks, battery) was dead in the native app: FileManagerDrawer gated it on isBleSupported(), the Tauri webview has no Web Bluetooth, and DeviceContext could only connect via navigator.bluetooth. Settings/tracks/battery now ride the native logger_* IPC that LapWing exposes. - New transport-neutral DeviceDetails seam (types.ts): battery, listSettings/setSetting/resetSettings, listTracks/getTrack/putTrack/ deleteTrack. Two implementations: createBleDeviceDetails (wraps the existing @/lib/ble functions — web behavior unchanged) and createNativeDeviceDetails (wraps new doveslogger ipc invokers for logger_battery / logger_list_settings / logger_set_setting / logger_reset_settings / logger_list_tracks / logger_download_track / logger_upload_track / logger_delete_track). - DeviceContext is transport-aware: scanNative/connectNative drive the IPC with an in-app picker (BLE has no OS chooser), expose isConnected + details on both transports, and scope the native connection to the drawer (closing it disconnects — the backend has one global slot). - The single native slot is guarded by an ownership token (loggers/native/owner.ts): the Device tab and the three download dialogs claim it before logger_connect and a second claimant is refused with a clear message instead of silently stealing the device. - DeviceSettingsTab / DeviceTracksTab take DeviceDetails instead of a raw BleConnection (deviceSettingsSchema was already transport-free). The firmware OTA section stays web-only; on native the settings tab points at the Fledgling download screen where native firmware update already lives. - dovesloggerConnection flips supportsDeviceDetails to true (the flag finally has a reader); fledglingConnection carries the BLE details. - i18n: scan-picker + busy-slot + firmware-hint strings in all 7 locales. - Tests: device-tab ipc invoker contracts, ownership token, updated adapter expectations. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PdpAnoQ6Y1dqDX3ScnQekD
feat(native): make the Device tab work in the LapWing app (settings + tracks + battery)
…directs # Conflicts: # CHANGELOG.md
…polish # Conflicts: # CHANGELOG.md
fix(auth): point emailed auth links at lapwingdata.com on native
|
This pull request has been ignored for the connected project Preview Branches by Supabase. |
fix(native): mobile polish — safe areas, session dates, file naming
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
lapwing | 386baa8 | Commit Preview URL Branch Preview URL |
Aug 01 2026, 02:29 AM |
Coverage SummaryLines: 57.12% (7093/12416) · Statements: 56.27% · Functions: 53.42% · Branches: 53.68% Per-file coverage
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Related Issues
Type of Change
Checklist
npm run lintpassesnpm run typecheckpassesnpm run test:runpassesnpm run buildsucceedsREADME.md,CLAUDE.md, Credits,CHANGELOG.md)datalogParser.ts, added tests, updated the formats tableNotes for Reviewers