Product updates

What's new in Quven

Every release from the 0.1.0 foundation onward: the features, improvements and fixes that built Quven.

Changelog

Release notes

What changed in each build: new features, improvements and fixes across the server and clients.

v1.2.5

Quven 1.2.5

This release follows the macOS review of 1.2.4 and a report from the music beta. On macOS, quitting from the menu bar didn't complete, books opened on a card that declared the reader unavailable, and the strip that announces a pending release stayed hidden under the native title bar: all three are fixed, and a click on the Dock icon brings the window back. On every platform the performances shelf gains a Performers view, a subtitle you chose stays chosen, a sheet you opened in the player stays until you close it, and on Windows the crossfade between two recordings no longer drops to silence. It ships on Windows, macOS, Linux and Docker Server-only. Updating from 1.2.4 needs no further step.

New
  • Performers on the performances shelf. The hub has a second view beside the titles that lists who was on stage across the libraries you're looking at, with a portrait where the catalogue has one and initials where it doesn't, and how many recordings each name appears in. Pressing a name narrows the titles to that person, and the filter menu offers the same names as a row of its own. The list is built from what you wrote in a recording's editor, or from the first three names the match brought in where you wrote nothing, though a name you write replaces the cast for that recording rather than joining it. The search palette finds a performer by name as well and opens the shelf narrowed to them. On the desktop and in the browser.
Improved
  • A sheet you open in the player stays until you close it, with the X in its header or with the hide control, which folds the sheet and the chrome in one press. On Windows the chrome also stays folded after that press: the release of the click used to read as the pointer moving and woke it again.
  • Quitting the desktop with a film or a recording open ends at once. The server would wait out its whole shutdown budget, up to twenty seconds, for the stream the player was still reading.
  • A file the system refuses to read is named as refused in the scan report and the toast, with what to do about it, instead of being called damaged. Which folders does macOS refuse? Most often the ones the server hasn't been granted under Privacy & Security.
  • A round card, an artist's or a performer's, reads its state and kind in a row under the name, between it and the count. Nothing is drawn over the portrait any more.
  • Subtitle translation runs on a newer, faster model. An episode's subtitles that took a few minutes now take under one, and the translated track is the one selected when it arrives.
Fixed
  • Quitting from the menu bar on macOS. The icon's menu was being replaced on the way out, which macOS refuses, so the quit stopped before the server did and the error only surfaced a minute later, by which time the app would no longer listen. The menu empties itself now, the server stops, and the app leaves. If anything else fails on the way out, the app still quits; it isn't held by it.
  • Reading a book on macOS. The reader asked for its window before it had one, declared itself unavailable, and every book opened on the "not available here" card. So it waits. And a page that did get through was handed to the system as text with a character set attached, so the reader drew its own markup instead of the book; the page's type travels on its own now. The trailer window on macOS waited the same way, and does the same.
  • The release badge on macOS. The custom title strip was hidden because macOS draws its own window controls, and that strip is where a pending release is announced, so a Mac that should have been offered an update was told nothing at all. It stays under the native bar now, without the buttons the traffic lights already give you, and Command F opens the search palette as the sidebar says it should, so a Mac can learn of a release the day it ships.
  • A subtitle you chose during playback was taken back by the stored choice a moment later, on every roster the player re-read; a translation that had just attached went the same way. And a choice made in this playback now outranks the stored one.
  • Crossfade on Windows. Both recordings fell silent together and the next came in at full level nine seconds late, because every stream of the process shared one volume. The music player now opens an output whose volume is per stream, as the other platforms already had.
  • A music engine that fails to load, as on a Mac whose bundle it could not read, used to fail silently and stay failed for every later press. It reports the reason now, and the next press asks again, so a recording that wouldn't start can say why.
  • A publisher's collection that credits one person per volume doesn't spell all of them across the top of the series page any more. It names three and counts the rest.

v1.2.4

Quven 1.2.4

Performances are a library kind of their own. A concert, a night of stand-up, an opera or a play sits beside your films and shows on every client, and a recording that no catalogue knows can be described by hand. Album covers are drawn inside a jewel case, a cover can be written beside its file for other readers to find, and a duet the catalogues don't list is an act of its own instead of a row marked unmatched. It ships on Windows, macOS, Linux and Docker Server-only. Updating from 1.2.3 needs no further step.

New
  • A Performances library. Point it at a folder of concerts and specials and Quven reads each file as a whole recording or as one night of a run, the way it already does for documentaries, so a festival filmed night by night lands as a run with one entry per night while the concert film beside it stays a single title with its own poster and running time. The kind has its own sidebar entry, a hub across all of its libraries and its own filters, on the desktop and in the browser. And it is free on every plan.
  • Describe it yourself. A recording that no catalogue matched keeps its place, and the editor is the first entry on its menu: the title, the year, a synopsis, the day it was performed, the venue and who was on stage. Any film or series can carry the same details, and both detail pages show them under the title, so there's no need to open the editor to read them. What about a title that's still waiting for review? It keeps the ordinary entry, and no client offers a trailer on a performance.
  • Performances answer in the search palette, in the profile activity, in the watchlist and in your playlists under their own name, and a run can be told from a film there without opening it. The same goes for documentaries, and opening one from there lands on its own page.
  • Every album cover is drawn inside a CD jewel case, on the desktop and in the browser: on the shelf, on an artist's page, in the related rail and under Continue listening. The spine sits on the left and the cover keeps its whole square beside it. Nothing is cropped. A sheen crosses the window under the pointer, and Reduced Motion leaves the case still.
  • A cover can be written beside its file. Two switches under Settings, Automatic scanning, both off until they are asked for: "Save each book's cover beside its file" saves it under the book's own name, where another reader will find it, and "Save each album's cover in its folder" writes it as a cover image. An image that's already there is the one Quven trusts, and it's never replaced. Books that were on the shelf before the switch was turned on receive one as well.
  • Collaborations. A duet or an occasional line-up that no catalogue lists used to sit on the artist shelf as an unmatched row drawn with initials. Two acts or more are a kind of their own now, badged as a collaboration, with the members' portraits dissolving into one another and the artist page naming and linking each of them. Their albums read as one discography, newest release first.
  • Stop reading, stop watching, stop listening. Each of the three Home rails takes a title off itself from the card's menu before it's finished, and a book does the same from its page. And the eye in the heading still folds the whole rail.
  • Two artists can be joined. An association the server refused because another artist already holds that act now names the holder and offers to fold one into the other. The albums move across with the credits and the old spelling, so the next scan will resolve to the one that's left.
  • The browser's player has the episode picker the desktop has had, beside the subtitle control. And a long list opens on what's playing, or on the page being read, rather than at the top.
  • The controller mapper draws a PlayStation controller under the PlayStation names, with its own layout, instead of the Xbox body.
Improved
  • Lists that a large library fills draw only the rows on screen. Opening the Author filter on a shelf of tens of thousands of authors used to hold the application for minutes, and the book contents, the reader, both episode pickers and the folder picker were built the same way. None of them is built that way now.
  • An artist or an author carries the whole opening of their Wikipedia article instead of its first sentence, in the language you read in and credited as before. A long one folds to five lines with the rest a press away.
  • A comic in double-page mode turns one leaf at a time, the way a bound book does. A cover, a wide plate or a jump keeps the slide, though Reduced Motion animates nothing.
  • Crossfade opens its window by the time the next recording actually takes to sound, which it learns from the transitions before it. Over a slow connection the opening could consume the whole overlap, and the next recording would come in after the last had ended.
  • The book page reads better on both clients: the catalogue is named as a reader knows it, the change link stays inside the card, a one-page book says one page, and every name in the byline opens that author's page. The library kinds are six equal tiles instead of a row that wrapped.
  • A catalogue tab that lists nothing while the others answered says why it couldn't: busy, out of allowance for the day, refused or unreachable. Until now it read as an empty shelf.
  • Sorting a documentaries or performances catalogue offers the same orders on the desktop and in the browser, and a year order on the series lane lands on the first night rather than on the release.
  • Retry sits beside a search that failed, and not beside a refusal it can do nothing about.
  • Ebooks are a preview now, as music is. But until this release they were still marked experimental.
  • Grids and name shelves reopen where they were left when a card is closed, in the browser as well as on the desktop, and a filter submenu that's open takes its new counts and captions in place.
  • The update card no longer rests on a figure that's stopped moving while the package is being verified. It used to read as a hang.
  • On the desktop an artist page draws the bloom and the parallax the browser draws, and the play control no longer covers the portrait.
Fixed
  • An EPUB chapter is no longer named after a placeholder its converter wrote, such as the file name or "Unknown" in its own language.
  • A chapter that runs over several files places a reading position inside any of them in that chapter, instead of one or two chapters away.
  • A date a converter writes for a book whose publication it doesn't know used to send the match dialog searching for a year that never existed. It's read as no publication now.
  • A catalogue that keys a title in as the cover prints it, all capitals or wrapped whole in quotation marks, yields to the file's own spelling.
  • A series page opens missing places only where the numbering reads as a series. A handful of books filed under a reading list numbered in the thousands used to draw thousands of empty volumes.
  • A box set whose files an older version had filed as different works is read again at the next start, without a forced rematch of the whole library.
  • A server that updates before the cloud does asks again for the fuller biography instead of keeping the one line it received.
  • A book's credit follows the spelling its catalogue match bills, so the author line on the page opens the author page that holds the book, and a name you correct reaches the credits too.
  • A collection numbered in its name, such as a publisher's series followed by the volume's number, reads as that series and that place, where it used to become a series of one book each.

v1.2.3

Quven 1.2.3

This release covers more ground than any since music arrived. Books can be browsed by author and by series, music has identified artists of its own, and a film's editions are separate titles. Sorting and filtering work the same way on every shelf, folder watching is on by default, and a file a scan skipped can be repaired from the report. It ships on Windows, Linux and Docker Server-only. Updating from 1.2.2 needs no further step.

New
  • Book shelves by author and by series, on the desktop and in the browser. An author page carries a portrait, a short biography from Wikipedia in the language you read, credited to it, the books you hold and the works of theirs your library doesn't have.
  • Series pages list the volumes in order, add the volumes the catalogues know about, and leave an empty place where a numbered volume is missing.
  • Authors and series are search results now. They're in the palette, next to artists, and a name that's spelled two ways in your files is one result there, opened on the page the name leads to rather than on any single book.
  • Music artists: a counted artist shelf you can search, identities resolved against the catalogues instead of the tags, and an artist page with a description, a portrait and a discography you can sort.
  • Independent film editions. A theatrical cut and a director's cut are separate titles, each with its own files, watched state and playback position, on the desktop and in the browser, and the cloud won't confuse them either, so a profile that syncs through your account finds each edition exactly where it left that edition, not where it left the other one.
  • Optional music crossfade. It's off unless you ask for it. You can set it anywhere between two and ten seconds, and it works the same way on the desktop and on the web.
  • Batch actions on books and albums: read or unread, reading list, identify again, merge two copies of one edition, queue or add to a playlist, and remove. But a scan that refuses a whole batch says so once, not title by title.
  • A sort menu beside the filters on every shelf, with the same words on both clients. Books sort by publisher, year, category, language, last read and how much you've read; albums by genre, track count, label, last played and running time.
  • An All chip on every catalogue, so a kind can be browsed across all of its libraries at once. The sidebar entry opens the same view.
  • A reading rail on Home. Any Home rail can be folded to its heading, and it'll stay folded.
  • Metadata editor forms for books, for albums and for artists.
  • Folder watching is on by default. What about a share that sends no change notifications, such as SMB or NFS? It is compared against its last snapshot instead, and the switches that watch a library and scan it on a schedule have become one server setting, drawn in the same card on the desktop and in the browser.
  • A file a scan skipped can be repaired from the report. The repair is a durable job that survives a restart, and it writes a playable copy beside the original, never over it.
  • Comic and PDF pages fit the window, and a two-page spread isn't cut down the middle any more.
  • A library selector in the browser's toolbar on every grid.
