Skip to content

Releases

Rostdav 0.10.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 08:54

Changed

  • Web interface, mobile first: on phones the navigation is a tab bar at the bottom (Files, Recent, Shares, More) instead of a strip that scrolls sideways at the top; the new page "More" holds Search, Trash bin, Devices & security, Settings, About, Administration and Sign out. Upload and New folder are round buttons above the tab bar, and a selected file opens as a sheet from the bottom. File lists drop the size column on phones, and long values on the About page wrap instead of being cut off. Wide screens are unchanged.
  • Font: the web interface now uses Inter (self-hosted, SIL OFL 1.1) instead of Space Grotesk. The documentation site and the brand files keep Space Grotesk.
  • Upload progress on phones shows at the top of the screen. The site manual has a section on using Rostdav on a phone; the site screenshots are retaken, and design/mockups/web-ui/mobile/ shows the phone layout (made by scripts/screenshots.mjs).

Rostdav 0.9.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 18:48

Added

  • Search for the Nextcloud apps: WebDAV SEARCH on /remote.php/dav/ (d:basicsearch: name, type, size, date, favorite, folder, sorting, limit) and the unified search provider files (/ocs/v2.php/search/providers/files/search). Both only return what the user may read. Checked against 90 recordings of Nextcloud 35.0.2; the Android app's search (unified search) was seen working on the emulator, the iOS app was not tried. Differences are listed in docs/compatibility.md.

Rostdav 0.8.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 16:28

Added

  • Search in PDF and Office files: the text of PDF, Word (docx, doc), Excel (xlsx, xls), PowerPoint (pptx, ppt) and OpenDocument (odt, ods, odp) files is found like the text of other files. The readers run in a separate short-lived process with a memory limit, a CPU limit and a time-out, so a damaged or hostile file cannot take the server down. On by default; Administration, Server, "Search PDF and Office files" switches it off (the stored texts are then removed). Files read before are read again once. ADR 0013.

Changed

  • The minimum Rust version is 1.88 (the PDF reader needs it).

Rostdav 0.7.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 13:48

Added

  • Search (/search, "Search" in the navigation): finds files and folders by name in everything you can reach, your own and what others shared with you, in all folders at once. You can limit it to a folder and to files or folders; results are paged and the best match comes first. When a folder filter finds nothing, it links to this search.
  • Search in the text of files: /search also finds files by the words in them (text files: txt, md, csv, json, xml, html, source code, …), shows where, with the words marked, and lists name hits first. Whole words only. A background indexer reads the files a little at a time into a search index of its own (db/search.sqlite, rebuildable, not in backups). On by default; Administration, Server can switch it off (the stored texts are then removed) and set the size limits. The index holds the text of files in plain form in the data directory, so it is as sensitive as the files. rostdav admin search status|rebuild. ADR 0012. PDF and Office files and the search of the Nextcloud apps follow.

Fixed

  • rostdav admin … commands that need no password (user list, search status, …) waited for a line of input when a server was running (since 0.4.1): in a terminal you had to press Enter, with an open pipe they never finished. Only user add and user set-password read standard input now.
  • The admin socket was not created when the path of the data directory is long (a Unix socket address holds at most 107 bytes); the socket is now reached through the open directory, so any path works.

Changed

  • Names are compared the same way everywhere (the folder filter, the user list in the administration, the sharee search): case and accents do not matter, and an accented letter written as one character or as letter plus accent is the same. Before, Café typed with a combining accent did not find Café, and non-ASCII capitals were not folded in the sharee search. Sharee search with an empty text still lists everybody.

Rostdav 0.5.2

Choose a tag to compare

@github-actions github-actions released this 24 Oct 12:02

