Commit Graph
17 Commits
Author SHA1 Message Date
Doug BorgandClaude Opus 4.6 f3f40f36ef Allow OSM offline downloads, disable button for restricted providers
Allow offline area downloads for OSM tile server. Move the "downloads
not permitted" check from inside the download dialog to the download
button itself — the button is now disabled (greyed out) when the
current tile type doesn't support offline downloads.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:34:01 -07:00
Doug BorgandClaude Opus 4.6 2d92214bed Add offline-first tile system with per-provider caching and error retry
- Add ServicePolicy framework with OSM-specific rate limiting and TTL
- Add per-provider disk tile cache (ProviderTileCacheStore) with O(1)
  lookup, oldest-modified eviction, and ETag/304 revalidation
- Rewrite DeflockTileProvider with two paths: common (NetworkTileProvider)
  and offline-first (disk cache -> local tiles -> network with caching)
- Add zoom-aware offline routing so tiles outside offline area zoom ranges
  use the efficient common path instead of the overhead-heavy offline path
- Fix HTTP client lifecycle: dispose() is now a no-op for flutter_map
  widget recycling; shutdown() handles permanent teardown
- Add TileLayerManager with exponential backoff retry (2s->60s cap),
  provider switch detection, and backoff reset
- Guard null provider/tileType in download dialog with localized error
- Fix Nominatim cache key to use normalized viewbox values
- Comprehensive test coverage (1800+ lines across 6 test files)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 12:34:01 -07:00
Doug Borg 3570104800 Add mounted guards for BuildContext use across async gaps 2026-02-08 14:23:07 -07:00
Doug BorgandClaude Opus 4.5 3dada20ec2 Replace deprecated withOpacity and surfaceVariant APIs
Migrate all withOpacity() calls to withValues(alpha:) and
surfaceVariant to surfaceContainerHighest across the codebase.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 14:23:07 -07:00
Doug Borg c712aba724 Add flutter_lints and fix analyzer errors, dead code, and unused imports 2026-02-08 14:23:06 -07:00
stopflock 0d13fdee37 limit download max zoom to current layer max zoom 2025-12-02 14:32:42 -06:00
stopflock 5673c2b627 Link to view progress in settings after starting an offline area download 2025-11-21 21:08:10 -06:00
stopflock 2d29c93145 Area size estimates based on preview tile size if available 2025-09-29 21:43:55 -05:00
stopflock 4ad33d17e0 Remove world map area 2025-09-28 19:00:07 -05:00
stopflock 7c49b38230 Fix offline area size estimates, zoom level metadata display 2025-09-28 17:43:03 -05:00
stopflock 0cbcec7017 improve data indicator, offline fetching, offline area loading 2025-09-28 17:00:34 -05:00
stopflock 23b7586e25 tag node -> add node, better element offsets, fix splash background on iOS 2025-09-26 15:40:30 -05:00
stopflock f05a31f40b more localization 2025-08-31 14:01:03 -05:00
stopflock f1c73a5e55 settings area metadata, offline areas support for tile types 2025-08-24 15:31:02 -05:00
stopflock 63ebc2b682 ho lee shet 2025-08-22 21:04:30 -05:00
stopflock e35266c160 better offline area max calculation, and added guardrails 2025-08-21 20:22:13 -05:00
stopflock 4cc8929378 break up home screen - separate out download dialog 2025-08-21 19:04:16 -05:00