Skip to content

v0.4.1 — thumbnails + grid view

Choose a tag to compare

@github-actions github-actions released this 16 Apr 13:10
· 363 commits to main since this release

Added

  • WebP thumbnails + grid view UI (phase 4 user-visible tier).
    • perima-media::ThumbnailGenerator writes 256px WebP thumbnails
      (Lanczos3 resize, aspect-preserving) to
      <data_dir>/thumbnails/<aa>/<hash>.webp. Atomic write via
      .tmp + fs::rename — mid-write crashes cannot leave a
      half-written file.
    • V003 migration adds thumbnail_path + thumbnail_status to
      file_metadata (nullable, additive; existing v0.4.0 rows
      read as "not yet processed"). Partial index on
      thumbnail_status = 'pending' AND deleted_at IS NULL supports
      a future perima thumbnail retry command.
    • MetadataRepository::update_thumbnail — separate trait method
      so the queue worker's thumbnail result always persists without
      colliding with upsert_metadata's Unchanged equivalence proxy.
      Wrapped in BEGIN IMMEDIATE.
    • MetadataQueue worker now calls the thumbnailer after metadata
      extraction for image/video MIMEs; on success writes
      thumbnail_status = 'ready' + absolute path; on failure writes
      'failed' and continues (no worker abort).
    • ThumbnailGenerator::disabled() constructor + new
      perima scan --no-thumbnails flag shortcircuit the thumbnail
      write path for users wanting faster scans.
  • Desktop grid view. New FileGrid component renders 200px
    tiles with thumbnails via Tauri's asset protocol
    (convertFileSrc). Header gains a Table / Grid toggle; default is
    Table for v0.3.x UX continuity. Placeholder icons for pending /
    failed / unknown tiles. 3 new vitest tests (14 total).
  • tauri.conf.json enables assetProtocol with scope
    $APPDATA/perima/thumbnails/** + broad ** fallback.

Changed

  • Desktop app now calls list_files_with_metadata (added in v0.4.0)
    for both Table and Grid views. FileWithMetadataPayload gains
    thumbnail_path + thumbnail_status fields.
  • Tauri dep gains the protocol-asset feature flag.