Skip to content

tools: settings_sync.py, to move SmartTube/MeeTube settings and accounts between TVs - #2

Closed
darkrei08 wants to merge 1316 commits into
mainfrom
feat/app-settings-sync
Closed

darkrei08 wants to merge 1316 commits into
mainfrom
feat/app-settings-sync

Conversation

@darkrei08

Copy link
Copy Markdown
Owner

Adds tools/settings_sync.py, so SmartTube/MeeTube TV settings and the signed-in YouTube accounts can be moved between TVs over ADB, plus the guide and the indexed UI map that keeps agent navigation off screenshots.

  • export: pulls the app's own backup tree from /sdcard/Android/media/<pkg>/data/<pkg>/Backup into a zip with the same layout the app produces.
  • import --drive: unpacks it under another package on another TV and sends the in-app restore steps.
  • ui: dumps the accessibility tree and prints the focused node and text with bounds; --tap taps a label.
  • glossary: the measured UI map, so a panel can be reached without a screenshot.
  • tools/profiles/sabrina-meetube.json: the config measured on a Chromecast with Google TV 4K.

Accounts travel inside the backup (files/global_prefs/media_service_account_data), so the archive holds a Google refresh token and the guide says to treat it as a secret; the tool never prints it.

Tested on: Chromecast with Google TV 4K (sabrina, 2 GB RAM, Android 14, armeabi-v7a), SmartTube 32.68 and MeeTube TV 0.0.1, restored onto two units.

If this adds or changes a TV list

  • not a TV list

If this touches the launcher

  • not the launcher

If this adds or changes a theme

  • not a theme

If this adds a theme key (a switch)

  • not a switch

If this adds an add-on

  • not an add-on

gggg-unit and others added 30 commits November 2, 2026 03:30
… backend

connect_error() answered the STLS handshake with the pair-once recipe and
`adb tcpip 5555`: that opens the plaintext port the security answer asks the
reader to close, and it was the only route the message gave, although
tools/native-adb.md documents TV_ADB_BINARY over the same paired transport.
The STLS branch now names the backend first, with TV_HOST kept as the
Wireless debugging port, before the port-5555 recipe. The two pages that handed
out the same recipe - docs/TROUBLESHOOTING.md's "USB debugging never opens port
5555" bullet and docs/firmware-updates.md step 1 - point at it as well, since a
set whose only network ADB is that TLS port is exactly where they are read.
Tested on: Panasonic GS655, Android TV 9 (API 28), build PTO7.211208.001

Debloat list and tv.json for the Panasonic GS655 (Skyworth-built SW1, codename
shibuya, MediaTek m5621 platform), running Android TV 9. Disables Skyworth retail
demo, auto-installs, E-manual, disclaimer viewer, MediaTek PQ test tool, Google
feedback, recommendation rows, partner customizer, and bug report sender. Off by
choice: Assistant, Chromecast, ambient screensaver, and Play Games. The stock
com.google.android.tvlauncher is replaced by the reference launcher and disabled
after verifying Home takeover. HDMI/tuner stack, Bluetooth remote services, Play
Store/Services, remote OTA updater, and streaming apps are kept.
Same G08 board and firmware as the Brazil list, tried on an Australian unit for a few hours
(HDMI switching, reboot persistence, launcher as Home). Adds AirPlay, Miracast, T-Cast, game bar,
Stan and YouTube Music as disabled, notes the AU remote key codes and that a key helper costs the
volume ramp, and ships a config.json with the 7-column dock and hidden TCL system tiles.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Adds the US 65QD5N (lushan, firmware STT2.230929.001.102) to the lushan list: its Haystack, VIDAA Channels and FAST app preloads, the sharing packages it disabled by choice (commented), and its remote's button codes with the measured volume-repeat trade.

Co-authored-by: Cursor <cursoragent@cursor.com>
updated to comment out YouTube and Netflix
tools/bench.py out_dir() named tools/perf-ab.md for the guide that lives at
docs/workflows/perf-ab.md, since the recipes were split out of the tools pages.
Neither a list header nor a tool source is a markdown page, so
tests/test_markdown_links.py - which walks *.md - never read them: the path was
wrong in a tree whose whole suite was green. The new sweep reads the pages
named by tools/*.py, tools/*.sh, tools/*.ps1 and examples/**/*.txt, resolves
each from the naming file folder and then from the repository root, and holds
the optional #section to the anchors tests/test_markdown_links.py already works
out.
…P739, Google TV)

# Conflicts:
#	README.md
#	SHOWCASE.md
…-75pus8505 (TPM191E, PH9M_EA_5599), Android TV 12
Gathin23 and others added 27 commits November 3, 2026 09:28
…ugh the provider first, and checks the app read it (Gathin23#3016)
…contradicting the set that uses it as its dock browser
…e station in the spirit of Apple TV's Aerials

# Conflicts:
#	themes/README.md
… app library on (all six languages that list it)
…ile a key helper is bound, and to press Right first (Gathin23#3155)
…ith's RecoveryActivity held Home until it was disabled (Gathin23#3088)
1294 commits from Gathin23/cleanyourtv, merge base 985bbd1 up to 8672e68 (v3.3.0).

Three files needed a manual resolution, each keeping both sides: README.md (the
tools/profile.py row stays), SHOWCASE.md (the fork's row stays, folded into the
existing Google line of the brand index instead of a second one) and
docs/TROUBLESHOOTING.md (the "ADB never stays on by itself" note stays).

Verified: tests 2869 OK (37 skipped), :app:testReleaseUnitTest and :app:lintRelease
green, assembleRelease 590937 B against the 589824 B gate (see the note below), no
path left unmerged, whitespace check clean on the three resolved files.

The APK is 2876 B over the pre-merge build (554261 B): upstream v3.3.0 alone builds
to 588061 B, so the pin/reorder feature does not fit in the gate's remaining headroom.
Exports the app's own backup directory over ADB, imports it under another package on another TV, and prints or drives the in-app restore. It also dumps the UI tree, so navigation needs no screenshots. Stdlib only, one shared adb test double; accounts travel inside the backup and are never printed.
…folder

The app rewrites its own backup folder before a restore reads it, so a tree pushed there restores the previous settings. The guide now says to import under the source package's folder, and a test pins that the import never touches the target's own one.
@darkrei08
darkrei08 force-pushed the feat/app-settings-sync branch from e68c21a to 5c4e199 Compare November 3, 2026 23:14
@darkrei08

Copy link
Copy Markdown
Owner Author

Closing this one: it was the mixed branch, and the work now lives in two single-topic PRs against Gathin23/cleanyourtv — Gathin23#3215 (settings_sync.py) and Gathin23#3216 (profile.py).

What is NOT in either of them, on purpose: the odd/ task notes (internal tracking), the SHOWCASE row, and the launcher App Library pin/move change. The launcher change stays on a local branch for now because it takes the release APK to 590,937 B against this repository's 589,824 B gate, measured against 588,061 B on main; it needs a trim before it is worth a reviewer's time.

@darkrei08 darkrei08 closed this Nov 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.