github Kyonew/DVinyl v3.1.2
v3.1.2 - Share Your Shelf, Season by Season

latest release: v3.1.3
3 hours ago

v3.1.2 - Share Your Shelf, Season by Season

Important

⚠️ As always, export your database before upgrading. Safety first!

This one had help. Two people sent code this cycle instead of just issues! Thank you @Siebe-Uy and @minchetas.

🔗 Public Share Links

Generate a read-only link, and a QR code, that lets anyone browse a collection without an
account. The use case @aarondixon described when opening the issue is exactly the one that
shipped: a QR code taped next to your shelf, so guests scan it and browse on their own phone,
and you never maintain an account for anybody.

  • Several links at once, each independent. Disabling, regenerating or deleting one never
    touches the others.
  • Scoped links. A link can show the whole collection, or only some types and formats,
    "Vinyls only", "CDs and Vinyls but not Cassettes". The nav bar and the filters follow suit,
    so a visitor is never offered a control that names something the link hides.
  • The QR code is generated by your own instance. The token never goes to a third-party
    QR service.
  • Read-only, enforced at the route. A share visitor cannot add, edit, delete, refresh or
    annotate anything, cannot reach the wishlist, the dashboard, the admin panel, settings or
    backups, and cannot see another collection.
  • Two things a signed-in viewer sees are kept from a link, because a public link travels
    further than a member ever does: where items are kept (the Location field disappears
    from the item page, the cards and the filters, and its values are never even read), and
    who is behind the collection ("Added by" and "Last modified" are not shown).
  • Items you already hide from viewers with the Visibility settings stay hidden from share
    links too, including by direct URL.

Built by @Siebe-Uy, from @aarondixon's issue. Full guide in
docs/sharing.md.

📺 TV Shows, Season by Season

A show can now hold its seasons, each a full item of its own: its own cover, its own year,
its own episode list, its own comments. Asked for by @LordChabelo.

  • When you add a show, a checklist says which seasons you own. Seasons already in your
    collection are ticked and locked, so the list states what you have instead of inviting you
    to add it twice.
  • Ticking a season you're missing attaches it to the show you already have. No duplicate
    cover, no second entry for the same series.
  • Tick nothing and the show is added as a single item, which is what every existing item
    has always been. That's not an option to find, it's the default.
  • On the shelf, a show holding several seasons shows itself and says "Seasons 1 to 4". A show
    holding exactly one shows that season, its artwork, its title, because that box is what
    you actually own.
  • Episodes, per season: seen or not, a rating, and your own notes. A metadata refresh
    merges instead of replacing, so correcting an air date never wipes what you wrote.

Note

This is not retroactive. A series already in your collection keeps being one item until you
convert it by hand: search for the show, tick the seasons you own, save. Your existing
item becomes the show's entry and the seasons attach to it and the confirmation page now
tells you that's about to happen before you save.

🏷 A Second Badge, In the Free Corner

The cover badge told you vinyl but not whether it was an LP, a 12" or a 7", and said nothing
about the sleeve. You can now put any field of any module in the free corner of the cover,
chosen per module and per collection in the Customize panel, and pick which corner it sits in
from a picker that shows you the result. Sleeve condition reads "VG+", not "Very Good Plus
(VG+)", a corner is narrow. Thanks to @jws5406 for both halves of this (#87 and #88).

Along the way the badge overlay stopped existing in four slightly different copies that
disagreed on where it sat, which is why there was no free corner to put anything in before.

🧭 Getting Back Where You Were

  • Editing an item returns you to it, and from there the back arrow goes to the page you
    actually came from, page 35 of 70, with your filters and your sort still on it. Deleting
    goes to the same place. Thanks to @jws5406!
  • Jump to any page. Long collections only offered next/prev and a couple of numbered
    buttons, so a page far from either end was unreachable. The pagination now has a number
    input where the ... gap was: type a page, press Enter. Built by @Siebe-Uy.

✨ Smaller Things That Matter

  • Modified by. Item pages now show who last changed an item by hand, next to who added it.
    A provider filling in a cover is nobody's edit, so it has a date of its own, shown as a
    caption under the Refresh button, and never erases the name of the last person who really
    touched the item. This closes the half of @chibashr's request that 3.1.1 left open.
  • Titles sort the way a shelf does. "The Wall" files under W, "Ámbar" sits next to
    "Amber", and case no longer splits a list in two. Thanks to @LordChabelo!
  • CSV imports stop giving up silently. When a provider said "too many requests", the row
    was counted as a miss and the item came in bare, and no refresh tool could rescue it,
    because it was never linked to the provider at all. The import now waits the provider out
    and retries, slows the whole run down after a rate limit instead of walking into the same
    wall, and tells you at the end how many items came in without data. Thanks to @code-sterling
    for a report that pinned the cause exactly!
  • Translations. A pass over Spanish and Italian where "Show" (the verb) had been
    translated as "a show, a performance", plus a nav link that was hardcoded in French and
    showed up that way in every language. Thanks to @minchetas, who sent the fix!

🛠 Fixes

  • Fixed external IDs being rewritten as text on every save. The edit form went through the
    base model, so tmdb_id became "1396" instead of 1396. Nothing looked broken, the item
    still displayed, but every lookup comparing the ID as a number missed it, starting with
    duplicate detection, so the same record could be added twice. Every module was affected. The
    write path is fixed and a migration repairs what it left behind on your instance at startup.
  • Fixed a show and its seasons being separated by a collection restore, a move to the wishlist
    or the duplicate warning.
  • Fixed the QR code of a share link still being served after the link was switched off.
  • Fixed the Personalization link in the nav showing in French whatever your language.
  • Fixed the Spanish cassette label and a handful of labels left lowercase.

Same as always: nearly every line came from one of your issues. Thank you @aarondixon,
@jws5406, @LordChabelo, @chibashr and @code-sterling for the reports, and a special one this
time to @Siebe-Uy and @minchetas, who turned up with working code.
Love u all <3

Don't miss a new DVinyl release

NewReleases is sending notifications on new releases.