Skip to content

Releases: Spameri/MediaLibDocumentation

Knivy 0.13.0

Choose a tag to compare

@Spamercz Spamercz released this 28 Aug 21:42

Pick library folders instead of typing them

Adding a folder meant knowing a path by heart, or going to the machine itself. The app now asks the machine what is on its disks and walks them — on the phone and on the television alike.

What a television needs, which a phone gets for free: the drives travel with every listing so another one is always a step away; one level at a time rather than an indented tree, because a remote gives no cheap way to read how deep focus has landed; and where focus was in each folder already walked is remembered, without which climbing back out of a large drive is unusable.

A typed path is still there. It is the route for a machine reachable only over SSH, and the one to use when the machine is off or its agent too old to be asked.

A folder holds whatever you put in it

The Movies/Shows chips are gone, and so is the badge repeating the answer back. What each file is now comes from the file.

Requires agent 0.12.0 on the machine for browsing; older machines fall back to the typed path.

Knivy 0.12.2

Choose a tag to compare

@Spamercz Spamercz released this 26 Aug 23:12

Subtitles keep their place in the film when a converted stream restarts.

A file the player cannot play as it is comes back re-encoded from wherever playback was asked to start, and its clock begins at zero — while the subtitle file is timed against the whole film. A seek on that path put the opening titles back on screen and everything after it was out by however far the seek went.

Knivy 0.12.1

Choose a tag to compare

@Spamercz Spamercz released this 24 Aug 19:39

Czech, all the way down. In 0.12.0 the app spoke Czech until something went wrong, and then explained itself in English — which is the wrong way round, because a failure is exactly when you need your own language. Every sentence the app writes about a failure is now translated.

Messages the server itself writes still arrive in whatever language the server chose: translating those here would mean guessing at words the app did not write.

Knivy 0.12.0

Choose a tag to compare

@Spamercz Spamercz released this 24 Aug 15:27

Czech. The whole app speaks it — every screen, button, empty state and confirmation — and you choose the language in Settings, independently of the phone's or television's own. The words match the website's Czech, term for term.

Subtitles look the same everywhere. The subtitle style you set here is your profile's, so a phone, a television and the website all draw subtitles the way you like them.

Subtitles inside your files. When your machine extracts a track that was inside a film, the app lists it once, by its own name, instead of twice.

The next-episode card gets out of the way. It sits in the top corner during the credits now, so it stops covering the subtitles — and it moves aside if you have subtitles at the top instead.

Waiting is explained. When your machine is busy converting something for somebody else, the app says so and waits, rather than reporting a failure.

Send a scene to the guessing game — from a title's page or from the player, on the phone and on the television.

Fixed: a home screen that could quietly lose its rows when one field of one shelf could not be read; and a dropped connection at the wrong moment could sign you out, or send something twice.

Agent 0.12.0

Choose a tag to compare

@Spamercz Spamercz released this 28 Aug 21:21

Pick library folders from anywhere

Choosing a folder meant going to the machine and finding http://127.0.0.1:8600 on it. This build answers the same question over the connection it already holds, so the folders can be picked from knivy.xyz or the app — it lists the machine's drives and walks them.

Directories only, never file contents.

A folder holds whatever you put in it

You are no longer asked whether a folder is for films or programmes. What each file is comes from the file.

Sidecar subtitles are collected for the first time

IsSubtitleFile answered false for every file it was ever given, so no .srt beside a film had ever been uploaded from any machine. One character in a lookup key. If you keep subtitle files next to your videos, expect them to appear after the next scan.


Pairing still happens on the agent's own page. Everything after it — folders, scans, pre-encode policy — is on the website or in the app.

Agent 0.11.2

Choose a tag to compare

@Spamercz Spamercz released this 27 Aug 20:07

No more full-library rescan after a download.

Finishing a download reported the new file and then rescanned the whole library anyway — every folder walked, the entire library reported back, on the command loop where nothing else is collected while it runs. On a household library that was twenty minutes of blocked queue after every download, to learn a path the machine had just sent.

The scan now happens only when the one-file report failed, which is exactly when it is worth having.

Agent 0.11.1

Choose a tag to compare

@Spamercz Spamercz released this 26 Aug 23:33

A finished download reaches the library at once instead of after a full rescan.

Downloading a file used to trigger a scan of the whole library — every folder walked, everything reported back — which on a household library put twenty-odd minutes between the download finishing and the episode being playable. The machine knows which file it just wrote, so it now names that one and the platform ingests it in seconds. The full scan still follows; nobody waits on it.

Agent 0.11.0

Choose a tag to compare

@Spamercz Spamercz released this 26 Aug 22:31

A console that stops reading no longer stops the agent, and an agent whose command loop stops asking for work restarts itself.

On Windows, clicking inside the agent's own console window selects text and suspends every write to it. Logging held one process-wide lock across that write, so the loop that collects work from the platform stopped — while the heartbeat, which logs nothing when it succeeds, kept reporting the machine healthy. One machine ran like that for thirteen hours with 151 commands undelivered and four downloads sitting at 0%.

  • The console is written from one goroutine only; a console that will not take a line loses it, and says how many it lost when it starts reading again.
  • The command loop records that it is still going round, and a watchdog restarts the agent when that stops — but never while it is busy handling work.

Agent 0.10.1

Choose a tag to compare

@Spamercz Spamercz released this 24 Aug 08:53

Fixes a playback refusal introduced by an over-eager check: while ffmpeg was still listing what it was about to produce, the agent could read the unfinished list as "this file has no picture" and stop a stream that was about to play normally. Seeing a video track now settles the question immediately; its absence waits until the list is actually finished.

Everything in 0.10.0 is included.

Agent 0.10.0

Choose a tag to compare

@Spamercz Spamercz released this 24 Aug 03:14
  • HEVC/x265 files play again in browsers: the converter always produces standard 8-bit H.264 now; 10-bit sources previously came out in a profile no browser decodes (sound over a black screen).
  • HDR looks right: HDR10/HLG/Dolby Vision are recognized and tonemapped to SDR when converting; an HDR original is never replaced by an SDR copy; 4K conversions scale to 1080p while the original stays untouched for direct play.
  • Fairer playback under load: container-only conversions no longer occupy the encode slots, a working graphics encoder raises how many conversions run at once, and a play that must wait queues visibly for up to a minute instead of failing at once.
  • Embedded subtitles: text subtitle tracks inside your files are now reported, extracted on request, and appear in the player's subtitle menu on every device.
  • Intro/outro detection (beta): season by season, in the background, only while nobody is watching; skip buttons light up on all devices.
  • Better failure evidence: conversion failures now carry ffmpeg's own words.