Skip to content

Releases: Tianshang301/TianshangPeriodPal

TianshangPeriodPal v2.1.0

Choose a tag to compare

@Tianshang301 Tianshang301 released this 28 Jun 00:02

TianshangPeriodPal v2.1.0

🌍 Internationalization

  • Added 14 new languages: German, Hindi, Indonesian, Italian, Malay, Dutch, Polish, Portuguese, Russian, Swedish, Thai, Turkish, Ukrainian, Vietnamese
  • Total language support: 21 languages

🐛 Bug Fixes

  • Fixed missing default locale strings for translations
  • Fixed versionCode management (v1.x: 1-999, v2.x: 1000+)

📦 Downloads

  • PeriodPal-v2.1.0.apk - Release APK (debug signed)

TianshangPeriodPal v2.0.0

Choose a tag to compare

@Tianshang301 Tianshang301 released this 28 Jun 00:01

TianshangPeriodPal v2.0.0

🔐 Security

  • SQLCipher AES-256 database encryption with Android Keystore
  • Encrypted backups (AES-256-GCM)
  • Argon2id password hashing
  • Fixed bottom navigation bypass on AppLock screen
  • Lifecycle-based background lock

🧠 Prediction Algorithm Optimization

  • Luteal phase learning from historical ovulation data
  • Exponential decay weighting (recent cycles prioritized)
  • IQR filtering for period length outliers
  • Expanded ovulation adjustment range
  • Dynamic cycle length bounds (21-45 days)

🎨 UI Improvements

  • ProfileScreen reorganized with section headers (Appearance/Data/Other)
  • Removed duplicate security items (moved to Settings)
  • HSL color engine for theme customization

📝 Documentation

  • Updated README with security architecture
  • Added prediction algorithm documentation
  • Fixed language count (7 languages)

📦 Downloads

  • PeriodPal-v2.0.0.apk - Release APK (debug signed)

TianshangPeriodPal v1.5.0

Choose a tag to compare

@Tianshang301 Tianshang301 released this 27 May 03:32

TianshangPeriodPal v1.5.0

What's New

  • UI redesign with new cute-style components (BouncyButton, CartoonCalendarDay, ColorPickerDialog, EmptyStateCharacter)
  • Updated translations for 7 languages (Chinese, English, Japanese, Korean, French, Spanish, Arabic)
  • Theme system improvements with rounded shape support
  • Enhancements to Analysis, Calendar, Recycle Bin, and Theme Settings pages

Installation

Download \PeriodPal-v1.5.0.apk\ and install directly. Requires Android 9 (API 28) or above.

Privacy Commitment

  • Fully offline, zero network permissions
  • Data stored only on device
  • Open source and auditable, MIT License

v1.4.0 - Security Hardening

Choose a tag to compare

@Tianshang301 Tianshang301 released this 24 May 23:59

Changelog

All notable changes to TianshangPeriodPal (天殇·月记) will be documented in this file.


[1.4.0] - 2026-05-25

Security Hardening (Per SECURITY.md Audit)

This release addresses a comprehensive security audit based on the project's SECURITY.md policy. 28 files changed, +251 / -162 lines.

Critical Fixes

  • Remove hardcoded signing passwords from app/build.gradle and all 7 README files. Signing credentials are now read exclusively from local.properties (git-ignored). A local.properties.example template is provided.
  • Remove Argon2 fallback to reversible Base64 encoding in EncryptionManager. If Argon2 hashing fails, the operation now throws instead of silently storing a weak, reversible hash.
  • Remove duplicate password hash stored in plain DataStore (SettingsRepository). App lock password hashes are now stored only in EncryptedSharedPreferences.

High Priority

  • Brute-force protection on PIN entry with exponential lockout: 3 failed attempts → 5s delay, 5 → 30s, 10 → 5-minute lockout. PIN minimum length increased from 4 to 6 digits.
  • File size validation (10MB limit) and magic-byte image type checks (JPEG/PNG/WebP) for background image import in SettingsViewModel.

Medium Priority

  • Fix ZIP Slip path traversal vulnerability in BackupManager.importDatabase(). ZIP entry names are now sanitized and canonical paths validated.
  • Remove all printStackTrace() calls from BackupManager, ExportManager, and SettingsViewModel. Errors are now handled silently without leaking stack traces to logcat.
  • Add input validation: BMI height (10–300cm), weight (5–500kg); body temperature range (30–45°C); text field length limits (ovulation test: 200, cervical mucus: 200, notes: 500).
  • BootReceiver changed from exported="true" to exported="false" in AndroidManifest.xml.

