Releases: AlyShmahell/medora
Releases · AlyShmahell/medora
Release list
v0.0.2
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
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/. Runmedora --preparelater for ffmpeg/JS and Matchora’s llama.cpp. - bundled — slim plus vendored htmx, video.js, hls.js, ffmpeg, and Matchora’s llama.cpp.
- slim — binary, seed config, first-party static, Matchora helper. No
- After listen, Medora opens the UI in the browser when
DISPLAYorWAYLAND_DISPLAYis set (MEDORA_NO_BROWSER=1skips 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, overlayconfig.yaml, Matchora cache). Overlay YAML merges on top of the seedconfig/default.yaml. - Library roots:
MEDORA_MEDIA_PATHormedia.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: autoprobes VAAPI on/dev/dri(needs host Mesa/libva/libdrm). Fallback is softwarelibx264. 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
/registerto create the admin. After that,/registeris 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, plusGeneric. 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.zstofstore/, retain count, restore (reloads the store), delete archive. Default schedule is every 24h, keep 7.
Build and test (developers)
./build/runTTY menu: run, rebuild, prepare, or package. Builder is Podman-only; it writesbuild/dist/../tests/runruns 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
preferdoes 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.