Digital Garden

The New Capital Second City: btelly Migration and the Three-Fold Device Verification

2026-10-10 · ~5 min read · BPlayer · account migration · device verification · qaqmin

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

Comments

← Digital Garden