9 Commits
34 changed files with 7264 additions and 133 deletions

No files matched your search

+41 -1
View File
@@ -1,6 +1,46 @@
# 更新日志 / Changelog # 更新日志 / Changelog
本项目按 `v主版本.次版本.修订版本` 标记发布。下列内容以对应 Git tag 和已提交功能为准。 本项目按 `v主版本.次版本.修订版本` 标记应用版本;按需创建 Git tag。下列内容以对应提交和已发布功能为准。
## v1.18.1 — 2026-10-02
- 目标与待办新增编辑入口:可修改待办标题、截止日期、优先级及关联目标,也可修改目标标题、备注、目标日期和桌面倒计时选项。
- 已完成的目标与待办同样支持编辑;保留记录 ID、创建时间、完成状态及现有关联,沿用记录级云同步。
- 修正验证脚本对固定“今日”日期的假设,并覆盖编辑表单和数据写入。
## v1.18.0 — 2026-09-28
- 日历按语言地区和浏览器区域推断国家或地区,并提供独立选择;选择仅保存在当前设备,可随时切回自动模式。
- 在日、月视图展示公共假期、补休、补班与部分常见纪念日,支持 2024–2030 年资料;附来源和官方公告提醒,网络故障时显示重试,不把加载失败当作无假期。
- 假期数据使用 OpenWorkdays(CC BY 4.0),服务端按国家与年份缓存;线上版本及源码同步至 Gitea,并创建 `v1.18.0` Git tag。
## v1.17.0 — 2026-09-28
- 界面扩展至联合国六种工作语文,并加入日语和繁体中文(香港、澳门、台湾),覆盖设置、记忆、目标待办、日历、通知、数据库管理、终端及每日提示。
- 自动语言识别按浏览器首选语言与地区代码选择;旧版简体中文偏好迁移到 `zh-CN`。新增阿拉伯语从右到左布局与各语种的日期、数字格式。
- 按本次要求更新线上站点,不创建 Git tag。
## v1.16.0 — 2026-09-28
- 系统设置改为分类导航:首页、个性化、通知、语言、数据与备份、关于,桌面端使用侧栏与独立内容区,移动端使用横向分类栏。
- 原有主题、壁纸、图标、小部件、通知、语言和备份控制保留在对应分类;切换语言或修改设置时保持当前分类。
## v1.15.0 — 2026-09-28
- 系统设置新增浏览器通知:今日未写记忆、到期未完成待办、进行中目标倒计时,可分别开启并选择本地通知时间。
- 通知权限由用户主动申请,提供权限状态和测试通知;每天每类提醒最多发送一次,点击通知打开对应 App。
- 通知设置仅保存在当前设备;网页关闭后浏览器无法保证定时提醒,界面明确说明这一限制。
## v1.14.2 — 2026-09-28
- 修复数据库管理器首次设置密码时 PBKDF2 迭代次数超过托管环境上限,导致服务器返回错误页面的问题。
- 接口返回非 JSON 内容时显示可读的中英文错误提示,不再暴露原始解析异常。
## v1.14.1 — 2026-09-28
- 数据库管理器改为每个 ChatGPT 账号首次进入时设置自己的密码,停用旧的共用口令。
- 密码以独立盐值和 PBKDF2 摘要保存;可在管理页验证旧密码后修改,修改时注销旧会话。
- 增加首次设置、不同账号密码隔离、旧会话失效和修改密码的验证。
## v1.14.0 — 2026-09-28 ## v1.14.0 — 2026-09-28
+11 -9
View File
@@ -2,7 +2,7 @@
以桌面操作系统为交互方式的个人记录网站。用 App 记录日常、管理目标与待办,并沿时间线回看已经留下的内容。 以桌面操作系统为交互方式的个人记录网站。用 App 记录日常、管理目标与待办,并沿时间线回看已经留下的内容。
在线站点:[Life OS](https://life-os-personal-desktop.biss0.chatgpt.site) · 当前应用版本:**v1.14.0** · [更新日志](CHANGELOG.md) 在线站点:[Life OS](https://life-os-personal-desktop.biss0.chatgpt.site) · 当前应用版本:**v1.18.1** · [更新日志](CHANGELOG.md)
## 功能 ## 功能
@@ -11,16 +11,18 @@
| 今日 | 为选定日期写记忆,记录天气、1–5 能量、标题、标签、地点和关联任务;每日电影是写作提示,不会替代记忆标题。 | | 今日 | 为选定日期写记忆,记录天气、1–5 能量、标题、标签、地点和关联任务;每日电影是写作提示,不会替代记忆标题。 |
| 时间线 | 按日期浏览记忆,使用关键词或标签筛选,编辑、删除和收藏。 | | 时间线 | 按日期浏览记忆,使用关键词或标签筛选,编辑、删除和收藏。 |
| 博物馆 | 回看收藏的记忆。 | | 博物馆 | 回看收藏的记忆。 |
| 目标与待办 | 创建目标和任务,设置截止日期、优先级和完成状态;目标倒计时可选择显示在桌面。 | | 目标与待办 | 创建和编辑目标、待办,调整日期、优先级、关联目标与完成状态;目标倒计时可选择显示在桌面。 |
| 日历 | 在月视图与日视图中查看记忆、任务和目标节点,并为选定日期新增记忆。 | | 日历 | 在月视图与日视图中查看记忆、任务、目标、节日和公共假期;按界面语言地区自动选择日历国家,也可手动切换,为选定日期新增记忆。 |
| 数据库管理器 | 在再次登录并确认风险后,按表查看、创建、编辑和删除当前账号的云端记录。 | | 数据库管理器 | 在再次登录并确认风险后,按表查看、创建、编辑和删除当前账号的云端记录。 |
| 洞察 | 周报和月报展示记录频率、完成任务数、常见天气、能量记录及收藏或标记高光的记忆;仅依据已保存的数据统计。 | | 洞察 | 周报和月报展示记录频率、完成任务数、常见天气、能量记录及收藏或标记高光的记忆;仅依据已保存的数据统计。 |
| 档案 | 查看记录概况并维护个人资料。 | | 档案 | 查看记录概况并维护个人资料。 |
| 浏览器 | 在桌面窗口里打开网页或使用 Google 搜索,支持后退、前进、刷新和外部打开。默认打开 Google;第三方网站可能禁止 iframe 嵌入。 | | 浏览器 | 在桌面窗口里打开网页或使用 Google 搜索,支持后退、前进、刷新和外部打开。默认打开 Google;第三方网站可能禁止 iframe 嵌入。 |
| 终端 | 逐项创建记忆、目标与待办;选择并确认删除记录,管理完成状态,查询数据和打开其他 App。 | | 终端 | 逐项创建记忆、目标与待办;选择并确认删除记录,管理完成状态,查询数据和打开其他 App。 |
| 系统设置 | 选择语言、主题、壁纸、桌面快捷方式和开机 App,管理备份。 | | 系统设置 | 按首页、个性化、通知、语言、数据与备份、关于分类浏览;选择主题、壁纸、桌面快捷方式和开机 App,管理备份与通知。 |
桌面端支持单击选择、双击打开 App、多窗口、任务栏恢复、图标拖动排列和窗口布局记忆。拖动图标或小部件时会显示吸附网格;目标倒计时、时钟、今日概览与快捷操作小部件可移动、调整大小和分别开关。移动端以横排图标和全屏 App 为主,小部件在桌面下方排列。可选必应每日图片、内置背景或自定义 HTTPS 图片链接。中文与英文可自动跟随浏览器语言,也可手动选择。 通知权限需手动授予,开关和时间仅保存在当前浏览器。网页打开时检查提醒;关闭网站后无法保证定时送达,如需关闭网页后的可靠提醒,需要另行接入推送服务。
桌面端支持单击选择、双击打开 App、多窗口、任务栏恢复、图标拖动排列和窗口布局记忆。拖动图标或小部件时会显示吸附网格;目标倒计时、时钟、今日概览与快捷操作小部件可移动、调整大小和分别开关。移动端以横排图标和全屏 App 为主,小部件在桌面下方排列。可选必应每日图片、内置背景或自定义 HTTPS 图片链接。界面支持英语、简体中文、繁体中文(香港、澳门、台湾)、阿拉伯语、法语、俄语、西班牙语和日语;可按浏览器首选语言自动选择,也可手动切换。阿拉伯语使用从右到左的页面方向。
快捷键:`Ctrl / ⌘ + K` 打开启动器,`Ctrl / ⌘ + F` 搜索记忆,`Ctrl / ⌘ + S` 保存今日记忆;`Alt + 1–9` 打开原有 App,`Alt + 0` 打开终端。终端内 ↑↓ 浏览命令历史,Tab 补全命令,记忆正文输入时 `Ctrl / ⌘ + Enter` 保存。站点包含 PWA 清单和 Service Worker,离线时可打开已缓存的应用外壳;云同步、外部网页与必应图片仍需要联网。 快捷键:`Ctrl / ⌘ + K` 打开启动器,`Ctrl / ⌘ + F` 搜索记忆,`Ctrl / ⌘ + S` 保存今日记忆;`Alt + 1–9` 打开原有 App,`Alt + 0` 打开终端。终端内 ↑↓ 浏览命令历史,Tab 补全命令,记忆正文输入时 `Ctrl / ⌘ + Enter` 保存。站点包含 PWA 清单和 Service Worker,离线时可打开已缓存的应用外壳;云同步、外部网页与必应图片仍需要联网。
@@ -36,7 +38,7 @@
主要本地数据键:`lifeos_memories`、`lifeos_museum`、`lifeos_profile`、`lifeos_settings`、`lifeos_system`。云端表结构见 `drizzle/0001_lifeos_records.sql`:记忆、标签、目标、待办、收藏各自按记录保存,资料与设置保留按用户存储的 JSON。旧版 `lifeos_states` 作为只读迁移来源保留;用户首次访问新版本时自动回填新表,旧表不会被清空。单条记录的修改使用版本号校验;冲突时会保存本地副本并要求选择。旧版浏览器标签页需刷新,整份状态写入接口已停用,避免覆盖新数据。应用的备份 `schemaVersion: 2` 与数据库迁移编号是两回事。建议定期导出备份。 主要本地数据键:`lifeos_memories`、`lifeos_museum`、`lifeos_profile`、`lifeos_settings`、`lifeos_system`。云端表结构见 `drizzle/0001_lifeos_records.sql`:记忆、标签、目标、待办、收藏各自按记录保存,资料与设置保留按用户存储的 JSON。旧版 `lifeos_states` 作为只读迁移来源保留;用户首次访问新版本时自动回填新表,旧表不会被清空。单条记录的修改使用版本号校验;冲突时会保存本地副本并要求选择。旧版浏览器标签页需刷新,整份状态写入接口已停用,避免覆盖新数据。应用的备份 `schemaVersion: 2` 与数据库迁移编号是两回事。建议定期导出备份。
数据库管理器的服务器固定为本站 D1,用户名固定为 `lifeos-admin`,密码保存在托管环境的 `LIFEOS_DB_ADMIN_PASSWORD` 密钥中,不写进仓库或浏览器。它在原有账号登录之上再次验证密码;会话仅在当前页面内存中保留 20 分钟,退出后立即失效,连续五次输错锁定 15 分钟。管理 API 只允许当前账号在预设表内按记录操作,没有任意 SQL 执行入口。更改云端记录后应刷新桌面,使其他 App 重新加载数据。派生的标签索引和旧版状态备份不能在管理器中单独修改。 数据库管理器的服务器固定为本站 D1,用户名固定为 `lifeos-admin`。每个 ChatGPT 账号首次打开管理器时设置自己的密码(至少 12 个字符),旧版共用口令不再有效。密码以独立盐值与 PBKDF2 摘要存入 `lifeos_admin_credentials`,不保存明文,也不写进仓库或浏览器;管理页可验证当前密码后更换。它在原有账号登录之上再次验证密码;会话仅在当前页面内存中保留 20 分钟,退出或修改密码后旧会话立即失效,连续五次输错锁定 15 分钟。管理 API 只允许当前账号在预设表内按记录操作,没有任意 SQL 执行入口。更改云端记录后应刷新桌面,使其他 App 重新加载数据。派生的标签索引和旧版状态备份不能在管理器中单独修改。
## 构建与验证 ## 构建与验证
@@ -48,7 +50,7 @@ npm run validate
npm run test:cloud npm run test:cloud
``` ```
`build` 将页面及 App 脚本打包成 `dist/server/` 中的 Cloudflare Worker 产物;`validate` 检查产物、双语键与主要交互;`test:cloud` 使用内存 SQLite 检查旧数据回填、版本冲突与租户隔离。生产托管配置在 `.openai/hosting.json`,含 Sites 项目 ID 和 D1 逻辑绑定。直接在其他环境部署时,需要提供兼容的 Worker 环境与 `DB` 绑定;云端 API 还依赖托管层提供的 `oai-authenticated-user-id` 请求头。 `build` 将页面及 App 脚本打包成 `dist/server/` 中的 Cloudflare Worker 产物;`validate` 检查产物、十种语言的词条、占位符与主要交互;`test:cloud` 使用内存 SQLite 检查旧数据回填、版本冲突与租户隔离。生产托管配置在 `.openai/hosting.json`,含 Sites 项目 ID 和 D1 逻辑绑定。直接在其他环境部署时,需要提供兼容的 Worker 环境与 `DB` 绑定;云端 API 还依赖托管层提供的 `oai-authenticated-user-id` 请求头。
## 项目结构 ## 项目结构
@@ -60,11 +62,11 @@ public/browser-app.js iframe 浏览器
public/terminal-app.js 命令解析与终端界面 public/terminal-app.js 命令解析与终端界面
public/db-admin.js 数据库管理器界面 public/db-admin.js 数据库管理器界面
public/data-actions.js 图形界面与终端共用的数据写入 public/data-actions.js 图形界面与终端共用的数据写入
public/i18n-renderers.js 记忆、洞察、设置等双语界面 public/i18n-renderers.js 记忆、洞察、设置等多语言界面
public/desktop-personalization.js 图标、窗口与壁纸偏好 public/desktop-personalization.js 图标、窗口与壁纸偏好
public/desktop-widgets.js 吸附网格与桌面小部件 public/desktop-widgets.js 吸附网格与桌面小部件
public/addons.js 导入导出、云同步与辅助操作 public/addons.js 导入导出、云同步与辅助操作
public/locales/ 中文、英文文案 public/locales/ 十种语言的界面文案
public/service-worker.js PWA 缓存 public/service-worker.js PWA 缓存
worker/index.js Worker 路由与必应图片代理 worker/index.js Worker 路由与必应图片代理
worker/cloud-state.js 云端记录迁移与同步 API worker/cloud-state.js 云端记录迁移与同步 API
@@ -0,0 +1,7 @@
CREATE TABLE lifeos_admin_credentials (
user_id TEXT PRIMARY KEY,
salt TEXT NOT NULL,
password_hash TEXT NOT NULL,
iterations INTEGER NOT NULL,
updated_at TEXT NOT NULL
);
Loaded 3 of 34 files, more files were not shown because too many files have changed in this diff. Show more