Files
deflock-app/.gitignore
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

106 lines
3.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ───────────────────────────────
# Flutter / Dart
# ───────────────────────────────
.dart_tool/
.metadata
.packages
.melange/
# Generated plugin registrant (Flutter <3.16)
.flutter-plugins
.flutter-plugins-dependencies
# Build outputs
build/
# Opaque pub cache files; keep pubspec.lock in VCS
.pub-cache/
# ───────────────────────────────
# Android
# ───────────────────────────────
android/.gradle/
android/.idea/
android/local.properties
android/app/debug/
android/app/profile/
android/app/release/
*.iml
# Generated icons and splash screens (exclude manually maintained files)
android/app/src/main/res/drawable*/
android/app/src/main/res/mipmap*/
!android/app/src/main/res/values*/
# ───────────────────────────────
# iOS / macOS
# ───────────────────────────────
ios/Flutter/App.framework
ios/Flutter/Flutter.framework
ios/Pods/
ios/.generated/
ios/.idea/
ios/Runner.xcworkspace/
macos/Pods/
macos/.generated/
macos/Flutter/ephemeral/
# CocoaPods commit Podfile.lock if you need reproducible iOS builds
Podfile.lock
Pods/
# Generated icons and splash screens
ios/Runner/Assets.xcassets/AppIcon.appiconset/*
ios/Runner/Assets.xcassets/LaunchImage.imageset/*
ios/Runner/Assets.xcassets/LaunchBackground.imageset/*
!ios/Runner/Assets.xcassets/AppIcon.appiconset/.gitkeep
!ios/Runner/Assets.xcassets/LaunchImage.imageset/.gitkeep
!ios/Runner/Assets.xcassets/LaunchBackground.imageset/.gitkeep
# Xcode user data & build artifacts
*.xcworkspace
*.xcuserstate
*.xcuserdatad
DerivedData/
# ───────────────────────────────
# Linux / Windows / Fuchsia (optional)
# ───────────────────────────────
linux/build/
windows/build/
fuchsia/build/
# ───────────────────────────────
# Web (optional)
# ───────────────────────────────
web/build/
# ───────────────────────────────
# IDE / Editor / AI Tool Settings
# ───────────────────────────────
.idea/
.idea/**/workspace.xml
.idea/**/tasks.xml
.vscode/
.claude/settings.local.json
# Swap files
*.swp
*.swo
# ───────────────────────────────
# Misc / System
# ───────────────────────────────
.DS_Store
Thumbs.db
*.orig # merge conflict backups
# Secrets or signing keys (add if used)
*.keystore
.env
# Local OSM client ID configuration (contains secrets)
build_keys.conf
# ───────────────────────────────
# For now - not targeting these
# ───────────────────────────────
linux/
macos/
web/
windows/