Releases: Tianshang301/TianshangPeriodPal
Releases · Tianshang301/TianshangPeriodPal
Release list
TianshangPeriodPal v2.1.0
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
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
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
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.gradleand all 7 README files. Signing credentials are now read exclusively fromlocal.properties(git-ignored). Alocal.properties.exampletemplate 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 inEncryptedSharedPreferences.
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 fromBackupManager,ExportManager, andSettingsViewModel. 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"toexported="false"inAndroidManifest.xml.
Low Priority
- Error messages now use generic string resources instead of exposing exception details. Added
auth_failed_generic,biometric_init_failed, andlockout_messagestrings in all 8 languages.
Other
- Removed stale
app/src/build.gradleduplicate 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
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
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
Initial release of PeriodPal - A modern menstrual cycle tracking app.