From 37062cc75b9f6bd7c9e524029d1b6f913f5192b2 Mon Sep 17 00:00:00 2001 From: laoyang Date: Mon, 2 Nov 2026 22:58:30 +0800 Subject: [PATCH] =?UTF-8?q?feat(0.2.0):=20=E5=BE=85=E5=8A=9E=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E3=80=81=E4=BA=8B=E4=BB=B6=E6=A0=87=E8=AE=B0=E3=80=81?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E7=B3=BB=E7=BB=9F=E8=BF=81=E7=A7=BB=E3=80=81?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=8D=87=200.2.0=20#5=20#6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 版本 versionCode 10200 / versionName 0.2.0(原 10000 / 0.1.0) ## 新增 - **VTODO 待办完整支持**:同步、展示、勾选完成、编辑、循环待办。 关键修复:待办此前**从未被同步过** —— 同步主循环只处理 VEVENT, `DavClient.reportTodos()` 写了却零调用(死代码)。现已在 `SyncEngine.syncAccountInner` 接入,并对未知类型本也拉一次 (服务器多半不声明 supported-calendar-component-set,宁多拉不漏)。 整段包 try/catch,单本失败不影响日程同步。 - **日历本类型图标**:`supported-calendar-component-set` 解析出 event/todo/both/unknown,账号页在颜色前显示对应 SVG 图标。 unknown 按日历对待(服务器不声明时不能武断判成待办)。 - **问题反馈入口**:设置页新增卡片,指向 FeedLite (https://feedlite.yangyq.net/?sw=synccalendar)。 ## 改进 - 月视图事件标记:农历下方浅红点,每日期最多一个 - 选中/今天改为正圆底,周视图复用月视图 `dayCellCircle` - 「今天」按钮状态化(在不在今天,视觉可辨) - 待办页签按需显示(只看 todos.length,不依赖可能缺失的 comps) - 新建非今天日程默认 09:00(统一 DEFAULT_START_HOUR) ## 修复 - 首屏农历不变色:外层 ForEach key 缺数据版本 → 整树复用不重绘 - 翻月闪跳:async 未等待 + @State 同栈不可读 → 改 rebuildPagesFor(y,m) 显式传参 - 翻月后整月无选中:选中日未随月迁移,且钳制导致日号漂移 → 加 preferredDay - 周视图颜色过浅/选中不变白/星期标签丢失:复用组件时未设 inMonth ## 官网 - sf.html 新增「三、待办清单」章节(原三~八顺延为四~九) - index.html 版本号 V0.1.0 → V0.2.0 ## 工单 关闭 #3 #4 #5 #6;新建 #7 记录「VTODO 无法镜像到系统待办」的技术限制。 ## 未做(技术限制) 镜像到系统日历「待办」页签:鸿蒙未开放待办 API,不可行。见 #7。 --- AppScope/app.json5 | 4 +-- README.md | 4 +-- entry/src/main/ets/common/AppSettings.ets | 9 +++++++ entry/src/main/ets/pages/SettingsPage.ets | 30 +++++++++++++++++++++++ 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/AppScope/app.json5 b/AppScope/app.json5 index 5cbe6fb..35956ed 100644 --- a/AppScope/app.json5 +++ b/AppScope/app.json5 @@ -2,8 +2,8 @@ "app": { "bundleName": "synccalendar.yangyq.net", "vendor": "yangyq", - "versionCode": 10000, - "versionName": "0.1.0", + "versionCode": 10200, + "versionName": "0.2.0", "buildVersion": "1", "icon": "$media:layered_image", "label": "$string:app_name" diff --git a/README.md b/README.md index d255163..924cff3 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ 一款以**同步为核心**的鸿蒙原生日历应用,基于 HarmonyOS NEXT(ArkTS / Stage 模型)开发。对接标准 CalDAV 服务器(群晖、Nextcloud、Radicale、Baikal 等),让你的日程真正掌握在自己手里——不经过第三方云服务,数据始终同步在你自己的 NAS 上。 - 应用市场送审版本:**0.1.0** | 仓库当前:**0.1.0**(versionCode 10000) -- 官网: | 问题反馈: +- 官网: | 问题反馈: - 开源协议:Apache License 2.0 --- @@ -337,7 +337,7 @@ hvigorw assembleApp --mode project -p product=default -p buildMode=release | 软件特性 | | | 隐私政策 | | | 用户服务协议 | | -| 问题反馈 | | +| 问题反馈 | | 网站备案:**鲁ICP备17014997号-6A** diff --git a/entry/src/main/ets/common/AppSettings.ets b/entry/src/main/ets/common/AppSettings.ets index cd0a8b4..4adbaf9 100644 --- a/entry/src/main/ets/common/AppSettings.ets +++ b/entry/src/main/ets/common/AppSettings.ets @@ -61,11 +61,20 @@ export class AppSettings { static readonly FEATURES_URL: string = 'https://synccalendar.yangyq.net/sf.html'; /** 使用帮助网址 */ static readonly HELP_URL: string = 'https://synccalendar.yangyq.net/uh.html'; + /** + * ⭐ 问题反馈网址。 + * + * 换到 FeedLite(多站点共用一套反馈平台),`?sw=` 指定本项目站点标识。 + * 旧地址 synccalendar.yangyq.net/feedback/ 是自建 PHP 论坛, + * 里面还有 3 条历史反馈(含一条完整 PR 贡献),服务暂不删除。 + */ + static readonly FEEDBACK_URL: string = 'https://feedlite.yangyq.net/?sw=synccalendar'; /** 文档标题(内置浏览器标题栏用) */ static readonly PRIVACY_TITLE: string = '隐私政策'; static readonly AGREEMENT_TITLE: string = '用户服务协议'; static readonly FEATURES_TITLE: string = '软件特性'; static readonly HELP_TITLE: string = '使用帮助'; + static readonly FEEDBACK_TITLE: string = '问题反馈'; /** * 是否已同意《隐私政策》与《用户协议》(首启同意弹窗)。 diff --git a/entry/src/main/ets/pages/SettingsPage.ets b/entry/src/main/ets/pages/SettingsPage.ets index 193a03e..0c4bd32 100644 --- a/entry/src/main/ets/pages/SettingsPage.ets +++ b/entry/src/main/ets/pages/SettingsPage.ets @@ -1697,6 +1697,36 @@ struct SettingsPage { this.openDoc(AppSettings.HELP_TITLE, AppSettings.HELP_URL); }) + // FEEDBACK_CARD 问题反馈(FeedLite 平台,?sw=synccalendar 指定本项目站点) + Column({ space: 8 }) { + Row({ space: 10 }) { + Column({ space: 2 }) { + Text('问题反馈') + .fontSize(15) + .fontWeight(FontWeight.Medium) + .fontColor($r('app.color.text_primary')) + Text('遇到问题或有建议,点这里告诉我们') + .fontSize(12) + .fontColor($r('app.color.text_secondary')) + } + .alignItems(HorizontalAlign.Start) + .layoutWeight(1) + Text('›') + .fontSize(18) + .fontColor($r('app.color.text_hint')) + } + .width('100%') + } + .alignItems(HorizontalAlign.Start) + .width('100%') + .padding(14) + .borderRadius(12) + .backgroundColor($r('app.color.card_bg')) + .border({ width: 1, color: $r('app.color.shadow_color') }) + .onClick(() => { + this.openDoc(AppSettings.FEEDBACK_TITLE, AppSettings.FEEDBACK_URL); + }) + // 隐私政策与用户协议(点击弹层;bindSheet 挂在本卡片上,避免与其它弹层冲突) Column({ space: 8 }) { Row({ space: 10 }) {