跳转到内容
GitHub

新版目录与数据迁移

TRNovel 统一发布 trnovel、trn,默认提供听书界面。Talechime 独立安装;basic、捆绑 worker 和加速包停止更新。0.18.2 起 Intel Mac 与 x86_64 / ARM64 musl Linux 纳入统一阅读器发行。TRNovel 0.18.3 起迁移改为首次运行询问 + 显式命令:检测到旧阅读数据时应用内弹窗展示规模并询问,同意后在进度界面内完成;也可随时运行 trn migrate。--help、--version 与其他非 TUI 子命令不执行迁移。

应用路径内容
TRNovel~/.trnovel/config.toml外观、阅读偏好、浏览器许可、worker 路径
TRNovel~/.trnovel/keybindings.toml、toc_rules.json快捷键和目录规则
TRNovel~/.trnovel/data/书源、历史、登录态、浏览器 profile、local/network 阅读记录
TRNovel~/.trnovel/cache/可重建字体等资源
Talechime~/.talechime/config.json听书配置
Talechime~/.talechime/checkpoints/听书恢复点
Talechime~/.talechime/resources/模型、音色、编码缓存、校准资源

trnovel clear 仅删除 data/history.json、data/local/、data/network/ 和 cache/,保留其他文件,也不触碰 Talechime 数据。clear 不触发迁移。

迁移入口有两个:

  • 首次运行询问:正常启动检测到 ~/.novel 且未完成迁移时,应用在启动界面上弹出询问,展示条目数、文件数与总大小。可用左右键切换选项,按 Enter 执行高亮项,也可按 Y 开始、N 或 Esc 跳过;鼠标可直接点击按钮。选择「开始迁移」后同一界面显示进度(总进度条、当前条目、已拷贝/保留/跳过计数),期间可按 Esc 取消;完成后按 Enter 进入应用,历史与书源此时才加载。选择「跳过」后写入拒绝标记,后续启动不再询问。
  • 显式命令 trn migrate:独立迁移界面,展示同样内容并要求确认;该命令无视拒绝标记,随时可运行。trn migrate --yes 跳过界面直接迁移并在终端打印摘要(脚本或无终端环境),退出码反映是否成功完成。

迁移持有文件锁,各文件在目标目录暂存后原子发布;只导入普通文件,不跟随符号链接。 新目录已有同名文件时保留新文件并计入「保留已有」计数。已有 config.toml 整体优先,不合并旧偏好。

旧 ~/.novel/ 文件新 ~/.trnovel/ 路径
book_sources.json、history.jsondata/
source-state/、browser-profile/、local/、network/data/ 下同名目录
keybindings.toml、toc_rules.json根目录
gen-fontmap/cache/gen-fontmap/
appearance.json、reader-display.json、browser_assist.on转换为 config.toml 对应分节

旧 themeSlug、showHeader、followTts、showTitle、pageOverlap、paragraphSpacing 转换为 snake_case 字段,page_overlap 限制为 0–10。普通 browser_assist.on 标记转换为 browser.always_allow = true。缺少的偏好使用默认值,不把旧 JSON 直接改扩展名。

成功后根目录保存 .legacy-migration-v1,后续启动不再重复导入。 取消或中断不发布完成标记:已拷贝文件保留并视为「已有新文件」,下次迁移(启动询问或 trn migrate)自动续迁。 条目级失败(损坏 JSON、不可读取等)在迁移汇总中列出且不发布完成标记,保留源文件,之后可重试;任何迁移结果都不阻止应用进入可用状态。 clear 另保存 .legacy-reading-cleared-v1:即使迁移只部分成功,已清除的旧历史、 local/network 和字体缓存也不会在之后的迁移中重新导入;失败的偏好、书源和登录数据仍可重试。 .legacy-migration-v1、.legacy-reading-cleared-v1、.legacy-migration-declined-v1 三个标记都不会被 clear 删除。

遇到冲突或迁移错误时,先退出两边程序并备份旧目录。下面的映射也可用于手工检查;已有新数据时先人工合并,避免覆盖。

  1. 把 ~/.novel/ 内的 book_sources.json、history.json、source-state/、browser-profile/、local/、network/ 复制到 ~/.trnovel/data/。
  2. 把旧 keybindings.toml、toc_rules.json 复制到 ~/.trnovel/。字体 gen-fontmap/ 可复制到 ~/.trnovel/cache/,也可重新生成。
  3. 旧外观与阅读 JSON 需手工转换为下方 TOML;将 themeSlug、followTts、showTitle、pageOverlap、paragraphSpacing 分别改为对应 snake_case 字段。旧 browser_assist.on 若存在且仍希望总是允许,设置 always_allow = true。不要把旧 JSON 直接改扩展名。
  4. Talechime 0.4.1 使用默认路径启动时,自动转换 ~/.novel/tts_config.json 到 ~/.talechime/config.json;已有新配置整体保留。可用旧模型设置经校验保留;退休或缺失后端改为当前构建选择的默认模型、音色和设备,保留音量、语速、自动续章及未知字段并提示。检查点从 ~/.novel/tts/checkpoints/ 导入,保持原文摘要与字节坐标;损坏内容保留源文件并提示。
  5. 把旧 ~/.novel-tts/ 内容整体复制到 ~/.talechime/resources/,保留 moss/、qwen/、voxcpm/、alignment/ 等所有相对结构,避免产生 resources/.novel-tts/ 这一额外层。已完整下载的资源会校验复用。

Talechime 的检查点和模型资源在实际准备或音色操作时迁移,协议 Hello 不搬运大模型。 自动迁移同样保留源、持锁、无覆盖发布并记录标记。显式指定 --config、--model-dir 或 --checkpoint-dir 时跳过整套自动迁移,便于隔离运行和自行管理目录。

[appearance]
theme_slug = "tokyo-night"
background = "terminal"
show_header = true

[reader]
follow_tts = true
show_title = true
page_overlap = 2
paragraph_spacing = false

[browser]
always_allow = false

[tts]
# 不填则从 PATH 查找 talechime;Windows 建议使用单引号避免反斜杠转义。
# program = 'D:\tools\talechime.exe'

缺少分节或字段使用默认值。保存一个分节会保留其余分节,使用文件锁与原子替换;损坏的 TOML 会报错,不被静默覆盖。page_overlap 限制为 0–10。

两个应用通过 JSON Lines v7 握手,各自应用版本无需相同;TRNovel 0.18.0 听书需 Talechime 0.4.0 或兼容的 v7 worker,旧 v5 worker 不兼容。缺少 Talechime 仅影响听书,普通阅读仍可使用。旧文件确认无用后由用户自行删除。