Skip to content

chore: remove Roads on the Air (ROTA) feature + per-QSO GPS logging - #768

Merged
patrickrb merged 1 commit into
devfrom
chore/remove-rota
Aug 23, 2026
Merged

chore: remove Roads on the Air (ROTA) feature + per-QSO GPS logging#768
patrickrb merged 1 commit into
devfrom
chore/remove-rota

Conversation

@patrickrb

Copy link
Copy Markdown
Owner

Why

The staging → Play internal-testing release is blocked because Google Play requires a Foreground Service (location) declaration for the FOREGROUND_SERVICE_LOCATION permission. That permission existed only for ROTA's RotaTripService. Rather than complete the declaration, we're pulling the ROTA feature for now.

The full feature is preserved on branch feature/rota-shelved (snapshot of dev before this removal) so it can be re-added later.

What's removed

  • rota/ and ui/rota/ packages — trip manager, live-feed client, location tracker/foreground service, CQ-ROTA session, road-trip UI, highway/smart-beacon logic.
  • Location foreground service + FOREGROUND_SERVICE_LOCATION from the manifest. ACCESS_FINE/COARSE_LOCATION and 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.
  • Per-QSO operator-position stamping (chosen scope): RoverPosition/LocationPermissions, my_lat/my_lon reads & writes, and the MY_LAT/MY_LON + APP_ROTA_LAT/APP_ROTA_LON (and legacy) ADIF export/import fields.
  • ROTA car-dashboard row, settings entry, and the app-start trip restore.
  • All associated unit tests. Net ~7.7k lines removed across 53 files.

Database handling (deliberate)

my_lat/my_lon are removed 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). Existing databases simply keep two orphan columns that nothing references. The QSLTable INSERT was rebalanced and verified at 21 columns / 21 placeholders / 21 args.

Note on MY_LAT/MY_LON

These 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 assembleDebugBUILD SUCCESSFUL
  • ./gradlew testDebugUnitTest3293 tests, 0 failures
  • Verified no dangling references to any removed symbol; no leftover rota_* strings; no stale FAQ/help/doc references.

Follow-up

Once merged to dev and promoted to staging, the internal-testing release should no longer demand the location FGS declaration. The microphone declaration you already completed remains satisfied.

🤖 Generated with Claude Code

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

codecov Bot commented Aug 23, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 50.00000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 42.28%. Comparing base (04a9c93) to head (f774e84).

Files with missing lines Patch % Lines
...n/kotlin/radio/ks3ckc/ft8af/car/QsoStatusScreen.kt 0.00% 1 Missing ⚠️
Additional details and impacted files

Impacted file tree graph

@@             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     
Flag Coverage Δ
android 16.67% <50.00%> (-1.23%) ⬇️
ios 97.71% <ø> (ø)
native 9.93% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
...debug/kotlin/radio/ks3ckc/ft8af/car/DebugInject.kt 58.27% <ø> (-0.18%) ⬇️
...n/kotlin/radio/ks3ckc/ft8af/ComposeMainActivity.kt 2.26% <ø> (+0.01%) ⬆️
...main/kotlin/radio/ks3ckc/ft8af/car/CarQsoStatus.kt 94.44% <100.00%> (+0.55%) ⬆️
...n/radio/ks3ckc/ft8af/ui/settings/SettingsScreen.kt 2.71% <ø> (+0.08%) ⬆️
...n/kotlin/radio/ks3ckc/ft8af/car/QsoStatusScreen.kt 0.00% <0.00%> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 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.

@patrickrb
patrickrb merged commit bcb98a9 into dev Aug 23, 2026
18 checks passed
@patrickrb
patrickrb deleted the chore/remove-rota branch August 23, 2026 15:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants