Skip to content

ci: add automated checks, and document the architecture - #1

Merged
Mod578 merged 6 commits into
masterfrom
chore/github-quality-2026
Aug 5, 2026
Merged

ci: add automated checks, and document the architecture#1
Mod578 merged 6 commits into
masterfrom
chore/github-quality-2026

Conversation

@Mod578

@Mod578 Mod578 commented Aug 5, 2026

Copy link
Copy Markdown
Owner

Quality pass on the repository. No application code is touched in this branch: it adds automated checks, developer documentation, and line ending rules.

CI

The repository had no workflow, so the 16 test classes and the lint configuration were only ever verified by hand on a local machine. .github/workflows/ci.yml runs unit tests, lintDebug and assembleDebug on pushes to master and on pull requests, using Temurin 17 and the Android SDK already present on the GitHub runner. Reports upload only when a step fails.

The Gradle build lives in the Rannah/ subdirectory, so the workflow sets that as its working directory.

Documentation

Rannah/docs/ARCHITECTURE.md writes down what the file tree does not show:

  • the database is the source of truth and every alarm is derivable from it, which is what makes reboot, process death and clock changes safe
  • ReminderScheduler is the single owner of the lifecycle and every action is idempotent, so a replayed broadcast cannot produce a second outcome for one occurrence
  • AlarmGateway is an interface with a fake in tests, which is why the lifecycle can be covered on the JVM without an emulator
  • schemas are exported and the migration tests build the legacy databases from them
  • release signing reads credentials from outside the tree, and the release variant still assembles unsigned when they are absent

The README gains the build commands, the toolchain they need, the stack, and a CI badge.

Line endings

.gitattributes keeps gradlew as LF and .bat as CRLF, marks binary assets, and marks the bundled Tajawal fonts as vendored so they stop counting towards the repository language statistics.

Validation

The Android SDK is not installed on the machine this was prepared on, so Gradle could not run locally. The CI run on this pull request is the validation, and its result is visible in the checks below.

Not done here

  • No LICENSE file. The repository still has none, and picking one is your decision, not something to infer. The Apache 2.0 and OFL files under app/src/main/assets/licenses/ are third party notices for bundled dependencies and fonts, not a licence for this code.
  • No screenshots in the README, since there are none in the repository.
  • rootProject.name is still Bal. It is internal to Gradle and renaming it is a build change with no user visible benefit, so it is left for you to decide.

Summary by Sourcery

تقديم تكامل مستمر (CI) مؤتمت، وتوثيق معمارية موجّه للمطورين، وتنظيم المستودع دون تغيير في سلوك التطبيق.

ميزات جديدة:

  • توثيق معمارية التطبيق، نموذج دورة الحياة، تصميم التخزين، نهج تحليل اللغة العربية، استراتيجية الاختبارات، ضمانات الخصوصية، وإعداد توقيع الإصدارات في دليل جديد باسم ARCHITECTURE.
  • توسيع ملف README بوصف للمنتج باللغة الإنجليزية، وتعليمات التثبيت والبناء، وقائمة الميزات، والتقنيات المستخدمة (tech stack)، وملاحظات الخصوصية، ومواد الهوية البصرية المحدثة (branding assets).

تحسينات:

  • تنقيح التعليقات داخل الكود وسلاسل التوثيق لزيادة الوضوح والاتساق دون تغيير سلوك التنفيذ في وقت التشغيل.
  • إضافة أصول رأسية بصيغة SVG وتحديث العناصر المرئية في README لاستخدامها.

البناء (Build):

  • إضافة ملف سير عمل (workflow) في GitHub Actions يقوم بتشغيل اختبارات الوحدات، وAndroid Lint، وتجميع نسخة debug عند الدفع (pushes) وطلبات الدمج (pull requests) والتشغيل اليدوي.
  • إعداد Dependabot لاقتراح تحديثات دورية لاعتمادات Gradle وملفات سير عمل GitHub Actions.

