Implement post editor image drops.

This commit is contained in:
2026-07-20 16:19:14 +02:00
parent 49447ef451
commit 29cdd016b8
15 changed files with 616 additions and 53 deletions

View File

@@ -90,7 +90,7 @@ rule MediaMetadataTranslationCascade {
-- 1. importMedia(file) -> new media record + file copy + base sidecar
-- 2. generateThumbnails(media) -> async start (small/medium/large/ai)
-- 3. linkMediaToPost(media, post) -> update sidecar linkedPostIds
-- 4. insertMarkdownImage(cursor) -> insert ![](bds-media://id) at cursor
-- 4. insertMarkdownImage(cursor) -> insert ![](/media/YYYY/MM/file) at cursor
-- Background steps (non-blocking, results auto-applied):
-- 5. If AI available: aiImageAnalysis(media)

View File

@@ -290,8 +290,8 @@ rule PostInsertMedia {
-- Opens InsertMediaModal (media search variant)
-- Search input, grid of media items with bds-thumb:// thumbnails
-- Click inserts markdown:
-- Images: ![alt](bds-media://id)
-- Non-images: [originalName](bds-media://id)
-- Images: ![alt](/media/YYYY/MM/file)
-- Non-images: [originalName](/media/YYYY/MM/file)
}
rule PostGalleryAction {
@@ -308,7 +308,7 @@ rule PostDragDropImage {
-- 1. Import media file -> media record + file copy + sidecar
-- 2. Generate thumbnails (async: small/medium/large/ai)
-- 3. Link media to post (update sidecar linkedPostIds)
-- 4. Insert markdown image at cursor: ![](bds-media://id)
-- 4. Insert markdown image at cursor: ![](/media/YYYY/MM/file)
-- 5. If AI available: AI image analysis (async, auto-applied, no modal)
-- 6. If auto-translate enabled: cascade translate media metadata
-- Steps 1-4 synchronous. Steps 5-6 background tasks.

View File

@@ -97,8 +97,8 @@ value InsertMediaModal {
-- Search input filtering by media title and original filename.
-- Grid of media items: bds-thumb:// thumbnail (medium 400px), title below.
-- Click item:
-- Images: inserts ![alt](bds-media://id) at cursor
-- Non-images: inserts [originalName](bds-media://id) at cursor
-- Images: inserts ![alt](/media/YYYY/MM/file) at cursor
-- Non-images: inserts [originalName](/media/YYYY/MM/file) at cursor
-- Closes modal after insertion.
search_query: String
results: List<InsertMediaResult>