Low Priority

  • Error messages now use generic string resources instead of exposing exception details. Added auth_failed_generic, biometric_init_failed, and lockout_message strings in all 8 languages.

Other

  • Removed stale app/src/build.gradle duplicate file.
  • Build verified on Huawei device: install, launch, all 5 tabs navigation — zero crashes.

[1.3.0] - 2026-05-03

Features & Improvements

  • Implement ReminderScheduler.scheduleReminders() with PredictionEngine integration
  • Implement BackupViewModel.importDatabase() with file picker
  • Add notification icon (ic_notification.xml) and notification channels on app startup
  • Replace hardcoded Chinese strings in PredictionEngine with enum constants (ConfidenceLevel, CycleRegularity, OvulationTestResult, CervicalMucusType)
  • Remove unused SQLCipher ProGuard rule
  • AppLock: PIN length restriction (4–8 digits) with character counter
  • AnalysisScreen: show guidance prompt when no data available
  • BmiScreen: label "Based on Chinese BMI standard"
  • BackupScreen: add description text for each button
  • CalendarScreen: add "Today" button to jump back to current month
  • Notification channel names use localized strings
  • Add strings in 8 languages (zh, en, ja, ko, fr, es, ar) for: notifications, analysis_no_data, pin_length_error, bmi_standard_note, backup descriptions, calendar_today
  • Version: 1.2.2 → 1.3.0 (versionCode 5 → 6)

[1.2.2] - 2026-04-XX

  • Bug fixes and stability improvements

[1.2.0] - 2026-04-XX

  • BMI calculation and tracking
  • Recycle bin with 30-day auto-cleanup
  • Database backup/restore (ZIP)
  • CSV data export

[1.0.0] - 2026-03-XX

  • Initial release
  • Cycle recording and prediction
  • Data analysis and statistics
  • Reminder system (WorkManager)
  • Multi-language support (7 languages)
  • Theme customization and dark mode
  • App lock with biometrics + PIN

v1.3.0

v1.3.0 Pre-release
Pre-release

Choose a tag to compare

@Tianshang301 Tianshang301 released this 02 May 19:55

PeriodPal v1.3.0

New Features

  • Wheel picker time input (iPhone-style) with text input toggle
  • Independent reminder times for period/ovulation/PMS
  • Daily periodic reminder check (PeriodicWorkRequest)
  • POST_NOTIFICATIONS runtime permission (Android 13+)
  • Prevent screenshot toggle in Profile screen
  • Calendar "Today" button
  • Database import from backup file
  • Notification icon and channels

Improvements

  • PredictionEngine: hardcoded Chinese replaced with enum constants
  • Signing passwords moved to local.properties
  • SQLCipher ProGuard rule removed
  • PIN length restriction (4-8 digits)
  • Analysis screen empty data guidance
  • BMI label: Chinese standard
  • Backup screen descriptions
  • System back button exits app

Bug Fixes

  • Bottom nav: Calendar tab no longer jumps to Profile
  • Calendar date click now correctly navigates to Record
  • Multi-language label overflow (FR/ES/JA)
  • Reminder system rewritten (OneTimeWork -> PeriodicWork)

v1.1.0

Choose a tag to compare

@Tianshang301 Tianshang301 released this 30 Apr 01:17

What's New in v1.1.0

New Features

  • Database Migration Support: Added proper Room database migration from version 1 → 2 to prevent data loss during updates
  • Enhanced Statistics Visualization: Added MPAndroidChart support with visual charts:
    • Cycle length trend chart (line chart)
    • Pain trend chart (bar chart)
    • Symptom distribution chart (pie chart)
  • Improved Prediction Accuracy: Now uses symptom data (ovulation tests, cervical mucus, BBT) to adjust cycle predictions

Enhanced

  • Updated PredictionEngine to receive and process symptom data from both Calendar and Analysis screens
  • Added cycle length history tracking for better statistics
  • Database schema export enabled for future migrations

Technical Changes

  • Version: 1.0.0 → 1.1.0 (versionCode: 1 → 2)
  • Added Room schema export directory (app/schemas/)
  • Added proper error handling for database migrations

v1.0.0

Choose a tag to compare

@Tianshang301 Tianshang301 released this 30 Apr 00:36

Initial release of PeriodPal - A modern menstrual cycle tracking app.