Keep full quizzes for 1984 and Spalovač mrtvol; other titles get catalog metadata stubs across Swift, GTK, and content.json.
Co-authored-by: Cursor <cursoragent@cursor.com>
CI stopped publishing when the iOS job outgrew the macos-14 Xcode, so
the builds branch froze; the iOS job now runs on macos-26 and publish
keeps the previous package for any platform that failed, with
VERSION-<platform> markers naming the commit each package came from.
APKs are signed with a committed sideload key instead of the runner's
random debug key, so Android accepts them as updates, and the version
code grows with every CI run. The updater explains the unknown-sources
step, keeps the Update button after errors and checks the download is
this app.
Co-authored-by: Cursor <cursoragent@cursor.com>
Android moves to Material 3 (navigation bar, app bars, list items,
bottom sheets, pager) with a real back stack. iOS hides the tab bar in
exercises so the bottom action is reachable, aligns content, and uses
system colours so themes and dark mode work. Both pick a readable
accent tint. Desktop keeps the VLSM table inside the window and gives
statistics the same header rhythm as other pages.
Co-authored-by: Cursor <cursoragent@cursor.com>
The swap helper now detaches from the app, downloads start when a newer VERSION appears, and checks keep running so a just-published build is not missed.
Co-authored-by: Cursor <cursoragent@cursor.com>
Lesson and exercise targets were built in a temporary buffer, so choosing one sometimes opened nothing.
Co-authored-by: Cursor <cursoragent@cursor.com>
raw.githubusercontent.com caches branch-named files, so the installer was serving a stale zip after CI rewrote builds.
Co-authored-by: Cursor <cursoragent@cursor.com>