chore: remove Roads on the Air (ROTA) feature + per-QSO GPS logging - #768
Merged
Conversation
Google Play requires a Foreground Service (location) declaration for the FOREGROUND_SERVICE_LOCATION permission, which was declared solely for ROTA's RotaTripService. Rather than complete that declaration, remove the ROTA feature entirely for now (preserved on branch feature/rota-shelved for a future re-add). Removed: - The rota/ and ui/rota/ packages (trip manager, client, live feed, location tracker/foreground service, CQ-ROTA session, road-trip UI). - The location foreground service + FOREGROUND_SERVICE_LOCATION permission from the manifest (ACCESS_*_LOCATION and the microphone FGS are kept — GPS clock/grid features and RX still need them). - Per-QSO operator-position stamping: RoverPosition/LocationPermissions, the my_lat/my_lon reads/writes, and the MY_LAT/MY_LON + APP_ROTA_LAT/LON (and legacy) ADIF export/import fields. - ROTA car-dashboard row, settings entry, and the app-start trip restore. - All associated unit tests; ~7.7k lines net removed. Database note: my_lat/my_lon are dropped from the QSLTable CREATE and the upgrade ALTERs, and every read/write is gone, but no destructive DROP COLUMN migration is added (SQLite on minSdk 23 can't do it reliably) — an existing DB simply keeps two orphan columns nothing references. The QSLTable INSERT was rebalanced to 21 columns / 21 placeholders / 21 args (verified). Builds green; full unit-test suite passes (3293 tests). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## dev #768 +/- ##
============================================
+ Coverage 41.51% 42.28% +0.76%
+ Complexity 290 226 -64
============================================
Files 283 267 -16
Lines 33682 31745 -1937
Branches 4055 3635 -420
============================================
- Hits 13982 13422 -560
+ Misses 19343 18066 -1277
+ Partials 357 257 -100
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
🔵 Needs a closer look
Generated iOS build outputs must be removed and the described ROTA removal changes are absent from the supplied diff.
Pull request overview
Intended to remove Android ROTA and per-QSO GPS logging, but the supplied diff only adds unrelated Xcode-generated artifacts.
Changes:
- Adds local Xcode caches, logs, intermediates, and products.
- Includes machine-specific paths and volatile timestamps.
- Shows none of the described Android removals.
File summaries
| File | Description |
|---|---|
ios/FT8AF/build/ReleaseDD/** |
Generated release build artifacts. |
ios/FT8AF/build/DerivedData/** |
Generated debug caches and intermediates. |
Review details
- Files reviewed: 121/6894 changed files
- Comments generated: 0
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
The staging → Play internal-testing release is blocked because Google Play requires a Foreground Service (location) declaration for the
FOREGROUND_SERVICE_LOCATIONpermission. That permission existed only for ROTA'sRotaTripService. Rather than complete the declaration, we're pulling the ROTA feature for now.The full feature is preserved on branch
feature/rota-shelved(snapshot ofdevbefore this removal) so it can be re-added later.What's removed
rota/andui/rota/packages — trip manager, live-feed client, location tracker/foreground service, CQ-ROTA session, road-trip UI, highway/smart-beacon logic.FOREGROUND_SERVICE_LOCATIONfrom the manifest.ACCESS_FINE/COARSE_LOCATIONand the microphone FGS are kept — GPS clock/grid features and RX decoding still use them, and one-shot location reads don't trigger the FGS declaration.RoverPosition/LocationPermissions,my_lat/my_lonreads & writes, and theMY_LAT/MY_LON+APP_ROTA_LAT/APP_ROTA_LON(and legacy) ADIF export/import fields.Database handling (deliberate)
my_lat/my_lonare removed from theQSLTableCREATEand the upgradeALTERs, and every read/write is gone — but no destructiveDROP COLUMNmigration is added (SQLite on minSdk 23 can't do it reliably). Existing databases simply keep two orphan columns that nothing references. TheQSLTableINSERTwas rebalanced and verified at 21 columns / 21 placeholders / 21 args.Note on
MY_LAT/MY_LONThese were general "where the operator was" ADIF fields (reaching QRZ/Cloudlog/LoTW), not strictly ROTA — just sharing the historical
APP_ROTA_naming. They're removed here per the agreed scope; easy to restore independently of ROTA if desired.Testing
./gradlew assembleDebug— BUILD SUCCESSFUL./gradlew testDebugUnitTest— 3293 tests, 0 failuresrota_*strings; no stale FAQ/help/doc references.Follow-up
Once merged to
devand promoted tostaging, the internal-testing release should no longer demand the location FGS declaration. The microphone declaration you already completed remains satisfied.🤖 Generated with Claude Code