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}
toopencast
#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
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 theen
entry. To keep the old behavior (of using English as default language), just replace allen
keys withdefault
. For example, changesite_title = { en = "My university", de = "Meine Universität" }
tosite_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
andsync.password
to the[opencast]
section - If you used
log_http_headers = true
, replace that line withfilters."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 individuallarge
,small
,large_dark
andsmall_dark
entries into it as array item. Then add the appropriatemode = "light"
,mode = "dark"
,size = "narrow
",size = "wide"
attributes to each line.
- All "translated strings" in the config now require the
- Just like the configuration, in "known groups", the label now requires
default
instead ofen
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 allen
keys withdefault
. And then just runtobira known-groups upsert
again. - If you don't, you can fix the DB directly by running
tobira db console
and executingupdate known_groups set label = delete(label, 'en') || hstore('default', label->'en')
.
- If you still have the
- 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.