التكامل المستمر (CI):

  • تمكين رفع تقارير CI عند الفشل لتشغيلات الاختبارات وعمليات lint.

التوثيق:

  • إضافة توثيق للمعمارية يصف الوحدات، والطبقات، والجدولة، والتخزين، والتحليل (parsing)، ونهج الاختبارات، والخصوصية، وإعدادات بناء الإصدارات (release build configuration).

الاختبارات:

  • توضيح تعليقات الاختبارات والتوقعات لتوثيق أفضل لسلوكيات دورة الحياة، والجدولة، وعمليات الترحيل (migration).

أعمال تنظيمية (Chores):

  • إضافة ملف .gitattributes لتوحيد نهايات الأسطر، ووضع علامة على الأصول الثنائية (binary assets)، وتصنيف الخطوط المضمّنة كعناصر من نوع vendored.
Original summary in English

Summary by Sourcery

Introduce automated CI, developer-focused architecture documentation, and repository housekeeping without changing application behaviour.

New Features:

  • Document the app architecture, lifecycle model, storage design, Arabic parsing approach, testing strategy, privacy guarantees, and release signing setup in a new ARCHITECTURE guide.
  • Expand the README with English product description, installation and build instructions, feature list, tech stack, privacy notes, and updated branding assets.

Enhancements:

  • Refine in-code comments and documentation strings for clarity and consistency without altering runtime behaviour.
  • Add SVG header assets and update README visuals to use them.

Build:

  • Add a GitHub Actions workflow that runs unit tests, Android Lint, and assembles the debug build on pushes, pull requests, and manual runs.
  • Configure Dependabot to propose periodic updates for Gradle dependencies and GitHub Actions workflows.

CI:

  • Enable CI reports upload on failure for test and lint runs.

Documentation:

  • Add architecture documentation describing modules, layers, scheduling, storage, parsing, testing approach, privacy, and release build configuration.

Tests:

  • Clarify test comments and expectations to better document lifecycle, scheduling, and migration behaviours.

Chores:

  • Add a .gitattributes file to normalise line endings, mark binary assets, and classify bundled fonts as vendored.

ميزات جديدة:

  • إضافة توثيق موجه للمطورين عن المعمارية يصف الوحدات (modules)، الطبقات (layers)، الجدولة (scheduling)، التخزين، التحليل (parsing)، الاختبار، الخصوصية، وإعدادات بناء نسخ الإصدار (release build).
  • توثيق متطلبات وأوامر البناء، والتقنيات المستخدمة (tech stack)، وربط ملاحظات المعمارية من ملف README.

تحسينات:

  • إضافة شارات CI وشارات المنصات/الأدوات إلى ملف README لزيادة وضوح حالة البناء والتقنيات المستخدمة.

CI:

  • إضافة سير عمل (workflow) لـ GitHub Actions يقوم بتشغيل اختبارات الوحدات (unit tests)، وAndroid lint، وبناء نسخة debug عند الدفع (push) وطلبات الدمج (pull requests)، مع رفع التقارير في حال الفشل.

التوثيق:

  • إضافة مستند ARCHITECTURE يوضح بنية التطبيق، قواعد دورة الحياة (lifecycle rules)، نموذج التخزين، أسلوب التحليل (parsing approach)، استراتيجية الاختبار، ضمانات الخصوصية، وتكوين توقيع نسخ الإصدار (release signing configuration).

أعمال صيانة:

  • تعريف ملف .gitattributes على مستوى المستودع لتوحيد نهايات الأسطر، ووضع علامة على الأصول الثنائية (binary assets)، واعتبار الخطوط المضمنة (bundled fonts) كعناصر vendored.
Original summary in English

Summary by Sourcery

تقديم تكامل مستمر (CI) مؤتمت، وتوثيق معمارية موجّه للمطورين، وتنظيم المستودع دون تغيير في سلوك التطبيق.

