Skip to content

Releases: kubuno/books

v0.1.9

Choose a tag to compare

@github-actions github-actions released this 05 Oct 08:01

Changed

  • Visual Studio solution versioned with the repository (Kubuno.Books.slnx, generated by vskubuno, the naming of
    every Kubuno repository): the server is the project Kubuno.Books.Server, the frontend Kubuno.Books.Web, in
    the solution folders Server, Libraries and Frontend, with the shared launch profile "Books (Kubuno Core + browser)".
    The crate and npm names do not change.

  • The library now runs on PostgreSQL, MySQL/MariaDB or SQLite. The engine is
    an administrator choice read at start-up (the [database] engine setting), not
    a build-time one, and a single binary connects to whichever is named. Every
    query the module issues was made portable across the three engines: the
    PostgreSQL-only uuid[] restriction column becomes a JSON array, the per-user
    access rules (which libraries a reader may see, and the age ceiling) are
    decided in the application instead of by SQL functions, the tag/author/facet
    browsers and the "duplicate books" report no longer rely on PostgreSQL array
    and JSON operators, RETURNING and ON CONFLICT are expressed in each
    engine's own form, and integer results are read at a width all three engines
    accept. Behaviour is identical on every engine. Existing PostgreSQL
    installations upgrade in place; MySQL/MariaDB and SQLite create the schema
    fresh.

Security

  • Covers, page images, the PDF and EPUB readers and downloads no longer rely on the access-token cookie
    the web client used to keep readable by page scripts.
    Images and the PDF reader use short-lived signed
    tickets; EPUB files are fetched with your session. Requires a Kubuno core that issues signed tickets (POST /api/v1/auth/tickets) and @kubuno/sdk with 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.

  • 7-zip reader replaced by its maintained successor. Comic archives in the
    CB7 format were read by a library whose repository has been deleted and which
    will never be fixed (RUSTSEC-2026-0245 path traversal, RUSTSEC-2026-0246
    unmaintained). It is replaced by the actively maintained fork, which carries
    no advisory. Reading a CB7 page never wrote anything to disk here, so the
    traversal was not reachable, but the library is gone and the whole dependency
    with it. Listing the pages of a CB7 book is also much faster now: the page
    names are read from the archive index instead of decompressing every page.

  • PDF reader updated to a patched release. It could be made to overflow the
    stack by deeply nested objects (RUSTSEC-2026-0187), and it reads files that
    users upload.

  • 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.

  • The OPDS "recently added" feed no longer puts a URL value into its query
    text.
    Its ?limit= was pasted into the SQL rather than passed as a value.
    It was bounded to 1-100 beforehand, so nothing could be smuggled through it,
    but the shape was the one that goes wrong; the limit is now sent as a value
    like every other.

  • 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).

  • Oracle MySQL installs use the migrations written for them. The module now runs its mysql-oracle migration set when the database is Oracle MySQL, instead of the generic MySQL set.

  • The library installs on Oracle MySQL 8. Its schema migration gave a
    TEXT column a literal default, which MariaDB accepts but MySQL 8 refuses
    (error 1101), so the module could not start on MySQL. On Oracle MySQL a variant
    of that migration (migrations/mysql-oracle/) now declares the same default as
    an expression; MariaDB keeps running the original file. Both are recorded under
    the original checksum, so a database that already applied it is unaffected.

  • 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

Choose a tag to compare

@github-actions github-actions released this 18 Sep 21:41

Security

  • HTTP/2 layer updated to a patched release. h2 moves 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. anyhow moves from 1.0.102
    to 1.0.104, closing an unsoundness in Error::downcast_mut()
    (RUSTSEC-2026-0190).
  • TLS library updated to a patched release. The pinned rustls carried
    RUSTSEC-2026-0285 (medium). Every outbound HTTPS connection goes through it.

v0.1.7

Choose a tag to compare

@github-actions github-actions released this 18 Sep 10:55

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 .kbpkg per platform (Linux, Windows,
    macOS) that the Kubuno server installs itself — from the admin console, or
    offline with kubuno modules:install <file>.kbpkg.

  • The README now opens with the module's logo. The public README on
    GitHub now shows the module's designer logo (the same PNG shown as the
    browser tab icon and in the applications menu) at the top of the page — the
    repository landing now matches the icon a signed-in user sees inside the
    platform. The image ships in-repo, under .github/logo.png, so it renders
    even when the repo is browsed offline.

  • New Books logo — a brown hexagon with an open book, used as the
    browser-tab icon and in the applications menu. It replaces the generic
    open-book icon and is raster (PNG) designer artwork; the Books tab icon now
    resolves (the former SVG path pointed at a missing file).

Fixed

  • A withdrawn dependency is no longer used. A crate deep in the tree
    (spin 0.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 zip is absent. The Windows job of
    the continuous integration has no zip, 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
    SHA256SUMS so a copy carried offline can be checked without the catalogue.
    Nothing changes for existing installations: the .deb, .rpm, .exe and
    .pkg are 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 .deb takes
    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.md documents how to
    report vulnerabilities, and a CI workflow enforces clippy -D warnings, a
    dependency-vulnerability audit (cargo audit) and the frontend typecheck/tests.

v0.1.6

Choose a tag to compare

@github-actions github-actions released this 19 Aug 09:29

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.

v0.1.5

Choose a tag to compare

@github-actions github-actions released this 31 Jul 17:32
kubuno-books v0.1.5

v0.1.4

Choose a tag to compare

@github-actions github-actions released this 23 Jul 09:56
kubuno-books v0.1.4

v0.1.3

Choose a tag to compare

@github-actions github-actions released this 23 Jul 09:57
kubuno-books v0.1.3