Per the iteration: the title-row status icons (green check / yellow
clock / red X) were doing the same job as the new status badges and
amount color, so each row had three signals fighting for the same
meaning. Drop the icons and lean on badges instead.
Badge row order (left-to-right): Voided > Income/Expense > Pending >
user tags. Type badge sits between the high-attention Voided marker
and the secondary Pending marker, so the type chip is easy to spot
on every row.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Each chip toggles inclusion of one bucket of rows. Every row belongs to
exactly one bucket — voided rows go to the Voided bucket regardless of
their underlying type — so the model is straightforward:
[Income] [Expenses] [Voided]
| | |
income expense voided
(non-voided only) (any type)
Defaults: Income + Expenses on, Voided off. Independent multi-select.
Empty selection shows the empty state with a 'select a category' hint
instead of an open-ended 'try a different time period'.
Replaces the previous 'type radio + voided switch' pair: same axes, one
control type, no left/right visual split.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Voided transactions are noise in the day-to-day view (the user already
saw and rejected them), so default to hiding them. A Switch in the filter
row toggles 'Show voided'. When voided are present but hidden, the
results-count line shows '(N voided hidden)' so the toggle has a
discoverable hook.
Pending entries gain a yellow Pending badge symmetric with the red
Voided badge — both signal 'needs attention' states in the badge row,
while cleared entries stay unmarked (the default, quiet state).
Status / type encoding (icon = status, signed/colored amount = type)
is unchanged.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The status border (green/yellow/red) and the type-tinted amount (green
income, red expense) both used the same palette, so cleared expenses
showed a green border with a red amount and pending income showed a
yellow border with a green amount — same colors carrying two different
meanings on the same row.
Concentrate the encoding so each meaning has one home:
- Status lives in the icon (small, single glyph at the title)
- Type lives in the amount (sign + red/green tint)
- Voided still wins via strike-through + muted amount + Voided badge
Per Wise / Mint / YNAB convention.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Original styling used the left border for entry-type (green=income,
red=expense), which clashed visually with the status icons: a red
border on a pending expense suggested "rejected". Split the visual
channels so each conveys one thing:
- Left border + status icon = workflow state (green accepted,
yellow pending, red rejected/voided)
- Signed/tinted amount = type (+green income, -red expense)
- Strike-through + muted amount = voided
- Badges = user-added tags only; income-entry / expense-entry
suppressed (redundant with the amount), Voided kept as a
high-signal status badge
Follows the conventional bank-statement / personal-finance encoding
(Wise, Mint, YNAB), where amount sign carries direction and chrome
carries state.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>