Improved
  • Start-up reports every phase and a migration shows how far along it is, while a server with a large book library builds its search index once instead of on every start, which on a big library used to take minutes. Book text lives in its own database beside the library, though nothing about where your files sit changes. Your files stay put.
  • Book covers are looked for in the book's folder and in its opening pages, and ISBNdb can be asked when the printed ISBN and the title agree. And albums that came off a scan bare get their cover afterwards, from the folder they sit in or from the catalogue, without a second scan and without anyone asking for it.
  • Book identification reads the ISBN printed in the colophon, reads a calibre record beside the file whole, and won't accept one written for another book. Two spellings of one title count as a single work, and a volume number is read however the name spells it.
  • ISBNdb is asked in bulk, one request for many numbers. It stops before the daily allowance runs out.
  • Catalogue answers are cached for longer. Your own searches go ahead of the identification running in the background.
  • Multi-disc albums are grouped per disc. The playing disc is marked.
  • Manual matching keeps a choice a running scan refused and sends it again when that scan ends, so a book, an album or an artist matched by hand while a scan was running doesn't need matching a second time.
  • The desktop keeps the player and its statistics when the window moves between screens, Home rail spacing was corrected, and the continue-listening card resumes the pressing you were on.
  • The update card says it's verifying while a download reports nothing. It used to look stalled.
  • In the browser, a page fades in once it's laid out instead of jumping, and a name page loads on its own skeleton.
  • Reader preferences are kept on the desktop and written through a temporary file, so a crash mid-save can't leave an empty settings file.
  • The server log records the cause of every handled failure, and a write that finds the database busy is retried. Each database has its own write gate now, so writing a book's text no longer holds every other write for seconds at a time in the middle of a scan.
Fixed
  • An unreadable comic archive is closed and skipped. It no longer holds the file open.
  • PDF covers are rendered in a separate process, so a malformed file can't end a scan.
  • Misdetected audio files are read again, MP3 files in an unusual container are supported, and box sets run past disc 99.
  • A compilation tagged with a various-artists spelling such as V.A. no longer shows up as an act of its own on the artist shelf, and that includes the ones an older scan had already filed there, which no rescan would have repaired.
  • No series is created from a title a converter truncated, from a name cut inside a word, or from a book that names only its own volume.
  • An edition will keep its year when its publication statement is discarded.
  • An author credit whose Wikipedia page address contains parentheses resolves correctly.

v1.2.2

Quven 1.2.2

Most of this release is about books. A scan doesn't stop to ask the catalogues about every new book any more, so a big shelf can be browsed the night it's added, and Kindle files open in the reader. Music scans skip an album they can't read instead of stopping. This release ships on Windows, Linux and Docker Server-only, and updating from 1.2.1 needs no further step.

New
  • Kindle files open now. A MOBI or KF8 book without DRM can be read on the same pages as an EPUB, with its chapters and its search, and a book that names no chapters of its own gets them read out of its text. Pressing a chapter on the book page opens the reader right there.
Improved
  • A large shelf took long to appear because a scan stopped at every new book to ask the catalogues who wrote it, so a library of forty thousand files advanced at a few dozen a minute. The files now go on the shelf as soon as they're found and the books get identified in the background, though some covers may take a while to arrive.
  • A book's contents are grouped into what comes before the story, the story itself and what comes after. And an edition stored twice, say in two batch folders, joins the first copy as another file instead of showing up as a second book.
  • What if a catalogue is busy? The server waits for it and asks again instead of marking your books as unknown, and the answers it gets are kept much longer, so a rescan asks for far less.
  • Playback changed in three places. HDR10 stays on by itself wherever your display and browser can show it, a browser without HEVC gets a high-quality H.264 copy, and a file whose only problem is too many audio channels keeps its original video instead of being re-encoded.
  • A library can't be placed inside a folder that another library of the same kind already scans, because the files would belong to both and neither would show them. Quven names the folder and the library, in your own language.
Fixed
  • Music scans won't give up on an album they can't read. They skip it, keep going and say which files they refused. And an album that's already identified is described again from the release it matched.
  • A server running in Docker writes a lot less to its log, doesn't back itself up after every scan that changed nothing, and the web app stops asking it about updates it has no way to install. On the web, a shelf full of covers loads every one of them, where it used to drop the last few.

v1.2.1

Quven 1.2.1

The ebook reader was missing from the desktop app, and this release puts it back. It wasn't a setting anyone could have found: the page the reader draws is built when the app is packaged, and the machine that builds our releases wasn't set up to build it, so every desktop published since ebooks arrived shipped without one. A book that opened on a window saying the reader was unavailable was this defect, and updating fixes it.

v1.2.0

Quven 1.2.0

Your music is a library now, and it arrives as a preview: point Quven at your album folders and the covers land on a shelf beside your films, with a queue that follows you around the app. Ebooks are marked experimental and the browser reads them as well as the desktop. Two things go the other way and need Pro from here: driving the desktop with a game controller, and asking the server to write a subtitle from a film's audio. Neither was named on the pricing page, so nobody could weigh them when choosing a plan. Both are on it now, beside the note that names the nine things which will never move.

New
  • A music library. Quven reads the tags first, then the folder names where a file hasn't got any, and works out which artist and which edition each recording belongs to. Where does a cover come from? The file itself or the image beside it, and lyrics from an embedded tag or a lyrics file next to the track.
  • Album and artist pages on both clients. An album page draws its recordings, its editions and the files behind them; an artist page carries the rest of their work under the album you came in on.
  • A queue that doesn't leave you when you move to another page, with transport controls in the desktop bar and in the browser, a menu on every recording, file details from the recording's own row and playlists you can add to without interrupting what's playing.
  • A stored FLAC reaches a browser that can decode it the way you stored it. Nothing is re-encoded.
  • An album you keep in two folders reads as two editions instead of one list holding every track twice, and the panel naming them is what picks between them.
  • Music in the command palette: a square cover, the artist beside it, and a recording that starts where you press it.
  • Ebooks in the browser, marked experimental while the surface settles: the shelf, the book page and the reader itself. Pages are fetched as they're needed, so a large PDF opens without being loaded whole first.
  • A book says which volumes of its series your library is missing and how many books each of its authors wrote that you hold. A wrong match can be changed from either client.
  • Who's who: a spoiler-free list of the characters in a book, verified against the Cloud directory, holding its place as you read and admitting a character once they matter, so the list never names somebody the page you're on hasn't introduced yet.
  • A Readlist of its own, separate from what you saved.
  • Google Books joins the catalogues a book can be identified against.
  • Removing a library is a durable job with progress you can watch, pause, resume or discard, and the files will go only once the rows are gone, so a removal a restart interrupts picks up where it stopped instead of leaving half a library behind.
  • One strip reports a scan and a removal, a scan announces itself before it starts walking, and the report of what a scan skipped is offered wherever it can be opened, the browser included.
  • A pending release is announced in the desktop titlebar, with a card that says what's coming and stays usable while it installs.
Improved
  • Filters and orders draw one row now, wherever you open them. A long list of values can be searched instead of scrolled, each value carries the number of books behind it, and no shelf offers you a field in one direction only.
  • How finished a feature is shouldn't be a thing you have to guess, so it's written on the feature itself: music says preview and ebooks say experimental, on the sidebar row, on the shelf heading and in the reader. And a feature that has settled carries no badge at all.
  • On a Free server a controller press moves nothing, and the first press says so instead of leaving a screen that won't answer. The Gamepad screen in settings says what a pad can do here and what unlocks it.
  • Asking the server to write a subtitle from a film's dialogue needs Pro. But the work still runs on your own machine, and nothing is metered or sent anywhere. A track you already have plays on any plan, for every profile in the house, and a Free server can still read an image track, load a sidecar and burn one in.
  • The Pro card now names two things the plan already included and neither the tier card nor the checkout had said so far: the hosted web client, and a guest list of 25 people instead of 3.
  • Managed AI work now spends one weekly allowance shared across the servers an account has linked, instead of a count per server.
  • Desktop listening through your own VPN or reverse proxy stays free, even outside the house, although the hosted web client and the managed relay, which carry your music to a browser or across a network you don't run yourself, require Pro.
  • A book's language is read from its words instead of from the tag it carries, and a document a converter signed with its own account is no longer believed about who wrote the book.
Fixed
  • A title opens on the best file it holds. Not on the first name in the folder.
  • An episode row now offers to add the episode to a playlist, as a film's row already did.
  • The account portal showed the relay's weekly fair-use cap as 537 GB against a plan that promises 500; the cap is 500 GB now.

v1.1.22

Quven 1.1.22

Seasons get their own posters. The edition filter has stopped offering editions nobody has. Three controller buttons in the player didn't do anything at all, and now they do. On Docker, a subtitle Quven writes for you lands beside the film again. This one ships on Windows and Linux, plus Docker Server-only. There should be nothing to do but update.

New
  • Seasons get their own posters. A series had one and every season showed it, so a box set where each season carries its own art would look like the same image over and over, which isn't much of a shelf. You can pick from what the provider holds for that season, or upload a file of your own. Clearing it puts the catalogue's back. Desktop and web keep the control in the same place, on the season header.
Improved
  • The edition filter used to list every edition Quven knows how to read. Most people hold two or three of them, so most of those rows filtered a library down to an empty page. Now it lists what your libraries actually hold, and a label Quven doesn't recognise is offered the way your files write it.
  • Three controller buttons in the player didn't do anything at all. A plays or pauses when nothing else has the focus, and X and View open the chrome on its play control. That's also how a pad can reach the menus for subtitles and audio, or the settings button.
  • What happens when a mount disappears while a scan is running? Every link under it breaks at once. In a library built out of links that meant a row for each subtitle and each cover, with the films you needed to look at lost somewhere inside them. The report carries the media and the folder links now.
Fixed
  • On Docker, a subtitle Quven writes for you lands beside the film again. The media folder came in read-only, so that copy was refused and you'd only find out from a warning in the server log. The subtitle itself was always kept and it always played, so what stayed empty was the folder next to the film, which is where you would go looking for it after moving that film to another machine or handing the folder to somebody else. That folder must be writable by uid 10001, and if you would sooner the server never wrote to your library, put QUVEN_MEDIA_READ_ONLY=true in your .env and the mount stays closed.

v1.1.21

Quven 1.1.21

If your library holds symbolic links, Quven walks them now. It used to step over every one, so a folder full of links looked empty and the films behind them never arrived, which is what anyone running Unraid, or a Docker setup pointed at an rclone mount, had been living with since the first release. The rest is smaller. Mostly it is the badges, the ribbons and the messages that were telling you the wrong thing, or telling it only to the desktop. This release ships on Windows, macOS, Linux and Docker Server-only.

New
  • Links in a library are followed wherever they point, files and folders alike. A folder is entered once however many paths lead to it, so a link pointing back at its own parent will finish instead of running until you stop it, and one file stays one film. What should happen when Quven can't follow a link at all, which usually means a container that doesn't mount what the link points at? It goes in the list of files the scan skipped, with the reason.
  • The web app lists the files a scan skipped, per library, which until now only the desktop would show you. Each row carries the reason beside it, so forty links pointing at a folder your container never mounted say so on all forty lines, and you should not have to guess which folder went missing.
Improved
  • Every arrow key moves the search palette. Left and right used to do nothing at all, and the results are drawn as cards now, so a title keeps the poster you recognise it by instead of a thumbnail the height of one line. Both the desktop and the web app answer the same presses.
  • Rotten Tomatoes and Metacritic wear their own marks on the web, as they already did on the desktop and the television clients. The web drew a thumb for both Tomatometer scores, so a fresh film and a rotten one said exactly the same thing to anyone reading the row.
  • Closing Quven lets the server it runs shut down properly. It used to wait ten seconds and then kill it, and a scan cut that way had to be replayed from the beginning next time.
  • Choosing a folder to scan won't refuse one you reached through a link. The scan will read it, so the two should agree.
Fixed
  • Custom ribbon artwork stopped appearing on the web after a while. Your server's list of them was read once, and a refused read was recorded as "this server has none", so the packaged ribbons came back and stayed there until you reloaded the page.
  • A server that's simply switched off now says so in your own language, and one that is merely busy says that instead. The message came from the relay, in English, and it would tell you the target server was not connected.

v1.1.20

Quven 1.1.20

Scanning a library is quicker, and quieter about it. A scan used to open a connection for every read and look each file up inside the query that walks a whole title. It now holds one connection for the length of its own work and can answer that lookup on an index built for it. A folder whose catalogue marker was rejected is resolved once instead of once per episode, and the totals a scan reports are its own, not everything the server's done since it started. This release ships on Windows, macOS, Linux and Docker Server-only.

New
  • A season takes the poster you choose for it. You can upload an image of your own or pick one of the posters the catalogue published for that season, and it stands on the season's page and in the row of seasons on the show. Restore puts the catalogue's back. The poster you chose for the series is a separate choice, and nothing here will touch it.
Improved
  • Choosing a folder is a screen now, where it used to be a dialog. It opens on the places you can name, your drives and the one you looked at last, in four bands you should be able to read at a glance.
  • A controller walks the whole page. The directional pad moves between what's on screen and scrolls when there's nothing that way, and the first press lands on the title at the top, never somewhere in the chrome.
  • The preview beside your search results carries what TMDb, IMDb, Rotten Tomatoes and Metacritic each said, drawn the way the title's own page draws them. The synopsis won't be cut short while there's room under it, and you'll see the whole of it if it fits. Why should you need a steady hand on a mouse to set the split? The divider between results and preview answers the arrow keys too.
