把一生画成一张表的浏览器扩展(Chrome / Edge,Manifest V3):上半部分是 80 年的年格,下半部分是今年的逐日格。灰色的是已经走过的日子,空白的是还剩下的生命。
- 人生日历:5 行 × 16 列年格(出生年起 80 年)+ 当年 12 个月逐日格;年格宽 = 2×日格宽,上下严格等宽;过去灰、未来白、当年/当月/当天红字;灰色每天自动推进
- 主题栏快捷切换:页面顶部 pill 按钮组,显示全部主题(预制 + 自定义),一键切换
- 年份切换:点击任意年格,下方月日网格切换展示该年(过去年全灰、未来年全白,闰年 2 月自动 29 格)
- 年格信息:年龄小字(可关)、今年格年度进度条、含里程碑年份右上角标记点
- 人生进度条:80 段对应 80 个年格,今年那段按天部分填充
- 五套预制主题(背景为公有领域名画,配色取自画中):
主题 画作 默认 白纸灰格(无图) 死亡日记 梵高《星月夜》 深水潜流 葛饰北斋《神奈川冲浪里》 希望田野 梵高《麦田与柏树》 青春之歌 莫奈《撑阳伞的女人》 - 自定义主题:预制主题只读,可另存为副本后自由修改——配色、格子图形(灯泡/浪花/禾苗/音符)、上传背景图、顶部遮罩、不透明度
- 毛玻璃滑杆:全主题生效,从实底到全透明磨砂(macOS 风格 backdrop-filter)
- 里程碑标记:生日/纪念日/目标日,蛋糕/戒指/旗帜/星星/爱心图标,支持每年重复或一次性日期
- 每日一句 + 历史上的今天:本地预置,离线可用,可独立开关
- 多语言:简中 / 繁中 / 日 / 韩 / 英,默认跟随系统;主页右上角语言按钮一键切换
- 跨天自动刷新:定时 + 切回标签页双重检测;时区可指定,跨时区旅行不错乱
chrome://extensions(Edge 为edge://extensions)→ 开启「开发者模式」- 「加载已解包的扩展程序」→ 选择本目录
- 打开新标签页,首次使用选择出生日期即可
- 零依赖零构建:原生 HTML/CSS/JS(ES Modules),Manifest V3
- 主题系统数据驱动:
src/lib/theme-presets.js(数据)→src/lib/theme-css.js(生成 CSS)→ 动态注入 - 存储分层:配置走
chrome.storage.sync(随账号同步);自定义背景图压缩后存chrome.storage.local(仅本机,sync 的 8KB 单项限额放不下图片) - 无后端、无网络请求、无跟踪
# 语法检查 + 单元测试 + 打包文件完整性
scripts/verify.sh
# 额外截取关键界面截图(需 Chrome)
scripts/verify.sh --screenshot所有预制主题均从公有领域画作中提取配色。macOS 用户可直接使用仓库内的 Swift 脚本:
xcrun swift tools/extract-colors.swift assets/wave.jpg非 macOS 环境可用以下替代方案:
- Python + Pillow + sklearn:
tools/extract-colors.py(k-means 聚类取主色 + 明暗筛选) - ImageMagick CLI:
convert assets/wave.jpg -resize 200x200 -colors 8 -unique-colors txt:手动挑选 - 在线工具:Adobe Color / Coolors 上传画作后取色,再回填
src/lib/theme-presets.js的colors字段
无论用哪种方式,取色后都建议用 scripts/verify.sh --screenshot 验证实际渲染效果。
四个主题背景均为公有领域(Public Domain)作品,经 Wikimedia Commons 获取并已压缩打包至 assets/。
├── manifest.json # MV3 清单(新标签页覆盖 + 设置页)
├── newtab.html # 主界面入口
├── options.html # 设置页入口
├── privacy.html # 隐私政策(CWS 提交用)
├── src/ # 源码(JS/CSS)
│ ├── newtab.* # 主界面
│ ├── options.* # 设置页
│ ├── settings-panel.* # 设置面板组件(弹窗与设置页共用)
│ ├── theme-editor.js # 主题编辑器
│ └── lib/ # 常量/日期/存储/主题/图形/图标/i18n/名言/历史
├── assets/ # 四幅公有领域画作(已压缩)
├── icons/ # 扩展图标
├── docs/ # 设计契约 + 文档截图
├── store/ # Chrome Web Store 商店截图(非运行时资源)
├── tools/ # 取色脚本 / 图标源
└── scripts/ # 打包脚本(scripts/package.sh)
