Commit Graph

25 Commits

Author SHA1 Message Date
stopflock 08b395214b Move "about osm" to about page, add option to clear tile caches, option to add reason when deleting, min zoom 16 for edits/submissions, 300km nav distance warning 2026-03-12 18:59:48 -05:00
Doug Borg 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 90a806a10d chore(deps): upgrade minor/patch dependencies within existing constraints
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 15:32:00 -07:00
Doug Borg b6bcd23667 chore(android): bump Dart SDK floor, desugar_jdk_libs, and fix Kotlin DSL deprecation
- Bump Dart SDK constraint from >=3.8.0 to >=3.10.3 to match resolved dependency floor
- Upgrade desugar_jdk_libs from 2.0.4 to 2.1.5 (adds Stream.toList(), better locale support)
- Migrate deprecated kotlinOptions { jvmTarget } to kotlin { compilerOptions { jvmTarget } }
- Remove stale comments and non-breaking space characters

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 15:32:00 -07:00
Doug Borg dba375c63d chore(deps): update app_links and package_info_plus to latest major versions
Upgrade packages:
- app_links: ^6.1.4 → ^7.0.0 (backward compatible with v6)
- package_info_plus: ^8.0.0 → ^9.0.0 (build tooling only, no Dart API changes)

Bump Android build tooling to latest Flutter 3.38-compatible versions:
- AGP: 8.9.1 → 8.11.1
- Gradle: 8.12 → 8.14
- Kotlin: 2.1.0 → 2.2.20

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 15:20:50 -07:00
Doug Borg 206b3afe9d chore(deps): move flutter_web_auth_2 and flutter_secure_storage to stable releases
Move auth-critical packages from pre-release pins to stable:
- flutter_web_auth_2: 5.0.0-alpha.3 → ^5.0.1
- flutter_secure_storage: 10.0.0-beta.4 → ^10.0.0
- oauth2_client: 4.2.0 → 4.2.3 (auto-resolved, was blocked by pre-release pins)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 09:45:38 -07:00
Doug Borg e72d557d2a chore(android): bump AGP to 8.9.1 and Java compatibility to 17
Transitive AndroidX dependencies (browser:1.9.0, core-ktx:1.17.0,
core:1.17.0) pulled in by the pub upgrade now require AGP 8.9.1+.

- AGP: 8.7.3 → 8.9.1
- Java source/target compatibility: 11 → 17
- Gradle 8.12 already satisfies AGP 8.9.1's minimum of 8.11.1

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 09:45:38 -07:00
Doug Borg 25a34aab0b chore(deps): upgrade minor/patch dependencies within existing constraints
Run `flutter pub upgrade` to pull in 42 dependency updates within
existing ^constraints. No pubspec.yaml changes needed.

Notable updates: flutter_map 8.2.1→8.2.2, flutter_svg 2.2.0→2.2.3,
http 1.5.0-beta.2→1.6.0, provider 6.1.5→6.1.5+1,
shared_preferences 2.5.3→2.5.4, uuid 4.5.1→4.5.2, xml 6.5.0→6.6.1,
flutter_native_splash 2.4.6→2.4.7, plus many transitive deps.

Closes #78

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 09:45:38 -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
Doug Borg 61a2a99bbc Replace deprecated localization APIs and add test coverage
Use AssetManifest.loadFromAssetBundle instead of manually parsing the
deprecated AssetManifest.json. Fix a broken localization key reference
(queue.cameraWithIndex → queue.itemWithIndex).

Replace the standalone scripts/validate_localizations.dart with proper
flutter tests (11 tests across two groups): file integrity checks
(directory exists, en.json present, valid JSON structure, language code
file names, deep key-completeness across all locales) and t() lookup
tests (nested resolution, missing-key fallback, parameter substitution,
partial-path fallback).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:31:48 -07:00
Doug Borg 73160c32de Add mocktail dev dependency and fix test state leak
Address PR review comments:
- Add mocktail and flutter_test to dev_dependencies in pubspec.yaml
- Add tearDown to reset AppState.instance between tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 11:35:28 -07:00
stopflock 1873d6e768 profile import from deeplinks 2026-01-28 15:20:25 -06:00
stopflock 16b8acad3a Suspected locations database 2025-12-07 10:23:36 -06:00
stopflock 26cebcc60e Localizations for new features 2025-11-16 21:26:35 -06:00
stopflock cc0386ee97 UX and bones of suspected locations 2025-10-06 19:36:54 -05:00
stopflock 02c66b3785 App version from pubspec only. Bump version. 2025-10-03 10:44:33 -05:00
stopflock 71fa212d71 More camera -> node, notifications for approaching 2025-09-29 19:22:22 -05:00
stopflock 38f15a1f8b fetch from sandbox 2025-09-28 22:18:59 -05:00
stopflock 8381388ffa svg logo, dark button bar 2025-08-30 23:55:54 -05:00
stopflock 728cef22af smooth transitions 2025-08-28 15:07:30 -05:00
stopflock 6bf9556c65 icons and splash screens 2025-08-10 00:19:55 -05:00
stopflock 4182b99507 scale, zoom level, working estimates (size not accurate), download progress, more 2025-08-06 23:19:28 -05:00
stopflock f8d71d0c75 fixes, improvements, and cleanup. notably, custom camera profiles make a comeback. 2025-07-19 20:22:20 -05:00
stopflock 56518bab28 pretty broken, icons missing, login not working. browser opens though and cams still appear on map 2025-07-19 14:11:02 -05:00
stopflock eee92f4f21 first version worth putting in git - compiles and runs - missing a lot still. 2025-07-18 14:25:22 -05:00