Skip to content

تک‌نقطه v0.5.2

Choose a tag to compare

@github-actions github-actions released this 20 Jul 01:24
· 33 commits to main since this release
d83a6dd

◉ Flow — تک‌نقطه · v0.5.2

نصب روی همه‌ی گوشی‌ها · Installs on every Android phone

اگر هنگام نصب پیام «بسته مشکل دارد» یا "There was a problem parsing the package" می‌گرفتی — این نسخه دقیقاً همان را حل می‌کند.

If installing ever failed with "There was a problem parsing the package", this release fixes exactly that.


🇮🇷 فارسی

📥 نصب در ۳ قدم

۱. کدام فایل را دانلود کنم؟

فایل برای چه کسی حجم
taknoghte-v0.5.2-universal.apk اگر مطمئن نیستی، همین را بگیر. روی همه‌ی گوشی‌ها نصب می‌شود. ~۵۵ MB
taknoghte-v0.5.2-arm64-v8a.apk گوشی‌های ۶۴بیتی — تقریباً همه‌ی گوشی‌های ۲۰۱۷ به بعد ~۲۳ MB
taknoghte-v0.5.2-armeabi-v7a.apk گوشی‌های ۳۲بیتی و قدیمی‌تر ~۲۰ MB
taknoghte-v0.5.2-x86_64.apk شبیه‌ساز و دستگاه‌های اینتل ~۲۴ MB

۲. ⚠️ اگر نسخه‌ی قبلی نصب است، اول پاکش کن

نسخه‌های پیشین با یک کلید موقت امضا می‌شدند. این نسخه با کلید رسمی و دائمی امضا شده، پس اندروید اجازه‌ی نصب روی نسخه‌ی قدیمی را نمی‌دهد و پیام «App not installed» می‌دهد.

📦 قبل از حذف، از داده‌هایت پشتیبان بگیر:
داخل اپ → آیکون ⚙ بالای صفحه → «پشتیبان‌گیری (خروجی JSON)» → فایل را جایی امن ذخیره کن.
بعد از نصب نسخه‌ی جدید، از همان‌جا «بازیابی از فایل پشتیبان» را بزن.

این آخرین باری است که لازم است حذف کنی — از این پس همه‌ی به‌روزرسانی‌ها مستقیم روی نصب قبلی می‌نشینند.

۳. نصب

فایل را باز کن → اگر پرسید، «نصب از منابع ناشناس» را برای مرورگر یا فایل‌منیجرت فعال کن → Install.

در اولین اجرا اجازه‌ی نوتیفیکیشن (و در اندروید ۱۲+ اجازه‌ی «زنگ دقیق») را بده تا یادآورهای صبح/شب و زنگ پایان تمرکز درست کار کنند.

پیش‌نیاز: اندروید ۷ (API 24) به بالا
راستی‌آزمایی دانلود: کنار هر فایل یک ‎.sha256 هست — sha256sum <فایل>.apk


🐛 چرا نصب نمی‌شد

سه علت روی هم جمع شده بودند:

۱. فقط نسخه‌ی ۶۴بیتی منتشر می‌شد.
ریلیزهای قبلی تنها arm64-v8a داشتند. هر گوشی ۳۲بیتی که آن فایل را دانلود می‌کرد، اندروید بسته را ناسازگار می‌دید و خطای «مشکل در تجزیه‌ی بسته» می‌داد.
→ حالا نسخه‌ی یونیورسال منتشر می‌شود که هر سه معماری را با هم دارد و همیشه نصب می‌شود.

۲. امضا با کلید دیباگ.
بیلد release با کلید debug امضا می‌شد. این کلید روی هر اجرای CI از نو ساخته می‌شود، یعنی هر نسخه با کلیدی متفاوت امضا می‌شد — به همین دلیل به‌روزرسانی روی نصب قبلی با خطای عدم تطابق امضا شکست می‌خورد و بعضی نصب‌کننده‌های سازنده‌ها کلاً بسته را رد می‌کردند.
→ حالا امضای واقعی release با کلید دائمی (RSA 4096، اعتبار تا ۲۰۵۳) و اسکیم‌های v2+v3 انجام می‌شود.

