Keysat e53a41ae80 Mobile Phase 8f: Pipeline card → dc anatomy (earmark/Priority/recency, scroll pills, dots)
Bring the mobile Pipeline surface to the PipelineApp.dc.html default anatomy:

- Segmented control → horizontal-scroll pills with label + count badge; the active
  pill tints to its own stage color via --seg-* (aliased to --chip-*, so it flips in light).
- Card → earmark corner + name + Priority pill / $amount · dot · recency / labeled
  ‹ Prev · Next › move footer (was name + contact·org sub + bare chevrons). Compact amount.
- Stage-column header → StageChip + investor count + committed sum.
- Page dots → tappable, active = 22px accent bar.

Backend: the opportunities list injects two derived read-only fields (mirroring the
Contacts-list pattern; opp writes use a field allowlist so neither round-trips):
- existing_investor (contact_grid_signals committed>0) so the card earmark agrees with
  the detail's "Existing LP" pill.
- last_contact_date (MAX communication_date on the deal's contact, deleted_at-filtered)
  → card recency line + the Staleness sort (replaces the updated_at proxy).

Guarded by new soft-delete assertions in test_soft_delete_reads.py. 39/39 green.
2026-06-20 05:38:15 -05:00
2026-02-27 12:44:50 -06:00
2026-02-27 12:44:50 -06:00
2026-02-27 12:44:50 -06:00
2026-02-27 12:44:50 -06:00
2026-02-27 12:44:50 -06:00
2026-02-27 12:44:50 -06:00
S
Description
No description provided
61 MiB
Languages
Python 46.7%
HTML 44.2%
TypeScript 5.5%
JavaScript 2.7%
Shell 0.5%
Other 0.4%