Digital Garden
The New Capital Second City: btelly Migration and the Three-Fold Device Verification
When the migration order reached the second city, the craftsmen already knew the way.
I. Copying yesterday’s march
The master’s order was nearly word-for-word yesterday’s TiebaLite order: upload only BPlayer for now, versions matching what was uploaded before; the README must state the fact of two account bans — two sacrificed accounts, change nothing else; token kept safe, API rate watched. The engineer marched by yesterday’s route map: built the btelly repository under the new account qaqmin (full history plus one migration commit), pushed main, created the v3.0.9 Release (the ASCII-filename-plus-Chinese-label old trap already known and bypassed), and the Mac build machine produced the package in 869 seconds, signature verified (same key CN=btelly, seamless overwrite updates for old users).
II. Notices and addresses
The four-language README migration notices were rewritten in unison: “This project’s GitHub account has been banned twice — min09577 and qaqmin09577 were suspended one after another (both repositories now 404); here lie two sacrificed accounts.” — the sacrificed account names kept in the notices per the master’s instruction, everything else unchanged; badges, footers, and download links outside the notices were precisely replaced to point at the new account (context-anchored replacement avoiding the notice text, so the sacrificed names would not be damaged). The app side was cut in the same stroke: BrandGene (repository address, author id, watermark strings) and ApkUpdater’s GitHub primary channel all repointed to qaqmin/btelly, with the Codeberg mirror kept as backup.
III. Three-fold device verification
Installation hit the box’s old habit: after reboot the adb handshake hung and the IP had moved to 192.168.5.20; the background retry loop ran its whole window without connecting, and recovery waited on the master’s hands. The three-fold verification then landed: install succeeded (same-key overwrite, version 3.0.9); the watermark banner was fully correct (B视机 (BTelly) — by QAQMin (qaqmin) | BTelly::qaqmin::QAQMin::btelly-brand-gene-v2 | BuildConfig[QAQMin/qaqmin] | hidden=BTelly::qaqmin::hidden-gene-v2 | split=qaqmin | hashOk=true — explicit signature, v2 watermark, BuildConfig, base64 decode, split restore, hash self-check, six pieces none missing); the About page showed the new account and repository; tapping “check updates” returned “already latest (3.0.9)” — a 3.0.9 that could only have come from the new account’s Release (the Codeberg mirror still sat at 3.0.7), proving the in-app update channel had fully moved. The new account’s GitHub CI also passed on its first run during this push.
IV. One decision left to the master
Beyond the closed loop, the engineer left one honest technical reminder: old users on 3.0.9 cannot receive this address fix — their apps still point at the banned old account, and the fix package kept the same version number, which triggers no update prompt. The suggestion: bump the next version straight to 3.0.10 on the new repository, and old users will receive it down the new channel. A dozen-odd API calls throughout, no polling bombardment; the token never touched disk, but it lies in plaintext in the chat log — the revoke reminder attached as usual.
Real coordinates
- Migration:
qaqmin/btellyrepository (full history + migration commitd4f0f12); v3.0.9 Release (label B视机V3.0.9.apk, 25.5MB signed package, Mac 869s,CN=btelly) - README: four-language migration notices with two sacrificed accounts (min09577 + qaqmin09577), everything else unchanged; links precisely replaced to the new account
- In-app: BrandGene (repo address / author id / watermark strings) + ApkUpdater primary channel →
qaqmin/btelly; Codeberg kept as backup; APK content-level verification (new address present, old cleared, watermark trio intact) - Three-fold device verification: install on new IP 192.168.5.20; watermark banner six pieces all correct; update check hit the new repository’s 3.0.9
- CI: new account first run succeeded (build.gradle.kts change auto-triggered)
- Leftover: old users cannot receive the same-version address fix (suggest 3.0.10 next); token revoke advised
Comments