۳. نسخه‌ی حداقلی نامشخص بود.
مقادیر SDK از پیش‌فرض‌های Flutter می‌آمدند و با هر ارتقا می‌توانستند بی‌صدا عوض شوند.
→ حالا صریح پین شده‌اند: minSdk 24 · targetSdk 36 · compileSdk 36.

🛡 از این به بعد چنین چیزی منتشر نمی‌شود

خط تولید قبل از هر انتشار، تک‌تک فایل‌های APK را خودکار بازرسی می‌کند و اگر هرکدام رد شود انتشار متوقف می‌شود:

  • ✅ سلامت ساختار فایل (zip سالم)
  • ✅ خواندن مانیفست و بررسی minSdk
  • ✅ اطمینان از اینکه نسخه‌ی یونیورسال واقعاً هر سه معماری را دارد
  • ✅ صحت امضا و کامل بودن اسکیم‌های v2/v3
  • رد کردن انتشار اگر بسته با کلید دیباگ امضا شده باشد
  • ✅ ساخت SHA256 برای همه‌ی فایل‌ها

🇬🇧 English

📥 Install in 3 steps

1. Which file do I need?

File Who it is for Size
taknoghte-v0.5.2-universal.apk Not sure? Take this one. Installs on every device. ~55 MB
taknoghte-v0.5.2-arm64-v8a.apk 64-bit phones — practically everything from 2017 onward ~23 MB
taknoghte-v0.5.2-armeabi-v7a.apk Older 32-bit phones ~20 MB
taknoghte-v0.5.2-x86_64.apk Emulators and Intel devices ~24 MB

2. ⚠️ Uninstall the previous version first

Earlier builds were signed with a temporary key. This release is signed with the permanent production key, so Android refuses to install it over the old one and shows "App not installed".

📦 Back up your data before uninstalling:
In the app → ⚙ icon at the top → "پشتیبان‌گیری (JSON export)" → save the file somewhere safe.
After installing the new version, use "بازیابی از فایل پشتیبان" (restore from backup) in the same place.

This is the last time an uninstall is needed — every future update installs straight over this one.

3. Install

Open the file → allow "install from unknown sources" for your browser or file manager if prompted → Install.

On first launch, grant notification permission (and the exact alarm permission on Android 12+) so the morning/evening reminders and the focus-session end alarm work.

Requires: Android 7 (API 24) or newer
Verify your download: each file ships a .sha256sha256sum <file>.apk


🐛 Why installation used to fail

Three causes stacked on top of each other:

1. Only a 64-bit build was published.
Previous releases shipped arm64-v8a only. Any 32-bit device downloading that single file saw a package the platform considers incompatible — which surfaces as the parse error.
→ A universal APK containing all three ABIs is now published and always installs.

2. Release builds were signed with the debug key.
The CI debug keystore is regenerated on every run, so consecutive releases were signed with different keys. Updating over an existing install failed with a signature mismatch, and some OEM installers rejected the package outright.
→ Real release signing now uses a permanent key (RSA 4096, valid through 2053) with the v2+v3 signature schemes.

3. SDK levels were inherited from Flutter defaults.
A Flutter upgrade could silently change which devices could install the app.
→ Now pinned explicitly: minSdk 24 · targetSdk 36 · compileSdk 36.

🛡 This cannot ship again

Before any release, the pipeline inspects every APK and aborts publishing if any check fails:

  • ✅ Archive integrity (valid zip)
  • ✅ Manifest readable, minSdk as expected
  • ✅ Universal APK genuinely contains all three ABIs
  • ✅ Signature verifies, v2/v3 schemes present
  • Refuses to publish anything carrying the Android debug certificate
  • SHA256 generated for every file

🔒 حریم خصوصی · Privacy

همه‌چیز فقط روی گوشی خودت. بدون اکانت، بدون سرور، بدون ردیابی.
Everything stays on your phone. No account, no server, no tracking.

🧪 کیفیت · Quality

۵۰ تست خودکار · تحلیل استاتیک سخت‌گیرانه · بررسی فرمت · بازرسی APK — همه در CI
50 automated tests · strict static analysis · format check · APK inspection — all in CI

📖 مستندات کامل · Full documentation