Repository navigation
Resgrid IC 2.17
Resgrid IC 2.17
Channel production · build 100017 · run 17 · commit bbc6b7e
| Platform | Path | Details |
|---|---|---|
| android | native build | 3425fa63617e — binaries attached |
| ios | native build | 014c61c3df87 — binaries attached |
Docker: resgridllc/ic:2.17, ghcr.io/resgrid/ic:2.17
Verify downloads with sha256sum -c SHA256SUMS.
Pull request #20: RO-T101 Fixes
Summary
This PR addresses RO-T101 issues across authentication, navigation, protocol loading, environment configuration, and responsive UI behavior.
Key changes
-
Standardized API server defaults
- Unset
BASE_API_URLnow defaults to the production US West API (https://api.resgrid.com) in client builds, runtime environments, Docker, and desktop deployments. - Nightly development builds explicitly target QA (
https://qaapi.resgrid.dev). - Updated documentation and CI guidance to reflect the new defaults.
- Unset
-
Improved session restoration and offline behavior
- Sessions restored with only a refresh token are treated as signed in when the app can operate from stored data.
- The shell remains on the loading state while an initial refresh is in progress instead of incorrectly showing the sign-in screen.
- Shared-session lock responses now transition to the locked signed-in state so the unlock flow can proceed.
- Refresh attempts that receive unusable successful responses, such as captive portal HTML, preserve the stored session and retry instead of discarding it.
- Session scopes continue to support offline outbox, location, and synchronization activity.
-
Hardened route generation
- Added shared route ID validation and navigation helpers.
- Feature route builders now return
nulland report the issue when IDs are missing, malformed, unsafe, or invalid, rather than throwing and potentially crashing from a press handler. - Updated affected screens to skip navigation when a route cannot be safely built.
- Added coverage for numeric IDs, query parameters, unsafe values, and navigation no-op behavior.
- In-app navigation falls back to coordinate-based navigation when a call ID is invalid but coordinates are available.
-
Fixed protocol API/model handling
- Added models matching the Protocols controller response shape, including
ProtocolId, numeric department IDs, and nested protocol IDs. - Corrected API result types:
- Protocol lists now use
GetAllProtocolsResult. - Protocol details now use
GetProtocolResultwith a single item inData.
- Protocol lists now use
- Added conversion from the server protocol shape to the screen’s protocol shape.
- Added null-safe handling for malformed or partially populated protocol responses.
- Added persisted-storage migration so previously cached protocol data remains usable offline and can be opened without refetching.
- Added models matching the Protocols controller response shape, including
-
Adjusted initialization feedback
- Moved the delayed session bootstrap indicator from an overlay at the top of the content to a non-interactive spinner in the app bar beside the notification bell.
- The indicator remains hidden for quick initialization and uses a stable layout slot when shown.
-
Fixed responsive stat tile sizing
- Replaced
flex-1with content-preserving growth behavior for dashboard, dispatch console, and member home summary tiles. - Prevents tiles from collapsing to their padding during relayouts or tab changes.
- Replaced
-
Updated in-app navigation integration
- Centralized in-app navigation routing through
navigateInAppTo. - Updated affected feature screens and providers to use the safe route navigation helpers.
- Centralized in-app navigation routing through
-
Expanded regression coverage
- Added tests for session restoration, offline session scope, token refresh failures, route safety, protocol wire conversion and migration, app-bar initialization feedback, and stat tile sizing.