v0.2.8
Jun 12 2026
Rebuilt the extinguisher report with correct service dates, grouped logs, and a new kitchen suppression report. The extinguisher inspection now has a proper type dropdown (ABC, CO2, wet chemical / Class K, and the rest of the NFPA set), and the type drives the right hydrostatic and 6-year internal service due dates instead of the old guesswork. I dropped the redundant "safety pin intact" question and the report now shows the next annual, hydrostatic, and 6-year dates with overdue and due-soon flags. The Logs tab can group reports by extinguisher or by visit, so you can see exactly what was done where. New units inspected in the field now save their type and service dates properly. I also added a Kitchen Suppression inspection report (NFPA 17A / 96), and fixed the keyboard covering the field when you pick a site or a teammate while creating a visit or task.
v0.2.7
Jun 5 2026
Mobile is sign-in only — new accounts are created on the web. I removed the sign-up flow from the mobile app. New accounts now get created on the web at tracelock.tech, where billing and payment live, so there are no more half-finished accounts that signed up on the phone but never picked a plan. The login screen is now sign-in only — email and password, Google, Apple, and password reset — with a clear "New to TraceLock? Sign up at tracelock.tech" link that opens the website. If you try to sign in with an email that has no account yet, you'll get a friendly nudge to sign up on the web first. Existing users sign in exactly as before.
v0.2.6
Jun 4 2026
Scan failures stay on the report, a sync indicator on every screen, manual escape on the camera, and a first-run welcome. Scan failures now stay on the inspection report — tapping Serial Number or Model Number fills the field right where you're working instead of pushing you to a separate page that lost your data. A new sync indicator sits at the top of every screen so you always know whether your work is saved, still syncing, or waiting because you're offline — tap it to retry. The camera now has a "Can't scan? Enter manually" escape visible the whole time, for damaged or missing labels. And first-time users get a 3-card welcome flow explaining scan, fill-in help, and the sync dot — re-triggerable any time from Settings.
v0.2.3
Jun 4 2026
Manual Entry status-bar fix + dropdown resilience. Fixed the Manual Entry screen so its title no longer gets clipped behind the Android status bar, and made the manufacturer dropdown degrade gracefully into freehand text entry when the catalog is still loading or comes back empty — so you can always keep typing instead of getting stuck. Also fixed the same status-bar clipping on the Home screen.
v0.2.2
Jun 3 2026
Offline-queue jam fix + scanner failure-card rework. Fixed the offline queue piling up after heavy scanning — telemetry events were being written into the user-data sync queue and never drained, so it grew to hundreds of stuck items. Telemetry now stays out of that queue entirely. I also reworked the scanner's no-match failure card so I can pre-fill a serial number or a model number when the catalog doesn't recognize a label, and fixed the "Enter Manually" button that wasn't responding.
v0.2.1
Jun 3 2026
Prefix normalization, image-picker gallery fix, catalog v2. Serial-prefix matching is now strict and normalized, so look-alike barcode prefixes no longer resolve to the wrong catalog model. Fixed an ImageLoader crash when attaching a photo from the device gallery. Catalog v2 expansion: Buckeye nameplate-token parsing, kitchen Class-K agents, clean-agent units, and B260 / B424 model reconciliations.
v0.2.0
Jun 2 2026
Scanner reliability + label-OCR fix, visit visibility, error tracking. Hardened the barcode/label scanner against intermittent misreads and fixed an OCR parsing bug on extinguisher labels. In-progress visits are now visible while work is underway (previously only surfaced once completed). Added end-to-end error tracking and structured, user-friendly API error responses in place of raw stack traces. Version bumped to versionCode 100 baseline for future builds.
v0.1.38
May 7 2026
App Store review readiness — sign-in and launch. Removed the “previous launch crashed” screen: AsyncStorage could stay on pending after a healthy session (race with init), so first launches sometimes showed a false recovery prompt. Firebase getIdToken is now bounded (~18s) so token refresh cannot block API calls forever (fixes infinite spinner after sign-in on slow networks). After sign-in, loading membership state shows a clear message and Retry if /me/state is slow.
v0.1.37
Apr 22 2026
Camera second-focus fix — Android 16 / S24 Ultra. Root cause: useRef resets to 0 on every component remount (unmountOnBlur:true wipes instance state), so the 250 ms hardcoded delay was never computed from the actual last-close time. On Android 16, the camera HAL needs ~800 ms to fully release before a new session can open; the silent onMountError (nobody was listening) left a black camera view with no recovery. Fix: module-level _lastCameraCloseAt/_cameraSerial survive remounts; adaptive delay is max(300, 800 − elapsed_since_close) ms; onCameraReady confirms the hardware session opened; onMountError triggers an automatic 700 ms retry with a globally-unique serial key. [CAM] log tags at every lifecycle gate for adb logcat | grep CAM diagnosis. Build 4fd8317 · e017f42a
v0.1.35
Apr 22 2026
DIAG overlay removed · camera remount loop fixed · Google Sign-In account picker always shown · ~113 theme color refs migrated. Strips all DIAG v0.1.22 diagnostic overlay code (150 lines) that leaked into v0.1.34 preview builds — cameraDebugOverlay flag removed. Fixes the 393× onCameraReady remount loop: resumePreview() inside onCameraReady triggered a hardware re-init cycle on ARM64/Hermes, which re-fired onCameraReady indefinitely; prop removed entirely. Adds await GoogleSignin.signOut() before signIn() to force the system account picker on every sign-in attempt instead of silently reusing a cached account. barcodeScannerSettings memoized to prevent spurious re-renders. Light/dark theme: migrated 5 screens (BatchFinish, DefectAnnotation, NFPAInspection, SignaturePad, Scanner) to makeStyles(theme) pattern — ~113 static colors.* refs now resolve dynamically. Build 66f9500 · 568ba19f
v0.1.34
Apr 22 2026
Hermes SoLoader fix + camera rapid-tap guard. Stacks v0.1.33 SoLoader fix (ARM64 boot) with PR #33 camera guard: mountCamera(gen) uses a 500 ms post-blur delay + generation counter to prevent CameraView mounting on a stale focus cycle. unmountOnBlur:true on the Scan tab fully unmounts Scanner on tab switch, eliminating the black-screen race. Build b1330b5 · d2d8ad7f
v0.1.33
Apr 22 2026
ARM64 crash fix — SoLoader / OpenSourceMergedSoMapping. Root cause of the Samsung S24 Ultra (and all ARM64 physical device) crash identified: MainApplication.kt was calling SoLoader.init(this, false) — the old RN 0.74 form. In RN 0.76, libhermes_executor.so no longer ships as a standalone file; its symbols are merged into libhermestooling.so. SoLoader only redirects loadLibrary("hermes_executor") → hermestooling when OpenSourceMergedSoMapping is registered at init time. Fix: SoLoader.init(this, OpenSourceMergedSoMapping). All prior diagnostic hypotheses (H1–H5) were voided. Verified locally: x86_64 release APK boots past native init. Build de3728e
v0.1.29-diag
Apr 22 2026
Crash-catcher diagnostic build. Installs a Java uncaught-exception handler in both MainApplication (before SoLoader/native init) and MainActivity to capture the ARM64-specific crash that has no logcat access. On crash, writes a full stack trace to Android/data/com.tracelock.mobile/files/tracelock-crash.log — retrievable with any file manager. Install this on the crashing device, let it crash, then share the log file. Build f6a595c2 · 961c810
v0.1.28-crash-fix
Apr 22 2026
P0 crash fix + accessibility + offline banners. Removes the eager react-native-reanimated import that caused a native crash on launch (RN 0.76 / Hermes). Adds crash-loop detection with a diagnostic screen if the previous launch crashed before init. Accessibility labels and roles on all new screens (Customers, CustomerDetail, SiteDetail, Deficiencies, CompanyPicker, BulkAddExtinguishers). Offline banners on all data-fetch screens. FlatList + useCallback on Customers and Deficiencies for smoother scrolling. Build 559e1bd6 · 1ae2501
v0.1.26-ux-polish
Apr 22 2026
UX polish sweep — error states, loading skeletons, haptics, keyboard avoidance. All new screens now use ScreenSkeleton instead of ActivityIndicator flash on first load. Error states show red InlineNotice with Retry button (was invisible info-blue). Empty states have action CTAs. Filter pill taps trigger haptics. SafeAreaView fixed to react-native-safe-area-context on all screens (Dynamic Island / notch fix). Pull-to-refresh on Runs. KeyboardAvoidingView on ManualEntry. Scanner permission gate polished. Build f4c9b035 · 51fe934
v0.1.25-combined
Apr 22 2026
Combined test bundle — SDK 52 + customers/sites/deficiencies + light/dark theme. Expo SDK 52 / RN 0.76 native upgrade. Customers, CustomerDetail, SiteDetail, Deficiencies screens (dashboard parity). Full light/dark theme system with system-default support; all screens migrated to dynamic makeStyles(theme). Apple release compliance (PrivacyInfo manifest). Build a33e32f
v0.1.19-bundle
Apr 22 2026
Native Google Sign-In + OCR + sync fixes — test bundle. Android Google auth now uses the system account picker (no browser tab). OCR label scan (ML Kit, on-device) with confidence badges. Offline queue dequeues immediately on 409/422 — no more phantom "PENDING SYNC". New "SYNC NOW" button. Camera black-screen fix. NFPA 10 checklist, batch scan, defect annotation, inspector photo/signature/geotag. Build eas/15bca698 · ab9659c
v0.1.17
Apr 21 2026
Google Sign-In fix + sync status fix. Restores Android Google authentication (OAuth callback now routes back to the app correctly). Offline queue items that are already on the server no longer show as "PENDING SYNC" — 409/422 responses immediately dequeue instead of retrying forever. New "SYNC NOW" button in Logs for a manual flush. Build eas/3769fef9 · 116a940
v0.1.16
Apr 21 2026
Camera black-screen fix. Resolves intermittent Android blank camera view on Scanner tab re-entry — full useFocusEffect remount + key-based force-reinit + layout guard + "Tap to reopen" fallback. Build eas/6f330a60 · 99a6dcb
v0.1.16
Apr 20 2026
Extinguisher inspection — Phase 1. OCR label scan (ML Kit, on-device), confidence badges, NFPA 10 annual checklist, inspector photo, signature capture. Rapid session: scan → one-tap pass → auto-advance. Bulk add from one template. Sticky defaults; location picker with typeahead. Next-due dates from model service years.
v0.1.15
Apr 20 2026
Logged-out UX + redirects. Cleaner logged-out landing, tightened auth redirects, and login page polish. iOS and Android build parity.
v0.1.14
Apr 17 2026
iOS crash-on-launch fix + iPad support. Resolves the cold-start crash seen on fresh installs and adds full iPad layouts.
v0.1.12
Apr 10 2026
Sign in with Apple. Adds Apple SSO and addresses App Store guidelines 4.8 and 5.1.1 for Apple resubmission.
v0.1.10
Mar 13 2026
Google sign-in on mobile. One-tap login with Google, plus extinguisher scanning refinements.
v0.1.5
Jan 12 2026
Mobile TypeScript migration and login UI phase 1. Foundational cleanup for faster release cadence.