GTK stubs now open shared kvíz/děj pages from generated packs; Mac book screens keep practice above notes with stable titles.
Co-authored-by: Cursor <cursoragent@cursor.com>
Expand notes, quizzes, and plot exercises for all titles, and show those notes on the GTK stub book page.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Basic auth headers and treat an empty FORGEJO_USER secret as oauth2 so pushes no longer build https://@host.
Co-authored-by: Cursor <cursoragent@cursor.com>
Make reading-list pages show how to learn: readable note cards, then quiz/plot, with clearer book list metadata.
Co-authored-by: Cursor <cursoragent@cursor.com>
Defer NavigationStack path updates until after the practice tab is active so SwiftUI does not trap in boundPathChange.
Co-authored-by: Cursor <cursoragent@cursor.com>
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>
Maturita.xcworkspace points at ios/Maturita.xcodeproj; opening the
project from the repository root otherwise resolves Maturita/ to the
compiled desktop binary on a case-insensitive disk.
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>
The build script now extracts content.json into derived data and copies
it into the app bundle, so no generated file is referenced from the
project or written into the repository. Signing is explicit: ad hoc for
the simulator, automatic with your own team for a device.
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>