- Add buildTracPulseAppBar() helper in lib/app_bar.dart
- Reads backgroundColor/elevation from ThemeData.appBarTheme
- Consistent back button (#9e9e9e, size 20) via Navigator.pop
- Monospace title style (14px, weight 700, letter-spacing 2)
- Optional onTitleTap for tappable titles
- Update all screens to use the new helper, removing redundant overrides
- Remove terminal icon from status_screen title, use plain centered text
- Change appBarTheme centerTitle to false (left-aligned)
- Remove bottom dividers from all screens
- Add url_launcher dependency
- Add Android queries element for https scheme visibility
- Add triple-tap detection on Settings AppBar title
- Simplify to direct URL launch (no animation)
- Update Android package namespace and applicationId to dev.fiatcode.tracpulse
- Update AndroidManifest.xml package and app label to TracPulse
- Move all Kotlin source files to dev/fiatcode/tracpulse/ package
- Update pubspec.yaml name to tracpulse
- Update all Dart imports from package:traccar_client to relative
- Rename TraccarClientApp class to TracPulseApp
- Update user-facing strings in permission_screen to TracPulse
- Update notification channel label and wakeLock tag to TracPulse
- Send config to native before starting tracking (SharedPreferences sync)
- Register ConnectivityReceiver for network state detection
- Fix Settings number fields using TextEditingControllers
- Cancel stream subscription on widget dispose (memory leak)
- Replace WorkManager with AlarmManager for heartbeat
- Add log cleanup for logs older than 24 hours
- Change HTTP method from GET to POST
These fixes resolve the 'device always offline' issue where:
1. Config was not being sent to native service
2. ConnectivityReceiver was never registered
3. Settings number fields were not saving
4. Heartbeat never fired due to WorkManager process isolation
5. Server expected POST not GET