Fixed

  • Menus of the web interface (account, New folder, Upload, Add user) now close like menus should: when you click elsewhere, press Esc (the focus goes back to the menu's button), move on with Tab, or open another menu. Before, they stayed open until their own button was clicked again, and several could be open at once.
  • Web interface on a phone: the navigation was a panel as tall as the screen that pushed the content out of sight. It is now one row at the top that scrolls sideways and shows the current page; the account icon sits in its corner, and there is no empty gap under it. (The storage meter is only on the Settings page on a phone.)

Rostdav 0.5.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 10:47

Fixed

  • File names with the characters U+007F and U+0080 to U+009F are accepted. Nextcloud forbids only the characters 0 to 31 (FilenameValidator.php), and real data directories contain such names (an emoji decoded as Latin-1); Rostdav refused them, so those files could not be imported or synced. Found with a real Nextcloud data directory.

Rostdav 0.5.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 10:15

Added

  • rostdav admin import-nextcloud <data-dir>: imports a Nextcloud data directory (ADR 0011). Every user's files with names and modification times, and the versions Nextcloud kept (files_versions), into the Rostdav user of the same name (--map NC=USER to rename, --only to pick). The directory is only read, so Nextcloud can keep running; the command can be repeated, --update replaces files that changed (the old content becomes a version), --dry-run writes nothing. Not imported, and listed in the output: the trash, group folders, external storage, shares, favorites and files encrypted by Nextcloud.

Rostdav 0.4.1

Choose a tag to compare

@github-actions github-actions released this 24 Oct 09:11

Fixed

  • rostdav admin … did not work while the server ran (since 0.3.0, the Turso database locks its file for one process): adding the first user to a container, admin backup ("while the server runs"), fsck and the other commands failed with "File is locked by another process". The running server now listens on a Unix socket in the data directory (admin.sock, mode 0600, only root and the server's own user may connect) and the command line sends its command there (ADR 0010). Without a running server the commands open the database directly, as before.

Rostdav 0.4.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 21:04

Added

  • About page (/about, in the navigation under the account entries): version, licence, source code, and the release notes of every version. The notes are CHANGELOG.md compiled into the binary, so they work offline and describe exactly what is running; the running version is marked and open.
  • Version check, off by default (ADR 0009): an administrator can switch it on (Administration, Server, "Updates"). Then the server asks the GitHub releases API once a day, and on "Check now", which version is the newest, and shows a newer one with its release notes. The request carries only User-Agent: rostdav/<version>: no user, file or server data. While the check is off, the server makes no outbound connection at all. A failed check is shown on the page and never affects serving files. This adds an HTTPS client (ureq, rustls, bundled root certificates) to the program.
  • Installing an update from the web interface, for a plain binary only (a container image shows the steps to pull the new image). The administrator confirms with their password; the server downloads the release file from GitHub, checks its minisign signature against a key compiled into the program, runs it with --version, saves the database to backups/before-<version>.sqlite, keeps the old program as rostdav.previous, replaces its program file and exits with status 75 for the supervisor to restart it. It stays off until a signing key is built in. Releases now also carry the bare binaries (rostdav-<version>-<target>) with minisign signatures (ADR 0009).
  • Documentation site with a user manual, an administrator guide and the reference documents at https://pierrejochem.github.io/rostdav/ (built from site/ and docs/, see site/README.md), SECURITY.md, and a social preview image in assets/brand/.

Fixed

  • The profile picture is now shown where a user appears as a round icon: the icon at the top right of every page, and the user list and user details in the administration (before, only the first letter was shown). The picture's address carries its version, so a new picture shows at once and not after the browser's cache has expired.

Changed

  • Dependencies: hmac 0.13, sha1 0.11, chacha20poly1305 0.11, base64 0.23, ulid 3, tower-http 0.7, and the transitive ctutils 0.4.5 (RUSTSEC-2026-0385, non-constant-time masks in 0.4.2). Secrets sealed by earlier versions still open (a test holds a value sealed by the old library). The Rust version needed to build is now 1.87 (was 1.85). Dependabot proposes updates from now on.
  • Sign-in pages (sign-in, second factor, device connection): the full Rostdav logo from assets/brand (mark and wordmark, set in the page's own font) beside the form on a dark brand panel, with a short tagline; on phones the panel becomes a band above the form.

Rostdav 0.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 13:25

Added

  • Files page: drag and drop of files and whole folders anywhere on the page (empty folders included), a "Choose a folder" button, and one progress bar for the whole batch. A file that cannot be stored (for example a refused name) is reported at the end; the rest of the batch still uploads.
  • Profile picture: any picture can be chosen or dropped. The browser crops it to a square, shrinks it and re-encodes it so that it fits what the server stores (at most 256 KiB, 16 to 1024 pixels), and shows a preview before it is saved.
  • File inputs are drop zones (Settings, Files), with sidebar icons for "Recent" and "Shares".

Changed

  • Database engine: Turso Database instead of SQLite (ADR 0008). Same file format and file name; no C library any more. Existing databases are converted on the first start (take a backup first). Small files are slower (about 245 uploads/s instead of 420, 660 downloads/s instead of 1100 in the load test), large files and listings are not; the binary grows from about 20 MB to 47 MB.
  • rostdav admin fsck (and the status page) now also run the database's integrity check and look for rows whose parent row is gone.
  • The page upload no longer probes every file with a request that answers 404 (it starts the transfer and reads it only when it exists).