Fixed
  • The control that unlinks a server sat on top of the badge telling you whether that server was online.
  • The search box in the sidebar ran edge to edge while every link under it was inset.
  • Dragging the divider left the row highlight behind: it kept drawing across the cards at the width it had before you started.
  • An update won't wait for playback or a library scan anymore. Playback stops. If a scan was running when Quven restarts, it can pick up again once the server returns, and the update window keeps the language you chose.

v1.1.19

Quven 1.1.19

The controller's Back button now leaves the screen you are on. It closed a dialog or the search palette before, and did nothing once there was nothing open, so on a page reached from the sidebar it was a dead button. It steps back through the navigation now, and stays quiet on the settings card that is reading your presses, so assigning a button cannot walk you off the screen that is assigning it.

v1.1.18

Quven 1.1.18 Dolomiti: every word you type, in every name a title carries

Search is the change you will notice first. Every word you type is looked for in every name a title carries, in any order, across all your libraries at once, and what comes back is grouped by where it was found. The palette holding that search opens on your own library now rather than on a list of four commands, and it opens in one theme: the light variant is gone, and everything Quven draws is drawn dark.

New
  • The palette opens on what you were watching and on titles ranked against the ones you have finished, each card carrying the reason it was offered. The commands sit beside them as tiles, and a film plays from there without opening its page first.
  • The preview beside the list carries the tagline, the score, the certificate and the billed names, which the catalogue already knew and nothing drew. Drag the divider and the width you chose is kept, on the desktop and in the browser alike.
  • Controller buttons are assigned on a drawn pad instead of a column of dropdowns: one point per button, a line naming what it does, and one panel for whichever point is open.
Improved
  • Quven ships one theme, and it is the dark one. The product has always opened dark and every accent was written for it; the light palette was a second set of colours nothing else was built around. A preference written before this is ignored rather than carried over.
  • A title search is answered from an index rather than a scan of every row. Every word must be found, as a word or as the start of one, in any order and in any name the work is known by, and accents fold, so a query typed as Amelie answers with Amélie. What a viewer loses is the middle of a word: chi still answers with Chihiro, hiro no longer does.
  • A search that could not be run says so, instead of reporting a catalogue that holds nothing.
  • What one catalogue leaves empty is filled from the others, field by field, on the work, the season and the episode alike. Automatic means TVDB for a series and TMDb for a film, rather than TMDb for everything.
  • Changing a library's metadata language reads the catalogues again. That is what fills a language none of them had ever been asked for, and each library is read on its own so one failure stays where it happened.
  • A folder that names a catalogue identity is matched on it and the title search is not run at all. A release tag in brackets is no longer read as one of those names.
  • Refresh and unmatch are offered on the association a title actually holds, so a series described by a catalogue other than TMDb keeps both entries and is marked in the tab that named it.
  • A manual match on a long series is given the time it takes. Rebuilding a 1217-episode tree ran past the deadline the ordinary reads carry, and the abandoned request took the server's work with it.
  • The signed Docker Server-only image ships with this release for Linux AMD64 and ARM64, with versioned Compose bundles, Cosign verification and SPDX SBOM attestations.
Fixed
  • An action refused because a scan is running is answered by a message you dismiss, with the reason and what to do about it. It used to be a notice that faded: a tester could report only that something appeared and disappeared too quickly to photograph.
  • Removing a library while it is being scanned cancels the scan and removes the library.
  • The strip that replaces the season row marks the season you are on.
  • A subtitle cue is timed the same way whichever of the two converters reads it.

v1.1.17

Quven 1.1.17 Dolomiti: a series named after a year keeps its name

A series named after a year keeps its name. Quven read the number as the year it was looking for and discarded the title with it, then refused the file for naming no episode, which the name had carried all along. Three failures of that kind close here: a title the library would not take, an episode described by the wrong season and a filter that narrowed nothing, together with a log that can be read again.

New
  • Every line of Quven carries a name. This one is Dolomiti, shown in About and in settings beside the version number, which remains the identifier updates and support work from.
  • A linked server can be removed from an account on the surface in front of you, whether that is the browser, the desktop or a phone. It leaves the list and stops appearing on the other devices.
Improved
  • The logs are considerably quieter. What a scan writes for each episode it resolves and each file another catalogue reorders is detail, and it now sits behind the debug level rather than burying the lines worth reading. A page closed while it loads is no longer recorded as a failure of the server.
  • An episode described by TVDB is read in your language. The catalogue answers a whole ordering at a time rather than one episode, so the series is read once for each language and held while the scan works through its files.
  • The film list is read as two queries rather than one. Each film used to return multiplied by its files and its identifiers, so a page of two hundred titles arrived as thousands of rows.
  • The Docker guide names the key an NVIDIA host needs. It described gpus: all while the published profile has carried runtime: nvidia since 1.1.13, which sent readers looking for a line the file does not contain.
Fixed
  • A series named after a year enters the library. 1923, 1883, 1917: the title is kept, and where the folder declares a year in brackets, that is the year taken.
  • An episode numbered within its season no longer takes another season's description. A file named Episode 3 under Saison 02 offered that 3 to the catalogues as an absolute index, so a missing season pair answered with the third episode of season one, its title and its plot.
  • Quality and edition filters narrow a smart-television catalogue. The chosen value was written to a field nothing reads, and the grid stayed as it was.

v1.1.16

Quven 1.1.16 Dolomiti: one lane for remote access

Remote access carries one transport. The peer-to-peer lane is gone from the server, the web client and the shared core, and with it the port advice and the promises the interface made about it: a linked server is reached over the same HTTP and WebSocket connection everything else already used. A tunnel nobody is watching gives its slot back instead of holding it, and a television that loses the relay finds it again on its own.

New
  • A television reads the documents an account is waiting on and accepts them where it stands, in the language it is set to, and sign-in reads in that language from the code screen to the closing line.
  • Managed AI matching asks more than one provider. Where the first cannot answer, the next in the order is asked, and one that is switched off is not asked at all.
  • A detail page names the catalogue its words come from, so two identifiers no longer leave you guessing which of them wrote the page.
Improved
  • A folder that names a catalogue is answered by that catalogue. A series written {tvdb-...} enters the library with TVDB's identity, prose, seasons and episodes, and keeps the corner ribbon, the first-air year and the genres it used to lose. A refresh or a re-match stays on the catalogue that holds the identity instead of quietly moving the title to another one.
  • The words a title is stored under are asked of the catalogue that describes it rather than only of TMDb, so a film or a series matched elsewhere reads in your language down to its seasons and episodes wherever that catalogue carries them.
  • A translated subtitle is written beside the media as SubRip, which any player reads.
  • Seasons are drawn as posters, with their own artwork where the catalogue carries it.
  • The manual-match dialog offers the folder a work sits in as the search term, lists only the catalogues that carry that kind of title, and opens on the match a title already has whichever catalogue named it.
  • An idle media tunnel is probed and released when it stops answering, so a relay that filled with abandoned sessions serves the next viewer instead of refusing them.
  • The relay log carries a line per session rather than one per connection.
  • Google and Apple sign-in are described in the privacy policy, with what each of them carries.
  • The signed Docker Server-only image ships with this release for Linux AMD64 and ARM64, with versioned Compose bundles, Cosign verification and SPDX SBOM attestations.
Fixed
  • The directional pad always has a way out. A control that answers arrows keeps them along its own axis only, so the star rating in a detail hero no longer holds the focus.
  • Back on a television no longer unwinds the library behind the consent gate, and a document waiting there is announced once rather than three times.
  • A re-match the server refuses says so instead of failing quietly.
  • Unmatching a title drops the translations the association wrote, so the page goes back to the name on the folder rather than keeping the previous work's.
  • A film is no longer offered catalogues that list no films.
  • A show with one season reads “1 season”, and a lifecycle the catalogue does not report is left out rather than printed as “Unknown”.
  • A packaged desktop reports the version it was packed with rather than a local build counter.

v1.1.15

Quven 1.1.15: in the language you read it in

Quven reads back in the language you are reading it in. Titles, country names, the window chrome and the names TVDB and AniDB carry now follow you rather than whichever identifier a catalogue happened to store first. The catalogue criteria were rebuilt around that: the filter sheet is a drill-in menu, quality and edition hold more than one answer at a time, and the header goes back as a whole instead of one step at a time.

New
  • A gamepad's buttons do what you say they do. Each one is assigned on its own row in settings, a button left with no action stays out of the way, and the directions keep navigating so there is always a way back to the screen that assigns them.
  • Films and series can be told which catalogue describes them. The chosen one writes the work, not whichever identifier arrived first, and anime has a lane of its own; where that catalogue says nothing, the answer falls back rather than emptying the page.
  • Quality and edition take several values at once, and countries are held as a set. The whole header goes back in one press rather than unwinding a menu a level at a time.
Improved
  • Every window is drawn in the reader's language and stays there. A title carries the name that language knows it by, TVDB and AniDB included, and a catalogue ordered A to Z is ordered by what is on screen rather than by what the database stored.
  • Country names are ordered by the name they show rather than by their code, so the list reads in order in every language.
  • A catalogue can be sorted by when a title was added, beside the rows that already said when it changed.
  • Search reaches original titles, so a film or a series answers to the name on its poster as well as to the one your library speaks.
  • The documentaries series lane is offered every capability the page holds rather than the first six.
Fixed
  • A second episode's name no longer costs its own file the match. Two episodes in one file are named in the row without either one displacing the other.
  • The manual-match row printed a title underneath itself.
  • A library newly chosen kept the editions it no longer holds.
  • An edition label longer than the column could hold was dropped in silence; it is refused where it is entered instead.
  • On the television the film branch closed on a route its episode sibling had already closed, and a press that ticked an option could leave the keyboard behind on the row above it.
  • The desktop window stayed attached to a preferences store it had opened, and the gamepad rows read wrong after a language change.

v1.1.14

Quven 1.1.14: a tester's evening, and another way in

Almost all of this began as one French tester's evening. He matched a series by hand and then could not undo it, the filter chips on a narrow window covered the row they had wrapped over, and a playlist would not play from the entry he picked. Those reports set the shape of the release. Beside them an account can now carry a Google or Apple identity, a trailer can be asked for in the language you read, and a library can be rescanned one folder at a time instead of whole.

New
  • Google and Apple sit beside the Quven password now. The link is another way in, never a second account: the Quven email stays the login and the contact address, and one provider identity belongs to one account. Where the credentials are absent the rows are simply disabled, rather than sending anyone into a redirect that goes nowhere.
  • Trailers come in English, Italian or French. When the catalogue holds nothing in the language asked for, the answer names what it fell back to instead of passing English off as the choice. The desktop remembers the language for the run; the browser remembers it for next time.
  • A rescan can be pointed at a single folder. Only that subtree is read, so files elsewhere are neither removed nor looked at again, and the unreadable ones already recorded outside it survive the pass untouched.
  • Episode metadata reads in English, Italian or French, chosen per library, and falls back field by field rather than all at once.
  • Films and series take their automatic catalogue separately. A house that trusts one provider for cinema and another for television can finally say so.
  • A gamepad drives the Windows desktop. Full screen has a button on the title bar now, beside F11.
  • One file holding two episodes is carried as the run it is, from the scanner through to every client.
Improved
  • Every catalogue criterion lives in one Filters panel, at any width, instead of folding away only once the toolbar runs out of room. Sort, search and selection stay outside it and stay immediate, and opening the genre menu inside the panel no longer closes the panel around it.
  • Playlists and the watchlist are drawn at the scale the rest of the surfaces use. The watchlist pages twenty-four at a time, and nothing crosses a page twice or falls between two of them.
  • Subtitles Quven produces are written beside the media they belong to. One an older version left in the wrong place is repaired the first time something asks for it.
  • The 8K ribbon is drawn for each corner with its own geometry rather than mirrored from the other, so the text reads the right way round on both sides of the poster.
Fixed
  • A title matched by hand could not be unmatched. The override the operator had set was the very thing refusing the request, no client offered a way to clear it, and the only move left was another manual match.
  • A copy stream is cut where FFmpeg cuts it. The map that predicted those cuts had been reading decoded frames instead of the packets the muxer acts on, so a seek on a direct-played file could land seconds from where it was asked for.
  • Subtitle timing holds over the relay as well as off it, and a stream whose geometry arrives incomplete is refused instead of served against the wrong clock.
  • A television that has finished a title refreshes what it had cached before it leaves the screen.
  • Relay tokens no longer reach the server log.
  • A playlist plays from the entry that was picked, and an episode inside one says which series it belongs to.
  • On a narrow catalogue the pressed filter pill no longer covers the row it had wrapped over.

