feat(blossom): Phase 2 management — blob delete-on-orphan + kind-10063 server list (#30)

- deleteByUrl maps a Blossom URL back to its content-addressed blob (blobSha256FromUrl) and deletes it via BUD-12, defaulting to the URL's own origin. Wired into the edit-modal orphan cleanup so a superseded Blossom video/thumbnail is reclaimed (best-effort, never blocks the edit).

- BUD-03 kind-10063 server-list discovery: read (serversFromServerListEvent) + build (buildBlossomServerListEvent) + an extracted, testable import/publish helper (blossomServerList.js), plus 'Import from my server list' / 'Publish my server list' controls in the Storage pane's Blossom section.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
thePR0M3TH3ANandClaude Opus 4.8 committed 2026-07-12 10:32:22 -04:00
1 parent 51072e4871
commit e81e65ff40
9 files changed
+515

No files matched your search

+10
View File
@@ -1027,6 +1027,16 @@
<textarea id="storageBlossomServers" rows="3" class="input" placeholder="https://blossom.example.com
https://another.blossom.example"></textarea>
</label>
<!-- BUD-03 kind-10063 discovery: import the list you've published, or publish the list above. -->
<div class="flex flex-wrap gap-2">
<button id="storageBlossomImportBtn" type="button" class="btn-ghost focus-ring text-xs">
Import from my server list
</button>
<button id="storageBlossomPublishBtn" type="button" class="btn-ghost focus-ring text-xs">
Publish my server list
</button>
</div>
<p id="storageBlossomServerListStatus" class="text-xs text-muted" role="status"></p>
</div>
<!-- S3-family fields (R2 / B2 / Custom S3). Hidden for Blossom. -->