github elan-ev/tobira v3.0
v3.0 🐖

19 hours ago

We are very happy to announce Tobira 3.0! This release vastly improves the main search and lets users find events via subtitle and slide text contents. Users can now edit ACLs of existing events, while admins can mandate that events inside series use the series' ACL. We also added a system to protect videos with passwords. For more details and all other new features and improvements, see the detailed changelog below.

Changelog

Breaking changes ⚠

The breaking changes are listed below with each respective change (as BREAKING). Please also see the "Migration" section at the bottom!

User-facing changes

  • Search
    • Rework & improve main search design: more information is shown and parts of the metadata that match the search query are highlighted. #1273
    • Add ability to find events by slide text & captions in search. This allows users to find videos by what is said or shown, instead of only the metadata. #1189
    • Stop using instant-search (i.e. search as you type): due to the other changes, the search (frontend & backend) got heavier, making it not quite fast enough for an "instant search" that feels good. A traditional "search on enter" feels way better and is also a UX win in many ways. #1322
    • Improve relevancy/ordering of search results and other improvements #1319 #1324
    • BREAKING: Tobira now requires MeiliSearch 1.12. Also note: the "text search" feature might increase your DB and search index size notably.
  • Make event ACL editable via Tobira #1272
  • Add config to lock video ACLs to their series. When enabled, the ACL for events inside a series cannot be edited by users. #1305
  • Add support for event specific password protection. Currently this only exists to support the legacy ETH password protection, but it can be easily adjusted to work with other kinds of password protection schemes. #1244
  • BREAKING: Make <h1> heading on start page configurable. This now does not show any heading by default. #1289
  • Do some Paella updates #1295
  • Remove separate slide overview feature from Paella ("frame control button plugin") #1310
  • Left align upload page #1320
  • Fix: upload submit button is now disabled when form is invalid #1320
  • Improve frontend performance by avoiding useless renders #1321

Changes primarily for admins

  • BREAKING: Allow configuring logos for multiple languages #1292
  • BREAKING: Make known group labels require 'default' instead of 'en' #1316
  • BREAKING: Move config sync.{user,password} to opencast #1296
  • BREAKING: Remove log.log_http_headers config and move log calls into submodules #1309
  • Add createRealmLineage mutation to API #1179
  • Add API mutations to expose individual steps of mountSeries mutation #1225
  • As PostgreSQL 12.x is no longer supported since November 21, 2024, Tobira now requires PostgreSQL 13.x.
  • Update Juniper to 0.16 #1298. This updates our backend GraphQL library to the next major version. There shouldn't be any observable differences except that /~graphiql is now upgraded and looks more modern.
  • Update backend dependencies #1302
  • Update frontend dependencies

Changes primarily for developers

  • Refactor: add top-level model module #1317
  • Add a new JWT key for local development #1328

Full Changelog: v2.13...v3.0

Migration

This release unfortunately contains a number of breaking changes, but they should be straight-forward to deal with.

  • Upgrade PostgreSQL to at least version 13.x.
  • Upgrade MeiliSearch to at least version 1.12. Note that the index will be rebuilt anyway, so no need to keep/migrate it.
  • Config changes:
    • All "translated strings" in the config now require the default instead of the en entry. To keep the old behavior (of using English as default language), just replace all en keys with default. For example, change site_title = { en = "My university", de = "Meine Universität" } to site_title = { default = "My university", de = "Meine Universität" }. The default entry is used whenever there is no language-specific entry for the user's language.
    • Move sync.user and sync.password to the [opencast] section
    • If you used log_http_headers = true, replace that line with filters."tobira::http::log::headers" = "trace".
    • The logo configuration changed. Do see the documentation for the full explanation, but in short: add a logos = [ ... ] line and move the individual large, small, large_dark and small_dark entries into it as array item. Then add the appropriate mode = "light", mode = "dark", size = "narrow", size = "wide" attributes to each line.
  • Just like the configuration, in "known groups", the label now requires default instead of en as entry. If you already inserted known groups into your DB, you have two options to update those:
    • If you still have the .json file around, just edit that file, replacing all en keys with default. And then just run tobira known-groups upsert again.
    • If you don't, you can fix the DB directly by running tobira db console and executing update known_groups set label = delete(label, 'en') || hstore('default', label->'en').
  • If you want to keep the old behavior of showing the configured general.site_title as <h1> on the homepage, you have to edit the page name in the page settings.
  • Once everything is running again, Tobira will download and index event texts (subtitles, slide texts). Keep an eye on the search index size during that process.

Don't miss a new tobira release

NewReleases is sending notifications on new releases.