Rename the product display branding to Graduately.

Update app titles, installers, and welcome copy while keeping technical package IDs and updater artifact names.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
pepaskopec-blip 2026-09-23 19:54:58 +02:00
commit 6bdd25dd74
29 changed files with 96 additions and 85 deletions

View file

@ -1,6 +1,6 @@
# maturita.c # Graduately
Vzdělávací aplikace k přípravě na maturitu. / An educational app for the Czech maturita exam. Vzdělávací aplikace k přípravě na maturitu (repo `maturita.c`). / An educational app for the Czech maturita exam (repo `maturita.c`).
**[Česky](#česky)** · **[English](#english)** **[Česky](#česky)** · **[English](#english)**
@ -27,14 +27,14 @@ větve.
| Platforma | Soubor | Jak spustit | | Platforma | Soubor | Jak spustit |
| --------- | ------ | ----------- | | --------- | ------ | ----------- |
| macOS (Apple Silicon) | [maturita-installer-macos.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-macos.zip) | Rozbalit, pravý klik na **Nainstalovat maturita.C** → **Otevřít** | | macOS (Apple Silicon) | [maturita-installer-macos.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-macos.zip) | Rozbalit, pravý klik na **Nainstalovat Graduately** → **Otevřít** |
| Windows (x64) | [maturita-installer-windows.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-windows.zip) | Rozbalit a dvojklik; u SmartScreenu **Další informace → Přesto spustit** | | Windows (x64) | [maturita-installer-windows.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-windows.zip) | Rozbalit a dvojklik; u SmartScreenu **Další informace → Přesto spustit** |
| Linux (x86_64) | [maturita-installer-linux.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-linux.zip) | Rozbalit a dvojklik na instalátor | | Linux (x86_64) | [maturita-installer-linux.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-linux.zip) | Rozbalit a dvojklik na instalátor |
| Android (8+) | [maturita-installer-android.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-android.zip) | Rozbalit, otevřít **Stahnout maturita.C.html** a nainstalovat APK (neznámé zdroje) | | Android (8+) | [maturita-installer-android.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-android.zip) | Rozbalit, otevřít **Stahnout Graduately.html** a nainstalovat APK (neznámé zdroje) |
| iOS (26+) | [maturita-installer-ios.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-ios.zip) | Rozbalit, otevřít **Jak nainstalovat maturita.C.html**. Nejjednodušší: Xcode na Macu, nebo IPA přes AltStore | | iOS (26+) | [maturita-installer-ios.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-ios.zip) | Rozbalit, otevřít **Jak nainstalovat Graduately.html**. Nejjednodušší: Xcode na Macu, nebo IPA přes AltStore |
Kam se to nainstaluje: `/Applications` nebo `~/Applications` (macOS), Kam se to nainstaluje: `/Applications` nebo `~/Applications` (macOS),
`%LOCALAPPDATA%\Programs\Maturita` (Windows), `~/Applications` (Linux). `%LOCALAPPDATA%\Programs\Graduately` (Windows), `~/Applications` (Linux).
Buildy zatím nejsou notarizované (chybí Apple Developer ID), proto je při Buildy zatím nejsou notarizované (chybí Apple Developer ID), proto je při
**prvním** spuštění potřeba výše uvedený krok navíc. Aplikace se pak udržuje **prvním** spuštění potřeba výše uvedený krok navíc. Aplikace se pak udržuje
@ -219,14 +219,14 @@ branch-named file.
| Platform | File | How to run | | Platform | File | How to run |
| -------- | ---- | ---------- | | -------- | ---- | ---------- |
| macOS (Apple Silicon) | [maturita-installer-macos.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-macos.zip) | Unzip, right-click **Nainstalovat maturita.C** → **Open** | | macOS (Apple Silicon) | [maturita-installer-macos.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-macos.zip) | Unzip, right-click **Nainstalovat Graduately** → **Open** |
| Windows (x64) | [maturita-installer-windows.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-windows.zip) | Unzip and double-click; if SmartScreen appears, **More info → Run anyway** | | Windows (x64) | [maturita-installer-windows.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-windows.zip) | Unzip and double-click; if SmartScreen appears, **More info → Run anyway** |
| Linux (x86_64) | [maturita-installer-linux.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-linux.zip) | Unzip and double-click the installer | | Linux (x86_64) | [maturita-installer-linux.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-linux.zip) | Unzip and double-click the installer |
| Android (8+) | [maturita-installer-android.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-android.zip) | Unzip, open **Stahnout maturita.C.html**, then install the APK (unknown sources) | | Android (8+) | [maturita-installer-android.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-android.zip) | Unzip, open **Stahnout Graduately.html**, then install the APK (unknown sources) |
| iOS (26+) | [maturita-installer-ios.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-ios.zip) | Unzip, open **Jak nainstalovat maturita.C.html**. Easiest: Xcode on a Mac, or the IPA via AltStore | | iOS (26+) | [maturita-installer-ios.zip](https://github.com/pepaskopec-blip/maturita.c/raw/main/installers/maturita-installer-ios.zip) | Unzip, open **Jak nainstalovat Graduately.html**. Easiest: Xcode on a Mac, or the IPA via AltStore |
Install locations: `/Applications` or `~/Applications` (macOS), Install locations: `/Applications` or `~/Applications` (macOS),
`%LOCALAPPDATA%\Programs\Maturita` (Windows), `~/Applications` (Linux). `%LOCALAPPDATA%\Programs\Graduately` (Windows), `~/Applications` (Linux).
The builds are not notarized yet (no Apple Developer ID), so the first The builds are not notarized yet (no Apple Developer ID), so the first
launch still needs the extra step above. After that the app stays current: launch still needs the extra step above. After that the app stays current:

View file

@ -7,7 +7,7 @@
<application <application
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="maturita.c" android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.Maturita" android:theme="@style/Theme.Maturita"

View file

@ -75,7 +75,7 @@ class MainActivity : ComponentActivity() {
private fun crashView(dump: String, retry: () -> Unit): LinearLayout { private fun crashView(dump: String, retry: () -> Unit): LinearLayout {
val pad = (20 * resources.displayMetrics.density).toInt() val pad = (20 * resources.displayMetrics.density).toInt()
val title = TextView(this).apply { val title = TextView(this).apply {
text = "maturita.c spadla" text = "Graduately spadla"
setTextSize(TypedValue.COMPLEX_UNIT_SP, 22f) setTextSize(TypedValue.COMPLEX_UNIT_SP, 22f)
setPadding(0, 0, 0, pad / 2) setPadding(0, 0, 0, pad / 2)
} }

View file

@ -90,7 +90,7 @@ import org.maturita.maturita.data.themePalette
fun HomeScreen(vm: AppViewModel) { fun HomeScreen(vm: AppViewModel) {
val sum = summarize(vm.content, vm.progress) val sum = summarize(vm.content, vm.progress)
val pct = if (sum.totalEx == 0) 0f else sum.doneEx / sum.totalEx.toFloat() val pct = if (sum.totalEx == 0) 0f else sum.doneEx / sum.totalEx.toFloat()
RootScaffold(vm, "Maturita") { RootScaffold(vm, "Graduately") {
if (vm.showChangelog) { if (vm.showChangelog) {
item { ChangelogCard(vm) } item { ChangelogCard(vm) }
} }

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Graduately</string>
</resources>

View file

@ -79,5 +79,5 @@ cs: Cvičení v Deutsch jednotce 1
en: Exercises in Deutsch unit 1 en: Exercises in Deutsch unit 1
--- 2026-09-03 --- 2026-09-03
cs: První verze maturita.c cs: První verze Graduately
en: First version of maturita.c en: First version of Graduately

View file

@ -1,10 +1,10 @@
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application
Version=1.0 Version=1.0
Name=maturita.c Name=Graduately
GenericName=Maturita study app GenericName=Graduately study app
GenericName[cs]=Příprava na maturitu GenericName[cs]=Příprava na maturitu
Comment=Educational GTK app for maturita exam preparation Comment=Educational GTK app for Czech maturita exam preparation
Comment[cs]=Vzdělávací GTK aplikace pro přípravu na maturitu Comment[cs]=Vzdělávací GTK aplikace pro přípravu na maturitu
Exec=maturita Exec=maturita
Icon=maturita Icon=maturita

View file

@ -11,7 +11,7 @@
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>Nainstalovat maturita.C</string> <string>Nainstalovat Graduately</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>

View file

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>Stáhnout maturita.C</title> <title>Stáhnout Graduately</title>
<style> <style>
body { body {
font-family: system-ui, sans-serif; font-family: system-ui, sans-serif;
@ -27,7 +27,7 @@
</style> </style>
</head> </head>
<body> <body>
<h1>maturita.C pro Android</h1> <h1>Graduately pro Android</h1>
<p>Klepni na tlačítko. Až se APK stáhne, otevři ho a povol instalaci z neznámých zdrojů.</p> <p>Klepni na tlačítko. Až se APK stáhne, otevři ho a povol instalaci z neznámých zdrojů.</p>
<p> <p>
<a class="btn" id="dl" <a class="btn" id="dl"

View file

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
# maturita.c installer for Linux. # Graduately installer for Linux.
# #
# Carries no application of its own. Fastly caches branch-named URLs on # Carries no application of its own. Fastly caches branch-named URLs on
# raw.githubusercontent.com, so this script looks up the tip of `builds` # raw.githubusercontent.com, so this script looks up the tip of `builds`
@ -34,7 +34,7 @@ builds_sha() {
head -n 1 head -n 1
} }
say "Installing maturita.C" say "Installing Graduately"
say "---------------------" say "---------------------"
arch=$(uname -m) arch=$(uname -m)
@ -76,7 +76,7 @@ mkdir -p "$DESKTOP_DIR"
cat > "$DESKTOP_DIR/maturita.desktop" <<EOF cat > "$DESKTOP_DIR/maturita.desktop" <<EOF
[Desktop Entry] [Desktop Entry]
Type=Application Type=Application
Name=maturita.C Name=Graduately
Comment=Practice app for the Czech maturita exam Comment=Practice app for the Czech maturita exam
Exec=$DEST Exec=$DEST
Icon=maturita Icon=maturita

View file

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
# maturita.c installer for macOS. # Graduately installer for macOS.
# #
# Carries no application of its own. Fastly caches branch-named URLs on # Carries no application of its own. Fastly caches branch-named URLs on
# raw.githubusercontent.com, so this script looks up the tip of `builds` # raw.githubusercontent.com, so this script looks up the tip of `builds`
@ -24,7 +24,7 @@ say() { printf '%s\n' "$*"; }
gui_dialog() { gui_dialog() {
osascript - "$1" <<'APPLESCRIPT' osascript - "$1" <<'APPLESCRIPT'
on run argv on run argv
display dialog (item 1 of argv) with title "maturita.C" buttons {"OK"} default button 1 display dialog (item 1 of argv) with title "Graduately" buttons {"OK"} default button 1
end run end run
APPLESCRIPT APPLESCRIPT
} }
@ -32,7 +32,7 @@ APPLESCRIPT
gui_alert() { gui_alert() {
osascript - "$1" <<'APPLESCRIPT' osascript - "$1" <<'APPLESCRIPT'
on run argv on run argv
display dialog (item 1 of argv) with title "maturita.C" buttons {"OK"} default button 1 with icon stop display dialog (item 1 of argv) with title "Graduately" buttons {"OK"} default button 1 with icon stop
end run end run
APPLESCRIPT APPLESCRIPT
} }
@ -57,13 +57,13 @@ builds_sha() {
if [ "$GUI" = 1 ]; then if [ "$GUI" = 1 ]; then
if ! osascript <<'APPLESCRIPT' if ! osascript <<'APPLESCRIPT'
display dialog "Nainstalovat maturita.C do složky Aplikace? Stáhne se aktuální verze." with title "maturita.C" buttons {"Zrušit", "Instalovat"} default button "Instalovat" display dialog "Nainstalovat Graduately do složky Aplikace? Stáhne se aktuální verze." with title "Graduately" buttons {"Zrušit", "Instalovat"} default button "Instalovat"
APPLESCRIPT APPLESCRIPT
then then
exit 0 exit 0
fi fi
else else
say "Installing maturita.C" say "Installing Graduately"
say "---------------------" say "---------------------"
fi fi
@ -78,16 +78,19 @@ command -v curl >/dev/null 2>&1 || die "Na Macu chybí curl, bez něj nejde nic
# often is not, even when this installer can drop a .app there once. # often is not, even when this installer can drop a .app there once.
dest_dir="$HOME/Applications" dest_dir="$HOME/Applications"
mkdir -p "$dest_dir" mkdir -p "$dest_dir"
if [ -e "/Applications/Maturita.app" ] && [ -w "/Applications/Maturita.app" ]; then # Remove legacy Maturita.app and any prior Graduately install in /Applications.
rm -rf "/Applications/Maturita.app" for legacy in Maturita.app Graduately.app; do
fi if [ -e "/Applications/$legacy" ] && [ -w "/Applications/$legacy" ]; then
rm -rf "/Applications/$legacy"
fi
done
tmp=$(mktemp -d) tmp=$(mktemp -d)
trap 'rm -rf "$tmp"' EXIT INT TERM trap 'rm -rf "$tmp"' EXIT INT TERM
if [ "$GUI" = 1 ]; then if [ "$GUI" = 1 ]; then
osascript <<'APPLESCRIPT' >/dev/null || true osascript <<'APPLESCRIPT' >/dev/null || true
display notification "Stahuji aktuální verzi…" with title "maturita.C" display notification "Stahuji aktuální verzi…" with title "Graduately"
APPLESCRIPT APPLESCRIPT
fi fi
@ -116,6 +119,10 @@ rm -rf "$dest_dir/$name.old"
if [ -e "$dest_dir/$name" ]; then if [ -e "$dest_dir/$name" ]; then
mv "$dest_dir/$name" "$dest_dir/$name.old" mv "$dest_dir/$name" "$dest_dir/$name.old"
fi fi
# Drop the old product name if we are installing Graduately.app.
if [ "$name" = "Graduately.app" ] && [ -e "$dest_dir/Maturita.app" ]; then
rm -rf "$dest_dir/Maturita.app"
fi
if mv "$app" "$dest_dir/$name"; then if mv "$app" "$dest_dir/$name"; then
rm -rf "$dest_dir/$name.old" rm -rf "$dest_dir/$name.old"
else else

View file

@ -1,5 +1,5 @@
@echo off @echo off
rem maturita.c installer for Windows. rem Graduately installer for Windows.
rem rem
rem Carries no application of its own. Fastly caches branch-named URLs on rem Carries no application of its own. Fastly caches branch-named URLs on
rem raw.githubusercontent.com, so this script looks up the tip of `builds` rem raw.githubusercontent.com, so this script looks up the tip of `builds`
@ -11,9 +11,9 @@ setlocal EnableDelayedExpansion
set "REPO=pepaskopec-blip/maturita.c" set "REPO=pepaskopec-blip/maturita.c"
set "BRANCH=builds" set "BRANCH=builds"
set "ASSET=maturita-windows-x64.zip" set "ASSET=maturita-windows-x64.zip"
set "DEST=%LOCALAPPDATA%\Programs\Maturita" set "DEST=%LOCALAPPDATA%\Programs\Graduately"
echo Installing maturita.C echo Installing Graduately
echo --------------------- echo ---------------------
where curl >nul 2>&1 || goto :no_tools where curl >nul 2>&1 || goto :no_tools
@ -37,7 +37,7 @@ if not exist "%DEST%" mkdir "%DEST%" || goto :fail_dest
tar -xf "%TMP_DIR%\%ASSET%" -C "%DEST%" || goto :fail_extract tar -xf "%TMP_DIR%\%ASSET%" -C "%DEST%" || goto :fail_extract
set "LNK=%APPDATA%\Microsoft\Windows\Start Menu\Programs\maturita.C.lnk" set "LNK=%APPDATA%\Microsoft\Windows\Start Menu\Programs\Graduately.lnk"
powershell -NoProfile -ExecutionPolicy Bypass -Command ^ powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$s=(New-Object -ComObject WScript.Shell).CreateShortcut('%LNK%');" ^ "$s=(New-Object -ComObject WScript.Shell).CreateShortcut('%LNK%');" ^
"$s.TargetPath='%DEST%\maturita.exe';$s.WorkingDirectory='%DEST%';$s.Save()" >nul 2>&1 "$s.TargetPath='%DEST%\maturita.exe';$s.WorkingDirectory='%DEST%';$s.Save()" >nul 2>&1

View file

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>maturita.C pro iOS</title> <title>Graduately pro iOS</title>
<style> <style>
body { body {
font-family: system-ui, sans-serif; font-family: system-ui, sans-serif;
@ -28,7 +28,7 @@
</style> </style>
</head> </head>
<body> <body>
<h1>maturita.C pro iPhone (iOS 26)</h1> <h1>Graduately pro iPhone (iOS 26)</h1>
<p> <p>
Nativní aplikace pro iOS 26+ s Liquid Glass. Není 1:1 kopie desktopu. Nativní aplikace pro iOS 26+ s Liquid Glass. Není 1:1 kopie desktopu.
Apple nepovolí instalaci jako Android APK. Nejjednodušší cesta je Mac Apple nepovolí instalaci jako Android APK. Nejjednodušší cesta je Mac

View file

@ -12,7 +12,7 @@ chmod +x maturita-installer-macos.command maturita-installer-linux.sh
tmp=$(mktemp -d) tmp=$(mktemp -d)
trap 'rm -rf "$tmp"' EXIT INT TERM trap 'rm -rf "$tmp"' EXIT INT TERM
app="$tmp/Nainstalovat maturita.C.app" app="$tmp/Nainstalovat Graduately.app"
mkdir -p "$app/Contents/MacOS" mkdir -p "$app/Contents/MacOS"
cp macos/Info.plist "$app/Contents/Info.plist" cp macos/Info.plist "$app/Contents/Info.plist"
cp maturita-installer-macos.command "$app/Contents/MacOS/installer" cp maturita-installer-macos.command "$app/Contents/MacOS/installer"
@ -20,7 +20,7 @@ chmod +x "$app/Contents/MacOS/installer"
rm -f "$here/maturita-installer-macos.zip" rm -f "$here/maturita-installer-macos.zip"
(cd "$tmp" && zip -r -q "$here/maturita-installer-macos.zip" \ (cd "$tmp" && zip -r -q "$here/maturita-installer-macos.zip" \
"Nainstalovat maturita.C.app") "Nainstalovat Graduately.app")
zip -q -FS maturita-installer-windows.zip maturita-installer-windows.cmd zip -q -FS maturita-installer-windows.zip maturita-installer-windows.cmd
zip -q -FS maturita-installer-linux.zip maturita-installer-linux.sh zip -q -FS maturita-installer-linux.zip maturita-installer-linux.sh
@ -28,12 +28,12 @@ zip -q -FS maturita-installer-linux.zip maturita-installer-linux.sh
# Browsers download a zip; they render .html as a text tab on GitHub. # Browsers download a zip; they render .html as a text tab on GitHub.
# The page looks up the tip of `builds` so Fastly cannot serve a cached 404 # The page looks up the tip of `builds` so Fastly cannot serve a cached 404
# for the branch-named APK URL. # for the branch-named APK URL.
cp maturita-android.html "$tmp/Stahnout maturita.C.html" cp maturita-android.html "$tmp/Stahnout Graduately.html"
rm -f "$here/maturita-installer-android.zip" rm -f "$here/maturita-installer-android.zip"
(cd "$tmp" && zip -q -FS "$here/maturita-installer-android.zip" \ (cd "$tmp" && zip -q -FS "$here/maturita-installer-android.zip" \
"Stahnout maturita.C.html") "Stahnout Graduately.html")
cp maturita-ios.html "$tmp/Jak nainstalovat maturita.C.html" cp maturita-ios.html "$tmp/Jak nainstalovat Graduately.html"
rm -f "$here/maturita-installer-ios.zip" rm -f "$here/maturita-installer-ios.zip"
(cd "$tmp" && zip -q -FS "$here/maturita-installer-ios.zip" \ (cd "$tmp" && zip -q -FS "$here/maturita-installer-ios.zip" \
"Jak nainstalovat maturita.C.html") "Jak nainstalovat Graduately.html")

View file

@ -43,7 +43,7 @@
A201000000000000000015 /* ExercisesMore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExercisesMore.swift; sourceTree = "<group>"; }; A201000000000000000015 /* ExercisesMore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExercisesMore.swift; sourceTree = "<group>"; };
A201000000000000000016 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; A201000000000000000016 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
A201000000000000000018 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; A201000000000000000018 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
A301000000000000000001 /* Maturita.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Maturita.app; sourceTree = BUILT_PRODUCTS_DIR; }; A301000000000000000001 /* Graduately.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Graduately.app; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -116,7 +116,7 @@
A501000000000000000006 /* Products */ = { A501000000000000000006 /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A301000000000000000001 /* Maturita.app */, A301000000000000000001 /* Graduately.app */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -138,8 +138,8 @@
dependencies = ( dependencies = (
); );
name = Maturita; name = Maturita;
productName = Maturita; productName = Graduately;
productReference = A301000000000000000001 /* Maturita.app */; productReference = A301000000000000000001 /* Graduately.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
@ -347,7 +347,7 @@
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Maturita/Info.plist; INFOPLIST_FILE = Maturita/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = maturita.c; INFOPLIST_KEY_CFBundleDisplayName = Graduately;
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
@ -361,7 +361,7 @@
); );
MARKETING_VERSION = 0.1; MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.bukovinafilip.maturita; PRODUCT_BUNDLE_IDENTIFIER = com.bukovinafilip.maturita;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = Graduately;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO; SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@ -385,7 +385,7 @@
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Maturita/Info.plist; INFOPLIST_FILE = Maturita/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = maturita.c; INFOPLIST_KEY_CFBundleDisplayName = Graduately;
INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
@ -399,7 +399,7 @@
); );
MARKETING_VERSION = 0.1; MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.bukovinafilip.maturita; PRODUCT_BUNDLE_IDENTIFIER = com.bukovinafilip.maturita;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = Graduately;
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO; SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;

View file

@ -15,7 +15,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "A601000000000000000001" BlueprintIdentifier = "A601000000000000000001"
BuildableName = "Maturita.app" BuildableName = "Graduately.app"
BlueprintName = "Maturita" BlueprintName = "Maturita"
ReferencedContainer = "container:Maturita.xcodeproj"> ReferencedContainer = "container:Maturita.xcodeproj">
</BuildableReference> </BuildableReference>
@ -45,7 +45,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "A601000000000000000001" BlueprintIdentifier = "A601000000000000000001"
BuildableName = "Maturita.app" BuildableName = "Graduately.app"
BlueprintName = "Maturita" BlueprintName = "Maturita"
ReferencedContainer = "container:Maturita.xcodeproj"> ReferencedContainer = "container:Maturita.xcodeproj">
</BuildableReference> </BuildableReference>
@ -63,7 +63,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "A601000000000000000001" BlueprintIdentifier = "A601000000000000000001"
BuildableName = "Maturita.app" BuildableName = "Graduately.app"
BlueprintName = "Maturita" BlueprintName = "Maturita"
ReferencedContainer = "container:Maturita.xcodeproj"> ReferencedContainer = "container:Maturita.xcodeproj">
</BuildableReference> </BuildableReference>

View file

@ -48,7 +48,7 @@ struct PracticeHome: View {
.frame(maxWidth: MacChrome.contentMaxWidth, alignment: .leading) .frame(maxWidth: MacChrome.contentMaxWidth, alignment: .leading)
.frame(maxWidth: .infinity, alignment: .leading) .frame(maxWidth: .infinity, alignment: .leading)
} }
.navigationTitle("Maturita") .navigationTitle("Graduately")
} }
@ViewBuilder @ViewBuilder
@ -142,7 +142,7 @@ struct PracticeHome: View {
} }
} }
} }
.navigationTitle("Maturita") .navigationTitle("Graduately")
.navigationBarTitleDisplayMode(.large) .navigationBarTitleDisplayMode(.large)
} }

View file

@ -46,7 +46,7 @@
B201000000000000000017 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; B201000000000000000017 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
B201000000000000000018 /* Maturita.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Maturita.entitlements; sourceTree = "<group>"; }; B201000000000000000018 /* Maturita.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Maturita.entitlements; sourceTree = "<group>"; };
B201000000000000000019 /* PathMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = PathMap.swift; path = ../ios/Maturita/UI/PathMap.swift; sourceTree = SOURCE_ROOT; }; B201000000000000000019 /* PathMap.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = PathMap.swift; path = ../ios/Maturita/UI/PathMap.swift; sourceTree = SOURCE_ROOT; };
B301000000000000000001 /* Maturita.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Maturita.app; sourceTree = BUILT_PRODUCTS_DIR; }; B301000000000000000001 /* Graduately.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Graduately.app; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@ -121,7 +121,7 @@
B501000000000000000006 /* Products */ = { B501000000000000000006 /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
B301000000000000000001 /* Maturita.app */, B301000000000000000001 /* Graduately.app */,
); );
name = Products; name = Products;
sourceTree = "<group>"; sourceTree = "<group>";
@ -143,8 +143,8 @@
dependencies = ( dependencies = (
); );
name = Maturita; name = Maturita;
productName = Maturita; productName = Graduately;
productReference = B301000000000000000001 /* Maturita.app */; productReference = B301000000000000000001 /* Graduately.app */;
productType = "com.apple.product-type.application"; productType = "com.apple.product-type.application";
}; };
/* End PBXNativeTarget section */ /* End PBXNativeTarget section */
@ -353,7 +353,7 @@
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Maturita/Info.plist; INFOPLIST_FILE = Maturita/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = maturita.c; INFOPLIST_KEY_CFBundleDisplayName = Graduately;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
INFOPLIST_KEY_NSHighResolutionCapable = YES; INFOPLIST_KEY_NSHighResolutionCapable = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "GPL-3.0"; INFOPLIST_KEY_NSHumanReadableCopyright = "GPL-3.0";
@ -364,7 +364,7 @@
MACOSX_DEPLOYMENT_TARGET = 26.0; MACOSX_DEPLOYMENT_TARGET = 26.0;
MARKETING_VERSION = 0.1; MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.bukovinafilip.maturita.macos; PRODUCT_BUNDLE_IDENTIFIER = com.bukovinafilip.maturita.macos;
PRODUCT_NAME = Maturita; PRODUCT_NAME = Graduately;
SDKROOT = macosx; SDKROOT = macosx;
SUPPORTED_PLATFORMS = macosx; SUPPORTED_PLATFORMS = macosx;
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;
@ -387,7 +387,7 @@
ENABLE_PREVIEWS = YES; ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES; GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = Maturita/Info.plist; INFOPLIST_FILE = Maturita/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = maturita.c; INFOPLIST_KEY_CFBundleDisplayName = Graduately;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education"; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.education";
INFOPLIST_KEY_NSHighResolutionCapable = YES; INFOPLIST_KEY_NSHighResolutionCapable = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "GPL-3.0"; INFOPLIST_KEY_NSHumanReadableCopyright = "GPL-3.0";
@ -398,7 +398,7 @@
MACOSX_DEPLOYMENT_TARGET = 26.0; MACOSX_DEPLOYMENT_TARGET = 26.0;
MARKETING_VERSION = 0.1; MARKETING_VERSION = 0.1;
PRODUCT_BUNDLE_IDENTIFIER = com.bukovinafilip.maturita.macos; PRODUCT_BUNDLE_IDENTIFIER = com.bukovinafilip.maturita.macos;
PRODUCT_NAME = Maturita; PRODUCT_NAME = Graduately;
SDKROOT = macosx; SDKROOT = macosx;
SUPPORTED_PLATFORMS = macosx; SUPPORTED_PLATFORMS = macosx;
SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_EMIT_LOC_STRINGS = YES;

View file

@ -15,7 +15,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "B601000000000000000001" BlueprintIdentifier = "B601000000000000000001"
BuildableName = "Maturita.app" BuildableName = "Graduately.app"
BlueprintName = "Maturita" BlueprintName = "Maturita"
ReferencedContainer = "container:Maturita.xcodeproj"> ReferencedContainer = "container:Maturita.xcodeproj">
</BuildableReference> </BuildableReference>
@ -45,7 +45,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "B601000000000000000001" BlueprintIdentifier = "B601000000000000000001"
BuildableName = "Maturita.app" BuildableName = "Graduately.app"
BlueprintName = "Maturita" BlueprintName = "Maturita"
ReferencedContainer = "container:Maturita.xcodeproj"> ReferencedContainer = "container:Maturita.xcodeproj">
</BuildableReference> </BuildableReference>
@ -63,7 +63,7 @@
<BuildableReference <BuildableReference
BuildableIdentifier = "primary" BuildableIdentifier = "primary"
BlueprintIdentifier = "B601000000000000000001" BlueprintIdentifier = "B601000000000000000001"
BuildableName = "Maturita.app" BuildableName = "Graduately.app"
BlueprintName = "Maturita" BlueprintName = "Maturita"
ReferencedContainer = "container:Maturita.xcodeproj"> ReferencedContainer = "container:Maturita.xcodeproj">
</BuildableReference> </BuildableReference>

View file

@ -25,13 +25,13 @@ xcodebuild \
CODE_SIGNING_REQUIRED=NO \ CODE_SIGNING_REQUIRED=NO \
COMMIT="$COMMIT" COMMIT="$COMMIT"
app=$(find "$dd" -name 'Maturita.app' -path '*/Release-iphoneos/*' | head -n 1) app=$(find "$dd" -name 'Graduately.app' -path '*/Release-iphoneos/*' | head -n 1)
if [ -z "$app" ]; then if [ -z "$app" ]; then
echo "Maturita.app not found" >&2 echo "Graduately.app not found" >&2
exit 1 exit 1
fi fi
mkdir -p "$root/ios/Payload" mkdir -p "$root/ios/Payload"
cp -R "$app" "$root/ios/Payload/Maturita.app" cp -R "$app" "$root/ios/Payload/Graduately.app"
(cd "$root/ios" && zip -r -q "$root/dist-ios/maturita-ios.ipa" Payload) (cd "$root/ios" && zip -r -q "$root/dist-ios/maturita-ios.ipa" Payload)
echo "wrote $root/dist-ios/maturita-ios.ipa" echo "wrote $root/dist-ios/maturita-ios.ipa"

View file

@ -40,13 +40,13 @@ xcodebuild \
CODE_SIGNING_REQUIRED=NO \ CODE_SIGNING_REQUIRED=NO \
COMMIT="$COMMIT" COMMIT="$COMMIT"
app=$(find "$dd" -name 'Maturita.app' -path '*/Release/*' | head -n 1) app=$(find "$dd" -name 'Graduately.app' -path '*/Release/*' | head -n 1)
if [ -z "$app" ]; then if [ -z "$app" ]; then
echo "Maturita.app not found" >&2 echo "Graduately.app not found" >&2
exit 1 exit 1
fi fi
dest="$root/dist/Maturita.app" dest="$root/dist/Graduately.app"
rm -rf "$dest" rm -rf "$dest"
cp -R "$app" "$dest" cp -R "$app" "$dest"
@ -67,7 +67,7 @@ pick_sign_identity() {
} }
IDENTITY="$(pick_sign_identity)" IDENTITY="$(pick_sign_identity)"
echo "==> Signing Maturita.app ($IDENTITY)" echo "==> Signing Graduately.app ($IDENTITY)"
sign_args="--force --sign $IDENTITY" sign_args="--force --sign $IDENTITY"
if [ "$IDENTITY" != "-" ]; then if [ "$IDENTITY" != "-" ]; then
sign_args="$sign_args --options runtime --timestamp" sign_args="$sign_args --options runtime --timestamp"
@ -95,7 +95,7 @@ can_notarize() {
} }
if can_notarize; then if can_notarize; then
echo "==> Notarizing Maturita.app" echo "==> Notarizing Graduately.app"
zip="$root/dist/.notarize-$out_zip" zip="$root/dist/.notarize-$out_zip"
rm -f "$zip" rm -f "$zip"
ditto -c -k --keepParent "$dest" "$zip" ditto -c -k --keepParent "$dest" "$zip"
@ -123,6 +123,6 @@ fi
rm -f "$root/dist/$out_zip" rm -f "$root/dist/$out_zip"
( (
cd "$root/dist" cd "$root/dist"
zip -qry "$out_zip" Maturita.app zip -qry "$out_zip" Graduately.app
) )
echo "wrote $root/dist/$out_zip" echo "wrote $root/dist/$out_zip"

View file

@ -49,8 +49,8 @@ const TrEntry tr_ui[] = {
"Could not prepare the update."}, "Could not prepare the update."},
{"update_err_devbuild", "Tento build nepochází z repozitáře (dev).", {"update_err_devbuild", "Tento build nepochází z repozitáře (dev).",
"This build did not come from the repository (dev)."}, "This build did not come from the repository (dev)."},
{"welcome_kicker", "maturita.c", "maturita.c"}, {"welcome_kicker", "Graduately", "Graduately"},
{"welcome_title", "Maturita?\nTo dáte.", "Maturita?\nYou've got this."}, {"welcome_title", "Graduately\nTo dáte.", "Graduately\nYou've got this."},
{"welcome_body", {"welcome_body",
"Procvičování k maturitě v jednom okně. Česky i anglicky, " "Procvičování k maturitě v jednom okně. Česky i anglicky, "
"napsané v C studenty ze SSŠVT.", "napsané v C studenty ze SSŠVT.",
@ -81,8 +81,8 @@ const TrEntry tr_ui[] = {
"Systém teď nabídne instalaci nové verze (%s).", "Systém teď nabídne instalaci nové verze (%s).",
"The system will now offer to install the new version (%s)."}, "The system will now offer to install the new version (%s)."},
{"update_err_badapk", {"update_err_badapk",
"Stažený soubor není platný build maturita.c.", "Stažený soubor není platný build Graduately.",
"The downloaded file is not a valid maturita.c build."}, "The downloaded file is not a valid Graduately build."},
{"changelog_title", "Co je nového", "What's new"}, {"changelog_title", "Co je nového", "What's new"},
{"changelog_dismiss", "Rozumím", "Got it"}, {"changelog_dismiss", "Rozumím", "Got it"},
{"welcome_feat1_title", "Efektivní procvičování", "Focused practice"}, {"welcome_feat1_title", "Efektivní procvičování", "Focused practice"},

View file

@ -457,13 +457,13 @@ void activate(GtkApplication *app, gpointer user_data) {
window = GTK_WINDOW(gtk_application_window_new(app)); window = GTK_WINDOW(gtk_application_window_new(app));
main_window = window; main_window = window;
gtk_window_set_title(window, "maturita.c"); gtk_window_set_title(window, "Graduately");
gtk_window_set_default_size(window, 1080, 720); gtk_window_set_default_size(window, 1080, 720);
setup_window_icon(window); setup_window_icon(window);
headerbar = gtk_header_bar_new(); headerbar = gtk_header_bar_new();
gtk_widget_add_css_class(headerbar, "titlebar"); gtk_widget_add_css_class(headerbar, "titlebar");
title_label = gtk_label_new("maturita.c"); title_label = gtk_label_new("Graduately");
gtk_widget_add_css_class(title_label, "app-title"); gtk_widget_add_css_class(title_label, "app-title");
gtk_header_bar_set_title_widget(GTK_HEADER_BAR(headerbar), title_label); gtk_header_bar_set_title_widget(GTK_HEADER_BAR(headerbar), title_label);
gtk_window_set_titlebar(window, headerbar); gtk_window_set_titlebar(window, headerbar);

View file

@ -250,7 +250,7 @@ static InstallKind install_target(char **target_out, char **parent_out) {
#endif #endif
#ifdef __APPLE__ #ifdef __APPLE__
/* .../Maturita.app/Contents/MacOS/maturita -> .../Maturita.app */ /* .../Graduately.app/Contents/MacOS/maturita -> .../Graduately.app */
if (!target && exe) { if (!target && exe) {
char *macos_dir = g_path_get_dirname(exe); char *macos_dir = g_path_get_dirname(exe);
char *contents = g_path_get_dirname(macos_dir); char *contents = g_path_get_dirname(macos_dir);