UInt64(durationSeconds) truncated the Double 2.6 to 2 before
multiplying by 1e9 ns, so toasts vanished 0.6s early. Move the
multiplication inside the cast.
Caught in 2026-05-19 code review, swift-verified.
Bump CFBundleVersion 3 → 4.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add operation feedback across the three interactive paths in 看盘侠:
- Toast: ObservableObject + view modifier, lime/red/yellow palette
matching FundTheme. Auto-dismiss after 2.6s, click to dismiss.
- ConfirmDialog: programmatic ask() returning async Bool via a
captured CheckedContinuation. Danger flag flips the confirm button
to a red palette.
- HoldingsView: row remove now asks for confirmation (the trash UI
is a hover-only ✕ — easy to misclick); on confirm, row slides out
to the leading edge with a spring + a success toast lands.
- HoldingsView: position edit Save / Clear surface the right
semantic toast (success for save, info for clear).
- AddView: adding a fund toasts the name; tapping an already-added
row toasts an info reminder rather than silently no-op'ing.
Bump version 0.2.0 → 0.3.0 (Info.plist + FundPlugin.version).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>