v6.8.15: the Android app is out for testing
CodeQL Analysis / Analyze CodeQL (push) Canceled after 0s
Deploy Application / deploy (push) Canceled after 0s
Mirror to Codeberg / mirror (push) Canceled after 0s
Mirror to PrivacyGuides / mirror (push) Canceled after 0s

- Android APK download, served from securebit.chat (/downloads/, never
  committed): a "Download Android APK" badge next to the Snap Store one, drawn
  for both themes, and an Android entry in the download menu (recommended on
  Android devices). nginx serves .apk as an attachment; the service worker
  leaves /downloads/ alone. The APK version is one constant in three places,
  checked by tests/desktop-download-links.test.mjs.
- Roadmap versions follow the real releases: Group Communications v6.0
  shipped, Mobile Edition v6.8 is current, Quantum-Resistant v7.0 is in
  development (2027), then v8.0 and v9.0.
- "Download desktop app" is now "Download the app"; the "You're on Web" pill
  in the download menu is gone.
This commit is contained in:
lockbitchat
2026-09-28 01:23:50 -04:00
parent 02b007af3e
commit bf5d43b2f1
59 changed files with 663 additions and 529 deletions
+21
View File
@@ -102,3 +102,24 @@ assert.equal(
);
console.log(`Desktop download link tests passed (v${VERSION}, ${urls.length} assets reachable)`);
// ---------- the Android APK: one version, and the file it names exists ----------
// The APK is served from this site (downloads/, git-ignored, shipped in the Fly
// image), so a version bumped in one place and not the others is a 404.
const APK_SOURCES = ['src/app.jsx', 'src/components/ui/DownloadApps.jsx', 'src/components/ui/CommunityCTA.jsx'];
const apkVersions = APK_SOURCES.map((f) => {
const m = /ANDROID_APK_VERSION\s*=\s*'([^']+)'/.exec(read(f));
assert.ok(m, `${f} must declare ANDROID_APK_VERSION`);
return { file: f, version: m[1] };
});
const apkUnique = [...new Set(apkVersions.map((v) => v.version))];
assert.equal(
apkUnique.length, 1,
`every source must link the same APK, found: ${apkVersions.map((v) => `${v.file}=${v.version}`).join(', ')}`
);
const apkFile = path.join(ROOT, 'downloads', `SecureBit-${apkUnique[0]}.apk`);
if (!fs.existsSync(apkFile)) {
// Not an error on a fresh clone: the APK is never committed. It is one before a deploy.
console.warn(`! downloads/SecureBit-${apkUnique[0]}.apk is missing — copy the release APK there before deploying`);
}
console.log(`✓ Android APK ${apkUnique[0]} linked consistently`);