Repository navigation
Releases
My Cycle 1.4.0
My Cycle 1.4.0
- Adds local recurring symptom patterns based only on the user's own recent diary history, without claiming causes or diagnoses.
- Expands Statistics with the shortest and longest recent completed cycle alongside existing averages and variation.
- Makes period estimates explainable by showing whether the range comes from setup data or recent completed cycles, including the observed gap range and weighted estimate.
- Adds an on-device PDF doctor report with recent cycle dates, bleeding-duration ranges and frequently recorded symptoms; private free-text notes are intentionally omitted.
- Makes local reminders context-aware: days already recorded are skipped, and a neutral message is used when an estimated date range is close.
- Keeps the app fully offline and privacy-first: no account, analytics, cloud sync, INTERNET permission or new health-data permissions.
- Preserves the existing Room schema, CSV format and versioned .mycycle backup format.
Version: 1.4.0 (versionCode 10).
My Cycle 1.3.1
My Cycle 1.3.1
- Restores the owner-approved My Cycle launcher artwork.
- Removes the redrawn VectorDrawable/adaptive launcher replacement introduced in 1.3.0.
- Packages full-frame raster WebP launcher assets for mdpi, hdpi, xhdpi, xxhdpi and xxxhdpi, derived only by resizing the approved PNG with no redesign, tracing, cropping or vectorization.
- Prevents high-density devices from upscaling a single low-resolution launcher asset.
- Adds CI integrity checks for every launcher density and retains built APKs for direct package verification.
No diary data, privacy behavior, permissions or application features are changed in this patch.
My Cycle 1.3.0
My Cycle 1.3.0
Privacy, backup and daily use
- Added CSV import with validation, duplicate-date preview and confirmation before matching dates are replaced.
- Added versioned
.mycyclefull backup and restore for diary records and app settings, with rollback if restore cannot complete safely. - Restored device-specific biometric lock and reminder enablement stay off until the user explicitly enables them on the current device.
- Added optional daily local reminders with a configurable time and privacy-conscious notification text.
- Added optional biometric app lock on Android 9+ and optional screenshot/recent-apps protection.
- Added a privacy-safe “Log today” launcher shortcut and home-screen widget for quick diary access.
- Refreshed the adaptive launcher artwork with a warmer cycle/calendar/petal design.
- Hardened reminder intents and validation of system file-picker URIs used by import, export and backup operations.
My Cycle remains offline-first: there is no account, cloud synchronization, analytics or Android INTERNET permission. Data leaves the app only when you explicitly create a CSV export or .mycycle backup.
My Cycle 1.1.4
My Cycle 1.1.4
Maintenance and code quality
- Completed a repository-wide cleanup and deep refactoring pass while preserving the existing app behavior, UI/UX, data formats and Android application identity.
- Removed unused Compose tooling dependencies, redundant calendar state and calculations, an unused range-observation API, and unnecessary Activity lookup code.
- Simplified Room deletion by date and reused the existing atomic batch API for debug-only RuStore screenshot seed data.
- Kept the prediction, cycle-history, attention-note, persistence and release-signing behavior unchanged.
Quality and supply-chain checks
- Stabilized Qodana Android project import without disabling strict Gradle dependency verification or lowering the Qodana quality gate.
- Qodana now prepares the same JDK/Gradle project environment used by CI, analyzes the current pull-request head with
pr-mode: false, and treats only IDE-only source/documentation attachments separately from executable dependencies. - Android CI, CodeQL, Semgrep and Gitleaks remain part of the release quality gate.
This is a maintenance release with no intended user-facing feature changes. The permanent Android Application ID / Bundle ID remains com.sl.mycycle, and the app remains offline-first with no account, analytics, ads or Android INTERNET permission.
My Cycle 1.1.3
My Cycle 1.1.3
RuStore publication
- Fixed the permanent Android Application ID / Bundle ID and namespace at
com.sl.mycycle. - Refactored source, test and debug package paths plus the Room schema package to match the canonical identity.
- Added a signed Android App Bundle (
.aab) release pipeline with SHA-256 verification and the public upload certificate required for store onboarding. - Added automated 1080×1920 RuStore screenshots generated from the real app UI with debug-only local demo data.
- Added English and Russian privacy policies and a maintained RuStore store-listing file.
Compatibility note
Pre-1.1.3 GitHub builds have a different Android application identity and Android treats them as a separate app. com.sl.mycycle is the permanent Application ID / Bundle ID and namespace from this release onward.
The app remains offline-first: no account, analytics, ads or Android INTERNET permission.
My Cycle 1.1.2
My Cycle 1.1.2
What changed
- Added quick entry for previous periods by start and end date, including an “Add another” flow for several earlier cycles.
- Made past-day editing easier to discover in Calendar.
- Simplified daily entry: bleeding stays up front, while mood, symptoms and notes are optional under “More details”.
- Shortened first-run wording in English and Russian.
- Improved calendar behavior on smaller screens and with larger text, plus accessibility semantics for selection controls and Settings switches.
- Hardened multi-store writes and rollback behavior so failed saves do not leave partial state.
Quality and security
- Android CI: build, unit tests, Android Lint and Detekt.
- Security scans: Qodana, CodeQL, Semgrep and Gitleaks.
- Strict Gradle dependency verification and Dependabot coverage for Gradle, GitHub Actions and the pinned Python security tool.
- Third-party GitHub Actions pinned to immutable commit SHAs.
- Release signing secrets remain isolated from regular CI.
- Release APK remains R8-minified with resource shrinking.
The app remains offline-first: no account, analytics, ads or Android INTERNET permission.
My Cycle 1.1.1
My Cycle 1.1.1
Maintenance and correctness release after a full review of cycle detection, estimates, health-related wording, accessibility, UI consistency and build configuration.
Highlights
- Spotting stays separate from period bleeding, including legacy records.
- Setup no longer invents a one-day period from a single remembered start date.
- Explicit no-blood and spotting breaks are preserved between bleeding episodes.
- Highly variable cycles are separated from fairly steady cycles outside the app's common range.
- Calendar estimates are broader and more cautious; the old fixed cycle-length-minus-14 logic is gone.
- Recent-cycle statistics, midnight rollover, dark mode, contrast, locale-aware calendar layout and TalkBack descriptions are improved.
- Regression tests cover the review findings and CI has been cleaned up.
Signed APK
Download My-Cycle-v1.1.1.apk from Assets.
SHA-256: 7479ca24cfe8b560ee6258d98e31ac8d99c68419891b345f3e478224fa7797b0
APK Signature Scheme v2: verified
APK Signature Scheme v3: verified
Signer certificate SHA-256: f02571c40741e2cb071564f5b63fd3dc38a875d0eda11a8c42269ed635bc2a58
Privacy and scope
My Cycle remains offline for cycle records: no account, analytics, ads or Android INTERNET permission. It is a diary and calendar estimator, not a medical device, diagnostic tool or contraceptive method.
Author: Stanley Lloyd
Application ID: com.silverlightning.mycycle
License: PolyForm Noncommercial License 1.0.0
My Cycle 1.1.0
My Cycle 1.1.0
A safer and clearer update for people whose periods are new, uneven, changing with age, or have stopped.
What changed
- The next period is shown as a possible range of dates instead of one supposedly exact day.
- Setup now asks which simple description best matches the user's periods.
- The first years after periods begin use wider estimates because timing often changes a lot.
- Long-term uneven periods and periods changing with age also use wider estimates.
- A few spots of blood are kept separate from a real period and do not start a new cycle.
- Short real cycles are kept in history instead of being silently ignored.
- Calendar guesses about egg release are hidden when the history is too uneven or too new.
- Possible pregnancy days are shown only after enough fairly steady adult history, and are never described as safe days.
- Simple attention notes were added for very long gaps, bleeding that lasts unusually long, and new bleeding after about a year without periods.
- Existing 1.0.0 users keep all their history. They only need to choose the new period pattern once in Settings.
- User-facing wording was simplified in English and Russian.
Privacy
No account, analytics, ads or internet permission. Cycle records stay on the device unless the user explicitly exports them to CSV.
Important
My Cycle gives calendar estimates, not medical answers. It is not a medical device and must not be used as contraception or instead of medical advice.
Author: Stanley Lloyd
Application ID: com.silverlightning.mycycle
License: PolyForm Noncommercial License 1.0.0
SHA-256 (My-Cycle-v1.1.0.apk): a8991c51f08421c31e0a53a1a2cb1243239e3dd044177ecfa8137e903c461f69
My Cycle 1.0.0
My Cycle 1.0.0
First public release of My Cycle, a simple and private period and cycle tracker for Android.
Highlights
- Period, mood, symptom and notes logging.
- Calendar with confirmed period days and estimated fertile/ovulation windows.
- Adaptive cycle estimates based on recent completed cycles.
- Cycle statistics and recent history.
- CSV export through the Android system file picker.
- System, light, dark and dynamic-color appearance options.
- English and Russian interface.
- About section with description, author, version, license, privacy information and GitHub link.
Privacy
No account, analytics, ads or internet permission. Tracked data remains local unless the user explicitly exports it.
Important
Cycle, fertile-window and ovulation dates are estimates. My Cycle is not a medical device and should not be used as a contraceptive method or as a substitute for medical advice.
Author: Stanley Lloyd
Application ID: com.silverlightning.mycycle
License: PolyForm Noncommercial License 1.0.0
SHA-256 (My-Cycle-v1.0.0.apk): d7d490b5204e33ba5d0a777f9883f9e15abf1979de473e56b1b225d85859e7a0