Share songs, albums, movies, shows, podcasts and audiobooks to chat as cards

A share message carries kind, title, subtitle, same-origin art and a hash-route
link, validated on the server. It counts as unread, reads as '🎵 Shared a song:
Title' in pushes and Notifications, and is found by search. In Chat a card opens
the item, or says it is not available when the recipient lacks that tab.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 5.5 committed 2026-10-27 09:13:00 -04:00
1 parent a09d6b17f4
commit 98b428e8af
11 files changed
+87 -27

No files matched your search

+1 -1
View File
@@ -112,7 +112,7 @@ function trackSheet(t, extra) {
...(typeof mmPlex === 'function' && mmPlex(t.key) ? [
{ label: mfIs(t) ? 'Remove from Favorites' : 'Add to Favorites', icon: 'heart', run: () => mfToggle(t) },
{ label: 'Add to a Family playlist…', icon: 'plus', run: () => addToFamily([t]) },
...(allowed('chat') && t.albumKey ? [{ label: 'Share to Chat', icon: 'send', run: () => shareToChat('♪ ' + t.title + ' — ' + t.artist + ' ' + location.origin + '/#/music/album/' + t.albumKey) }] : []),
...(allowed('chat') && t.albumKey ? [{ label: 'Share to Chat', icon: 'send', run: () => shareMedia({ kind: 'song', title: t.title, sub: t.artist, art: px.art(t.thumb, 200), link: '#/music/album/' + t.albumKey }) }] : []),
...(t.artistKey ? [{ label: 'More like this', icon: 'shuffle', run: () => { location.hash = '#/music/mix/similar/' + t.artistKey; } }] : []),
] : []),
...(extra || []),