Repository navigation
Known Issues
Open rough edges in the main branch at the time of writing (v3.8-beta.8). Each one is independently small — they accumulate because nothing has been urgent enough to dedicate a release to.
Priority is roughly highest-impact-first.
app/build.gradle.kts hard-codes coordinates like:
implementation("com.google.android.material:material:1.14.0-alpha08")
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.work:work-runtime-ktx:2.9.0")
// …The version catalog (gradle/libs.versions.toml) only knows about a handful of these. Tidiness fix: move all implementation(...) declarations into libs.versions.toml and reference them via libs.xxx. Doesn't change behaviour, just consolidates version pinning into one file so dependencyUpdates reports are complete.
private val WEB_CLIENT_ID = "663138385072-bke7f5oflsl2cg0e5maks0ef3n6o113u.apps.googleusercontent.com"The Google Services plugin generates R.string.default_web_client_id from google-services.json. Switching to that string resource means you only have to update google-services.json to repoint at a new Firebase project.
.setServerClientId(getString(R.string.default_web_client_id))The helper defines swipe-left → pause and another delete path, but setupSwipeActions only wires onSwipeRight → confirmMarkAsPaid. The pause and delete methods are unreachable.
Two options:
- Delete them — straight removal, simpler helper.
- Wire them up — left-swipe → pause sheet, long-press → delete sheet (or similar).
The analytics signal (subscription_status_change event) will confirm "dead" if it stays at zero across a release window — see Analytics & Audit for the audit recipe.
The XML default text is Version 3.8-beta.3 (46). It gets overwritten at runtime by AboutBottomSheet.kt with the actual packageInfo.versionName + versionCode, so it's never user-visible — but the XML preview in Studio (and any reviewer reading the XML) sees the old text. Replace with a generic tools:text="Version 1.0 (1)" so the staleness is obvious.
5. play_services_auth cert hashes shipped in google-services.json include some that are no longer in active use
The current file has 5 different SHA-1 fingerprints for com.hora.varisankya (debug keystores from multiple machines + upload + Play app-signing). Some of those keystores may have been retired. Worth pruning during the next Firebase Console pass to keep the OAuth allow-list lean.
The empty state has android:visibility="gone" but no tools:visibility="visible", so the Studio preview never shows it. Adding tools:visibility="visible" to the no_history_container helps when iterating on the empty-state layout.
SubscriptionNotificationWorker.sendNotification creates a tap intent that just opens MainActivity with FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK. Firebase Analytics' built-in notification_open event only fires for FCM messages, not for manually-posted ones. If you want to measure tap-through, add an Analytics.notificationTap() call inside MainActivity.onNewIntent keyed off a custom intent extra.
There's no GitHub Actions or other CI configured. Every release is built by hand. Adding a simple build-and-lint workflow on PRs would catch trivial breakage early. Secrets would need to come from Actions secrets (don't try to use Bitwarden CLI from CI).
A stray nul file (about 120 bytes of garbled path text) appears in the repo on Windows shells where a > nul redirect was run via bash instead of cmd.exe — bash treats nul as a filename and creates it. It's untracked and gitignored-by-convention (it's not in .gitignore because it shouldn't exist). Just delete it: rm nul.
Most of .idea/ is tracked. Only shelf/, workspace.xml, and caches/libraries/modules/navEditor/assetWizardSettings/deploymentTargetSelector.xml are gitignored. The committed parts (code style, run configurations) make sense to share; the rest can create occasional churn in git status. If it gets annoying, expand .idea/.gitignore.
If you want to walk through these in order of "actually likely to bite you":
- #1 (version catalog) and #2 (hardcoded Web Client ID) — both tiny refactors that improve future-changeability.
- #3 — once the analytics audit confirms dead, delete cleanly.
- #5 — fingerprint hygiene during the next Firebase Console pass.
- #7 — only matters if notification tap-through becomes a metric you care about.
- #4, #6 — cosmetic, Studio-preview only.
- #8 — quality-of-life; not urgent.
- #9, #10 — annoying, never breaks anything.
Source: aarshps/varisankya-android · This wiki is human-facing; the repo itself targets AI coding agents (AGENTS.md).