Skip to content

feat: remove send tab, default tips on, drop tipping beta flag - #1182

Merged
bmc08gt merged 1 commit into
code/cashfrom
feat/remove-send-tab-tips-default
Aug 5, 2026
Merged

bmc08gt merged 1 commit into
code/cashfrom
feat/remove-send-tab-tips-default

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

Removes the Send tab (nav button), launches tipping as an always-on feature (dropping the Tipping beta flag), and stops handling chat deeplinks.

Send tab

  • Delete NavBarButton.Send, the NavigationBar button + preview, ScannerDecorItem.Send + the scanner mapping.
  • Disconnect the direct-send flow from the build: remove AppRoute.Sheets.Send, the nav-graph entry, the settings.gradle.kts include, and the app module dep.
  • The direct-send feature module (and core/send/SendStep.kt) are kept on disk but no longer built — parked so the flow can be re-enabled later by re-wiring it (re-add to settings.gradle.kts + app dep, restore AppRoute.Sheets.Send + the nav entry + the nav-bar button).
  • Rework NavBarConfigTest for the new default order [Discover, Give, Tips, Wallet] and add a regression test that a persisted order containing the removed "Send" token deserializes cleanly (dropped + back-filled) rather than crashing on upgrade.

Tipping (launched)

  • Delete FeatureFlag.Tipping (definition + title/message) — tips are on for all users. Remove the session observer + isTippingEnabled state, and strip the now-orphaned FeatureFlagController dependency from TippingCoordinator. The Tips tab is always shown.

Chat deeplinks

  • Remove DeeplinkType.Chat and isChat/handleChat from AppRouter. /chat/{id} links now fall through unhandled and land on the camera (documented in classify() so the routing isn't re-added by accident). Tip DMs still route via /tip/chat/.
  • Fold non-tip and contact-addressed chat push notifications into a plain launch intent; delete the now-dead Linkify.chatById/chatByPhone.
  • The app.flipcash.com/chat/.* manifest intent filter is intentionally kept so links still open the app (→ camera); send.flipcash.com cash links are untouched.

Maestro

  • Delete direct_send.yaml and send_to_contact.yaml (they tapped the removed tab), drop the dead tipping_enabled beta-flag args (tipping is default-on), and update the README.

Testing

  • ./gradlew :apps:flipcash:app:assembleDebugBUILD SUCCESSFUL (parked direct-send module is not in the build and is ignored).
  • Unit tests pass for every touched module: core, shared:session, shared:tipping, shared:router, shared:featureflags, shared:notifications, features:scanner, app.

29 files changed, +57 / −245.

@github-actions github-actions Bot added type: feature New functionality area: scanner QR/Kikcode scanning, camera area: notifications Push notifications, in-app messaging area: build-system Gradle, convention plugins, build-logic area: deeplinks Deep link handling, URL routing, and link parsing area: session and removed type: feature New functionality labels Aug 5, 2026
Remove the Send *tab* (nav button), launch tipping as an always-on feature
(dropping the Tipping beta flag), and stop handling chat deeplinks.

Send tab
- Delete NavBarButton.Send, the NavigationBar button + preview,
  ScannerDecorItem.Send + the scanner mapping.
- Disconnect the direct-send flow from the build: remove AppRoute.Sheets.Send,
  the nav-graph entry, the settings.gradle.kts include, and the app module dep.
  The direct-send feature module (and core/send/SendStep.kt) are kept on disk
  but no longer built, so the flow can be re-enabled later by re-wiring it.
- Rework NavBarConfigTest for the new default order [Discover, Give, Tips,
  Wallet] and add a regression test that a persisted order containing the
  removed "Send" token deserializes cleanly (dropped + back-filled), not crash.

Tipping (launched)
- Delete FeatureFlag.Tipping (definition + title/message); tips are on for all
  users. Remove the session observer and isTippingEnabled state, and strip the
  now-orphaned FeatureFlagController dependency from TippingCoordinator. The
  Tips tab is always shown.

Chat deeplinks
- Remove DeeplinkType.Chat and isChat/handleChat from AppRouter. /chat/ links
  now fall through unhandled and land on the camera (documented so the routing
  isn't re-added by accident). Tip DMs still route via /tip/chat/.
- Fold non-tip and contact-addressed chat push notifications into a plain
  launch intent; delete the now-dead Linkify.chatById/chatByPhone.

Maestro
- Delete direct_send.yaml and send_to_contact.yaml (tapped the removed tab),
  drop the dead tipping_enabled beta-flag args (tipping is default-on), and
  update the README.
@bmc08gt
bmc08gt force-pushed the feat/remove-send-tab-tips-default branch from 1cc6c54 to 440e73d Compare August 5, 2026 16:10
@github-actions github-actions Bot added the type: feature New functionality label Aug 5, 2026
@bmc08gt
bmc08gt merged commit 362a3ac into code/cash Aug 5, 2026
3 checks passed
@bmc08gt
bmc08gt deleted the feat/remove-send-tab-tips-default branch August 5, 2026 16:50
bmc08gt added a commit that referenced this pull request Sep 4, 2026
…oval (#1419)

* chore(direct-send): delete the module left behind by the send-tab removal

#1182 removed the send tab and the `AppRoute.Sheets.Send` route it opened,
dropped `:apps:flipcash:features:direct-send` from `settings.gradle.kts` and the
app's dependencies, and deleted the two maestro flows that drove it — but left
the module's sources in the tree. They have sat there uncompiled for 240
commits, and `PhoneGateLandingScreen` still navigates to the deleted route, so
re-including the module would not configure.

Nothing outside the module referenced `com.flipcash.app.directsend`, and the
`SendStep`/`SendResult` flow contract in `:apps:flipcash:core` had no other
consumer, so both go with it. AndroidManifest, AppRouter and NotificationService
keep their comments explaining why chat deeplinks are deliberately unrouted —
that reasoning outlives the module.

The baseline profile still carried 315 rules for `com/flipcash/app/directsend`
classes that no longer ship; it has not been regenerated since #1029.

* docs(architecture): match the feature catalog to settings.gradle.kts

The catalog had drifted from the modules that actually exist. #1291 deleted the
standalone App Settings screen and its module — its one surviving toggle moved
into My Account — but the catalog still carried an `appsettings` row pointing at
a directory that is gone, and `AppSettingsCoordinator` now lives in
`:apps:flipcash:shared:appsettings`, not a feature.

`tipping` and `user-profile` were missing from the full module list entirely,
and neither had a row despite being user-facing flows. Both get one, replacing
`appsettings` with `menu` — the "You" tab where those settings rows ended up.

The list now matches `settings.gradle.kts` exactly: 26 modules, the same 26 the
header claims. (`features/home/` still exists on disk as stale build output; it
has no tracked files and left `settings.gradle.kts` with the module it held.)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: build-system Gradle, convention plugins, build-logic area: deeplinks Deep link handling, URL routing, and link parsing area: notifications Push notifications, in-app messaging area: scanner QR/Kikcode scanning, camera area: session type: feature New functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant