feat(ai-chat): signed-in user identity + optional onDismiss (v0.60.0)
#678 — wire /api/me identity into every editor's system prompt
- new src/lib/user-identity.ts: fetchUserIdentity() with Tailscale + localStorage fallback
- new src/lib/user-identity-cache.ts: process-wide memoized accessor
- buildSystemMessage gains userIdentity option that injects a single sentence;
drops parenthetical when name == login; omits line entirely when null
- all 6 chat panels (docs, sheets, slides, diagrams, forms, calendar)
warm the cache on wire and pass identity to buildSystemMessage per send
- 16 new tests: fallback chain, memoization, empty-name guard, identity
across editor types
#680 — remove dead onDismiss stubs
- ActionCardCallbacks.onDismiss is now optional; the UI state change
(dismissed class + status label) runs inside appendActionCard regardless
- removed empty () => {} no-ops from all 6 editor panels