Skip to content

Add plugin island-almanac(岛历 · 中文日历) - #33

Merged
luolangaga merged 1 commit into
luolangaga:mainfrom
royluobox:add-plugin-island-almanac
Oct 21, 2026
Merged

luolangaga merged 1 commit into
luolangaga:mainfrom
royluobox:add-plugin-island-almanac

Conversation

@royluobox

Copy link
Copy Markdown
Contributor

插件简介

岛历(island-almanac):WinIsland 的中文日历插件。

  • 小岛常驻:📅 10月20日 周二,只放日期,绝不溢出
  • 悬停展开:左边是当月迷你月历(今天高亮、法定假日红、调休上班青、整段假期铺底色),右上「下一个节日 元旦 · 1月1日 · 还有 N 天」,右下按紧迫度显示最近一件事(自有提醒 / 订阅日程 / 当前节气)
  • 点开月历:格内直接写当天条目(蓝=自己的提醒、紫=订阅日程),右侧提醒清单,可新建 / 编辑 / 删除
  • 提醒:单次 / 每天 / 每周(多选星期)/ 每月(短月自动落月末)/ 每年;提前 5 分~1 天;到点用岛体临时消息弹出
  • 不会静默漏提醒:60 秒心跳写入 state.json,宿主重启或系统唤醒后补扫缺席时段,把错过的合并成一条「错过 N 条提醒」;另有稍后 10 分 / 1 小时、完成(单次)或跳过本次(重复)
  • 日程订阅:在设置页贴一个 ICS 链接即可只读显示 Outlook / Google / 腾讯日历,不弹通知、不回写

测试环境

  • WinIsland 版本:1.1.3(插件 API 2.4.0,宿主 WinIsland.Core.dll 2.4.0)
  • Windows 版本:Windows 11 25H2(Dev 26220.9223)
  • 是否需要管理员权限:不需要

权限与数据

访问网络(仅两处,都是只读 GET)

  1. 放假 / 调休数据:https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/<年份>.json,失败回退 raw.githubusercontent.com。启动时检查一次、之后每 6 小时一次,缓存超过 24 小时才真正请求。
  2. 用户自己填写的 ICS 订阅地址;默认 feeds.json 为空,此时完全不发起任何请求。

读写文件:只写 %LocalAppData%\WinIsland\island-almanac\ 下插件自己的数据

reminders.json        提醒
feeds.json            订阅地址
schedule-cache.json   订阅展开后的日程缓存
holidays-cache.json   节假日缓存
state.json            心跳(用于补提)

不写注册表、不申请管理员权限、不上传任何数据。节假日更新只写 holidays-cache.json,与 reminders.json 完全隔离。

已自查

  • 包内只有 plugin.json / IslandAlmanac.dll / IslandAlmanac.deps.json / IslandAlmanac.pri / README.md,未携带 WinIsland.Core.dll、WinUI、WebView2、Microsoft.WindowsAppRuntime*、*.pdb
  • 用「把 .lwp 丢进 plugins\ 再启动宿主」的真实路径装过一遍:宿主自动解包、加载成功、日志 0 ERROR
  • 清空整个数据目录模拟首次安装:先用内置 2025–2026 假日数据兜底,随后自动联网更新 72 天,提醒数据未被改动
  • 65 项核心逻辑自测通过(农历、节气、假期块、重复规则、ICS 解析)

源码

https://github.com/royluobox/island-almanac

数据来源

  • 法定节假日 / 调休:NateScarlet/holiday-cn(MIT,据国务院办公厅公告生成)
  • 24 节气:离线日期表 1901–2100,由 lunar_python(寿星天文历算法)生成,已与日本国立天文台 2026/2027 历要项核对
  • 农历:.NET 内置 System.Globalization.ChineseLunisolarCalendar

@luolangaga
luolangaga merged commit c8a2cbc into luolangaga:main Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants