Repository navigation
Releases: kubuno/media
Release list
v0.1.9
Changed
-
Visual Studio solution versioned with the repository (
Kubuno.Media.slnx, generated by vskubuno, the naming of
every Kubuno repository): the server is the projectKubuno.Media.Server, the frontendKubuno.Media.Web, in
the solution folders Server, Libraries and Frontend, with the shared launch profile "Media (Kubuno Core + browser)".
The crate and npm names do not change. -
Runs on PostgreSQL, MySQL/MariaDB or SQLite, chosen at install time. Media
moves off its PostgreSQL-only stack onto the runtime-dispatch kubuno-db
foundation: the same binary connects to whichever engine the administrator
configures, read at run time. The compile-time query layer (and its shipped
.sqlxcache) is gone; every query runs at run time. Existing PostgreSQL
instances keep their data and migrate in place; a fresh MySQL or SQLite
instance builds the same schema. Array columns (genres, networks, tags,
categories, shared libraries, extra posters) are stored as JSON so they carry
across all three engines, and rating/popularity columns move to a portable
floating-point type. No behaviour change for the end user.
Security
-
Music, radio and video playback, covers and posters, file saving and the DJ deck no longer rely on the
access-token cookie the web client used to keep readable by page scripts; they use short-lived signed
tickets (long enough for a whole film, revoked when you sign out). Live TV through hls.js sends your
session with each request. Known limit: on browsers that play HLS natively without Media Source
Extensions (Safari), live TV segments still depend on the core's temporary compatibility cookie.
Requires a Kubuno core that issues signed tickets (POST /api/v1/auth/tickets) and@kubuno/sdkwith the signed-URL helpers. -
Security fixes from the shared database layer (kubuno-db 0.9.0). The
database password can no longer appear in a log through the debug output of
the database settings. -
Database driver updated past an unfixable advisory. The previous line
pulled in an RSA implementation vulnerable to a timing side-channel
(RUSTSEC-2023-0071) for which no fix will ever exist. The new line does not
depend on it at all, and it refuses any SQL string built at run time unless it
has been audited — the queries here were checked and marked. -
Input validation library updated. The version in use carried
RUSTSEC-2024-0421 through its domain-name parser, which accepted Punycode
labels that decode to plain ASCII — a mismatch an attacker can use to make two
different names look like one.
Fixed
- Files kept on the server's local storage are found again on Windows and under symlinked storage
roots (shared storage layer updated to kubuno-storage 0.1.2). - Database migrations keep the same checksum on every OS. The repository now
pins line endings to LF (.gitattributes), so a checkout on Windows no longer
turns SQL migrations, scripts, manifests or sources into CRLF. A database
migrated by a Linux build is therefore no longer refused by a Windows or macOS
build of the same version because its migration checksums differ.
v0.1.8
Security
- HTTP/2 layer updated to a patched release.
h2moves from 0.4.15 to
0.4.19, closing a denial of service through unbounded empty DATA frames
(RUSTSEC-2026-0258). - Error library updated to a patched release.
anyhowmoves from 1.0.102
to 1.0.104, closing an unsoundness inError::downcast_mut()
(RUSTSEC-2026-0190). - TLS library updated to a patched release. The pinned
rustlscarried
RUSTSEC-2026-0285 (medium). Every outbound HTTPS connection goes through it.
v0.1.7
Changed
-
This module now installs as a Kubuno package (
.kbpkg) only. Its system
packages (Debian/RPM and the Windows and macOS installers) are no longer
built: the module is distributed as one.kbpkgper platform (Linux, Windows,
macOS) that the Kubuno server installs itself — from the admin console, or
offline withkubuno modules:install <file>.kbpkg. -
The README now opens with a logo, and the Listen section carries its own.
The Listen heading shows the Listen artwork used by the applications menu and
the browser tab. Media itself has no module artwork yet, so the page opens on
the Kubuno crest as a stand-in. -
New Listen logo — a green hexagon with a white loudspeaker, used as the
browser-tab icon of/media/listenand in the applications menu. It
replaces the generic music-note icon and is raster (PNG) designer artwork. -
Classic window glyphs on the floating video player, music player and TV.
Expand is a plain square, reduce two overlapping squares, and fullscreen the
corner icons — no more diagonal double arrows.
Fixed
-
The floating players' title bar no longer balloons on a narrow window.
A long track or file name — "Parle-moi (feat. Zaho)" — used to wrap onto four
lines and turn the accent band into a block three times its height, because
the band's six action buttons leave the title only a few dozen pixels at the
minimum window width. The title now stays on a single line and gives way as
room runs out: the icon goes first, then the text is ellipsised, and it drops
entirely when nothing legible would fit. Applies to the music player, the
Drive video player and the trailer window; the name is still shown in full in
each window's body. -
A withdrawn dependency is no longer used. A crate deep in the tree
(spin0.9.8, pulled in through the HTTP stack) was yanked by its authors.
No vulnerability was announced, but a withdrawn crate has no business in a
release; the lockfile now takes the version that replaced it. -
The package could not be built where
zipis absent. The Windows job of
the continuous integration has nozip, so the Windows package was simply lost
the first time it was attempted — a script failure, not a build failure. The
builder now falls back to 7-Zip, then to PowerShell.
Added
- This module now ships a
.kbpkg— the single package format a Kubuno
server installs by itself, the same file on Linux, Windows and macOS. It
carries the same binary, interface and manifest as the system packages,
arranged the way the server expects to find a module on disk, plus a
SHA256SUMSso a copy carried offline can be checked without the catalogue.
Nothing changes for existing installations: the.deb,.rpm,.exeand
.pkgare still published, and a catalogue that sees both simply prefers the
new one. It is also the only format the server can unpack without an external
tool, which is what makes one-click installation possible away from
Debian-like systems.
Fixed
- A built package could be thrown away instead of published. The job that
attaches a package to the release waited ten minutes for another workflow to
create that release, then gave up with "release never appeared — build.yml
likely failed". The diagnosis was wrong: on a repository whose.debtakes
longer than ten minutes to build, the release simply did not exist yet, and a
package that had built perfectly was discarded. Four modules reached v0.1.6
with packages missing for some systems because of it. The job now creates the
release itself when it is missing, so it no longer depends on another workflow
finishing first.
Added
- Security policy and CI quality gate. A
SECURITY.mddocuments how to
report vulnerabilities, and a CI workflow enforcesclippy -D warnings, a
dependency-vulnerability audit (cargo audit) and the frontend typecheck/tests.
Security
- Media now authenticates proxied requests from a signed token instead of
trusting plain headers. Requests must carry a validX-Kubuno-Authtoken
minted by the core with this module's internal secret (seekubuno-modauth),
rather than readingX-Kubuno-User-*headers at face value — which any process
reaching Media's loopback port could otherwise forge to act as any user.
v0.1.6
Changed
- Theme tokens: two colours for navigation labels (
--color-text-nav,
--color-text-nav-active). Every module carries the same token sheet, so the
values must match across them — whichever bundle loads last would otherwise
win. No visible change inside this module.
Changed
- Default application background token aligned with the core (
--body-bg#f8fafd). Only
visible when the module runs standalone: inside the shell the active theme sets it.