github hankscafe/omnibus v1.1.0-beta.034
Omnibus v1.1.0-beta.034

latest release: v1.1.0-beta.035
4 hours ago

v1.1.0-beta.034 - feat(metadata/converter): series book types, dedicated series.json export job, ZIP-disguised CBR fix, configurable series-ended window

🎭 Converter: ZIP-disguised CBRs

  • Magic-byte sniffing now picks the decoder: PK-signature files extract via AdmZip directly, no external binary β€” extensions lie
  • A successful unrar listing that comes back empty is treated as not a RAR β€” WinRAR's UnRAR.exe exits 0 silently on non-RAR input, so exit codes lie in both directions
  • Fixes Archive contained no valid images after extraction on mislabeled CBZ-as-CBR files

πŸ“¦ series.json data quality

  • comic_image prefers the remote ComicVine/Metron cover via the new Series.remoteCoverUrl column (captured on metadata sync), falls back to the locally cached cover as an absolute URL via NEXTAUTH_URL, and is null only when the series has no cover at all β€” never an Omnibus-local relative path
  • Empty values write null instead of (publisher, descriptions, comic_image, publication_run) so Komga parses the file
  • remoteCoverUrl backfills on each series' next metadata refresh β€” refresh the library before re-exporting to populate every file immediately

πŸ“– Series book type (Print / OneShot / TPB / GN)

  • New Series.bookType column populated from Metron's series_type (authoritative) or conservative ComicVine heuristics (name hints, ended single-issue volumes)
  • Auto-categorization only fills blanks β€” manual edits via the new Book Type selector in Edit Series are never clobbered by refreshes
  • series.json booktype reflects the real categorization (default Print); non-Print series show a badge on the series page
  • Library page gains a Book Type filter composable with all existing filters; uncategorized series count as Print

⏰ Dedicated series.json export job

  • New EXPORT_SERIES_JSON job with its own schedule, scoped-run support, and a skip-with-warning log when the export feature is disabled
  • EMBED_METADATA is now XML-only and chains a scoped series.json export afterward β€” imports, edits, and bulk ops produce both files as separate logged jobs
  • New Scheduled Jobs card mirrors the series.json toggle; selecting a schedule auto-enables the export feature with an explanatory toast
  • Ownership tracking (Series.seriesJsonWritten): Omnibus only overwrites files it created, upgrades its own legacy Komga-format files, and skips curated/Mylar files with a logged warning

🏁 Configurable series Ended window

  • The hardcoded 1.5-year inactivity cutoff is now an admin setting (Settings β†’ Metadata): 6–36 months or Never; the 18-month default preserves prior behavior
  • Both ComicVine and Metron sync paths share the new window helper; log lines state the configured window

🎨 UI polish

  • Series page badges restacked: status and book type share the top row, Monitored sits full-width below so its text never squishes
  • Settings: Ended-window description spans the full card width

πŸ—ƒοΈ Schema

  • New Series columns: remoteCoverUrl, bookType, seriesJsonWritten β€” created automatically by prisma db push on container start (dev: npx prisma db push)
  • New settings keys: series_json_schedule, series_ended_months

βœ… Verification

  • tsc clean; vitest 179/179 across 58 files
  • New coverage: magic-byte ZIP routing and empty-listing fallback, EMBEDβ†’EXPORT job chaining, export-disabled skip logging, series.json ownership protection and legacy-format upgrade, booktype/null-field/cover-fallback output shape

Addresses #163

Don't miss a new omnibus release

NewReleases is sending notifications on new releases.