Skip to content

Resgrid IC 2.17

Choose a tag to compare

@github-actions github-actions released this 06 Nov 19:58
bbc6b7e

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_URL now 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.
  • 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 null and 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 GetProtocolResult with a single item in Data.
    • 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.
  • 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-1 with 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.
  • 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.
  • 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.

Changes