Important
⚠️ As always, export your database before upgrading. Safety first!
📥 Import From (Almost) Anywhere
- Libib CSV Import: Import your Libib exports directly, with a dedicated importer per media type (music, books, movies/TV, games). Thanks to @reneald for the request!
- Universal CSV Import: A new import screen lets you upload any CSV into any module and map the columns to the fields by hand, no template required. (hello @penpalstu-sys)
Optional Cover & Metadata Enrichment: During an import you can let DVinyl look each row up on the usual providers (Discogs, TMDB, IGDB, Hardcover) to fetch covers and missing metadata, or keep your rows exactly as they are. The format read from your file is passed to the provider, so a CD import no longer comes back full of vinyl pressings.
🏷️ Your Fields, Your Cards
- User-Defined Fields: Add your own custom fields to any plugin, per collection, including the built-in ones. Text, number, checkbox, dropdown or date, and they behave like real fields: they show on the item page, they can be filtered on, and they can be sorted on.
- Choose What Cards Show: Pick which fields appear on your collection and wishlist cards, per plugin and per collection. Thanks to @jws5406!
- Optional Dropdowns Stay Empty: A non-required dropdown now starts on a blank entry instead of silently selecting its first option, so a value only ends up in your data if you actually chose it.
🧩 Plugin Builder Polish
An entire round of improvements to custom plugins, all from @jws5406's excellent feature list:
- Custom Default Image: Replace the default styled "D" placeholder with your own image.
- Empty or Preset Format: The format picker now starts empty on custom plugins, so you can't forget to change it, and you can define a preselected format per plugin if you prefer.
- Live Color Preview: The color picker in the plugin editor now shows the actual selected color, which makes building a coherent palette a lot easier.
- Main Cover, Pre-Checked: "Replace main cover" is now enabled by default on manual and custom items, since that's what you want nearly every time.
- Neutral Wording: Plugins that don't ship their own strings no longer borrow the vinyl vocabulary ("cover", "disc"...), and genre/location blocks no longer show up on plugins that never declared them.
- Cleaner Filters: The filter row is now scoped to the selected type and drops the filters with nothing behind them, so no more empty "artists" dropdown on your coffee mug collection.
👥 Collections For Your Users
- Self-Service Collections: A new instance-wide toggle lets ordinary members create their own collection, with a per-user quota you control. Invite (or SSO-enroll) a friend, send them the link, and they can start their own library without you touching the admin panel. Thanks to @jhuesser for the idea!
✨ Smaller Things That Matter
- Fullscreen Cover: Click the cover on an item page to open it fullscreen. Thanks to @jws5406!
- Back to Wishlist: Move an item from your collection back to the wishlist, for the ones that turned out broken, sold or wrongly added.
- Optional Duplicate Merging: A per-collection toggle to stop merging duplicate adds into one entry with a quantity, for collections where two similar items really are two items. Thanks to @jws5406!
🛠 Fixes
- Fixed the setup being blocked when the browser reported a regional language tag (
fr-CA,en-GB...), which is now resolved to the closest supported language. - Fixed a 2.6.0 restore leaving every account but the seeding admin without any collection membership. The legacy merge is now detected from the data itself instead of from the user documents, which a restore rewrites.
- Fixed the membership backfill applying to modern accounts that an admin had deliberately left out of every collection.
- Fixed the creator field showing "Unknown" on wishlist cards. Thanks to @jws5406 for the report!
- Fixed date fields showing the previous day on cards for instances running east of Greenwich.
- Fixed
.env.examplebreaking the MongoDB connection under Podman quadlets, which read the trailing comment as part of the value. Thanks @reneald for the fix!
Almost every line of this release came from an issue one of you opened. A huge thank you to @jws5406, @reneald, @jhuesser and @penpalstu-sys for the suggestions, the reports and the patience, and to everyone who takes the time to open an issue.
Love u all <3