Fork of smarttube, adds a catppuchin theme
  • Python 71.4%
  • Shell 28.6%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Moritz Gutzeit f3c9f8d99a
All checks were successful
Build / Upstream release with Macchiato (push) Successful in 6m49s
Logo: only the peach screen with the "S", without "Tube"
Cropped to the icon's width at full height, so the icon keeps its size in the title bar.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 11:16:55 +02:00
.forgejo/workflows SmartTube with a Catppuccin Macchiato color scheme, built from upstream releases 2026-10-23 09:59:10 +02:00
macchiato Logo: only the peach screen with the "S", without "Tube" 2026-10-23 11:16:55 +02:00
scripts Build: smaller Gradle heap, two workers, no lint, so the runner does not kill the daemon 2026-10-23 10:18:45 +02:00
.gitattributes SmartTube with a Catppuccin Macchiato color scheme, built from upstream releases 2026-10-23 09:59:10 +02:00
.gitignore SmartTube with a Catppuccin Macchiato color scheme, built from upstream releases 2026-10-23 09:59:10 +02:00
README.md German short date under the clock: "Di 27.10" 2026-10-23 11:09:50 +02:00

SmartTube Macchiato

SmartTube (stable flavour) with a Catppuccin Macchiato color scheme, rebuilt automatically from every upstream release and delivered through SmartTube's own in-app updater. The colours match the cleanyourtv launcher: base background, mantle side bar, surface0 cards, peach focus, red progress bars, and the SmartTube logo recoloured to match.

This repository holds no SmartTube source. It holds the changes and the CI that applies them:

Path What
macchiato/overlay/ New files copied over the upstream checkout: colours, styles, the scheme's name
macchiato/patches/ Edits to upstream files: the scheme entry in MainUIData.initColorSchemes(), the German short date ("Di 27.10") in DateTimeView
scripts/build.sh Clone an upstream tag, apply the above, set version and update URL, signed build
scripts/release.py Decide what to build, publish the release, write the updater manifest
.forgejo/workflows/build.yml Every 6 hours, on changes to macchiato/ or scripts/, or by hand

How updates work

  1. The workflow reads upstream's smarttube_stable2.json and takes its newest version, e.g. 32.68 (versionCode 2458). It builds the upstream git tag of the same name, never master.
  2. Our revision R is the number of commits that touched macchiato/. The build gets versionCode V*1000 + R and versionName 32.68-mR, so a new upstream release and a theme change both produce a higher versionCode.
  3. If the release v32.68-mR already exists, the job stops. Otherwise it builds, creates that release with smarttube_stable_arm64-v8a.apk and smarttube_stable_armeabi-v7a.apk, then replaces smarttube_stable2.json on the release latest.
  4. The app checks https://git.mgutzeit.de/mgutzeit/smarttube-macchiato/releases/download/latest/smarttube_stable2.json and offers the update with upstream's changelog.

If a patch no longer applies to a new upstream release, the job fails and nothing is published; the TV stays on the last build. Fix the patch, and the next run builds.

google-services.json is removed before the build, so crash reports from this build do not go to upstream's Firebase project.

Changing the theme

Edit macchiato/overlay/smarttubetv/src/main/res/values/macchiato.xml and push. The commit raises R, and the TV gets the update on its next check. To rebuild for a change outside macchiato/ (e.g. a build script fix that changes the APK), touch something in macchiato/ as well.

To regenerate the patch against a new upstream tag: apply the edit in a checkout of the tag and git diff > macchiato/patches/0001-macchiato-color-scheme.patch. MainUIData.java uses CRLF line endings; .gitattributes keeps them in the patch.

Signing

The APKs are signed with this fork's own key, so Android will not install them over the official SmartTube (and the other way round). Secrets in the repository settings: KEYSTORE_BASE64, KEYSTORE_PASSWORD, KEY_ALIAS, KEY_PASSWORD; optional RELEASE_TOKEN. Keep an offline copy of the keystore: without it, the next build cannot update the installed app.

First install

  1. In the official SmartTube: Settings > Backup/Restore > Backup app data. The backup is written to /sdcard/Android/media/org.smarttube.stable/data/. Copy that folder off the TV: Android deletes it together with the app.
  2. Uninstall the official SmartTube (org.smarttube.stable).
  3. Install the APK for the TV's ABI (adb shell getprop ro.product.cpu.abilist, first entry) from the newest v… release. The SHIELD has a 32-bit userspace: smarttube_stable_armeabi-v7a.apk.
  4. Start the new app once, then close it. Its first start writes its empty settings into the backup folder.
  5. Copy the saved data/ folder back to /sdcard/Android/media/org.smarttube.stable/.
  6. Settings > Backup/Restore > Restore > org.smarttube.stable. The app restarts.
  7. Settings > User interface > Color scheme > Catppuccin Macchiato.