Commit graph

21 commits

Author SHA1 Message Date
pepaskopec-blip
bce63459d1 Rename published packages and installers from maturita-* to graduately-*.
Keep temporary legacy aliases on the builds branch so older updaters still find downloads.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 21:30:03 +02:00
pepaskopec-blip
d9bba71442 Point installers and updaters at the Graduately repository.
GitHub and Forgejo were renamed; keep artifact filenames, update repo URLs and remotes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 21:24:35 +02:00
pepaskopec-blip
ccc31a9e01 Allow Forgejo main mirror to push a full git history.
Checkout was shallow, so Forgejo rejected the force-update with "shallow update not allowed".

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 21:20:09 +02:00
pepaskopec-blip
ffba2b980c Fix Forgejo mirror path and document the full reading-list release.
Point the CI mirror at edu/, force-push both branches, refresh README/changelog, and add make smoke for installer and builds checks.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-23 21:09:28 +02:00
pepaskopec-blip
1f7748fc10 Fix Forgejo CI mirror auth that produced Bad hostname URLs.
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>
2026-09-23 10:43:37 +02:00
pepaskopec-blip
011bc3c685 Ship only the native Swift app on macOS.
GTK packaging stays for Linux and Windows; the Mac installer and updates use the Swift zip.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-21 12:18:32 +02:00
pepaskopec-blip
58e3a75f21 Add a native SwiftUI macOS app that shares the iOS player.
The GTK Mac build stays; CI now also publishes maturita-macos-swift.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 18:40:44 +02:00
pepaskopec-blip
11eb14e136 Mirror main and the builds branch to Forgejo from CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 20:03:40 +02:00
pepaskopec-blip
e00ced808b Make the Android self-update actually install.
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>
2026-09-18 18:36:25 +02:00
pepaskopec-blip
6c7336c7bb Add a SwiftUI iOS app that plays the same maturita content.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 14:01:01 +02:00
pepaskopec-blip
04e0a41f31 Install Android API 37.0 in CI, the name Google now publishes.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 11:00:08 +02:00
pepaskopec-blip
70119bf373 Skip the retired Android SDK tools package in CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 10:57:59 +02:00
pepaskopec-blip
9d8b853081 Add a Jetpack Compose Android app that plays the same maturita content.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-18 10:54:49 +02:00
pepaskopec-blip
45ed500fa2 Ship the macOS installer as a double-clickable app.
A regular user can unzip and open it; install no longer needs Terminal or chmod.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 18:27:43 +02:00
pepaskopec-blip
0d40e12788 Fix CI so published builds can move past the stuck VERSION.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 17:22:32 +02:00
pepaskopec-blip
452dba4a8a Add Developer ID signing and notarization to the macOS build.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 16:25:08 +02:00
pepaskopec-blip
737e27deb0 Publish builds to a branch instead of to releases.
Releases and version numbers are gone. CI now rebuilds all three platforms
on every change to main and commits the packages to the `builds` branch,
so what anyone downloads is the current state of the repository. The
branch is rewritten from scratch each time rather than added to, so the
repository keeps one copy of the packages instead of a ~70 MB set per
commit.

Without tags there is no version to compare, so a build carries the
commit it was made from and the branch carries a VERSION file naming the
same commit. The updater fetches those few bytes and treats any
difference as being behind; commits are not ordered, and the branch only
ever holds the current build.

The installers fetch from the branch over raw.githubusercontent.com for
the same reason.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 15:40:47 +02:00
pepaskopec-blip
7d503d6c5b Add installers that fetch the newest release when run.
Each installer carries no application of its own and resolves
/releases/latest/download/ at the moment it runs, so the file never goes
stale and the same download keeps working across future releases.

macOS installs into /Applications, falling back to the user's own folder
when that is not writable, and clears the quarantine flag the unsigned
build would otherwise trip over. Windows extracts over any existing
install rather than replacing the folder, so the progress files kept
inside it survive, and adds a Start menu entry. Linux drops the AppImage
in ~/Applications with a desktop entry and its icon.

Publish the macOS one zipped, because a release asset loses its
executable bit and a .command needs one to be double-clicked.

The .cmd also had to be excluded from the *.cmd ignore rule, which comes
from the kernel section of the template and targets build artifacts.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 15:16:46 +02:00
pepaskopec-blip
91a848b408 Add a self-updater that installs new releases.
Bake the release tag into the binary so the app knows what it is running;
plain builds keep the "dev" default and never offer an update. The CI
workflow already exported the tag on Linux and macOS, so only the Windows
job needed it.

Read the newest version from the redirect GitHub serves for
/releases/latest, which avoids the REST API and its unauthenticated rate
limit and needs no JSON parser. Networking goes through the curl command
rather than a linked library: curl handles TLS, redirects and proxies, it
ships on all three platforms, and it keeps the bundling scripts free of
another shared library.

An application cannot reliably replace its own files while running, so
every platform follows one shape: unpack beside the current install,
write a script that waits for this process to exit before swapping, then
launch it detached and quit. Staging beside the install keeps the move on
one filesystem and fails early when the location is read-only. The
Windows script copies without mirroring so the progress files kept inside
the install directory survive.

Check quietly a few seconds after startup and offer the result in a
banner above the pages, with a manual check in the settings popover.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-17 15:04:55 +02:00
pepaskopec-blip
9f27724751 Fix broken macOS release bundle missing GTK libraries.
Replace fragile dylibbundler with a recursive otool-based bundler, verify every dependency, smoke-test launch, and ship GTK schemas with the Windows zip.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 16:30:23 +02:00
pepaskopec-blip
f8e27e8b53 Add self-contained release packaging for Linux, macOS, and Windows.
Resolve asset/progress paths for AppImage and .app bundles, and ship GitHub Actions builds on version tags.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-16 08:35:29 +02:00