4ffa3119a7
- Sanitize AI tool background_url with sanitizeUrl() to prevent CSS injection - Replace 'as unknown as' and 'as Partial<Record>' type escapes with proper ChatCompletionTool, ChatCompletionResponseMessage, and ChatCompletionToolCall types in useShakespeare - BlueskyWidget: throw on !res.ok so useQuery retry works; type response - WikipediaWidget: add explicit isError state instead of masking as 'no article' - Pass prev (profileEvent) to publishEvent on KIND_BLOBBONAUT_PROFILE mutations in BlobbiWidget and BlobbiPage to preserve published_at - Add profileEvent field to EnsureCanonicalResult interface - useEncryptedSettings: fetch fresh event from relays before mutation instead of reading from stale TanStack cache (cross-device safety)