# TODOS

## Post-V1

### Evaluate virtualized table widget if scroll performance degrades
**What:** If the Flutter DataTable (or equivalent) used for the core spend ledger shows scroll jank on Windows, evaluate `flutter_data_table_2` or `SliverList` with lazy building.
**Why:** Flutter's built-in DataTable doesn't virtualize rows. With V1's ~30 rows this is fine, but yearly views or multi-month reports would hit the limit.
**Pros:** Prevents a performance cliff if the app grows. Low-effort investigation.
**Cons:** Premature if V1 never hits the threshold.
**Context:** Flagged during eng review (2026-04-02). The design doc's "Recommended Approach" section already calls out testing inline editing and table scroll performance in the first week. If that test passes, this TODO can be closed.
**Depends on:** V1 implementation complete, manual scroll testing on Windows.

### One-time .ods parser to import historical months
**What:** Build a script or in-app tool to read the LibreOffice Calc (.ods) spreadsheet and populate the SQLite database with historical month data.
**Why:** Years of historical budget data exist in the spreadsheet. Manual re-entry is tedious and error-prone.
**Pros:** Historical data preserved, enables trend analysis in V2.
**Cons:** .ods parsing is non-trivial (XML-based format). Each month's sheet may have slight structural variations over the years.
**Context:** The spreadsheet structure is documented in `docs/Bill plan workbook summary.md` with cell-range-level detail. The Dart `archive` and `xml` packages can read .ods files. Alternatively, export sheets to CSV first and parse those (simpler but lossy on formatting).
**Depends on:** V1 data model finalized and stable. Parser should be built after the schema is locked.

### Add roommate_share_cents to BillDefinition
**What:** Add a nullable `roommate_share_cents` field to BillDefinition. When set, the ledger shows `(total - roommate_share)` as the user's charge in the rolling balance.
**Why:** The original spreadsheet has "Amount roommate(s) are accountable for" on bills. If bills are split (rent, utilities), the current data model would show the full amount.
**Pros:** Preserves spreadsheet parity for shared-living situations.
**Cons:** Adds a nullable field and display logic. Unused if the user doesn't split bills.
**Context:** Flagged by outside voice during eng review (2026-04-02). User confirmed this is not needed for V1 but worth capturing. The rolling balance calculator would need to subtract `amount - roommate_share` instead of `amount` for bills where this is set.
**Depends on:** V1 data model. Can be added as a migration at any point.

### Bump text-dim color for WCAG AA contrast
**What:** Change `text-dim` from #555 to #666 or #6a6a6a for disabled/dimmed text elements.
**Why:** #555 on #16213e card background has a contrast ratio of ~2.5:1, below WCAG AA minimum of 3:1. Affects readability of disabled misc items, hint text, and muted labels in low-light conditions.
**Pros:** Better readability. Minimal visual impact (still looks dim/disabled).
**Cons:** Slightly less dim appearance. Purely cosmetic for a personal tool.
**Context:** Flagged during design review (2026-04-02). All other color tokens pass WCAG AA.
**Depends on:** Nothing. Can be applied as a one-line theme change at any point.
