Skip to content

ADR-0047: Discoverable budget card actions

  • Status: Accepted (swipe availability amended by ADR-0085)
  • Date: 2026-10-15

Context

Existing budget limits could only be edited by swiping. Category spending had no direct path to Activity, and deleting a custom category also removed its limit without a separate way to clear only the limit.

Decision

Cards keep a compact, information-led height: a title row (category icon, name, trailing overflow icon) and a utilisation row. Every action lives in that single trailing More actions overflow menu — Edit limit / Set limit, View transactions, Remove limit (any positive limit), and Delete category (custom categories only). View transactions uses the shared drill route with the displayed month and category. Remove and delete require an explicit confirmation describing their consequences; clearing keeps the category and transactions and writes the existing sentinel from the displayed month onward. Editing retains the current-calendar-month editor contract.

Swipe right still edits; swipe left still removes a default limit or deletes a custom category. Custom accessibility actions provide gesture-free access and stay in sync with the overflow menu.

Consequences

No card grows a wrapping, multi-line action row at any supported text size; the card height is driven by utilisation and progress, not by a spanning button row. The card-height budget (≤120 dp at 100% text) keeps five to six cards visible on a 411 × 905 dp screen. Custom categories can keep their identity while losing a limit. Carry-forward and uncapped usage calculations are unchanged. Budget editing month scope is a separate concern. Add-category moved to the top app bar (ADR-0050) so no anchored add action covers card content.

Verification

BudgetActionsTest covers the trailing overflow menu, visible edit/set actions, uncapped percentages, confirm/cancel, custom deletion, default-category protection, an accessible remove action, navigation preserving the displayed month/category, the documented card-height budget, and the top-bar add action staying outside the scrolling list. Existing budget ViewModel and repository tests guard carry-forward arithmetic.