v1.1.13

Quven 1.1.13: the library on the television, and an eye on the server

Most of this release went to the television. The library there carries its criteria on the header line instead of behind a sheet, the remote reaches everything it draws, and a person's screen holds the half of itself the desktop already had. Away from the set, a Plex import survives the request that started it, an operator gets a tab that says what the server is doing right now, and a poster says how much of a series is left to watch.

v1.1.12

Quven 1.1.12: read by something other than a person

Quven gains a documented integration API, generated from the routes it describes, that a dashboard can poll and Grafana can scrape without an exporter in between. Closer to the screen, a poster carries the ribbon an operator draws on it, catalogues sort and jump by the titles you actually see, and a film whose file name carries a date stops being mistaken for an episode of something.

New
  • The integration API has a published reference. Six read-only routes (server, libraries, statistics, sessions, history and metrics) are generated from the code that serves them and rendered beside the guides, so a page cannot drift from the surface it documents. Each read answers with a weak ETag and a 304 to a caller that already has the body, which is what makes polling one of them every few seconds reasonable.
  • The metrics route speaks Prometheus. A Grafana panel reads the installation directly, with no exporter between it and the server, and every label is escaped: a library name is the operator’s own text, and a newline in one would otherwise invent a metric.
  • An administrator can read the whole installation’s viewing history, and a dashboard tile can draw the poster of what is playing now. The history says what was played and when; it never says who watched it, and neither do the sessions.
  • A poster can carry a status ribbon. An operator draws it, picking from one list of lifecycle labels in the language the shell is in now, and a viewer moves it to another corner or asks it to stop moving. It is hidden entirely on a server with nowhere to store artwork.
  • Choosing a poster by hand offers every official one a title has, four to a row, in more than one language, each named rather than left to a bare thumbnail. The row says which file is under match and which one already is the match, and refreshing a title restates its alternative titles and production countries instead of emptying them.
  • A library folder is picked on the server. The picker used to browse the machine running the client, which is the right answer only when they are the same machine, and a typed path the server’s filesystem refuses now answers as a bad request rather than as a fault.
  • The alphabet rail lands where the server sorts. A letter jump supersedes the page still in flight rather than queueing behind it, a letter after Z has a bucket of its own on the television as well, and both documentary lanes land on a letter or neither does.
  • A television viewer can say or type a title instead of walking an alphabet with a directional pad.
Improved
  • Catalogues are ordered by the titles they put on screen. The order is decided where the query is written rather than after it, so an Italian library no longer opens its A–Z on the English titles it is not showing, and the quality and dynamic-range filters offer the rungs the server will actually answer.
  • A film matched onto a short film that shares its title is offered the film it can be. Title and year alone cannot tell a ninety-minute feature from an eleven-minute short, so the duration decides: the runner-up takes the match when its declared runtime fits, and where nothing fits the title is still marked for review rather than accepted.
  • The consent that gates product analytics is measured in elapsed time rather than against the wall clock, a switch that decided nothing is gone, and the home hero stops refetching every eight seconds while someone reads it.
  • The relay is drained on the way out and from the state where its port is still open, so a deploy restarts it instead of leaving a server that answers and forwards nothing.
  • Pausing records where the film stood, whichever way it was paused, and a title finishes against the file that will actually play.
  • The Plex import reads a library through both channels and merges what each can see, asks each library only for what it holds, and stops offering rows it would never create.
Fixed
  • A film whose name carries a release date was refused by a Movies library. “(2016-02-13)” reads as season 2016, episode 20160213, which is right for a daily show and wrong for every film named that way. The same date now ends the title before the catalogue is asked, so the query carries the film’s name rather than the date and the title it also carries in another language.
  • Opening a second library replaced the menus of the one on screen, and an edition named All cleared the filter it was supposed to apply. An edition that matches nothing answers with nothing rather than with everything, and one row answers for every way people spell the same edition.
  • The duplicate report called one film listed under two titles two films, and the divergent-files report listed guesses at what it had found instead of answering.
  • The setup wizard printed a secret and pre-empted the better channel to deliver it.
  • Two catalogue reads were reported by the database layer as unpredictable on every run: the library list joined three collections row for row, and the statistics aggregate took an arbitrary row from an unordered set.
  • A subtitle translation that finished could cut itself off half way through attaching, and the notice it raises could not be reached on a television.

v1.1.11

Quven 1.1.11: the television grows up

A Smart TV stops being the client that shows the least: it gains a settings screen, a catalogue you can sort and filter, playlists worth looking at and a player behind one control instead of seven. Away from the set, a series continues where you actually stopped rather than at the first episode you skipped.

New
  • The Smart TV client has settings. It reports the account the set is signed in as and the servers that account reaches, offers the library statistics to an administrator, and carries the presentation choices: stillness, and the two switches that hide the Spotlight carousel and the “Needs attention” rail. Neither television platform lets a viewer ask its operating system for reduced motion, so until now a set had no way to ask for stillness at all. Nothing there administers the account, because linking and billing aren't things anyone does with a remote.
  • The television catalogue can be sorted, filtered and pointed at a library. It used to open one library in alphabetical order with no way to change either, so a server holding two film libraries put the second one nowhere at all. Library, order, quality, dynamic range, edition and genre are two presses from the Filters control.
  • Catalogues filter by edition, in the browser and on the desktop as well. The options are the labels your selected libraries actually hold rather than a fixed vocabulary, so a library that marks no editions offers no filter.
  • The television player hides its options behind one control. There were seven discs along the transport row, three labelled and four not, and nothing said what any of them was on. One menu now carries a line per thing this playback can change (season, quality, audio, subtitles, speed, shape and the diagnostic read-out), each reading what it currently stands at.
  • Playback speed and a forced aspect ratio reach the set on the same ladders the desktop and the phone offer, and the season sits across the foot of the picture, so changing episode no longer means leaving the player.
  • A television viewer can rate a title, file it in a playlist, read every past viewing of it, open the reviews other people wrote, and see what a chosen edition actually is rather than picking a copy blind. Pressing the star already given takes the rating back, which is the only way to undo a vote with a remote.
  • Playlists on a set have a grid and a sleeve of their own and can be reordered from the remote, a profile can be renamed and given one of the eight faces every other client draws, and the titles a library could not place have a rail at the foot of the Home.
  • Your own rating sits in the score row beside what the catalogues think, as the one score there you can change. A title you had rated used to look exactly like one you had not.
  • The live playback dashboard leaves the settings tab nobody found and becomes an Activity row for administrators. It names the client and the device behind each session, whether the viewer is on this network and at what address, and reads each track as source through delivered form, so a transcode is visible as one.
  • Sharing a server stops at three guests only on Free: Pro carries twenty-five, Max fifty and Lifetime a hundred. The share card says, where the invite is about to be sent, whether your plan carries the relay your guests would arrive through.
Improved
  • A title's action row holds what you opened the page to do: play, watchlist, trailers where there are any, and a menu. It had been growing a pill per sheet until eight controls wrapped onto a second line and pushed the synopsis under the fold.
  • A relay that refuses a server is no longer reported as a server that is offline. An account that no longer links the server, or a plan that no longer covers remote access, says so and names what to check, instead of sending you to look at a machine that is running perfectly.
  • The container healthcheck stops writing a third of the log. A tester's day of server logs was 8,946 lines and 2,882 of them were the healthcheck reading the same route every thirty seconds. Only its successes are quieted; a failure reaches the log exactly as before.
  • The subtitle tab lists every source a file carries even where the stream cannot switch it on, with the reason beside it. A film whose only subtitle is a DVD bitmap used to be told it had none while the create tab listed it.
  • A subtitle you asked for turns itself on as soon as the player has it, on the phone and on the television as it always did in the browser, and the notice names the track now playing rather than offering it.
  • A refused library backup says who refused it and how big the request was, instead of twelve identical lines a day that name neither.
Fixed
  • A series sent you back to an episode you had skipped. Every client answered “what plays next” with the first episode carrying no watched stamp, so a viewer halfway through episode ten who had skipped episode seven was offered episode seven. It happened on the desktop, in the browser, on the phone, on both television clients and in the Up Next rail. Playback also became watched only at the file's final second, so an episode whose credits you skipped stayed unwatched forever. A title finishes at 95% now, and continuing means the episode you left partway through.
  • A show opened on the first season not fully watched, so a viewer three seasons in landed on a gap left behind in season one. Opening an episode from a card could also resume twenty seconds before the end, because the page handed the player a position the player then capped somewhere else.
  • Bonus files were counted as editions of the film or episode that owns them. The duplicates filter answered with every title that owns a trailer, a 4K trailer ranked a 1080p film as 4K, and a bonus added years later presented its film as freshly added.
  • A series stored with genre names but no identifiers answered no genre filter at all, and the repair written for it needed a TMDb identity that a series named by another catalogue does not have. The names resolve on their own now, with no provider call.
  • A profile's chosen face was ignored on a television, which painted a bare initial for a choice the desktop, the browser and the phone all honoured.
  • Signing in on the desktop could remove a server the sign-in had not added, the catalogue described the library you had chosen as a filter you had applied, and a review card could overlap the one beside it or draw an empty star styled as a full one.

v1.1.10

Quven 1.1.10: a server other software can read

A Quven server can now hand a read-only key to software you did not write, a title that exists in more than one cut offers the choice next to Play, and several libraries that scanned to nothing or filtered to nothing do neither any more.

New
  • A server can issue keys that third-party software reads it with. Dashboards and status boards had no way in before: the only credential a server accepted belonged to a person. A key is named by you, revocable, and read-only by construction: it can never issue another key, and nothing that changes anything will accept one. It reports the server, the libraries and their counts, and the sessions in progress; it does not report the folders your libraries live in, and a session says what is playing without saying who is watching. Keys are issued and withdrawn from Settings on the desktop and in the browser.
  • A film or an episode stored in more than one version offers a Versions button beside Play. It existed already, buried in the overflow menu, where a tester found it by accident after asking for it; a multi-file episode now carries the same control in its show and season rows.
  • Two thousand titles on a television are no longer reachable only by holding a direction. An alphabet down the side of the catalogue jumps straight to any letter and lands on its first title, and it works against servers installed long before it existed.
  • Trailers play on Smart TV sets, listed with their stills, and where the set has an application that can take the video the hand-off is offered by the name the set itself uses.
  • Smart TVs show what TMDb, IMDb, Rotten Tomatoes and Metacritic think of a title, each with its own mark. Those scores had been reaching the server all along and neither television client drew any of them.
  • Quven is listed in the Unraid Community Applications catalogue, as a template over the published image rather than a separate build.
Improved
  • A server that cannot write to its data directory says which path, which user it is running as, and the exact command that fixes it. It used to die on a stack trace naming a path and nothing else, which is the first thing a container user would have seen.
  • Long text stops being cut with no way to open it: your own review in the browser and on the phone, and an episode synopsis in a season list. The way out appears only when something was really cut, measured on the text rather than guessed from its length.
  • When a metadata provider is down, deferred films no longer starve the deferred series behind them. Films took the whole retry batch and were listed again on every following pass, so with enough of them a series waited forever while the summary reported everything drained cleanly.
  • The library guide documents the {edition-...} marker for the first time, in both languages, including on episodes. The case that prompted it was a series shipping a colour cut and a black and white one that the catalogue lists as two shows.
  • The licences of the code your own browser is running are readable without being an administrator.
Fixed
  • The genre filter on the series catalogue matched nothing, on every installation. Shows were stored with their genre names but not the identifiers the filter compares against. New matches store both, and a pass after startup repairs the shows already in the library.
  • A library whose folder was called Shorts, Other, Bonus, Scenes or Trailers scanned to nothing: those words mark bonus content, and the scanner was reading them in the name of the library itself as well as in the folders beneath it.
  • The audio language chosen for a series stopped being offered from the twenty-fifth episode on. The lookup read the two dozen most recent choices and only then searched them, so setting the audio once and afterwards only touching subtitles pushed that choice off the end.
  • Bonus material beside a film in a large library was logged as belonging to nothing: the search for its owner read one page of results before narrowing them to the folder, so the only real owner sorted past the end.
  • The versions button on an episode did nothing at all when the server couldn't be reached. No dialog, no message. A failed read and a title that genuinely holds one file used to look identical to the client.
  • Renaming a file kept the library from ever settling, so every automatic scan afterwards waited out its longest timer instead of starting when the disk went quiet.
  • Restoring the same backup twice could attach a file to a different film each time, where the same file existed in two libraries.
  • A rename typed into a library card was lost, with nothing said, if any other request happened to be in flight.
  • Two library folders where one contains the other imported the same file twice, and the losing half of that race shut down the whole removal pass for that scan.
  • A making-of arriving beside a film could inherit the identity of a feature that had just vanished, when the two shared a size, a timestamp and an extension.
  • Smart TV sets older than the client supports opened to a blank screen. They now get a message they can read, in their own language. Two builds meant to replace one another also arrived as the same version, because the packaged manifests carried a fixed 0.0.1.
  • Every film opened from a library failed on Samsung sets: the catalogue guessed film against series from a field this server does not send, so every film was requested as a series and answered with a 404.
  • On LG sets the pause key did nothing, the streaming attribution and trailer search opened nothing at all, and the pointer the remote drives moved over the screen without carrying the highlight with it.

v1.1.9

Quven 1.1.9: the choice comes back

The audio track and the subtitle you pick are kept by the server and come back on every client and on the next episode, everything Quven translates is written beside the film it belongs to, a title carries the extras that shipped with it, and a server can be shared with the people you watch with.

New
  • The audio track and the subtitle you choose are stored per person and per file, so the next time you open that file it starts on what you were watching, whichever client you open it on. Playing without subtitles is a choice of its own and is remembered as one. Picking a language on one episode says what the rest of the series should open in.
  • Every subtitle Quven produces, whether translated, transcribed or saved from the editor, is now written next to the video as well as into the server's own store, so a film moved to another machine or opened in another player takes its subtitles with it.
  • Extras that sit beside a title, such as featurettes, deleted scenes, interviews and the making-of, are attached to the film or the show that owns them instead of being catalogued as films of their own, and a Bonus rail on the detail page lists them on the desktop, in the browser, on Android and on iOS. The three folder layouts Plex uses are read as extras, and a trailer is served in your own language where one exists.
  • An owner can share their whole server with up to three guests by email. A guest signs in with their own Quven account and keeps their own watch state, and an invitation nobody answers stops holding its seat.
  • Every season pill says how many episodes the season actually holds, on all five clients, and an episode that exists in more than one version is offered through the same editions rail films already had.
  • A Smart TV client for Samsung, LG and VIDAA sets: Home, catalogues, search, details, playlists, watchlist, settings and a player built for a remote rather than for a mouse. It is not on the television stores yet.
Improved
  • Continue Watching resumes where it says it will. The position reached the rail but not the player, and a transcode starts at its first segment unless it is told otherwise, so a film picked up an hour in was re-encoded from the beginning to get there. Changing quality mid-film had the same cause.
  • A 2.40:1 film is named by its frame rather than by its letterbox: a 4K master stored at 3840x1600 read as 1440p, and a Full HD one at 1920x800 read as 720p. Phones and tablets also gained the 8K tier the desktop already had.
  • Subtitle and audio rows name their language instead of printing tags, and say where the track came from: in the file, or translated by Quven. A track whose provenance can't be established for certain is left unclaimed rather than labelled wrongly.
  • Android shows the season names the other clients show: a season the scanner recorded as “Season 1” no longer appears in English inside an Italian interface, and specials have a name at last.
  • Catalogue payloads from the metadata providers are stored compressed, and the activity centre is ordered by date.
Fixed
  • A browser sidebar asked the server for the library list every ten seconds without pause, for as long as it was open: 7,690 requests in twenty-two hours on one beta tester's server, 55% of everything that server answered in a day, all of them returning the same unchanged list.
  • Autoplay could skip an episode. The player reports the previous item as ended until the new one has loaded, and that stale report was read as the new episode's own ending, so episode one ran into episode three.
  • A subtitle stored beside a file arrived twice in the picker on a streamed session, once from the playlist and once attached by the player, with nothing to choose between the two.
  • A device could sign itself out in the middle of the day. Two parts of a client could present the same refresh token, which the cloud treats as theft and answers by revoking every session that account holds on that device.
  • Changing quality took the subtitle you were reading with it, and on Android a subtitle nobody had asked for could switch itself on at the start of playback.
  • Bonus content behaved like the title that owns it: finishing an extra advanced the episode queue, and deleting one could delete the film it belonged to.
  • A server that was briefly unreachable hid the catalogue filters for the rest of the session instead of asking again.

v1.1.8

Quven 1.1.8: the translation that was not one

Asking for subtitles in a language the file already declares no longer hands you back the same track untranslated, a catalogue stops asking the server for pages that do not exist, and returning from a title reopens the list where you left it.

New
  • A film or a series carries the catalogue's whole set of images instead of one poster and one backdrop, and the detail page cross-fades slowly through them. A title with a single image stays still, and so does the page for anyone who has asked their system for reduced motion.
  • An episode that exists in more than one version gets the same “Alternate editions” entry films already had: the dialog names each file by what actually differs and plays the one you pick.
  • A library card lists the files its last scan did not take in, and why: locked, unreadable, or named in a way nothing could place. Until now that list existed only in the server log.
  • The signed Docker Server-only image ships with this release for Linux AMD64 and ARM64, with versioned Compose bundles, Cosign verification and SPDX SBOM attestations.
Improved
  • A series named by TheTVDB arrives under its English title instead of the language TheTVDB happens to hold it in, and a work whose only official titles are Japanese, Arabic and Portuguese no longer enters the library under whichever of them came first.
  • TheTVDB answers a title with no artwork by pointing at its own grey placeholder; that is read as “no image” now, so Quven paints its own instead of showing another brand's.
  • Anime posters from AniDB load. They were stored as a bare file name, which every client tried to fetch from TMDb; the rows already in your library are corrected when this version starts.
  • Re-matching a series clears what the previous match left on it: an episode the new series does not list keeps neither its old name nor its old synopsis, and the stored translations of the title, the seasons and the episodes go with it.
Fixed
  • Asking for a translation into a language one of the file's own subtitle tracks already declares gave that track straight back, labelled as the translation. French releases hit this every time, because the French track is usually the one a scan would pick; Swedish or German worked, which made it look like the language was at fault.
  • A catalogue kept requesting pages past its own end, around a hundred and forty requests a second for as long as it stayed on screen, whenever the server's count and the rows it could return had drifted apart by even one. Resolving a duplicate series usually caused the drift, and the card of the merged series stayed on screen too.
  • Coming back from a film or a series reopens the catalogue at the position you left, instead of at the top.
  • The documentaries page re-formatted its counters on every frame while you scrolled.

v1.1.7

Quven 1.1.7: the scan keeps its footing

An upgrade no longer stops a television scan on an identity an earlier version had cached, a search too broad for one catalogue no longer parks a title forever, and a series that only a second catalogue lists arrives with its full description.

Improved
  • A series listed on TheTVDB, OMDb or AniDB but absent from TMDb enters the library with the title, year, plot and artwork of the catalogue that identifies it, instead of the search result alone.
  • Removing a film or a series from a catalogue's menu works even when a scan or a watched change rewrote that row a moment earlier: the command used to return without doing anything.
  • Browsing a catalogue no longer re-reads and re-lists it on every page, and a scan that clears deleted files no longer re-reads the whole library once for every missing file.
  • Series are ordered by quality the same way films are, so a title whose quality is not known yet no longer jumps to the front of the list.
  • Third-party notices name TheTVDB and AniDB wherever the product lists what it uses.
Fixed
  • Upgrading from an earlier version could stop a television scan with an error as soon as it reached a series whose identity had already been cached.
  • A title whose search was too broad for a catalogue was postponed indefinitely instead of being matched, and every retry asked the same question.
  • A placeholder identifier written into a file's own tags separated a legitimate second version into a film of its own, and skipped the check that the file matches the title its folder names.
  • AI disambiguation returned a verdict for a series the catalogue does not number, and matched a film that only a foreign catalogue lists.
  • A catalogue answering without a TheTVDB identifier erased the rest of an episode's description.
  • A subtitle translation that came back carrying none of its lines, or carrying the original text unchanged, replaced the track instead of being refused, and a translated line could split the subtitle document in two.
  • Merging two series left each viewer's own rating, review and watchlist entry behind on the series that disappeared.
  • A season whose only name is in a language other than the one requested could win a merge against the season that actually carries the metadata.
  • Up Next could offer an episode that has no file to play.
  • A file marked only “DV” in its name was labelled Dolby Vision on that alone.
  • The player raised an error over the video when a background step timed out.
  • Starting Quven while it is already running did not bring the window forward again after an earlier start had been interrupted.

v1.1.6

Quven 1.1.6: four catalogues, and a scan that keeps going

Manual matching asks four catalogues instead of one, a scan survives files it cannot read, subtitles the server generates itself no longer depend on a cloud translation, and the database is copied before an upgrade changes its schema.

New
  • Manual matching asks every catalogue instead of TMDb alone: TMDb, TVDB, OMDb and AniDB each get their own tab, for films and for series, and every result names the catalogue that answered.
  • A title that exists in more than one version has its own "Alternate editions" entry on its menu: the dialog names each version by what actually differs (length, resolution, dynamic range, audio layout, video codec) and plays the one you choose.
  • Subtitle appearance is set from inside the player on the desktop: size, colour and position, saved for the next playback and applied to the running video when you ask for it.
  • A scan that cannot name a file any other way now asks AI for its identity, on plans that include managed AI matching and while the server's AI setting is on. One scan spends at most 100 identities of the account's monthly allowance, so a single untidy library cannot use it up.
  • Series and documentaries can be filtered by quality and dynamic range, which until now only films could do, and documentaries gain the genre filter the other two catalogues already had.
  • The database is copied before an upgrade applies schema changes, and the five most recent copies are kept beside it.
  • The signed Docker Server-only image ships with this release for Linux AMD64 and ARM64, with versioned Compose bundles, Cosign verification and SPDX SBOM attestations.
Improved
  • A file the server cannot read costs no more than itself: the scan reports it as skipped instead of failing, records a folder it could not read to the end, and still removes a deleted title from the library.
  • Titles hidden behind bracket runs, underscore wrappers, letter-for-number spellings or a resolution marker the parser did not recognise are read correctly, and a folder that declares its own catalogue identity outranks a namesake that resolved to a different title.
  • Series scanning asks the catalogue that named the series to order its episodes and describe its seasons, and stops retrying a season that catalogue will not answer for.
  • Scanning a television library no longer works through one series at a time, and how many files a scan works on at once is no longer tied to the number of processors the machine has.
  • The playback statistics panel on the desktop is the sectioned, scrollable panel the web client already had, written in your language, instead of a block of text that ran off the bottom of the screen during a long session.
  • A transcript the server generated locally survives a translation that later fails or is cancelled, and finishing one viewer's subtitle work no longer disturbs the others.
  • Image-based subtitle recognition refuses a language it has no model for instead of reading it as English, which used to produce text that only looked like language.
  • Artwork a catalogue does not carry is drawn as a designed placeholder instead of an empty frame.
  • Starting Quven while it is already running brings the open window forward instead of only saying it is already running.
  • A forgotten password is no longer a dead end: every sign-in form links to the reset page.
  • Reaching the AI matching limit is reported as a wait, naming the seconds to wait for, rather than as a failure.
Fixed
  • Filtering a catalogue by quality or dynamic range while browsing in a language other than the original returned nothing.
  • A text subtitle and an image-based one could be shown at the same time; choosing either now replaces the other.
  • Selecting a card in a catalogue could be swallowed by the artwork overlay drawn above it.
  • Switching profile could act on a server other than the one being used.
  • Seeking during playback could be mistaken for a transcoder that had stopped.

v1.1.5

Quven 1.1.5: macOS catches up

Windows, Linux and the Docker image received these changes in 1.1.3 and 1.1.4; the Mac packages ship them together here, so a macOS server and desktop move from 1.1.2 straight to everything below.

New
  • Correct a title yourself when the server matched it wrongly: name, year, overview, artwork and poster, from the desktop app or the web client, and the correction survives the next scan.
  • Bring your history over from an existing Plex or Jellyfin server. Quven finds the source, shows what it will import and transfers watched state and playlists, matching titles by catalogue identity rather than folder layout.
  • Bonus content beside a film or series is part of the library: trailers, featurettes, behind-the-scenes reels, deleted scenes and interviews are recognised instead of being scanned as titles of their own.
  • A live view of playback on the server: who is watching, from where, over which route, and the technical detail of the file each session plays.
  • Sign a client in with a short code approved in the account portal, so no password is typed on a remote screen.
Improved
  • Manual quality over the managed relay reaches 2160p, where a stale server default had been holding every remote stream at 480p.
  • Continue watching shows one card per series instead of one per episode.
  • Scanning a series is faster: each season's translations are fetched once per scan instead of once per episode.
  • Show status is written in the language you selected.
