Skip to content

DiscVault v26.5.0

Choose a tag to compare

@github-actions github-actions released this 20 Jul 10:38
7e1e986

DiscVault v26.5.0

DiscVault v26.5.0 promotes the complete beta train since v26.4.70. This
release delivers a redesigned Profile, administration, and Library management
experience; reliable first-connect synchronization; and substantial security
hardening across plugins, runtime secrets, external HTTP providers, and local
media.

Highlights

  • A clearer management experience. Profile navigation, Account,
    Preferences, Notifications, Groups, Structure, Security, API & MCP, About,
    Admin Access, and Users & Groups now use responsive dashboards, focused
    cards, accessible tabs, and complete locale coverage.
  • Reliable first-connect synchronization. Server-side idempotency,
    persistent record identifiers, identity matching, tombstones, reconciliation,
    and guarded deduplication tooling prevent duplicate movie creation without
    merging distinct physical editions.
  • Stronger security boundaries. Executable plugin writes require an
    interactive owner or admin, runtime secrets are explicit, user-controlled
    HTTP requests are DNS-pinned and bounded, and protected local media now
    enforces authentication and ownership.
  • Focused Library actions. Advanced filters and bulk-selection controls are
    reorganized into task-oriented cards with accessible responsive behavior.

Profile and administration

  • Profile navigation now uses a responsive MDI icon rail with a saved desktop
    display preference, while Account presents an identity-first dashboard.
    (#310,
    c5fad1c)
  • Preferences are grouped into focused Appearance, Library, Collectors, and
    Loans System cards, with canonical MDI icons throughout the Profile area.
    (#311,
    e548a53;
    #313,
    a0d5138)
  • Notification settings now show browser permission, current-device state,
    notification categories, and connected devices in a responsive dashboard.
    (#316,
    de4ac34)
  • Groups now use responsive management cards with clearer roles, metrics,
    invitations, member actions, library scope, inline renaming, and delete
    eligibility.
    (#319,
    6e63e80)
  • Structure, Security, API & MCP, and About have been refreshed as accessible,
    responsive utility dashboards.
    (#320,
    3f0eecf)
  • Admin Access and Users & Groups now use dedicated cards for registration,
    invitations, passkeys, legacy authentication, users, roles, and group
    management.
    (#321,
    f88fd90)

Library workflow

  • Advanced Library filters and bulk-selection controls are grouped into
    task-focused cards. Desktop groups remain open, while mobile layouts use
    accessible accordions without changing existing filter, permission, or bulk
    action behavior.
    (#323,
    0817f81)

Synchronization reliability

  • Sync creates are now idempotent through a strict identity ladder using
    persistent client IDs, normalized barcodes, and TMDb plus physical-edition
    identity. DVD and 4K UHD copies remain distinct.
  • Deleted movies and containers use tombstones with anti-resurrection rules,
    while the new reconciliation endpoint safely adopts existing records during
    first connect.
  • The deduplication merge utility is dry-run by default, preserves the
    strongest user-data record, and requires explicit approval before execution.
    (#315,
    98ea40c;
    #322,
    81a6c5d)

Security and deployment

  • Executable plugin import, update, rollback, and auto-update operations now
    require an interactive owner or admin session. API tokens cannot write
    executable plugins, and failed replacements restore the previous plugin.
    (#308,
    c7dca6c)
  • JWT_SECRET is now mandatory for API and worker startup. Deterministic secret
    fallbacks derived from DATABASE_URL have been removed.
    (#309,
    b14c956)
  • Wishlist price URLs and bundled Amazon, bol.com, Arrow, Zavvi, Keepa, and
    PriceAPI traffic now use DNS-pinned, deadline- and size-bounded public HTTP
    transports. Private, loopback, link-local, rebound, mixed-DNS, and redirect
    targets are rejected without leaking credentials or request bodies.
    (#312,
    2eb1173,
    f573906;
    #314,
    1370e0a)
  • Local movie, container, person, avatar, wishlist, and MovieVault media now
    requires authentication and valid ownership or sharing access. Protected
    media is network-only in the service worker, preventing cross-account cache
    replay.
    (#317,
    35aa44f)

Upgrade notes

  • Keep the existing JWT_SECRET value when upgrading. Missing or blank values
    now stop API and worker startup; changing the secret invalidates existing
    sessions and may require reconnecting MovieVault.
  • Database migration 045 runs automatically and adds persistent sync record
    identifiers and deletion tombstones.
  • Protected media caches are purged during service-worker activation and are
    no longer stored for offline cross-session reuse.
  • sync_dedup_merge.py remains dry-run by default. Review its report and take
    an appropriate backup before considering --execute.
  • User-facing changes include complete translations across all 29 supported
    locales.

Full changelog: v26.4.70...v26.5.0