12 TDD-style tasks: two backend endpoints (validate + historical),
router registration, dashboard markup, and five JS slices building the
edit-mode behaviour (toggle → ticker validate → Add → date-mode →
delete via delegation). CSS pass and final manual smoke close it out.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Dashboard-native edit mode: EDIT button toggles in-place editing; the
add-position form has on-blur ticker validation against a new paid
endpoint, qty input, and an avg-cost / bought-on-date toggle. Only
avg_cost + qty are persisted to localStorage (no acquisition date,
no server-side holdings). Empty state replaces "Import a CSV" with
the inline form so brand-new users can act without leaving the page.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Drop first_seen_user_id; sample is anonymous by construction
- Rename sample_dummy → sample_row, store the upload's first real data
row verbatim (one row, no totals, no other positions, no link to a
user). Narrow, deliberate exception to the "no holdings persisted"
invariant — gives the operator material for hand-writing future
native parsers.
- Drop the cache self-heal behaviour; operator owns eviction. Reinforce
the non-goal of auto-promoting learned formats to code.
Transparent fallback after parse_t212_csv: LLM extracts a column-mapping
(not the data), result is cached globally by header fingerprint, replay
is deterministic Python. Stored dummy contains headers + synthetic row
only — no user holdings ever persisted.
Twelve-task plan covering the BETA chip, free-tier 6h news cap, daily
+ Sunday digest job, one-click unsubscribe, settings UI, sign-up
checkbox, pricing copy, and an admin send-test-digest CLI. Each task
is TDD where feasible.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Design doc for three coordinated closed-beta changes: a BETA chip in
the app header, a 6h news-window cap on the free tier, and email
digests (daily for paid Mon-Sat, Sunday weekly for everyone). Draft;
awaits implementation plan.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>