Fixed
  • Sessions that had already ended were presented as live, and one client's playback progress could be attributed to another.
  • Corrected artwork failed to load through the managed relay, and artwork left behind by a deleted correction was never cleaned up.
  • Bonus content is removed only once its file is really gone, and follows its title when two aggregates are merged or one is split.
  • A library folder at the root of a disk had its files treated as outside itself, so deleted files were never removed from that library.
  • HDR conversion picks the graphics device by proving it can transfer frames correctly.

v1.1.4

Quven 1.1.4: correct a title, bring your history, watch the server

This update lets you correct a title the server matched wrongly, bring your watch history and playlists over from Plex or Jellyfin, and see who is watching what. Windows and Linux servers also receive the hardware-transcoding repairs that shipped for the Docker image in 1.1.3.

New
  • Correct a title yourself when the server matched it wrongly: name, year, overview, artwork and poster, from the desktop app or the web client, and the correction survives the next scan.
  • Bring your history over from an existing Plex or Jellyfin server. Quven finds the source, shows what it will import and transfers watched state and playlists, matching titles by catalogue identity rather than folder layout.
  • Bonus content beside a film or series is part of the library: trailers, featurettes, behind-the-scenes reels, deleted scenes and interviews are recognised instead of being scanned as titles of their own.
  • A live view of playback on the server: who is watching, from where, over which route, and the technical detail of the file each session plays.
  • Sign a client in with a short code approved in the account portal, so no password is typed on a remote screen.
  • The signed Docker Server-only image ships with this release for Linux AMD64 and ARM64, with versioned Compose bundles, Cosign verification and SPDX SBOM attestations.
Improved
  • Manual quality over the managed relay reaches 2160p, where a stale server default had been holding every remote stream at 480p.
  • Continue watching shows one card per series instead of one per episode.
  • Scanning a series is faster: each season's translations are fetched once per scan instead of once per episode.
  • Show status is written in the language you selected.
  • The server says so in its log when it could not put the database in write-ahead-log mode, instead of running slower without explanation.
Fixed
  • Sessions that had already ended were presented as live, and one client's playback progress could be attributed to another.
  • Corrected artwork failed to load through the managed relay, and artwork left behind by a deleted correction was never cleaned up.
  • Importing from Plex or Jellyfin dropped collections and playlists, attributed an episode's identity to its whole series, and reported an unreadable database as an absent one.
  • A library folder at the root of a disk had its files treated as outside itself, so deleted files were never removed from that library.
  • In the web client, a dead remote tunnel could leave the player waiting instead of recovering.
  • HDR conversion picks the graphics device by proving it can transfer frames correctly, after a server was found producing corrupted colour on hardware that advertised support.
  • The Docker NVIDIA profile is published in the form every Compose version accepts, and a server claimed from a container reports what actually failed.

v1.1.3

Quven 1.1.3: hardware transcoding, repaired

This update repairs hardware transcoding on Intel and multi-GPU servers, where HDR films were converted by the processor while the graphics hardware sat idle.

Improved
  • Intel servers convert HDR films to SDR on the graphics chip instead of the processor. On a 4K HDR title the same conversion moved from about fourteen processor cores to a quarter of one.
  • Servers with both an integrated and a dedicated graphics card use the dedicated one for HDR conversion, measured more than twice as fast as the card chosen before.
  • Speech recognition prefers the processor over an integrated graphics chip where there are enough cores, and keeps the graphics chip on smaller machines.
Fixed
  • Servers with Intel graphics could not use hardware H.265 encoding at all: the capability check asked the encoder for a frame smaller than it accepts, so every H.265 conversion silently ran in software.
  • VA-API servers decoded in software while encoding on the graphics chip, paying for a conversion the hardware could do.
  • HDR conversion is refused when the only graphics device available is a software emulator, which produced a green picture instead of failing.
  • Playback diagnostics name the conversion route the server actually used.

v1.1.2

Quven 1.1.2: efficient ARM playback and safer server data

This update adds Raspberry Pi-class hardware transcoding and makes custom server data locations and diagnostics safer.

New
  • Linux servers can use V4L2 M2M H.264 hardware decoding and encoding after a real runtime probe, with bounded software fallback for unsupported codecs or failed decoders.
  • The signed Docker Server-only image is available from GHCR for Linux AMD64 and ARM64, with versioned Compose bundles, Cosign verification and SPDX SBOM attestations.
Improved
  • Raspberry Pi HLS output follows the source frame grid and repairs the separately emitted codec-header sample so seekable fragments remain decodable.
  • Cloud and local release tests finish faster without replacing the PostgreSQL, HTTP, authentication or filesystem boundaries they verify.
Fixed
  • Custom server data roots are used consistently by persistent stores and desktop updates, cannot be escaped through rooted or parent-relative paths, and retain the earlier Linux AppImage layout during an upgrade.
  • Diagnostic cleanup preserves live Linux runs and reports the log directory the host actually uses.
  • Documentary activation no longer requests the same library twice when it overlaps an asynchronous catalogue rebuild.
  • Unsupported or malformed V4L2 fragments are left unchanged instead of being rewritten speculatively.
  • Seeked V4L2 M2M streams retain hardware encoding without starving their audio rendition, and playback statistics name the active V4L2 backend.

v1.1.1

Quven 1.1.1: playback and subtitles, repaired

This update repairs playback from the web player, restores subtitles that stopped reaching every client, and stops the scanner from filing one film under another.

Improved
  • The server log says why a transcode ran on the CPU when a hardware backend was selected, naming the backend and the reason.
Fixed
  • Playback from the web player no longer waits forever on a browser that cannot decode HEVC. The player asked the server for a codec profile from the quality preference alone; it now asks the browser first. Firefox is affected on every system, and Chrome on Linux.
  • Acquired subtitles reach the player again. Requesting the subtitle list while another request was still running returned an error, so a sidecar, a recognized image track or a finished translation could be stored and never appear.
  • Subtitle files stored in a Subs folder beside the media are found on Linux and macOS. The folder was probed by its lowercase name, so only a case-insensitive filesystem answered.
  • A server stays reachable straight after an account is linked, instead of listing as offline for up to half a minute.
  • An unrecognized command on the server CLI reports usage instead of opening a tray icon.
  • The scanner no longer accepts a feature-length file as a short film: a file at least twice the declared runtime goes to review instead of matching at full confidence.
  • A film split across two folders is no longer merged with an unrelated one, and an episode whose file names a different show is no longer absorbed into it.
  • Hardware transcoding is no longer disabled for the rest of the server's run when a playback session is torn down while its encoder is still writing.
  • Intel Quick Sync works for normal playback. It was excluded from every seekable session because it cuts segments on its own schedule, and a source needing HDR tone mapping additionally failed to start.
  • Subtitle recognition from images and local transcription work on Linux again. The programs that perform them were built against a system newer than the one most people run, so on Ubuntu 22.04 and 24.04, Debian 12 and 13 and every current enterprise distribution they refused to start. Playback, scanning and transcoding were unaffected.

v1.1.0

Quven 1.1.0: subtitles you can create and correct

This update adds local subtitle generation and editing, and makes subtitles stored beside your media play everywhere.

New
  • Generate subtitles for media that has none. The Server transcribes the audio locally, without sending audio anywhere, and stores the result as an ordinary subtitle track. This is a free Server capability; an administrator installs the speech model on demand.
  • Speech recognition uses the GPU where one is available, Metal on macOS and Vulkan on Windows and Linux, and falls back to an optimized CPU build on a host without a usable adapter. The CPU path always leaves at least one processor to the rest of the system.
  • Edit a subtitle track from the desktop and the web player: correct its text, timing and per-cue styling, then save it as its own file without touching the original.
  • Choose which subtitle a translation starts from. Every eligible track is listed and labelled by language and kind, behind an automatic entry that keeps the previous behaviour.
Improved
  • Subtitle files stored beside a media file, including .idx and .sub pairs, are attached on desktop, web, Android and iOS. Playback resolves to a network source even for direct file, so the player could not previously find them on disk.
  • Image-based subtitle recognition reads DVD, VobSub and PGS streams correctly: the stream is sized from the container instead of the video, and every image is paired with its own cue.
  • Long transcript lines are kept as sentences instead of being cut at each word.
  • The credits screen names what actually ships, including the accelerated speech runtimes.
Fixed
  • Audio transcription no longer refuses ordinary tracks whose packets overlap by a few samples after resampling.
  • A subtitle edit is filed under the language of the track it came from, not the audio language.
  • The subtitle editor no longer rewrites punctuation in dialogue, and refuses an unreadable colour instead of silently dropping it.
  • Failures in subtitle work are reported in your own language instead of raw server text.
  • A translation can no longer start from an earlier translation.
  • A music note in an image-based subtitle is read as a note again, instead of becoming a word that was then translated.

v1.0.19

Quven 1.0.19: resilient discovery and diagnostics

This update makes local Server discovery and desktop reconnection more resilient and classifies diagnostics consistently.

Improved
  • Desktop reconnection verifies the live Server identity before restoring a persisted session, preventing stale credentials from targeting a replaced or different Server.
  • Local API probes record stable operation names and bounded response classifications without recording response bodies.
  • Sentry uses the canonical production environment and preserves Information, Warning, Error and Fatal severity.
Fixed
  • DNS-SD advertisements convert Unicode Server names to bounded ASCII TXT values so mDNS publication cannot fail on an accented machine name.
  • Successful HTTP responses with incompatible JSON are treated as failed probes instead of disrupting desktop startup or restoring an unverified session.
  • Desktop global exceptions and playback failures no longer produce duplicate Sentry events while retaining their structured local logs.

v1.0.18

Quven 1.0.18: Bundle controls in the tray

This update adds host-local update checks and login-start controls to the Windows and macOS Bundle tray.

New
  • The Bundle tray can check for updates and show the native update result without opening Settings.
  • Windows and macOS Bundle installations can enable or disable Start at login directly from the tray.
Improved
  • Bundle and Server-only installations retain distinct login-start registrations when both package types are installed.
  • Tray-driven update apply preserves the installed product shape: Bundle relaunches the desktop client, while Server-only relaunches its tray companion.
  • Settings and tray updates share a fail-closed active-work check, reject overlapping applies, and repair stale Start at login paths.
Fixed
  • Package-specific Start at login entries no longer survive uninstall, and update relaunch identity no longer depends on a temporary server-tray launch argument.

v1.0.17

Quven 1.0.17: safer scans and diagnostics

This required update hardens library scanning, managed metadata startup and desktop diagnostics.

Improved
  • TV libraries dominated by movie-style filenames now emit one privacy-safe library-type warning instead of one diagnostics warning per rejected file.
  • Client, local Server and Cloud diagnostics share the production environment label, while repeated native playback diagnostics are reported once per playback session.
Fixed
  • Rescans no longer reuse a deleted cached show identity, concurrent show merges retarget episodes to the canonical show, and a missing parent rejects only the affected file.
  • Legacy database migration clears an inherited read-only attribute from the SQLite database and its sidecar files before the local Server opens them.
  • Managed TMDb remains disabled until a Quven Account link is persisted and stops immediately after unlink, while own-key installations remain independent.
  • Diagnostics redact UNC media paths and keep authentication or endpoint failures visible as actionable warnings.

v1.0.16

Quven 1.0.16: safer opt-in analytics

This Windows and Linux update strengthens Quven's consent-gated product analytics and fixes documentary selection during overlapping library refreshes. Windows packages are live for x64 and ARM64, Linux Server-only packages are live for x64 and ARM64, and macOS remains on 1.0.15.

Improved
  • Product analytics uses a fixed privacy-bounded catalog for aggregate library, playback, reliability and engagement signals, and remains inactive until the current consent is granted.
  • Analytics delivery and recovery outcomes are classified consistently without exposing media titles, file paths or account identity.
Fixed
  • Revoking analytics consent continues to remove the installation identity and unsent events instead of carrying them into a later session.
  • Documentary batch selection now takes one atomic catalog snapshot, avoiding stale or mixed selections when a library refresh overlaps the action.

v1.0.15

Quven 1.0.15: one coordinated release train

Quven's platform feeds had advanced independently: Windows was on 1.0.14, Linux on 1.0.4 and macOS on 1.0.2. Version 1.0.15 deliberately aligned every Windows, Linux and macOS Bundle or Server-only feed on one common release number so future desktop releases advance together.

Improved
  • Windows Bundle and Server-only, Linux Server-only and both macOS release types now share the same stable SemVer across x64 and ARM64.
  • The coordinated release workflow verifies every candidate before the first feed changes and prevents one platform from advancing while another still owes the current train.
  • Windows and Linux activate the privacy-preserving product analytics capability only after the current optional consent; macOS 1.0.15 predates that activation.
