Skip to content

Releases: AlyShmahell/medora

Release list

v0.0.2

Choose a tag to compare

@AlyShmahell AlyShmahell released this 31 Aug 17:39

Changelog

Medora v0.0.2

One archive, Matchora 0.0.4 (no llama.cpp), better playback.

Install

curl -fsSL https://raw.githubusercontent.com/AlyShmahell/medora/main/install.sh | bash

Pick the v0.0.2 tag. Asset: medora-0.0.2-linux-amd64.tar.gz (binary, Matchora, htmx, video.js, hls.js, ffmpeg). There is no slim vs bundled split.

Metadata

  • Ships Matchora 0.0.4: SequenceMatcher grouping/ranking. No llama.cpp, GGUF, or matchora --prepare.
  • medora --prepare only fills third-party vendor/ (JS / ffmpeg check). Leftover tools/matchora/vendor from 0.0.3 is removed on start.
  • Per-title Scan with Matchora sends an editable title via POST /v1/ingest (library scan is still path-based).
  • Version comes only from config/default.yaml (repo VERSION file is gone). Overlay YAML cannot override it.

Playback

  • Player status sits under the video. Control bar shows on hover and hides after 5s.
  • Seek bar and duration use the real ffprobe length, not the growing HLS playlist.
  • Clicking the bar seeks to that time (in-window, or a new transcode session past the buffer) instead of jumping one segment.
  • VAAPI probe sets LIBVA_DRIVERS_PATH when unset, logs ffmpeg errors, and keeps a device that passed lavfi encode.
  • If H.264 VAAPI encode is missing (some AMD iGPUs) but AV1 encode works, transcode uses av1_vaapi + fMP4 HLS. Otherwise software libx264.

Fixes

  • Desktop icon discovery in the installer.

Upgrading from 0.0.1

Replace the install prefix (or re-run install.sh). You do not need llama.cpp. Old slim installs should take the new tarball so ffmpeg is present; --prepare cannot compile ffmpeg.

v0.0.1

v0.0.1 Pre-release
Pre-release

Choose a tag to compare

@AlyShmahell AlyShmahell released this 29 Aug 15:04

Changelog

[0.0.1] — 2026-08-29

First public release of Medora: a self-hosted media library that runs as a host binary (not a container). A Podman builder produces the dist; you install and run medora on the machine. Default listen is http://127.0.0.1:7676. License is BSD 3-Clause. Package target is linux-amd64.

Install and run

  • TTY installer (install.sh) picks a GitHub release, installs into ~/.medora, links ~/.local/bin/medora, and adds a userscope desktop entry and icon.
  • Two archives:
    • slim — binary, seed config, first-party static, Matchora helper. No {exeDir}/vendor/. Run medora --prepare later for ffmpeg/JS and Matchora’s llama.cpp.
    • bundled — slim plus vendored htmx, video.js, hls.js, ffmpeg, and Matchora’s llama.cpp.
  • After listen, Medora opens the UI in the browser when DISPLAY or WAYLAND_DISPLAY is set (MEDORA_NO_BROWSER=1 skips that). A second start on a busy port opens the same URL and exits.
  • Writable data lives under {exeDir}/data (SQLite store, transcode cache, backups, overlay config.yaml, Matchora cache). Overlay YAML merges on top of the seed config/default.yaml.
  • Library roots: MEDORA_MEDIA_PATH or media.path (comma-separated). Each root is jailed separately; the add-library picker shows them as one folder tree.

Library and scan

  • Libraries are a name and a folder. There is no movie/TV/anime type. A directory is a show when it looks like a show pack (Season N, SxxExx, sequential cour layouts, and similar); otherwise it is a movie.
  • Local scan walks the disk, reads existing NFO/posters, and inventories titles.
  • Scan with Matchora sends the folder to first-party Matchora v0.0.3 (localhost :7680). Matchora groups and matches; Medora inventories videos, classifies movie vs show, numbers episodes, and writes catalog metadata. Optional: overwrite existing metadata; persist NFO/art beside the files.
  • Per-library and per-title scan. Uncertain matches show an orange ! and a candidate picker. Unmatched titles are still inventoried.
  • Scan on startup is on by default.
  • Library pages: search plus sort by name, date added, or year.

Home and browsing

  • Home: libraries, continue watching, recently added.
  • Movie and show pages from NFO (plot, cast, genres, studio, ratings, and the rest of the usual fields). Shows have season and episode views.
  • Poster progress bars and per-user watch progress.

Playback

  • video.js player with hls.js for HLS.
  • Direct byte-range stream when the file can play as-is; otherwise HLS transcode (H.264, configurable max height and CRF).
  • Quality, audio track, chapters, subtitles (embedded plus sidecar .srt / .vtt / .ass / .ssa), playback rates, prev/next episode, resume from last position.
  • Hardware encode: hwaccel: auto probes VAAPI on /dev/dri (needs host Mesa/libva/libdrm). Fallback is software libx264. Settings → Server shows the active pipeline.
  • Idle HLS jobs are cancelled a few minutes after the last segment request. The Medora process stays up.

Metadata

  • Matchora owns browse jail, grouping, matching, and catalog bytes. Provider keys (OMDb, TMDB, and any other secrets Matchora exposes) are stored in Matchora, not in Medora YAML. Admin sets them under Settings → Integrations → Metadata.
  • Medora owns SQLite, playback, persist-beside-media, ffmpeg stills, and the match picker UI.

Accounts

  • Empty install redirects to /register to create the admin. After that, /register is 404.
  • Admin → Settings → Users creates ordinary users, resets passwords, and deletes accounts.
  • Libraries and progress are per user.

Integrations and backup

  • Per-user outbound webhooks (JSON). Types: PlaybackStart, PlaybackProgress, PlaybackStop, ItemAdded, TaskCompleted, UserCreated, UserDeleted, plus Generic. Destinations can filter by notification type and item type, add headers, and use a {{Field}} template. Test send and API-key regenerate are on the same page.
  • Settings → Backup: one-shot and periodic tar.zst of store/, retain count, restore (reloads the store), delete archive. Default schedule is every 24h, keep 7.

Build and test (developers)

  • ./build/run TTY menu: run, rebuild, prepare, or package. Builder is Podman-only; it writes build/dist/.
  • ./tests/run runs unit tests and Playwright smoke in Podman (no host Go/Node/Playwright).

Known limits

  • linux-amd64 only. No Windows, macOS, or ARM packages.
  • Runtime is the host binary. Podman is for building and CI, not for serving media.
  • Matchora is not a user-facing admin console; it binds 127.0.0.1:7680.
  • Matchora scan jobs are untyped, so anime prefer does not apply on those jobs.
  • Webhook item-type checkboxes include music labels (Album, Song); libraries themselves are only movie/show.
  • No plugin system. Metadata is Matchora only.