ميزات جديدة:

  • توثيق معمارية التطبيق، نموذج دورة الحياة، تصميم التخزين، نهج تحليل اللغة العربية، استراتيجية الاختبارات، ضمانات الخصوصية، وإعداد توقيع الإصدارات في دليل جديد باسم ARCHITECTURE.
  • توسيع ملف README بوصف للمنتج باللغة الإنجليزية، وتعليمات التثبيت والبناء، وقائمة الميزات، والتقنيات المستخدمة (tech stack)، وملاحظات الخصوصية، ومواد الهوية البصرية المحدثة (branding assets).

تحسينات:

  • تنقيح التعليقات داخل الكود وسلاسل التوثيق لزيادة الوضوح والاتساق دون تغيير سلوك التنفيذ في وقت التشغيل.
  • إضافة أصول رأسية بصيغة SVG وتحديث العناصر المرئية في README لاستخدامها.

البناء (Build):

  • إضافة ملف سير عمل (workflow) في GitHub Actions يقوم بتشغيل اختبارات الوحدات، وAndroid Lint، وتجميع نسخة debug عند الدفع (pushes) وطلبات الدمج (pull requests) والتشغيل اليدوي.
  • إعداد Dependabot لاقتراح تحديثات دورية لاعتمادات Gradle وملفات سير عمل GitHub Actions.

التكامل المستمر (CI):

  • تمكين رفع تقارير CI عند الفشل لتشغيلات الاختبارات وعمليات lint.

التوثيق:

  • إضافة توثيق للمعمارية يصف الوحدات، والطبقات، والجدولة، والتخزين، والتحليل (parsing)، ونهج الاختبارات، والخصوصية، وإعدادات بناء الإصدارات (release build configuration).

الاختبارات:

  • توضيح تعليقات الاختبارات والتوقعات لتوثيق أفضل لسلوكيات دورة الحياة، والجدولة، وعمليات الترحيل (migration).

أعمال تنظيمية (Chores):

  • إضافة ملف .gitattributes لتوحيد نهايات الأسطر، ووضع علامة على الأصول الثنائية (binary assets)، وتصنيف الخطوط المضمّنة كعناصر من نوع vendored.
Original summary in English

Summary by Sourcery

Introduce automated CI, developer-focused architecture documentation, and repository housekeeping without changing application behaviour.

New Features:

  • Document the app architecture, lifecycle model, storage design, Arabic parsing approach, testing strategy, privacy guarantees, and release signing setup in a new ARCHITECTURE guide.
  • Expand the README with English product description, installation and build instructions, feature list, tech stack, privacy notes, and updated branding assets.

Enhancements:

  • Refine in-code comments and documentation strings for clarity and consistency without altering runtime behaviour.
  • Add SVG header assets and update README visuals to use them.

Build:

  • Add a GitHub Actions workflow that runs unit tests, Android Lint, and assembles the debug build on pushes, pull requests, and manual runs.
  • Configure Dependabot to propose periodic updates for Gradle dependencies and GitHub Actions workflows.

CI:

  • Enable CI reports upload on failure for test and lint runs.

Documentation:

  • Add architecture documentation describing modules, layers, scheduling, storage, parsing, testing approach, privacy, and release build configuration.

Tests:

  • Clarify test comments and expectations to better document lifecycle, scheduling, and migration behaviours.

Chores:

  • Add a .gitattributes file to normalise line endings, mark binary assets, and classify bundled fonts as vendored.

Mod578 added 2 commits August 5, 2026 22:10
The repository had no automated checks, so nothing verified the 16 test
classes or the lint configuration except a local run. The workflow uses
Temurin 17 with the Gradle cache and the Android SDK already present on the
GitHub runner, and it runs from the Rannah directory where the Gradle build
lives. Reports are uploaded only when a step fails.

.gitattributes pins the line endings that matter, gradlew as LF and .bat as
CRLF, marks the binary assets so git stops trying to diff them, and keeps
the bundled Tajawal fonts out of the repository language statistics, which
currently count them towards the code.
ARCHITECTURE.md records the decisions that are not visible in a file
listing: the database is the source of truth and every alarm is derivable
from it, which is what makes reboots and clock changes safe; the scheduler
is the single owner of the lifecycle and every action is idempotent; the
alarm gateway is an interface so the lifecycle can be tested on the JVM.