Fixed
  • Platform-specific version drift can no longer make a newer-looking number imply feature parity or publication on another operating system.

v1.0.14

Quven 1.0.14: guided matching and safer TV merges

This Windows release, published alongside Linux 1.0.4 from the same source, added guided bulk AI matching and hardened the reconciliation of TV shows split across folder structures or earlier matches.

New
  • Selected unresolved shows can be matched in managed, quota-aware batches with visible progress.
Improved
  • Fragmented structures are analysed before consolidation, and accepted merges move seasons, episodes and personal state atomically to one canonical show.
Fixed
  • Desktop and hosted Web follow the canonical show identity after a merge instead of leaving a stale or duplicate card selected.

v1.0.13

Quven 1.0.13: stronger Viewer safeguards

This Windows release, published alongside Linux 1.0.3 from the same source, tightened authorization for Viewer accounts while keeping browsing, playback and personal library state available.

Improved
  • Desktop and hosted Web keep administrative and destructive controls visible but disabled for Viewer sessions, making account limits clear before an action starts.
Fixed
  • Viewer handlers now stop before issuing forbidden requests, while the server independently rejects administrative or destructive mutations at the API boundary.
  • Remote sign-out and server-selection failures remain visible instead of silently discarding the active session state.

v1.0.12

Quven 1.0.12: steadier scans and playback probes

This Windows release bounded concurrent media inspection and reserved probe capacity for interactive playback. The same remediation shipped on Linux as 1.0.2; 1.0.11 candidates were replaced before publication and are intentionally absent.

Improved
  • FFprobe work is globally bounded, with background scans leaving capacity for DirectPlay keyframes and other interactive requests.
  • A plausible transient native launch failure receives one short retry; permanent errors, timeouts and cancellation remain strict.
Fixed
  • Large cold scans no longer launch an unbounded burst of media probes that can starve playback-related inspection.

v1.0.10

Quven 1.0.10: uninstall without losing your library

This Windows release corrected package cleanup boundaries and made local-data removal an explicit, reversible choice before uninstall.

New
  • Settings can explicitly arm complete local-data removal for the next uninstall, with a reciprocal action to return to preservation.
Improved
  • Server-only update, tray, CLI and pre-update database-backup flows were verified together against the final package shape.
Fixed
  • Normal uninstall now removes the application while preserving the database, accounts, backups, logs and caches by default.
  • The MSI cleanup identity is pinned to the immutable package id instead of the display title, preventing deletion of the shared local-data root.

v1.0.9

Quven 1.0.9: reliable moves and update checks

This Windows release combined precise inventory-delta scanning with hardened automatic update discovery.

Improved
  • Automatic checks run at bounded startup, activation and tray-menu moments without continuous polling; manual checks still bypass the cooldown.
  • Fast rescans classify new, updated, moved, removed and unchanged files before dispatching work.
Fixed
  • Movie and episode rename round trips preserve media identity, watchlist, ratings, reviews and resume state.
  • LAN, relay and non-admin sessions cannot invoke host-local update controls or endpoints.

v1.0.8

Quven 1.0.8: precise inventory-delta rescans

This Windows release made rescans compare the same timestamp precision that SQLite persists and classify file changes explicitly.

Improved
  • Unchanged files are skipped before worker dispatch, keeping routine rescans fast and focused on real inventory changes.
Fixed
  • Sub-millisecond filesystem timestamp differences no longer make unchanged files look updated after a database round trip.
  • A failed replacement candidate cannot delete a valid single-file aggregate or leave an unrelated stale variant behind.

v1.0.7

Quven 1.0.7: preserved media identity

This Windows release keeps unambiguous file moves attached to their existing media identities and adds event-driven update discovery.

Improved
  • Bundle checks for updates during bootstrap and window activation; Server-only checks at startup and when its tray menu opens.
  • Concurrent update checks coalesce, transient failures remain retryable and repeat notifications for the same version are suppressed.
Fixed
  • Moving or renaming a uniquely matched movie or episode no longer recreates the aggregate and cascades away personal state.

v1.0.6

Quven 1.0.6: clearer AI matching

This Windows release clarified managed AI matching and improved title normalization and diagnostics around manual corrections.

Improved
  • AI Matching copy now reflects Founders, Pro and Max availability instead of presenting a generic provider action.
  • History Channel naming variants normalize more consistently before metadata matching.
Fixed
  • Manual-match diagnostics identify the real failure boundary without turning expected fallback behavior into misleading incidents.

v1.0.5

Quven 1.0.5: faster warm-cache scans

This Windows release stopped counting metadata cache hits against the outer provider limiter and kept routine per-file scan failures local.

Improved
  • TMDb, OMDb and OpenSubtitles cache hits return without consuming the upstream request budget; cache misses remain authenticated, coalesced and rate-limited.
Fixed
  • Warm-cache scans no longer pause behind a limiter intended for real upstream metadata requests.
  • Expected per-file scan warnings remain in local logs instead of opening remote diagnostics incidents.

v1.0.4

Quven 1.0.4: subtitles only when requested

This Windows release removed automatic OpenSubtitles lookups from library matching and made ordinary rescans reconcile inventory deltas.

Improved
  • OpenSubtitles is contacted only after an explicit subtitle request, while existing hashes remain available for later searches.
  • Rescans remove confirmed stale rows without reprocessing every unchanged file.
Fixed
  • A clean library scan no longer serializes one automatic subtitle hash lookup per movie even when metadata is already cached.

v1.0.3

Quven 1.0.3: dependable keyboard and update flows

This Windows release completed the first stable full-package and delta update paths while tightening default form actions on Desktop.

Improved
  • Bundle and Server-only updates preserve the database, account and Remote Access state and return to the expected process topology after relaunch.
Fixed
  • Enter now submits sign-in and equivalent desktop forms through the intended default action.
  • Interrupted update state is normalized before the next check instead of leaving a stale in-progress status.

v1.0.2

Quven 1.0.2: cleaner TV libraries

Before the coordinated release train, 1.0.2 represented different platform snapshots: Windows used it as an early stable predecessor, Linux shipped bounded media-probe remediation, and macOS added guided bulk AI matching plus safer TV-show consolidation. The macOS packages were signed and notarized for Intel and Apple silicon.

New
  • Desktop can bulk-match selected unresolved shows with managed AI, quota-aware batching and visible progress.
Improved
  • Fragmented show structures are analysed before consolidation, then seasons, episodes and personal state move atomically to one canonical show.
  • Desktop clients follow the canonical show identity after a merge and preserve the active selection while the library refreshes.
Fixed
  • Malformed or concurrent merge results now fail closed instead of leaving duplicate cards or partially moved episodes.
  • Viewer sessions no longer attempt administrative or destructive actions that the server will reject.

v1.0.1

Quven 1.0.1: smoother media analysis

This macOS update keeps playback-related media inspection responsive during large library scans and makes TV-season metadata recovery more resilient. Signed and notarized packages are live for Intel and Apple silicon; the Apple-silicon runtime smoke remains open.

Improved
  • Interactive playback probes now keep reserved capacity ahead of background library-analysis work.
  • FFprobe launches are bounded across the server, with one short retry for plausible transient launch failures while cancellation and timeouts remain strict.
Fixed
  • Large scans no longer launch an unbounded burst of media probes that can compete with playback and other user-facing work.
  • Incomplete season-metadata responses are no longer retained as reusable cache entries, allowing a later request to recover cleanly.

v1.0.0

Quven 1.0.0: the initial stable release

Quven 1.0 was the initial stable release. Server + Desktop and Server-only packages went live for Windows x64/ARM64 and for macOS on Intel and Apple silicon; macOS was signed and notarized by Apple, while real-device ARM64 validation remained open. The hosted Pro web client went live, Linux v1 shipped Server-only for x64 and ARM64, with ARM64 released without a native hardware test, and the native mobile apps continued toward store distribution.

New
  • Windows x64 and ARM64 downloads for both Server + Desktop and Server-only, with architecture-specific packages selected from each platform menu.
  • Persistent managed-AI matching controls for Founders, Pro and Max servers, used only when deterministic metadata matching remains ambiguous.
  • An explicit Windows uninstall choice: keep the local database, accounts and settings by default, or arm complete local-data removal from Settings.
Improved
  • Library rescans reconcile new, updated, moved and removed files first, skip unchanged files, and preserve watchlists, ratings, reviews and resume state across unique moves.
  • Cloud metadata reads are cache-first and coalesced before rate limiting; OpenSubtitles is contacted only after an explicit subtitle request.
  • Desktop update checks now run at startup and resume with bounded cooldowns, while host-local update controls remain unavailable to remote and hosted-web sessions.
Fixed
  • Rescans no longer leave deleted shows behind, duplicate a title after a file move, or discard personal metadata attached to the original media identity.
  • The Windows CLI updater now survives the package handoff and restart window, reports the installed version accurately and recovers interrupted update state.
  • Sign-in and equivalent desktop forms submit with Enter, and benign scanner cancellation and provider fallback paths no longer create misleading diagnostics noise.

v1.0.2-alpha

Cloud library backup and shared subtitle translations

Pro servers can keep their library setup safe in the cloud, and AI subtitle translations are now shared so a title is only translated once. The translation feature is Max and activates at v1.4.

New
  • Cloud backup of your library setup (Pro): your libraries and manual match corrections are saved to the cloud and can be restored onto a fresh server, with your manual matches re-applied automatically on the next scan.
  • Translated subtitles are cached centrally, so once a title has been translated every entitled account gets it instantly, with no repeat cost. Translation is a Max feature that activates at v1.4.
Improved
  • Entitled servers refresh their cloud backup automatically after each scan.

v1.0.1-alpha

Sturdier diagnostics and broader remote reach

Optional diagnostics now cover more of the app and reach remote browser sessions, with clear in-app consent.

Improved
  • Web diagnostics capture data-layer, render, relay and playback errors through one classifier.
  • Remote browser sessions on app.quven.tv report relay-dial failures, so off-LAN issues are easier to spot.
  • Security diagnostics default on, disclosed by a one-time in-app consent banner with one-click opt-out; personal data is aggressively scrubbed and never sent.

v1.0.0-alpha

v1.0.0 alpha: cloud identity and launch alignment

The first public alpha. Identity is now a single Quven Account across every device and server, and desktop and web share one launch flow.

New
  • Quven Account sign-in: one free account works across desktop, web and every server you link.
  • Household profiles are unlimited on all tiers, with optional PINs and per-profile watchlist, ratings and resume.
  • Blind reverse-tunnel groundwork for the remote media plane, paving the way for off-LAN streaming at scale.
Improved
  • Onboarding, pricing and product copy now read the same across the site, desktop and web.
  • Windows, Apple-silicon macOS and Linux server packages share one release pipeline, with platform availability kept explicit.
  • Playback stays steady through long sessions and window/focus changes.
Fixed
  • Remote tunnels are torn down completely on disconnect, sign-out and tab close, leaving no dangling allocations.
  • Anonymous server-link requests are rate-limited.

v0.9.6

Resolvable network discovery and remote hardening

Servers advertise themselves more reliably on the LAN, and the remote relay path closes a round of audit findings.

Improved
  • mDNS advertisements are now resolvable and labelled, so clients find the right server faster on busy networks.
  • Relay connect/teardown is centralised so a concurrent disconnect and close can't double-tear-down a tunnel.
Fixed
  • Closed a relay tunnel leak that could keep a WebRTC peer and TURN allocation alive after the client left.
  • Several desktop command guards now refuse unsafe actions during a scan or mid-session.

v0.9.5

Remote streaming in the browser and AI subtitle translation

The web client can now reach your home server from anywhere, and AI subtitle translation lands in the codebase with precise, fair metering. It's a Max feature that activates at v1.4.

New
  • Remote-mode web client live: stream your library from a browser outside your LAN over the encrypted relay.
  • AI subtitle translation (Max): cue-aware chunking translates movie-length subtitles without timing out, cached locally for free replays. This Max feature activates at v1.4.
  • Up to three concurrent remote sessions per server, so several household devices can stream off-LAN at once.
Improved
  • A relay status indicator mirrors the desktop pill in the web topbar and mobile sidebar.
  • Translation metering counts only translatable cue text and charges exactly once, only after the result is stored.
Fixed
  • Normalised ICE candidates to the standard wire form so the browser-to-server tunnel completes reliably.
  • Idempotent replay of a completed translation survives a dropped connection and a tier downgrade with no double charge.

v0.9.4

Account portal and documentation go live

