Add a new pin. Returns false if a duplicate already exists.
Capture a thumbnail of a DOM element using html-to-image. Uses SVG foreignObject so the browser's own CSS engine handles modern features like color-mix() that html2canvas can't parse. Returns a base64 JPEG data URL (~5-15KB) or undefined on failure.
Find the pin for a given resource, if it exists
Get unique group names in display order (ordered by lowest Sequence in group)
Get ungrouped pins (Group is null/undefined/empty)
Check if a resource is already pinned
Load pins from UserSettings. Safe to call multiple times (loads only once).
Force reload from UserSettings (e.g. after external changes)
Remove a pin by ID
Reorder pins. Accepts full reordered array with updated Sequence values.
Update pin properties (name, description, icon, group, thumbnail)
Service for managing pinned items on the Home dashboard.
All pin state is stored as a JSON blob in UserSettings via UserInfoEngine. Uses debounced saving to avoid excessive DB writes during edit mode operations.