Changelog
All notable changes to CozyPrompts.
0.28.1 2026-03-01
Fixed
- Marketplace → Light Mode: Card backgrounds and borders now correctly use theme CSS variables; `--card-bg` and `--border-color` (undefined fallbacks) replaced with `--bg-secondary` and `--border`
- Marketplace → Masonry Grid → Search overlap: Cards hidden by search (`display: none`) were still included in masonry layout calculations, causing visible cards to stack on top of each other; hidden cards are now pushed off-screen and excluded from column height tracking
- Marketplace → Masonry Grid → Card overlap on initial load: Rapid per-card `requestAnimationFrame` layout calls during bulk render caused cards to be positioned with incorrect heights (images not yet loaded), making some cards invisible behind others; replaced with a debounced scheduler that runs layout only once after all cards are inserted
- Marketplace → Masonry Grid → Infinite scroll not working: Sentinel element was hidden via `display: none` in masonry mode, preventing the IntersectionObserver from ever firing; sentinel is now positioned as a 1×1px absolute element at the bottom of the masonry grid
- Marketplace → Deactivated listings visible: Listings with `isActive: false` were not filtered client-side on initial load — only the `updated` handler checked `isActive`; `isFiltered()` now correctly hides deactivated listings
0.28.0 2026-03-01
Added
- Marketplace → Masonry Grid: New masonry layout respects original image proportions instead of cropping to squares; enabled by default; toggle between masonry and square grid via toolbar button; preference saved per browser
- Marketplace → Thumbnail proportional resize: Uploaded thumbnails are scaled so the longest side is at most 800px, preserving the original aspect ratio — portrait and landscape images are no longer cropped to a square
- Marketplace → Report Feature: Logged-in users can report listings; each address can report a listing only once; listings are hidden locally once a configurable threshold is reached (default: 5 reports)
Fixed
- Marketplace → Publish → Anonymous listings possible after logout: After logging out, GenosDB kept an internal session alive, allowing listings to be published without an identity; publish is now blocked unless `mp_address` is present in localStorage
- Marketplace → Publish → Blocked IP continues publishing: When the upload server rejected the thumbnail with HTTP 403 (blocked IP) or 429 (rate limit), the listing was still published to the network without a thumbnail; publish is now aborted on these status codes
- Marketplace → Publish → Blocked IP could bypass check when sharing without image: Sharing a prompt without a thumbnail skipped the IP block check entirely; fixed
- Marketplace → Publish → Image URL double-encoded: `convertFileSrc()` was applied to already-converted URLs → HTTP 500; fixed
- Marketplace → Report button incorrectly disabled: Button showed `cursor: not-allowed` even when the user had not yet reported; fixed
- Marketplace → GenosDB error after identity switch: `TypeError` after login/logout; fixed by reloading grid after identity change
- Marketplace → "No prompts" message persists after unblock: Empty state was not removed when listings became visible again after a user was unblocked; fixed for app and web portal — `mp-empty` is now actively removed in `updateCount()` and `renderCard()` as soon as visible listings exist
0.27.1 2026-02-22
Fixed
- critical Bugfix: Marketplace shows shared prompts twice
0.27.0 2026-02-22
Added
- Marketplace → Thumbnail Hosting (Self-Hosted): Thumbnails are now uploaded to a self-hosted REST API on cozyprompts.com instead of Pinata/IPFS; the server converts images to WebP format and stores them under a UUID filename; only the filename is stored in GenosDB — full URLs are assembled at runtime from the `thumbnailMirrors` list in `marketplace-config.js`
- Marketplace → Multi-Mirror Fallback: `thumbnailMirrors` array in config defines an ordered list of thumbnail servers; the client tries each mirror in sequence on image load error — adding a new mirror requires only appending to the array, all listings benefit immediately; backward compatible with old listings that still have `thumbnailUrl`
- Marketplace → Infinite Scroll: All listings are buffered in memory via GenosDB; only the first 30 cards are rendered initially; an `IntersectionObserver` on a sentinel element at the grid bottom automatically renders the next 30 as the user scrolls; search works across the full buffer including non-rendered cards — applies to both desktop app and public portal
- Marketplace → Skeleton / Shimmer Loading: Thumbnail area shows a pulsing shimmer animation while the image loads; image fades in smoothly once loaded; applies to both desktop app and public portal
- Marketplace → Encrypted Prompts (AES-GCM): Prompt text and negative prompt are now encrypted with AES-GCM (Web Crypto API) before being stored in GenosDB — no plaintext prompt is ever written to the P2P network for new listings; old listings fall back to their stored `description` field for compatibility
- Marketplace → Blind Search: Search now covers the full prompt text without revealing it — the app decrypts locally in RAM for matching only; the decrypted text is never displayed during search; both desktop app and public web portal support this
- Marketplace → Search field in toolbar: A debounced search input is now part of the Marketplace grid toolbar; searches across title, tags, model, author name, and (encrypted) prompt text in real time; count badge shows "X / Y Prompts" when filtered
- Public Portal → Blind Search: `website/marketplace.html` includes the same AES-GCM crypto inline; search on the public portal also decrypts locally for matching — no server involved
- Marketplace → Publish View (Lab-style): "Prompt teilen" is now a fullscreen Lab-style view with image preview and upload, Tag autocomplete with chips, Model autocomplete, Negative Prompt field, Model, Seed — replaces the old narrow modal
- Marketplace → Publish → Image Upload: User can select an image for their listing directly from disk; the image from the active Lab entry is pre-filled automatically; a clear button removes it again
- Marketplace → Publish → Tag Autocomplete: Tags are now entered as chips with autocomplete suggestions — identical behaviour to Prompt Lab
- Marketplace → Publish → Model Autocomplete: Model field now shows autocomplete suggestions — identical to Prompt Lab
- Marketplace → Detail View (Lab-style): Detail view is now a fullscreen Lab-style layout with all fields editable (Prompt, Negative Prompt, Model, Seed, Tags, Collections)
- Marketplace → Detail View → Collections: Collections dropdown with autocomplete and chips, powered by the same `CollectionsHandler` used in Prompt Lab
- Marketplace → Detail View → Tag Autocomplete: Tag input with autocomplete and chip display — identical to Prompt Lab
- Marketplace → Detail View → "Open in Lab": Passes all edited field values AND the listing image to Prompt Lab in one click
- Prompt Lab → Video badge on iteration cards: Iterations and the main version that have a video now show a small ▶ badge overlay on their thumbnail in the timeline
- Prompt Lab → Video download: Download button now works for videos; opens a Tauri save dialog and copies the video file to the chosen path
- Prompt Lab → Reference overlay moved to top-right: Reference image thumbnails are now anchored at the top-right of the media area and expand downward as more references are added
- Prompt Lab → "Set as Favorite" / "Delete version" buttons in toolbar: Moved from per-chip action icons to the shared `lab-image-actions` toolbar; buttons are only visible when an iteration is active and not in create mode
- Prompt Lab → Gallery refresh on version actions: "Set as Favorite" and "Delete version" now immediately refresh the gallery in the background so the card thumbnail updates without requiring Labs to be closed
Changed
- Settings → Emoji cleanup: Removed all decorative emoji from section headers and button labels in the Actions, Backup, Updates, and Advanced tabs
- Settings → Archive info box: Active archive is now displayed as a styled info box in both the Backup and Advanced tabs
- Gallery → Video badge icon: Replaced HTML entity with an inline SVG play-triangle for the video badge on gallery cards
- Gallery → Removed "has-ref" badge: The chain-link badge indicating a linked reference prompt has been removed from gallery cards
- Gallery → Thumbnail priority for video entries: Gallery cards and Lab iteration chips now show the video thumbnail for entries that have a video, falling back to the image thumbnail only when no video is present
- Prompt Lab → "Set as Favorite" label: Renamed from "Set as main version" to "Set as Favorite" / "Als Favorit setzen" to match the chip label
- Bulk select → No gallery reload on toggle/selection: `toggleBulkMode()` and `toggleSelection()` now update card CSS classes directly in the DOM instead of triggering a full gallery reload
Fixed
- Public Portal → Peers online counter on iOS Safari: Counter was stuck at "1 online" after refresh; replaced with exponential backoff polling that runs until peers are actually found
- Public Portal → iOS Safari caching: Added `Cache-Control: no-cache, must-revalidate` meta tag so Safari fetches a fresh version on every refresh
- Gallery → Missing image warning: Console no longer spams warnings when a prompt references an image file that no longer exists on disk
- Prompt Lab → Video player layout: Video element now fills the media area naturally and native browser controls appear directly below the video content
- Prompt Lab → Lightbox always showing last image: Off-by-one errors when some iterations have no image; fixed
- Prompt Lab → "Set as Favorite" image not cleared: When promoting a video-only iteration to Favorite, the old main entry's image is now explicitly cleared
- Prompt Lab → "Set as Favorite" video thumbnail lost: Video `thumb` path is now transferred correctly when promoting an iteration
0.26.0 2026-02-17
Added
- Prompt Lab → Video Support: Prompts and iterations can now have a video (MP4, WebM, MOV, AVI, MKV, M4V) in addition to or instead of an image
- Prompt Lab → Unified media picker: Clicking the image/video placeholder opens a file dialog accepting both images and videos
- Prompt Lab → Drag & drop: File drops work for both images and videos on the gallery and inside the lab
- Backup/Export/Import → Full i18n: All progress messages, status updates, and error strings in backup, export, and import flows are now fully localised (6 languages)
Changed
- Prompt Lab → Placeholder text: Updated to "Drag image or video here or click" (i18n, both DE/EN)
- Prompt Lab → Version switch: Switching between versions now correctly renders the video or image for that version
Fixed
- Prompt Lab → "Delete image" button visible on video versions: Button is now hidden when a saved video is shown and no image exists for that version
- Prompt Lab → Old video thumbnail flashing: Poster attribute is now cleared immediately when a new video source is set
- Backup/Export → Video files now included: Full backup (ZIP), SQLite backup, and Prompts ZIP export now include video files
- Backup/Import → Video metadata preserved: All import paths now read and restore video paths from JSON; old backups without video data import cleanly
- SQLite Backup → Video cleanup on restore: Restoring a SQLite backup now cleans and extracts video files from the archive
0.25.0 2026-02-15
Added
- Settings → Archives → Open Folder: Each archive now has an open-folder button to reveal its directory in the file explorer
- Prompt Lab → Multi-Collection: Prompts can now be assigned to multiple collections simultaneously; chip-based picker with inline search and inline creation replaces the single-select dropdown
- Prompt Lab → Rating Reset: Explicit ✕ button next to rating stars resets rating to 0 (only visible when a rating is set)
- Prompt Lab → Delete saved image: New "Delete image" button removes the saved image of the current entry or iteration (with confirmation); physical files and DB reference are both cleaned up
- Prompt Lab → Image upload: Click on image placeholder or drag & drop works in all modes (not just create mode)
Changed
- Archive switch: Removed confirmation dialog for faster workflow
- Archive delete: Unavailable archives (e.g. disconnected USB) can now be deleted from the list
- Reference Picker: Consistent image sizes; selected state with accent border; empty state styling
- Prompt Lab → Clear image button: Refined style — circular, glass-morphism background, turns danger-red on hover
Fixed
- Prompt Lab → Rating display: Unfilled stars in version thumbnails no longer appear gold; only filled stars use the accent color
- Prompt Lab → Auto-focus: Removed automatic focus on prompt textarea when opening the Lab; ESC now works immediately
- Prompt Lab → Version label: Main version thumbnail badge was hardcoded "Haupt"; now i18n-based, renamed to "Favorit" / "Favorite"
- Search clear button: Hover state no longer shows a rounded background; icon color brightens on hover only
0.24.0 2026-02-12
Added
- 🎉 Multi-Archive Support: Complete multi-archive system for managing multiple independent prompt archives
- Settings → Archives: New tab for archive management
- Header Archive Switcher: Quick archive switching directly from header
Changed
- Settings modal expanded with new Archives tab
- Header layout includes archive switcher between theme toggle and update badge
0.23.3 2026-02-11
Fixed
- Removed Delete Templates button from Settings: Removed leftover "Delete Templates" button that was still in Settings UI after template system removal
- Backup List now shows all backups: Settings now displays all backup files (manual, automatic reset, and import backups) with colored type badges
- Update Modal Design: Made update modal more minimalistic - removed emojis, reduced font sizes, tightened spacing
- Settings Modal Improvements: Made close button sticky at top, removed all emojis, reduced font/spacing
- Settings Modal Padding: Fixed unintended `padding: 20px` on Settings header
- ESC Key Modal Hierarchy: ESC now closes modals in correct LIFO order (last opened closes first)
⚠️ BREAKING CHANGES
- Complete Template System Removal: The legacy template system has been completely removed from the application
0.23.2 2026-02-11
Added
- Update Install Modal: Design and Styling
- Update Badge in App Header
0.23.1 2026-02-10
Fixed
- First Beta Release with AutoUpdater: Release of the first beta version with update check
0.23.0 2026-02-10
Added
- JSON Export for Collections: Collections can now be exported individually as JSON (Settings → Data & Backup → JSON Exports)
- JSON Export for Prompt Builder: Prompt Builder (categories + blocks) can now be exported as JSON
- JSON Import with Replace/Add: When importing Collections, Templates and Prompt Builder, you can choose whether to replace or add data
Fixed
- JSON Export functions for Collections and Prompt Builder: Previously, JSON export only exported categories but no blocks. Now both are exported correctly.
0.17.0 2026-01-15
Added
- Multi-Separator System for Prompt Builder
- Improved Builder color palette