The account portal and a full documentation site are now live behind the Quven brand.

New
  • Account portal at accounts.quven.tv: sign-in, register, email verification, password reset and linked-server management.
  • A premium documentation page with sticky table-of-contents and grounded setup, playback and remote-access sections.
Improved
  • Split-screen cinematic auth and a full-width account dashboard.
  • Footer restructured into Product / Resources / Legal.
Fixed
  • Login no longer bounces back on Safari/iOS and Chrome incognito: the refresh cookie is now first-party via a same-origin backend.

v0.9.3

Adaptive bitrate transcoding

Transcoded playback can serve an adaptive bitrate ladder so quality follows the connection.

New
  • Optional ABR ladder: lower video-only rungs are emitted alongside the top rung by one transcode process, sharing a single audio group.
Improved
  • Master-playlist bandwidth now advertises video plus the highest audio rendition, so players pick rungs accurately.
  • First catalogue load shows a shimmer skeleton instead of an empty flash.

v0.9.2

Cloud backend on PostgreSQL

Accounts, entitlements and billing move to a managed PostgreSQL backend, plus email and admin user management.

New
  • Account email verification and password reset.
  • Admin user management: list, create, delete, set roles and reset passwords from a Users tab on desktop and web.
  • Every user can see the server's plan, even non-admins and servers without a linked account.
Improved
  • Cloud backend now runs on PostgreSQL 18 for live monitoring and concurrent writes.
  • Daily off-process database backups with integrity verification.
Fixed
  • Refresh tokens rotate in families with atomic revocation and replay burn.
  • Server-link token consumption is single-use under one transaction.

v0.9.1

Quven Account and remote relay

Reach your home server from outside the LAN with zero port-forwarding, on the Pro managed relay.

New
  • Connect remotely from the desktop client: cloud sign-in, server picker, auto-dial over the encrypted WebRTC tunnel.
  • Short-lived signed entitlements with a 7-day offline grace window so the client keeps working when the network blips.
  • Cloud-issued TURN credentials (Cloudflare Realtime) for NAT traversal.
Improved
  • Self-hosted DIY remote (your own port-forward, reverse proxy or Tailscale) stays free; only the zero-config managed relay is Pro.
  • A tunnel monitor bounces you back to Connect with an actionable toast if a remote session drops.
Fixed
  • The SDK now correctly rebases requests onto the active server URL instead of a static default.

v0.9.0

Cross-platform desktop and installer foundation

Windows, macOS and Linux received a shared adapter and installer foundation; the public launch targets were narrowed during platform validation.

New
  • Per-OS adapters for credential storage, GPU probing and display refresh-rate switching.
  • Packaging and update foundations for Windows, macOS and Linux.
Improved
  • Cross-platform adapter coverage for credential storage, GPU probing and display behavior.
  • One concurrent-playback baseline holds steadier under heavier local load.

v0.8.7

Shows everywhere and the ember rebrand

TV shows are now first-class across personal surfaces, with a refreshed accent palette and shared avatars.

New
  • TV shows join movies: add them to your watchlist, rate them, review them and put them in collections.
  • Shared profile avatar upload across desktop and web.
Improved
  • New ember-orange accent palette across desktop and web.
Fixed
  • Adding a series to the watchlist no longer returns a not-found error.

v0.8.6

Ratings, reviews and continue watching

Rate and review titles inline, and pick up exactly where you left off.

New
  • One-click 1-to-5 star rating on movie and show detail, with a full review sheet.
  • A continue-watching rail with resume-on-hover, on desktop and web.
Improved
  • User ratings are kept distinct from the 10-scale external rating badges.

v0.8.5

Streaming availability and subtitle search cache

See where a title streams, and search subtitles faster with a local cache.

New
  • Streaming-availability badges and an external-title preview powered by watch-provider data, with required JustWatch attribution.
  • An OpenSubtitles search cache with per-item manual refresh.
Improved
  • Subtitle search and listing are cache-first, so repeat lookups are instant.

v0.8.4

Opt-in diagnostics

Optional, consent-gated crash and performance diagnostics to make the beta sturdier.

New
  • Opt-in Sentry diagnostics behind two explicit consents, default off.
  • Aggressive PII scrubbing and a small set of named performance transactions.
Improved
  • Status and feedback stay clearer during busy sessions.

v0.8.3

Premium card chrome and multi-select

Catalogue cards got a premium redesign and gained multi-select for bulk actions.

New
  • Multi-select on the Movies and Shows grids with a shared selection state.
Improved
  • Redesigned media cards with cleaner chrome and one consistent motion rhythm.
  • Profile and detail actions need fewer clicks.

v0.8.2

Playlists, collections and history

Organise your library with curated lists and review what you've played.

New
  • Playlists and collections with curated members.
  • A playback-session history view.
Improved
  • The context (kebab) menu now hosts playlists, collections, history and re-analyze in one place.

v0.8.1

Settings overhaul

A tighter, clearer settings surface with per-library control and a real GPU picker.

New
  • Per-library configuration cards.
  • A hardware-decode GPU picker with Auto / Discrete / Integrated / Software override.
Improved
  • Settings consolidated from 13 tabs to 10.
  • Persisted preferences (subtitle size/colour/position, audio normalization, date format, compact cards) are now actually applied.
Fixed
  • Removed inert controls that previously toasted “saved” without doing anything.

v0.8.0

Profiles, watchlist and ratings

Personal surfaces arrive: profiles, watchlists, ratings and resume.

New
  • Household profiles with watchlist, ratings and resume state per profile.
  • Media-card context actions for quick add/rate/play.
Improved
  • Watch-state updates are easier to read across lists and detail pages.

v0.7.3

Web and desktop parity

The web client reaches feature parity with desktop across catalogue, detail and settings.

Improved
  • Catalogue, detail and settings now match between web and desktop.
  • Library display order is configurable and respected on both clients.
  • Self-hosted Inter web font so web and desktop render identical typography.

v0.7.2

Web player video-plane hardening

The browser player renders cleaner on dark scenes and recovers from network stalls.

Improved
  • Removed translucent overlays over the video so dark scenes no longer show grey banding.
  • Seeks are coalesced during fast scrubbing.
Fixed
  • Idle playback sessions recover instead of stalling.

v0.7.1

Browser HLS engine

Smarter engine selection keeps rendition, quality and subtitle control wherever possible.

New
  • hls.js is the primary engine everywhere it can run, including iPhone 17.1+ via Managed Media Source, with AirPlay preserved.
Improved
  • Audio and subtitle switching is smoother during long playback.
  • Mobile playback is more stable on changing networks.
Fixed
  • Chromium browsers no longer silently lose the quality menu, or the ability to change audio track without interrupting playback.

v0.7.0

Premium web client

A premium web client lands as the universal fallback, with the full catalogue, detail pages and playback in the browser.

New
  • Web app built on Vite, React and TypeScript with Home, Movies, Shows, detail pages, profile, settings and a watch route.
  • Browser HLS playback with a stable first-run baseline.
Improved
  • Web and desktop share one stable user flow for catalogue and playback.

v0.6.4

Seekable on-demand HLS and remux

On-demand streams are fully seekable, and packaging-only changes skip a full transcode.

New
  • Seekable VOD playlists with deep cold-resume.
  • Video-copy remux when only the container needs changing, instead of re-encoding.
Improved
  • Per-track audio renditions decouple audio switching from the video stream.
Fixed
  • Absolute timestamp rewrite makes fragmented-MP4 seeking land precisely.

v0.6.3

Audio passthrough and GPU tonemap

HD audio passes through untouched, and HDR tonemapping can run on the GPU.

New
  • AC3 / E-AC3 audio passthrough.
  • GPU HDR-to-SDR tonemapping via libplacebo/Vulkan on the NVIDIA path, with the CPU chain as the universal fallback.
Improved
  • GPU tonemapping cut CPU load by roughly 98% on a 2160p HDR test source.

v0.6.2

Subtitles: burn-in, extraction and cache

Text and image subtitles are handled end to end, with a fast sidecar cache.

New
  • WebVTT extraction for text subtitles and burn-in for image subtitles (PGS/VOBSUB).
  • A subtitle sidecar cache: one pass caches every text stream per source file.
Improved
  • Subtitle extraction runs in the background without blocking playback.

v0.6.1

HDR to SDR tonemapping

HDR content plays correctly on SDR screens through a quality CPU tonemap chain.

New
  • Hable HDR-to-SDR tonemapping on the CPU (zscale), the universal fallback for every platform.

v0.6.0

HEVC software fallback

HEVC transcoding works even without hardware encoding, with capability probing.

New
  • Software HEVC encoding (libx265) as a fallback when no hardware encoder is available.
Improved
  • Encoder capabilities are probed at startup so the pipeline degrades safely.

v0.5.3

Variant cleanup

Fix bogus matches by splitting a file off into its own title and re-matching.

New
  • Detach a file variant into a new unmatched title, then re-match it manually.
Fixed
  • Distinct films wrongly collapsed onto one match can now be separated from the detail page.

v0.5.2

Multi-file per match

One catalogue entry can hold many physical files: 4K and 1080p, several audio tracks, theatrical and extended cuts.

New
  • A logical movie/episode aggregate with N physical file variants and a per-file source picker.
  • Per-variant delete that cascades to the parent when the last file is removed.
Improved
  • The scanner attaches a newly discovered file as a variant of an existing match instead of duplicating the entry.

v0.5.1

Documentaries

Documentaries are detected in both their shapes, feature-length and episodic series.

New
  • Dual-shape documentary detection: feature docs as movies, docuseries as shows with seasons and episodes.

v0.5.0

TV Shows

Full TV support with shows, seasons and episodes.

New
  • Show, season and episode aggregates with episode-level matching and artwork.
Improved
  • Episode files are reconciled to the right show, season and episode by filename and path.

v0.4.3

Live scan progress and theming

Watch scans progress in real time, in your language and theme.

New
  • Live scan-progress fan-out to the desktop client.
  • Dark and light theming with hot theme switching.
  • UI localization in English, Italian and French.

v0.4.2

Automatic server discovery

The client finds your server on the LAN with no configuration.

New
  • mDNS / DNS-SD discovery: the server publishes itself and the client auto-connects.

v0.4.1

Native player

A native VLC-class player with direct play and hardware decoding.

New
  • Native playback with direct play, hardware decoding, subtitles and an on-screen display.
Improved
  • Playback recovers cleanly after pause, resume and window-focus changes.

v0.4.0

Native desktop client

The native desktop shell arrives, built from shared composable controls.

New
  • Catalogue mosaics, a cinematic detail hero, and reusable rails and cards.
Improved
  • Pages are composed from one shared control catalogue for a consistent look.

v0.3.2

Persisted media metadata

Probed codecs, audio and subtitle tracks are stored so playback decisions are instant.

New
  • Persisted probe data with audio- and subtitle-track tables.
Improved
  • Streaming decisions and track lists read from the database first.

v0.3.1

HLS transcode pipeline

On-the-fly HLS transcoding for clients that can't direct play.

New
  • On-demand HLS transcoding and segment delivery.

v0.3.0

Direct file playback

Full-fidelity raw-file delivery for native, VLC-class clients.

New
  • Direct-file delivery with HTTP range requests (seek, resume) keyed on the physical file.

v0.2.2

Manual match and match fixes

Override an automatic match by hand, and tighter rescue heuristics.

New
  • A manual-match dialog to correct or set a title's match.
Improved
  • Cached metadata payloads reduce repeat external lookups.

v0.2.1

AI disambiguation and ratings

Optional AI disambiguation for tough matches, plus external ratings.

New
  • An optional AI disambiguator over a configurable OpenAI-compatible provider.
  • External ratings via OMDB.
Improved
  • External calls get retry and timeout resilience.

v0.2.0

Matching pipeline

Automatic metadata matching against TMDb with fuzzy title scoring.

New
  • TMDb matching with Damerau-Levenshtein and Jaro-Winkler title scoring.
  • Filename parsing that cleans titles, years and quality tags.

v0.1.2

Background scanning

Libraries scan in the background and recover safely after a restart.

New
  • An in-process job queue and library scanner.
Improved
  • Workers replay safely: partially-run scans reset to a clean state and re-enqueue on startup.

v0.1.1

Media toolchain

Bundled media tooling for probing and processing files.

New
  • Bundled FFmpeg and ffprobe with reliable process invocation.
  • Media file probing for codecs, duration and tracks.

v0.1.0

Project foundation

The first foundation build: domain core, persistence and server cross-cutting.

New
  • Domain core with a result-based error model.
  • Persistence on EF Core and SQLite in write-ahead-log mode.
  • Structured logging, health checks and an OpenAPI surface.