The README gains the build commands, the toolchain versions they need, the
stack, and a CI badge.
@sourcery-ai

sourcery-ai Bot commented Aug 5, 2026

Copy link
Copy Markdown

دليل المراجع (Reviewer's Guide)

يضيف سير عمل CI في GitHub Actions لمشروع Gradle الفرعي Rannah، ويوثّق معمارية التطبيق وعملية البناء، ويُحسّن ملف README، ويوحد التعامل مع نهايات الأسطر والأصول المضمّنة (vendored assets)، بالإضافة إلى مراجعة تعليقات / KDoc للتوضيح دون تغيير في سلوك وقت التشغيل.

التغييرات على مستوى الملفات

التغيير التفاصيل الملفات
تقديم سير عمل CI يقوم بتشغيل الاختبارات، وأدوات الفحص (lint)، وبناء نسخة debug لمشروع Rannah الفرعي.
  • إضافة .github/workflows/ci.yml مُكوَّن لتشغيل testDebugUnitTest وlintDebug وassembleDebug باستخدام Temurin JDK 17 على ubuntu-latest
  • ضبط working-directory لسير العمل إلى Rannah/ حتى تُنفَّذ أوامر Gradle داخل المشروع الفرعي
  • رفع تقارير Gradle وAndroid كـ artifacts فقط عند فشل سير العمل
  • إضافة إعداد Dependabot لاعتمادات Gradle وGitHub Actions
.github/workflows/ci.yml
.github/dependabot.yml
إضافة توثيق للمعمارية والبناء، وتوسيع ملف README بشكل كبير للمطورين والمستخدمين.
  • إنشاء Rannah/docs/ARCHITECTURE.md يصف الوحدات (modules)، الطبقات، نموذج الجدولة، التخزين، تحليل العربية، استراتيجية الاختبار، موقف الخصوصية، وسلوك توقيع الإصدارات
  • إعادة كتابة وتوسيع README.md مع نظرة عامة باللغة الإنجليزية، وأقسام التثبيت والميزات، وهيكل المشروع، وشعارات حزمة التقنيات (tech stack badges)، وملاحظات الخصوصية، وقسم صريح للمؤلف
  • تضمين أصول رأس (header) جديدة بصيغة SVG وشعارات CI / الإصدار / Android في README، وربطها بوثائق ARCHITECTURE وPRIVACY
  • إعادة تنظيم وتشذيب محتوى README العربي الحالي قليلاً ضمن قسم قابل للطي (collapsible section)
README.md
Rannah/docs/ARCHITECTURE.md
Rannah/docs/assets/header-dark.svg
Rannah/docs/assets/header-light.svg
توحيد نهايات الأسطر ووضع علامة على الأصول المضمّنة / الثنائية عبر .gitattributes.
  • إضافة .gitattributes على مستوى المستودع لفرض LF للسكربتات وCRLF لملفات .bat
  • وضع علامة على الأصول الثنائية حتى لا يحاول Git إجراء diff لها، ووضع خطوط Tajawal المضمّنة كـ vendored لإحصائيات اللغة
.gitattributes
توضيح وتشذيب التوثيق المضمَّن وKDoc عبر طبقات المجال (domain)، والجدولة، والتحليل (parsing)، وواجهة المستخدم (UI)، والبيانات، دون تغيير المنطق.
  • ضبط الكثير من جمل KDoc والتعليقات من ناحية الأسلوب (مثل التحويل من شرطة إلى نقطتين، وتوضيح حدود الجمل) مع الحفاظ على المعنى
  • توضيح الضمانات السلوكية في تعليقات واختبارات منطق المجدول، والتنبيه، والتأجيل (snooze)، والوقوعات (occurrences)، والتجميع (grouping) (مثل: idempotency، و«إجابة واحدة لكل occurrence»، ودلالات المهام المتأخرة)
  • تنقيح التعليقات التوضيحية بالعربية/الإنجليزية في مكونات واجهة المستخدم، والطباعة (typography)، والمحلل (parser)، والهجرات (migrations)، والاختبارات، وواجهات المستودعات لتطابق السلوك والقيود الحالية بشكل أفضل
Rannah/app/src/main/java/com/bal/reminders/domain/OccurrenceState.kt
Rannah/app/src/main/java/com/bal/reminders/ui/components/Components.kt
Rannah/app/src/main/java/com/bal/reminders/scheduling/ReminderScheduler.kt
Rannah/app/src/main/java/com/bal/reminders/ui/theme/Theme.kt
Rannah/app/src/test/java/com/bal/reminders/data/db/ReminderMigrationTest.kt
Rannah/app/src/main/java/com/bal/reminders/format/BalFormats.kt
Rannah/app/src/main/java/com/bal/reminders/ui/details/DetailsViewModel.kt
Rannah/app/src/main/java/com/bal/reminders/data/db/Entities.kt
Rannah/app/src/main/java/com/bal/reminders/ui/editor/EditorScreen.kt
Rannah/app/src/main/java/com/bal/reminders/alarm/AlarmActivity.kt
Rannah/app/src/main/java/com/bal/reminders/domain/model/Schedule.kt
Rannah/app/src/main/java/com/bal/reminders/ui/home/ChecklistViewModel.kt
Rannah/app/src/main/java/com/bal/reminders/data/db/BalDatabase.kt
Rannah/app/src/main/java/com/bal/reminders/domain/model/OccurrenceRecord.kt
Rannah/app/src/main/java/com/bal/reminders/ui/home/ChecklistScreen.kt
Rannah/app/src/main/java/com/bal/reminders/data/db/ReminderDao.kt
Rannah/app/src/main/java/com/bal/reminders/ui/components/SnoozeSheet.kt
Rannah/app/src/main/java/com/bal/reminders/ui/details/DetailsScreen.kt
Rannah/app/src/main/java/com/bal/reminders/ui/home/ChecklistGrouping.kt
Rannah/app/src/main/java/com/bal/reminders/BalApp.kt
Rannah/app/src/main/java/com/bal/reminders/domain/model/DeletedReminder.kt
Rannah/app/src/main/java/com/bal/reminders/domain/model/Reminder.kt
Rannah/app/src/main/java/com/bal/reminders/parser/ArabicReminderParser.kt
Rannah/app/src/main/java/com/bal/reminders/parser/ReminderParser.kt
Rannah/app/src/main/java/com/bal/reminders/scheduling/AlarmRingerService.kt
Rannah/app/src/main/java/com/bal/reminders/ui/components/SlideToConfirm.kt
Rannah/app/src/main/java/com/bal/reminders/ui/editor/EditorViewModel.kt
Rannah/app/src/test/java/com/bal/reminders/scheduling/SchedulerFakes.kt
Rannah/app/src/main/java/com/bal/reminders/alarm/AlarmViewModel.kt
Rannah/app/src/main/java/com/bal/reminders/data/Mappers.kt
Rannah/app/src/main/java/com/bal/reminders/domain/ReminderRepository.kt
Rannah/app/src/main/java/com/bal/reminders/parser/ConsumableText.kt
Rannah/app/src/main/java/com/bal/reminders/scheduling/AlarmGateway.kt
Rannah/app/src/main/java/com/bal/reminders/ui/UndoCoordinator.kt
Rannah/app/src/main/java/com/bal/reminders/ui/about/PrivacyScreen.kt
Rannah/app/src/main/java/com/bal/reminders/ui/onboarding/OnboardingScreen.kt
Rannah/app/src/main/java/com/bal/reminders/ui/settings/SettingsScreen.kt
Rannah/app/src/test/java/com/bal/reminders/data/db/Migration5To6Test.kt
Rannah/app/src/test/java/com/bal/reminders/data/db/SqliteMigrationHarness.kt
Rannah/app/src/test/java/com/bal/reminders/domain/OccurrenceStateResolverTest.kt
Rannah/app/src/test/java/com/bal/reminders/domain/ReminderKindTest.kt
Rannah/app/src/test/java/com/bal/reminders/scheduling/ReminderLifecycleTest.kt
Rannah/app/src/test/java/com/bal/reminders/scheduling/ReminderSchedulerTest.kt
Rannah/app/src/test/java/com/bal/reminders/scheduling/SnoozeModelTest.kt
Rannah/app/src/test/java/com/bal/reminders/ui/home/ChecklistGroupingTest.kt
Rannah/app/src/test/java/com/bal/reminders/ui/permissions/ReadinessTest.kt

نصائح وأوامر (Tips and commands)

التفاعل مع Sourcery

  • تشغيل مراجعة جديدة: أضف تعليقًا @sourcery-ai review على طلب السحب (pull request).
  • متابعة النقاشات: رُد مباشرة على تعليقات المراجعة الخاصة بـ Sourcery.
  • إنشاء قضية (GitHub issue) من تعليق مراجعة: اطلب من Sourcery إنشاء
    issue من تعليق مراجعة عن طريق الرد عليه. يمكنك أيضًا الرد على
    تعليق مراجعة بـ @sourcery-ai issue لإنشاء issue منه.
  • توليد عنوان لطلب السحب: اكتب @sourcery-ai في أي مكان في عنوان
    طلب السحب لتوليد عنوان في أي وقت. يمكنك أيضًا إضافة تعليق
    @sourcery-ai title على طلب السحب لإعادة توليد العنوان في أي وقت.
  • توليد ملخص لطلب السحب: اكتب @sourcery-ai summary في أي مكان في
    نص طلب السحب لتوليد ملخص PR في أي وقت بالموضع الذي تريده بالضبط. يمكنك أيضًا
    إضافة تعليق @sourcery-ai summary على طلب السحب لإعادة توليد الملخص في أي وقت.
  • توليد دليل المراجع: أضف تعليقًا @sourcery-ai guide على طلب السحب
    لإعادة توليد دليل المراجع في أي وقت.
  • إغلاق جميع تعليقات Sourcery: أضف تعليقًا @sourcery-ai resolve على
    طلب السحب لإغلاق جميع تعليقات Sourcery. مفيد إذا كنت قد عالجت
    جميع التعليقات ولا ترغب برؤيتها مجددًا.
  • رفض جميع مراجعات Sourcery: أضف تعليقًا @sourcery-ai dismiss على
    طلب السحب لرفض جميع مراجعات Sourcery الحالية. مفيد بشكل خاص إذا
    كنت ترغب في البدء من جديد بمراجعة جديدة – لا تنس إضافة تعليق
    @sourcery-ai review لتشغيل مراجعة جديدة!

تخصيص تجربتك

يمكنك الوصول إلى لوحة التحكم لـ:

  • تفعيل أو تعطيل ميزات المراجعة مثل ملخص طلب السحب الذي يولده Sourcery،
    ودليل المراجع، وغيرها.
  • تغيير لغة المراجعة.
  • إضافة أو إزالة أو تعديل تعليمات المراجعة المخصصة.
  • ضبط إعدادات المراجعة الأخرى.

الحصول على المساعدة

Original review guide in English

Reviewer's Guide

Adds a GitHub Actions CI workflow for the Rannah Gradle subproject, documents the app’s architecture and build process, enhances the README, and standardises line-ending and vendored-asset handling, plus a sweep of comment/DocKdoc clarifications without changing runtime behaviour.

File-Level Changes

Change Details Files
Introduce CI workflow that runs tests, lint, and debug build for the Rannah subproject.
  • Add .github/workflows/ci.yml configured to run testDebugUnitTest, lintDebug, and assembleDebug using Temurin JDK 17 on ubuntu-latest
  • Set workflow working-directory to Rannah/ so Gradle commands run in the subproject
  • Upload Gradle and Android reports as artifacts only when the workflow fails
  • Add Dependabot configuration for Gradle and GitHub Actions dependencies
.github/workflows/ci.yml
.github/dependabot.yml
Add architecture and build documentation and substantially expand the README for developers and users.
  • Create Rannah/docs/ARCHITECTURE.md describing modules, layers, scheduling model, storage, Arabic parsing, testing strategy, privacy stance, and release signing behaviour
  • Rewrite and expand README.md with English overview, installation and feature sections, project layout, tech stack badges, privacy notes, and an explicit author section
  • Embed new header SVG assets and CI/release/Android badges in the README, and link to the ARCHITECTURE and PRIVACY docs
  • Reorganise and slightly tighten the existing Arabic README content into a collapsible section
README.md
Rannah/docs/ARCHITECTURE.md
Rannah/docs/assets/header-dark.svg
Rannah/docs/assets/header-light.svg
Standardise line endings and mark vendored/binary assets via .gitattributes.
  • Add repository-level .gitattributes to enforce LF for scripts and CRLF for .bat files
  • Mark binary assets so Git does not attempt diffing, and flag bundled Tajawal fonts as vendored for language statistics
.gitattributes
Clarify and tighten inline documentation and KDoc across domain, scheduling, parsing, UI, and data layers without changing logic.
  • Adjust many KDoc and comment sentences for style (e.g., dash-to-colon, clearer clause boundaries) while preserving semantics
  • Clarify behavioural guarantees in scheduler, alarm, snooze, occurrence, and grouping logic comments and tests (e.g., idempotency, ‘one answer per occurrence’, overdue semantics)
  • Refine Arabic/English explanatory comments in UI components, typography, parser, migrations, tests, and repository interfaces to better match current behaviour and constraints
Rannah/app/src/main/java/com/bal/reminders/domain/OccurrenceState.kt
Rannah/app/src/main/java/com/bal/reminders/ui/components/Components.kt
Rannah/app/src/main/java/com/bal/reminders/scheduling/ReminderScheduler.kt
Rannah/app/src/main/java/com/bal/reminders/ui/theme/Theme.kt
Rannah/app/src/test/java/com/bal/reminders/data/db/ReminderMigrationTest.kt
Rannah/app/src/main/java/com/bal/reminders/format/BalFormats.kt
Rannah/app/src/main/java/com/bal/reminders/ui/details/DetailsViewModel.kt
Rannah/app/src/main/java/com/bal/reminders/data/db/Entities.kt
Rannah/app/src/main/java/com/bal/reminders/ui/editor/EditorScreen.kt
Rannah/app/src/main/java/com/bal/reminders/alarm/AlarmActivity.kt
Rannah/app/src/main/java/com/bal/reminders/domain/model/Schedule.kt
Rannah/app/src/main/java/com/bal/reminders/ui/home/ChecklistViewModel.kt
Rannah/app/src/main/java/com/bal/reminders/data/db/BalDatabase.kt
Rannah/app/src/main/java/com/bal/reminders/domain/model/OccurrenceRecord.kt
Rannah/app/src/main/java/com/bal/reminders/ui/home/ChecklistScreen.kt
Rannah/app/src/main/java/com/bal/reminders/data/db/ReminderDao.kt
Rannah/app/src/main/java/com/bal/reminders/ui/components/SnoozeSheet.kt
Rannah/app/src/main/java/com/bal/reminders/ui/details/DetailsScreen.kt
Rannah/app/src/main/java/com/bal/reminders/ui/home/ChecklistGrouping.kt
Rannah/app/src/main/java/com/bal/reminders/BalApp.kt
Rannah/app/src/main/java/com/bal/reminders/domain/model/DeletedReminder.kt
Rannah/app/src/main/java/com/bal/reminders/domain/model/Reminder.kt
Rannah/app/src/main/java/com/bal/reminders/parser/ArabicReminderParser.kt
Rannah/app/src/main/java/com/bal/reminders/parser/ReminderParser.kt
Rannah/app/src/main/java/com/bal/reminders/scheduling/AlarmRingerService.kt
Rannah/app/src/main/java/com/bal/reminders/ui/components/SlideToConfirm.kt
Rannah/app/src/main/java/com/bal/reminders/ui/editor/EditorViewModel.kt
Rannah/app/src/test/java/com/bal/reminders/scheduling/SchedulerFakes.kt
Rannah/app/src/main/java/com/bal/reminders/alarm/AlarmViewModel.kt
Rannah/app/src/main/java/com/bal/reminders/data/Mappers.kt
Rannah/app/src/main/java/com/bal/reminders/domain/ReminderRepository.kt
Rannah/app/src/main/java/com/bal/reminders/parser/ConsumableText.kt
Rannah/app/src/main/java/com/bal/reminders/scheduling/AlarmGateway.kt
Rannah/app/src/main/java/com/bal/reminders/ui/UndoCoordinator.kt
Rannah/app/src/main/java/com/bal/reminders/ui/about/PrivacyScreen.kt
Rannah/app/src/main/java/com/bal/reminders/ui/onboarding/OnboardingScreen.kt
Rannah/app/src/main/java/com/bal/reminders/ui/settings/SettingsScreen.kt
Rannah/app/src/test/java/com/bal/reminders/data/db/Migration5To6Test.kt
Rannah/app/src/test/java/com/bal/reminders/data/db/SqliteMigrationHarness.kt
Rannah/app/src/test/java/com/bal/reminders/domain/OccurrenceStateResolverTest.kt
Rannah/app/src/test/java/com/bal/reminders/domain/ReminderKindTest.kt
Rannah/app/src/test/java/com/bal/reminders/scheduling/ReminderLifecycleTest.kt
Rannah/app/src/test/java/com/bal/reminders/scheduling/ReminderSchedulerTest.kt
Rannah/app/src/test/java/com/bal/reminders/scheduling/SnoozeModelTest.kt
Rannah/app/src/test/java/com/bal/reminders/ui/home/ChecklistGroupingTest.kt
Rannah/app/src/test/java/com/bal/reminders/ui/permissions/ReadinessTest.kt

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Mod578 added 4 commits August 5, 2026 22:46
Dependabot opens monthly pull requests for the Gradle build, including the
version catalog, and for the actions pinned in the workflow. Both are capped
so an unattended month cannot flood the repository.
checkout and upload-artifact were pinned at v4 and setup-java at v4, while
v7, v7 and v5 are current.
Replaces every em dash in the Kotlin comments with a colon where a short
label introduces a definition, a comma where the dash was parenthetical, and
brackets where a clause was fenced by a pair. 152 lines across 46 files, all
of them comment text; no code changed.
English first, with the Arabic version kept in a collapsible section rather
than dropped. The page now opens with an animated header, three badges that
each point at live data (CI, latest release, minimum Android version), what
the app is in two sentences, and a three step install.

The rest follows the order a reader actually asks for it: features, how it
works, build from source, layout, stack, privacy. The privacy section keeps
the honest caveat about Android backup instead of claiming everything stays
on the device.
@Mod578
Mod578 marked this pull request as ready for review August 5, 2026 20:08
@Mod578
Mod578 merged commit e003377 into master Aug 5, 2026
1 check passed

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

مرحبًا - لقد راجعت تغييراتك وهي تبدو رائعة!


سورسي مجاني للمشاريع مفتوحة المصدر - إذا أعجبتك مراجعاتنا فيُرجى التفكير في مشاركتها ✨
ساعدني على أن أكون أكثر فائدة! يُرجى النقر على 👍 أو 👎 على كل تعليق، وسأستخدم ملاحظاتك لتحسين المراجعات.
Original comment in English

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

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.

1 participant