docs: 更新 README 为纯 Android 描述,调整 CHANGELOG 顺序,添加 RELEASE.md 与图标资源
This commit is contained in:
parent
5b5d780593
commit
a36f6c41e1
194
CHANGELOG.md
194
CHANGELOG.md
@ -5,6 +5,103 @@ All notable changes to the YaYa project are documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.1.0] - 2026-06-02
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
#### Date Checker Tool
|
||||||
|
- New "Date Checker" tool page accessible from FAB → Tools menu for tracking item expiration dates
|
||||||
|
- Swipe-to-delete with animated removal and staggered enter/exit animations
|
||||||
|
- Expired status display with visual indicators
|
||||||
|
- Auto-scroll and highlight animation for new entries
|
||||||
|
|
||||||
|
#### Tools Page
|
||||||
|
- New "Tools" entry in FAB menu linking to a dedicated tools landing page
|
||||||
|
- Date Checker as the first tool module
|
||||||
|
|
||||||
|
#### Theme & Visual
|
||||||
|
- `YaYaTheme` introduced and applied to all Activities for unified theming
|
||||||
|
- Legal holiday badges now display with colored background and continuous edge rounded corners
|
||||||
|
- Holiday badge wave-scale entrance animation
|
||||||
|
- Personal shift badges redesigned with light circle background + centered text
|
||||||
|
- Shift badge circular base to avoid overlapping with selection ring
|
||||||
|
|
||||||
|
#### Year ↔ Month View Transition
|
||||||
|
- BottomCard slide-in animation and fade effect during year/month view transitions
|
||||||
|
- Month→year view no longer forces collapse state to expand
|
||||||
|
|
||||||
|
#### Performance
|
||||||
|
- LunarCache LRU cache for lunar/solar term calculations with startup pre-computation
|
||||||
|
- Macrobenchmark module with automated Baseline Profile generation
|
||||||
|
- Baseline Profile covering date checker, shift settings, tools page, and core calendar scenarios
|
||||||
|
- `ComposeTrace` cross-platform trace markers for Perfetto/Systrace
|
||||||
|
- SolarDay static cache to eliminate repeated object creation
|
||||||
|
- MiniMonth pure Canvas rendering eliminating 96 Text measurement overhead
|
||||||
|
- `graphicsLayer(translationY)` replacing `offset(Dp)` to avoid layout passes
|
||||||
|
- Aggregated `CalendarUiState` to reduce Compose recomposition
|
||||||
|
- `remember` stabilization for lambdas and computations
|
||||||
|
- Scene-based `profile.sh` with `--all` batch mode for 15 automated trace scenarios
|
||||||
|
- Perfetto trace analysis script (`analyze-trace.sh`)
|
||||||
|
- Trace build type for release + retained trace markers
|
||||||
|
|
||||||
|
#### Build & Tooling
|
||||||
|
- Spotless 8.5.1 code formatter with ktlint integration
|
||||||
|
- `.editorconfig` for ktlint Composable function naming rules
|
||||||
|
- Dependency update checker and auto-upgrade tool integration
|
||||||
|
- `app_icon` shrunk to 512×512 and converted to WebP (446KB savings)
|
||||||
|
- 152 GIF assets batch-converted to animated WebP format
|
||||||
|
- `uiTooling` moved to `debugImplementation`; unused `@Preview` and `kotlin-test` entries removed
|
||||||
|
- `sketch` library for GIF/WebP display (`sketch-compose` + `sketch-animated-webp`)
|
||||||
|
- PowerShell performance tracing script (`profile.ps1`)
|
||||||
|
|
||||||
|
#### Documentation
|
||||||
|
- Comprehensive `AGENTS.md` at every directory level (root, app, core, scripts, etc.)
|
||||||
|
- Updated `DEVELOPMENT.md` with Perfetto trace analysis and emulator launch commands
|
||||||
|
- Updated `CLAUDE.md` to reflect pure Android project structure
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- Project migrated from Kotlin Multiplatform (KMP/CMP) to pure Android (`:app` + `:core`)
|
||||||
|
- All Compose UI and business logic consolidated into `:core` module; `:app` remains a thin shell
|
||||||
|
- Removed KMP/CMP plugins, iOS app module, and `:shared` module
|
||||||
|
- `androidApp` module renamed to `app`
|
||||||
|
- Collapse animation refactored: removed fling velocity threshold, now spring-driven
|
||||||
|
- `CalendarPager` ↔ `WeekPager` switching uses `AnimatedContent` for smooth crossfade
|
||||||
|
- Year view page year calculation uses `settledPage` to prevent flicker during swipe
|
||||||
|
- ViewModel decoupled from Compose runtime, migrated to `StateFlow`
|
||||||
|
- `LunarCache` made injectable with extracted repeated computations
|
||||||
|
- MenuItem and ToolItem unified to use `Card(onClick)` pattern
|
||||||
|
- Holiday badge null checks simplified to Elvis operator
|
||||||
|
- `@Suppress` annotations cleaned up with deprecated API replacements
|
||||||
|
- Removed unnecessary P0 code (custom combine, dead StateFlow, duplicate grid algorithms, runBlocking)
|
||||||
|
- Removed debug logging from LicensesScreen and BottomCard
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Lunar first-day month name no longer appends redundant "月" suffix
|
||||||
|
- Year view stale year display on enter
|
||||||
|
- Year view page year flicker during swipe transitions
|
||||||
|
- Collapse animation flicker when switching between CalendarPager and WeekPager
|
||||||
|
- Folded state cross-month dates not grayed out in week view
|
||||||
|
- Date checker swipe-to-delete state misalignment and deprecation warning
|
||||||
|
- Shared element transition animation loss after year view page change
|
||||||
|
- Night mode theme transparency issues with explicit background colors
|
||||||
|
- Predictive back gesture failure and end-of-animation flash on certain devices
|
||||||
|
- Back animation residual transition eliminated with `snapTo`
|
||||||
|
- Fast swipe collapse/expand failure, now uses progress threshold detection
|
||||||
|
- `graphicsLayer` optimization reverted due to excessive GPU compositing overhead on real devices
|
||||||
|
- Reverted shared element transitions in favor of zoom + fade animation
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
- iOS app module (`iosApp/`) and all related Xcode project files
|
||||||
|
- `:shared` module and `shared/build.gradle.kts`
|
||||||
|
- Shared element transition animations (replaced by zoom + fade)
|
||||||
|
- Year/month scroll wheel picker with haptic feedback (reverted)
|
||||||
|
- Aliyun Maven mirrors (switched to Maven Central / Google)
|
||||||
|
- Unused Compose runtime ProGuard keep rules
|
||||||
|
- Temporary performance monitoring logs (trace markers retained)
|
||||||
|
|
||||||
## [1.0.0] - 2026-05-20
|
## [1.0.0] - 2026-05-20
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
@ -139,103 +236,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Aliyun Maven mirrors (switched back to Maven Central / Google)
|
- Aliyun Maven mirrors (switched back to Maven Central / Google)
|
||||||
- Unused Compose runtime ProGuard keep rules
|
- Unused Compose runtime ProGuard keep rules
|
||||||
|
|
||||||
## [1.1.0] - 2026-06-02
|
|
||||||
|
|
||||||
### Added
|
|
||||||
|
|
||||||
#### Date Checker Tool
|
|
||||||
- New "Date Checker" tool page accessible from FAB → Tools menu for tracking item expiration dates
|
|
||||||
- Swipe-to-delete with animated removal and staggered enter/exit animations
|
|
||||||
- Expired status display with visual indicators
|
|
||||||
- Auto-scroll and highlight animation for new entries
|
|
||||||
|
|
||||||
#### Tools Page
|
|
||||||
- New "Tools" entry in FAB menu linking to a dedicated tools landing page
|
|
||||||
- Date Checker as the first tool module
|
|
||||||
|
|
||||||
#### Theme & Visual
|
|
||||||
- `YaYaTheme` introduced and applied to all Activities for unified theming
|
|
||||||
- Legal holiday badges now display with colored background and continuous edge rounded corners
|
|
||||||
- Holiday badge wave-scale entrance animation
|
|
||||||
- Personal shift badges redesigned with light circle background + centered text
|
|
||||||
- Shift badge circular base to avoid overlapping with selection ring
|
|
||||||
|
|
||||||
#### Year ↔ Month View Transition
|
|
||||||
- BottomCard slide-in animation and fade effect during year/month view transitions
|
|
||||||
- Month→year view no longer forces collapse state to expand
|
|
||||||
|
|
||||||
#### Performance
|
|
||||||
- LunarCache LRU cache for lunar/solar term calculations with startup pre-computation
|
|
||||||
- Macrobenchmark module with automated Baseline Profile generation
|
|
||||||
- Baseline Profile covering date checker, shift settings, tools page, and core calendar scenarios
|
|
||||||
- `ComposeTrace` cross-platform trace markers for Perfetto/Systrace
|
|
||||||
- SolarDay static cache to eliminate repeated object creation
|
|
||||||
- MiniMonth pure Canvas rendering eliminating 96 Text measurement overhead
|
|
||||||
- `graphicsLayer(translationY)` replacing `offset(Dp)` to avoid layout passes
|
|
||||||
- Aggregated `CalendarUiState` to reduce Compose recomposition
|
|
||||||
- `remember` stabilization for lambdas and computations
|
|
||||||
- Scene-based `profile.sh` with `--all` batch mode for 15 automated trace scenarios
|
|
||||||
- Perfetto trace analysis script (`analyze-trace.sh`)
|
|
||||||
- Trace build type for release + retained trace markers
|
|
||||||
|
|
||||||
#### Build & Tooling
|
|
||||||
- Spotless 8.5.1 code formatter with ktlint integration
|
|
||||||
- `.editorconfig` for ktlint Composable function naming rules
|
|
||||||
- Dependency update checker and auto-upgrade tool integration
|
|
||||||
- `app_icon` shrunk to 512×512 and converted to WebP (446KB savings)
|
|
||||||
- 152 GIF assets batch-converted to animated WebP format
|
|
||||||
- `uiTooling` moved to `debugImplementation`; unused `@Preview` and `kotlin-test` entries removed
|
|
||||||
- `sketch` library for GIF/WebP display (`sketch-compose` + `sketch-animated-webp`)
|
|
||||||
- PowerShell performance tracing script (`profile.ps1`)
|
|
||||||
|
|
||||||
#### Documentation
|
|
||||||
- Comprehensive `AGENTS.md` at every directory level (root, app, core, scripts, etc.)
|
|
||||||
- Updated `DEVELOPMENT.md` with Perfetto trace analysis and emulator launch commands
|
|
||||||
- Updated `CLAUDE.md` to reflect pure Android project structure
|
|
||||||
|
|
||||||
### Changed
|
|
||||||
|
|
||||||
- Project migrated from Kotlin Multiplatform (KMP/CMP) to pure Android (`:app` + `:core`)
|
|
||||||
- All Compose UI and business logic consolidated into `:core` module; `:app` remains a thin shell
|
|
||||||
- Removed KMP/CMP plugins, iOS app module, and `:shared` module
|
|
||||||
- `androidApp` module renamed to `app`
|
|
||||||
- Collapse animation refactored: removed fling velocity threshold, now spring-driven
|
|
||||||
- `CalendarPager` ↔ `WeekPager` switching uses `AnimatedContent` for smooth crossfade
|
|
||||||
- Year view page year calculation uses `settledPage` to prevent flicker during swipe
|
|
||||||
- ViewModel decoupled from Compose runtime, migrated to `StateFlow`
|
|
||||||
- `LunarCache` made injectable with extracted repeated computations
|
|
||||||
- MenuItem and ToolItem unified to use `Card(onClick)` pattern
|
|
||||||
- Holiday badge null checks simplified to Elvis operator
|
|
||||||
- `@Suppress` annotations cleaned up with deprecated API replacements
|
|
||||||
- Removed unnecessary P0 code (custom combine, dead StateFlow, duplicate grid algorithms, runBlocking)
|
|
||||||
- Removed debug logging from LicensesScreen and BottomCard
|
|
||||||
|
|
||||||
### Fixed
|
|
||||||
|
|
||||||
- Lunar first-day month name no longer appends redundant "月" suffix
|
|
||||||
- Year view stale year display on enter
|
|
||||||
- Year view page year flicker during swipe transitions
|
|
||||||
- Collapse animation flicker when switching between CalendarPager and WeekPager
|
|
||||||
- Folded state cross-month dates not grayed out in week view
|
|
||||||
- Date checker swipe-to-delete state misalignment and deprecation warning
|
|
||||||
- Shared element transition animation loss after year view page change
|
|
||||||
- Night mode theme transparency issues with explicit background colors
|
|
||||||
- Predictive back gesture failure and end-of-animation flash on certain devices
|
|
||||||
- Back animation residual transition eliminated with `snapTo`
|
|
||||||
- Fast swipe collapse/expand failure, now uses progress threshold detection
|
|
||||||
- `graphicsLayer` optimization reverted due to excessive GPU compositing overhead on real devices
|
|
||||||
- Reverted shared element transitions in favor of zoom + fade animation
|
|
||||||
|
|
||||||
### Removed
|
|
||||||
|
|
||||||
- iOS app module (`iosApp/`) and all related Xcode project files
|
|
||||||
- `:shared` module and `shared/build.gradle.kts`
|
|
||||||
- Shared element transition animations (replaced by zoom + fade)
|
|
||||||
- Year/month scroll wheel picker with haptic feedback (reverted)
|
|
||||||
- Aliyun Maven mirrors (switched to Maven Central / Google)
|
|
||||||
- Unused Compose runtime ProGuard keep rules
|
|
||||||
- Temporary performance monitoring logs (trace markers retained)
|
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
- No unreleased changes at this time.
|
- No unreleased changes at this time.
|
||||||
|
|||||||
21
README.md
21
README.md
@ -1,23 +1,26 @@
|
|||||||
# YaYa
|
# YaYa
|
||||||
|
|
||||||
基于 Kotlin Multiplatform 与 Compose Multiplatform 的跨平台日历应用,Android 与 iOS 共享同一套 UI 与业务逻辑。
|
纯 Android + Jetpack Compose 日历应用,支持农历/节气/节日、个人班次排期,提供月/周/年三种视图。
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<img src="app/src/main/assets/app_icon.png" />
|
||||||
|
</div>
|
||||||
|
|
||||||
## 特性
|
## 特性
|
||||||
|
|
||||||
- **流畅的视图切换** —— 月视图、周视图、年视图三种模式,拖拽手势驱动月↔周折叠,弹簧动画自动吸附
|
- **流畅的视图切换** —— 月视图、周视图、年视图三种模式,拖拽手势驱动月↔周折叠,弹簧动画自动吸附
|
||||||
- **无限滑动分页** —— 基于 `Int.MAX_VALUE` 的虚拟分页,前后无边界翻页
|
- **无限滑动分页** —— 基于 `Int.MAX_VALUE` 的虚拟分页,前后无边界翻页
|
||||||
- **完整中式日历** —— 公历 + 农历 + 二十四节气 + 传统节日,ISO 8601 周起始(周一)
|
- **完整中式日历** —— 公历 + 农历 + 二十四节气 + 传统节日,ISO 8601 周起始(周一)
|
||||||
- **个人排班周期** —— 自定义工作/休息循环,与公共节假日独立
|
- **个人排班周期** —— 自定义工作/休息循环,与公共节假日独立
|
||||||
- **Material 3 设计** —— 动态配色,深色模式
|
- **Material 3 设计** —— 动态配色,深色模式
|
||||||
|
|
||||||
## 技术栈
|
## 技术栈
|
||||||
|
|
||||||
- Kotlin 2.3 · Compose Multiplatform 1.11 · Material 3
|
- Kotlin 2.3 · Jetpack Compose · Material 3
|
||||||
- `kotlinx-datetime` 处理所有日期逻辑
|
- `kotlinx-datetime` 处理所有日期逻辑
|
||||||
- `tyme4kt` 提供农历、节气与传统节日
|
- `tyme4kt` 提供农历、节气与传统节日
|
||||||
- `sketch` 渲染 GIF 动画
|
- `sketch` 渲染 GIF 动画
|
||||||
- 双模块:`:shared`(UI + 逻辑) · `:androidApp`(薄壳)
|
- 双模块:`:core`(UI + 逻辑) · `:app`(薄壳)
|
||||||
- iOS 入口为 `MainViewController.kt`,Xcode 工程位于 `iosApp/`
|
|
||||||
|
|
||||||
## 构建
|
## 构建
|
||||||
|
|
||||||
|
|||||||
55
RELEASE.md
Normal file
55
RELEASE.md
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# 发布流程
|
||||||
|
|
||||||
|
## 1. 更新 CHANGELOG.md
|
||||||
|
|
||||||
|
按倒序(新版在前)在 `[Unreleased]` 下方添加新版本条目,格式遵循 [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)。
|
||||||
|
|
||||||
|
底部添加版本链接:
|
||||||
|
|
||||||
|
```
|
||||||
|
[x.y.z]: https://github.com/DefectingCat/yayacal/releases/tag/vx.y.z
|
||||||
|
```
|
||||||
|
|
||||||
|
## 2. 更新版本号
|
||||||
|
|
||||||
|
编辑 `app/build.gradle.kts`:
|
||||||
|
|
||||||
|
- `baseVersion` 默认值改为新版本号(如 `"1.2.0"`)
|
||||||
|
- `versionCode` 递增 `+1`
|
||||||
|
|
||||||
|
## 3. 构建 Release APK
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gradlew :app:assembleRelease
|
||||||
|
```
|
||||||
|
|
||||||
|
产物路径:`app/build/outputs/apk/release/app-release.apk`
|
||||||
|
|
||||||
|
## 4. 提交、打 Tag、推送
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git add CHANGELOG.md app/build.gradle.kts
|
||||||
|
git commit -m "release: vx.y.z"
|
||||||
|
git tag vx.y.z
|
||||||
|
git push origin main --tags
|
||||||
|
```
|
||||||
|
|
||||||
|
## 5. 创建 GitHub Release
|
||||||
|
|
||||||
|
```bash
|
||||||
|
gh release create vx.y.z \
|
||||||
|
app/build/outputs/apk/release/app-release.apk \
|
||||||
|
--title "YaYa vx.y.z" \
|
||||||
|
--notes-file CHANGELOG.md
|
||||||
|
```
|
||||||
|
|
||||||
|
`--notes-file` 会读取 CHANGELOG.md 全文作为 Release body。
|
||||||
|
|
||||||
|
## 检查清单
|
||||||
|
|
||||||
|
- [ ] CHANGELOG.md 新版本条目已添加(倒序,新版在前)
|
||||||
|
- [ ] CHANGELOG.md 底部链接已添加
|
||||||
|
- [ ] `app/build.gradle.kts` 中 `baseVersion` 和 `versionCode` 已更新
|
||||||
|
- [ ] Release APK 构建成功
|
||||||
|
- [ ] Git tag 已推送
|
||||||
|
- [ ] GitHub Release 已创建且包含 APK
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 457 KiB After Width: | Height: | Size: 59 KiB |
BIN
app/src/main/assets/app_icon_original.png
Normal file
BIN
app/src/main/assets/app_icon_original.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 457 KiB |
Loading…
x
Reference in New Issue
Block a user