Skip to content

ADR-0067: The Activity destination keeps one user-facing name

  • Status: Accepted
  • Date: 2026-10-17
  • Amended: 2026-10-20 (Warm ledger — Home-first tab order; Activity name unchanged; ADR-0079)

Context

The bottom-navigation tab was labelled Activity while the destination's own top bar said Transactions — one destination, two names (finding F07). The route id, deep links, and the screen and ViewModel already used transactions (Routes.TRANSACTIONS, TransactionsScreen, TransactionsViewModel), and the prose in ui.md, ADR-0042 and ADR-0050 already calls the destination "Activity". Only the header string disagreed.

Renaming the tab label to "Transactions" instead would lengthen the widest compact-navigation label: CompactNavigation measures every full label and horizontal-scrolls the single row once the five equal-width items no longer fit (ADR-0044). At 411 dp / 100% text the five labels fit today; "Transactions" would push the row into its scrolling state on a mainstream phone width.

Decision

The destination's user-facing name is Activity: the bottom-bar label (nav_activity) and the screen title (tx_title) both read Activity, and the docs name it Activity. The route id (Routes.TRANSACTIONS), deep links (autobudget://transactions), and the TransactionsScreen / TransactionsViewModel type and file names stay unchanged — an internal identifier is not user-facing copy, and the issue forbids an unnecessary route rename.

Consequences

A tab and its destination header now agree, so screen readers and sighted users hear the same name. Descriptive copy that legitimately mentions transactions ("Recent transactions", "View transactions") is unaffected. The compact navigation row keeps its current fit at 411 dp / 100% text.

Warm ledger amendment (2026-10-20)

The compact bar and rail order is Home, Activity, Budgets, Reports, Settings; Home is the start destination and Settings stays last. This changes visual order only — route ids, deep links and TransactionsScreen / TransactionsViewModel remain unchanged. Activity remains the one user-facing name; "Transactions" is never reintroduced as a tab or header label.

Verification

DestinationTitleMatchesTabLabelTest (instrumented) asserts the selected Activity tab label and the destination header resolve to the same resource value after normal tab navigation and after a Reports "View transactions" drill-down; DestinationNamingStringsTest guards the resource values on the JVM layer. CompactNavigationTest still passes at 320/411 dp and 100–200% text. ShellChromeTest asserts the rail and compact bar present the Home-first order and that Activity is selected by its unchanged label.