ReliefTodo

ReliefTodo 是 ReliefOS 的原生 C++17 / FLTK 离线任务管理器。启动命令为 relieftodo [list.rtodo]。使用与 ReliefWord、ReliefExcel 相同的 FLTK 默认 gtk+ 主题和中文字体,顶部为文件菜单与功能区,下面为筛选、任务表、任务详情三栏。

任务与操作

  • 任务包含标题、备注、项目、标签、四级优先级、截止日期和完成状态。

  • 新建、复制、删除、完成、恢复、手工移动;Ctrl / Shift 多选,功能区支持批量操作。

  • 全部、待办、今天、即将到期、已逾期、已完成筛选,可叠加项目和文字搜索。 “即将到期”包括所有晚于今天的未完成任务。搜索覆盖标题、备注、项目和标签; 中文按原文匹配,ASCII 字母不区分大小写。

  • 按手工顺序、优先级、截止日期、最近更新、标题排序;统计显示总数、完成、逾期和优先级。

  • 详情栏编辑当前任务;点击“应用修改”或按 Ctrl+Enter 提交。 切换任务或执行操作时会先提交有效修改,无效日期或空标题会保留输入并提示。

  • 撤销与重做覆盖任务修改、排序、批量操作和清单重命名。最多保存 40 份历史快照, 历史占用按 64 MiB 预算裁减,单份快照保留。关闭前询问未保存修改。

  • 首次启动显示示例清单;可从文件菜单新建空白清单或重新载入示例。

文件与快捷键

.rtodo 是可编辑的原生文档,包含完整任务字段。CSV(UTF-8 BOM)和 Markdown 导出全部任务,不受当前筛选影响。CSV 正确转义引号、换行,并保护以公式字符开头的内容。 导出文件不能覆盖当前原生文档,检查包括 .、重复斜线等路径别名,以及同一文件的硬链接。 对 inode 可能由路径生成的文件系统还会核对完整内容,保守拒绝覆盖内容相同的清单副本。

  • 快捷键:Ctrl+N / Ctrl+O; 操作:新建清单 / 打开

  • 快捷键:Ctrl+S / Ctrl+Shift+S; 操作:保存 / 另存为

  • 快捷键:Ctrl+Insert; 操作:新建任务

  • 快捷键:Ctrl+Enter; 操作:应用详情修改

  • 快捷键:Ctrl+F; 操作:搜索

  • 快捷键:Ctrl+Z / Ctrl+Y; 操作:撤销 / 重做(文本输入控件先处理自己的编辑快捷键)

  • 快捷键:↑ / ↓(任务表中); 操作:选择任务

  • 快捷键:空格 / Delete(任务表中); 操作:切换完成状态 / 删除

  • 快捷键:F1; 操作:帮助

存储与边界

原生格式版本为 1,使用 RTDO 文件头、长度、CRC32 和有界字段。 最多 10,000 项任务、16 MiB 文档;标题 512 字节、备注 64 KiB、项目 128 字节、 标签 512 字节、清单标题 256 字节。所有文字校验 UTF-8;日期是 1900–9999 年 公历 YYYY-MM-DD,可留空。日期筛选按系统本地日期计算。

文件读取、目标检查与原子保存由独立工作进程完成。GUI 以非阻塞管道分批读取结果; 写入使用同目录私有临时文件,处理短读写,同步文件后原子替换并同步目录。 保存前用内容摘要与文件状态检测外部修改冲突;失败时保留当前文档。 不支持符号链接文件、符号链接父目录或含 .. 的路径。

保存时在目标目录使用稳定的 .relieftodo-save.lock 普通文件,权限为 0600、所有者 为当前用户;独占锁使多个 ReliefTodo 实例的检查和替换操作互斥,繁忙时提示稍后重试。 锁文件不包含任务内容,保存结束后自动释放锁,保留文件以免产生不同锁 inode 的竞态。 .relieftodo-save.lock (包括仅大小写不同的写法)为保留文件名,不能作为保存或导出目标。 这属于应用间协作锁;不遵守锁协议的其他程序仍可能在最后替换的瞬间并发改写目标。 ReliefNT 当前在 FAT32 上可能把空普通文件识别为相同的锁对象,因此覆盖既有空文件时 可能保守地提示锁冲突;选择尚不存在的新文件名即可绕开。此限制不会覆盖原数据, 本次 QEMU 运行验收使用系统根文件系统,未完成 FAT32/exFAT 的运行验收。

本版不包含云同步、邮件通知、后台闹钟、周期任务、CSV 导入或跨设备协作。 没有自动保存或崩溃恢复;请主动保存清单。