Skip to content

v0.1.18

Latest

Choose a tag to compare

@github-actions github-actions released this 01 Jul 02:14

[v0.1.18] - 2026-07-01

Brief / 简要说明

  • 中文:本版本完成 Denova 品牌与分发命名切换,新增新用户引导、消息中心、PWA/移动端主屏体验、可内嵌前端的单文件自托管能力,并大幅补齐移动端写作与游戏模式的输入、弹窗、文件操作、故事记忆和分支导航体验。图像方案、书籍封面生成、互动图像回写、Plan Mode 展示、章节正文隐藏输出和资源保存冲突保护也更稳定。兼容性提示:Release 包不再提供 nova / nova.exe / nova-updater 别名,新安装请直接运行 denova / denova.exe
  • English: This release completes the Denova branding and distribution rename, adds onboarding, a message center, PWA/mobile home-screen support, and a self-hosting path where the backend can embed the web app. It also improves mobile Writing and Game Mode input, dialogs, file actions, story memory, and branch navigation. Image presets, cover generation, interactive image writes, Plan Mode rendering, hidden chapter-body streaming, and resource conflict protection are more reliable. Compatibility note: release packages no longer include nova, nova.exe, or nova-updater aliases; new installs should run denova / denova.exe directly.

Added

  • 游戏模式:剧情页新增宽屏轮次导航,左侧横杠可快速定位每个对话轮次,悬停/聚焦时展示用户输入与 Agent 剧情正文预览;窄屏或舞台空间不足时自动隐藏。
  • WebUI:新增新用户引导,按“配置语言模型 API Key → 新建书籍 → 创作 Agent 预填第一章开头 → 一级模块导览”串联主流程;支持一键跳过、设置页重新打开,状态仅保存在浏览器本地,不写入用户或工作区配置。
  • WebUI:新增全局消息中心,顶部栏铃铛入口可查看 Denova 更新日志;打开某条消息会自动标记为已读,也可一键全部已读。已读状态保存到用户级 Denova 数据目录,不写入作品 workspace。
  • 游戏模式:行动选项默认会在故事输出结束后后台自动生成,用户点击输入框右侧“选择”后再展开;输入框左侧菜单保留“自动生成 / 手动生成”切换。
  • WebUI:新增 PWA manifest、应用图标(apple-touch-icon / 192 / 512 / maskable)与移动端 viewport meta(viewport-fit=covertheme-colorapple-mobile-web-app-capable 等)。自托管后可在手机主屏“添加到桌面”以独立应用形态打开,并正确延伸到刘海安全区;图标由 pnpm generate-icons(sharp)从 favicon.svg 复现式生成。
  • 后端:静态资源服务对未知前端路径做 SPA 回退(返回 index.html)。手机刷新任意页面或深链打开不再返回 Hertz 默认 404;/api/* 路由不受影响。
  • 后端:Denova 二进制现在可内嵌前端(构建标签 embedweb),裸二进制无需磁盘 web/ 目录即可提供前端服务,适合 go install / 单文件分发 / 最小化自托管。默认构建行为不变;release 仍附带 web/ 作为磁盘快速路径与 updater 兼容,内嵌为独立运行的兜底。
  • 文档:README(中/英)新增「自托管与远程访问(手机访问)」章节,覆盖构建前端、开启远程访问、手机使用与 HTTPS 反向代理。

Fixed

  • 文档/更新:修正 README 徽章、Release 下载、源码克隆、Star History 与应用内更新检查使用的 GitHub 仓库标识,改为 alfredxw/denova,避免用户跳转或检查到旧 Release 页。
  • 游戏模式:互动图像生成完成后允许把展示事件写回当前分支父链上的继承回合,避免从旧分支接出的剧情线在生成祖先回合图像时误报“展示事件回合不属于当前分支”;图像生成上下文也改用当前快照分支读取故事记忆。
  • Agent:内置 novel-lite / novel-standard / novel-heavy 写作 Skill 明确要求按场景使用 read_filewrite_fileedit_filetask 等工具,并在写入后检查工具结果与读回关键片段,避免工具失败时误向用户宣称文件已修改。
  • 对话渲染:游戏模式改为用后端落盘增量事件原地合并新回合,并把完整快照刷新降级为静默校准;同时移除通用对话和游戏剧情页在 done 事件上的临时“完成 / Done”活动行,并把流式正文改为 streaming_target_content 隐藏占位、下一帧再提升为可见 content 的两阶段提交,避免输出完成或换行瞬间因消息列表高度变化、live 消息切换到持久化快照而抖动或重新入场。本次为内部渲染行为优化,无用户数据迁移。
  • WebUI:桌面布局根与运行时错误边界由 h-screen 改为 h-dvh,与移动 shell 一致,避免 iOS Safari 地址栏导致的底部跳动。
  • WebUI:远程访问登录框用户名/密码输入框使用 16px 字号,避免 iOS Safari 聚焦时自动缩放页面(该登录浮层渲染在 app shell 之外,原先不享受 16px 字号覆盖规则)。
  • WebUI:章节版本对比的紧凑模式改用项目统一的 useIsMobile() 断点(767px),与移动 shell 及版本对比弹窗的 max-md 行为一致,消除 760–767px 区间的断点错位。
  • 移动端:聊天 Agent 与互动故事的浮动输入框现在会随软键盘上移,不再被键盘遮挡(此前在 iOS 上输入框会被键盘盖住)。新增 useKeyboardInset hook 基于 visualViewport 计算键盘高度,仅在输入聚焦时生效;桌面端与 Android(dvh 已自动收缩)不受影响。顺带为输入框加上 enterKeyHint="send" 等移动键盘提示。
  • 移动端:文件树每行的操作菜单(新建 / 重命名 / 复制 / 移动 / 删除 / 引用)按钮在触摸下常显(原先仅 hover 可见,手机上无法触达文件操作),并加大行与内联输入框的触摸区、补上 enterKeyHint
  • 移动端:标签页关闭按钮在触摸下常显、当前标签常显(原先仅 hover 可见,手机上无法关闭标签)。
  • 移动端:移动顶栏新增「命令」按钮,没有实体键盘的手机也能打开命令面板(原先仅 ⌘K / Ctrl+K)。
  • 移动端:写作编辑器阅读区在手机上改用更紧凑的横向留白(px-4,桌面仍为 px-10),避免窄屏正文被两侧大留白挤压。
  • 移动端:聊天消息的助手操作(重新生成 / 切换版本等)与消息元信息在触摸下常显(原先仅 hover 可见,手机上无法触达)。
  • 修复:命令面板(⌘K / Ctrl+K)打开即崩溃(Cannot read properties of undefined (reading 'subscribe'),触发前端错误边界白屏)。根因是 CommandDialog 未用 cmdk 的 <Command> 根包裹内容,导致 CommandInput/CommandList/CommandItem 拿不到 cmdk store;补上 <Command> 包裹后面板在桌面与移动端均可正常打开。
  • 移动端(共享原语):Dialog / AlertDialog 内容默认限制在视口高度内并可滚动(max-h-[calc(100dvh-2rem)] overflow-y-auto),长内容弹窗在手机上不再溢出屏幕;自带 max-h / overflow 的弹窗不受影响(tailwind-merge 优先消费者值)。
  • 移动端(共享原语):Popover 内容新增 max-w-[calc(100vw-1rem)],窄屏下不再溢出到屏幕外。
  • 移动端(互动模式):故事记忆(StoryMemory)记录列表在窄屏改用卡片渲染(原先的 table-fixed 列表在手机上列宽被挤压到几个字符、内容不可读,且 overflow-x-hidden 无法横向滚动);桌面端仍保持表格。复用 AdaptiveSurface 提供的 isMobile 与既有字段渲染逻辑。
  • 移动端(互动模式):剧情分支时间线(BranchTimeline)工作台视图在手机上新增「回到当前节点」按钮(桌面端用缩略导航 MiniMap 定位,移动端 MiniMap 隐藏,故补充此按钮以便手动平移后重新定位到当前剧情线);分支切换 pills 触摸区在移动端加大。该视图的图本身已可触摸拖拽平移、切换分支自动居中、选中节点后可创建分支,本次补齐移动端导航缺口。
  • 移动端:修复创作 Agent / 互动故事输入框在预填长 prompt(如「和创作 Agent 聊灵感」自动注入的启动 prompt)时 textarea 无限增高、composer 撑满大半屏挤压对话区的问题;移动端将 composer textarea 的最大行数限制为 5(桌面仍为 10),长内容在框内滚动而非顶高整个输入区。

Changed

  • 项目改名:应用名、Go module、命令目录、前端标题、PWA manifest、README、配置模板、内置 Agent 提示、npm 包名和 GitHub Release 产物统一从 Nova/nova 切换为 Denova/denova。新工作区与新配置默认使用 .denova / DENOVA_*;已有 .nova 工作区与 NOVA_* 环境变量继续兼容读取。GitHub Release 包不再附带 novanova.exenova-updater 别名,用户新下载后直接运行 denova / denova.exe
  • WebUI:Chat 输入框默认以双行展开显示,Plan Mode 不再占用独立按钮,改为放入输入动作菜单;开启 Plan Mode 时在输入区底部工具行显示轻量 Plan 状态提示,并保留 Shift+Tab 快捷切换。游戏模式输入框保持单行。
  • 移动端:Agent 面板从右侧抽屉改为底部常驻面板(与编辑器竖向分割),恢复桌面端「编辑器 + Agent 同屏可见」的核心操作逻辑。使用 react-resizable-panels 做竖向分割,可拖拽分隔条调节编辑器/Agent 比例。Agent 不再需要点导航打开;快捷创作按钮始终可达。桌面端不受影响。
  • 设置:新增 hide_novel_chapter_body_in_live_output 配置,开启后隐藏章节正文在 Agent 流中的输出,并保留目标路径和已生成字符数;默认关闭以保持原有实时输出行为。
  • Agent 调试:完整 LLM 输入日志默认关闭,即使 --dev-mode 启动也需要在开发模式设置页的「调试」分区手动开启;日志写入改为后台异步队列,provider_request_id 以独立关联事件追加到 log/llm-inputs.jsonl,避免模型请求热路径同步重写大文件。

Changed

  • 方案预设:图像方案升级为可配置注入位置的规则列表,支持分别注入图像 Agent system prompt 和最终图像请求 prompt;旧单段 prompt 会兼容迁移为图像请求规则。
  • WebUI:书籍管理里的“编辑信息”改为独立弹窗,扩大书名、作者、简介和封面生成区域,避免在书架卡片内编辑过于拥挤。
  • WebUI:书籍管理手机端书架改为以封面为主的紧凑自适应网格,iPhone 15 Pro 等窄屏宽度下书卡只展示封面和书名,减少纵向占用。
  • WebUI:图像放大查看器改用 react-zoom-pan-pinch 管理缩放、拖拽/触控板滚动平移和触控板 pinch;工具栏按钮保持 25% 步进,手势缩放改为按比例变化。

Fixed

  • Agent:写作模式生成小说章节时,开启 hide_novel_chapter_body_in_live_output 后,SSE 推流前 middleware 会在 write_file 写入 chapters/drafts/ 时只向前端发送目标文件路径、隐藏提示和已生成字符数,不再输出大量章节正文或省略号占位;字符进度会按增量轻量节流,并在工具结束前用完整参数解码校准最终值,口径与 wc -m 保持一致,前端工具卡片会提示章节正文仅在 Agent 流中隐藏、文件仍会正常写入。
  • 书籍管理:编辑书籍信息时可直接选择图像方案并生成书籍封面,生成结果立即写入固定展示路径 assets/image/cover.png,旧封面会自动备份到 assets/image/covers/backups/
  • WebUI:书架卡片和当前书籍区域会展示同一固定封面;没有封面时保持简洁书本占位,酒馆角色卡导入的 assets/image/cover.png 也会正常展示。
  • WebUI:书架封面即使暂时没有 cover_updated_at 版本号,也会尝试读取固定路径 assets/image/cover.png,避免本地已有封面却显示占位图。
  • WebUI:设置页、Agents 页和游戏设置页保存时带上资源版本,后端检测到 Agent 或其他页面已更新同一配置/资源时返回冲突错误,避免旧自动保存覆盖新内容。
  • 游戏模式:互动图像重新生成完成并追加新版本后,回合内联预览会自动切到最新图片,不再停留在用户之前手动查看的旧版本。
  • WebUI:将 react-virtuoso 锁定到满足 pnpm minimum-release-age 策略的版本,避免 pnpm --dir web test 在执行测试前被供应链校验拦截。
  • WebUI:滚动消息列表时同步记录实际 Virtuoso 滚动容器,避免“回到底部”按钮在测试或 ref 变化后无法恢复底部锁定。
  • 写作 Agent:优化 Plan Mode 卡片交互与输出展示。问题卡限制高度并固定操作区,卡片生成、内容增长、题目切换和布局变化会将卡片底部对齐到对话输入框顶部,且不打断后续工具数据的自动跟随;连续多轮 Plan 按当前 run 原地更新;生成中只展示 running 后新变化的 root thinking 预览,停滞后自动隐藏;提交问题答案或选择最终计划操作后隐藏按钮并显示完成态,内部回答/批准协议、卡片前后说明和误触发的 plan_questions/proposed_plan 协议工具卡不再重复展示;最终计划改用轻量 Markdown 模板并复用聊天 Markdown 样式。

Verification

  • go mod tidy completed successfully.
  • ./build.sh completed successfully and built the embedded frontend plus Denova binaries.
  • go test ./... passed.
  • pnpm --dir web test passed: 54 files / 286 tests.
  • scripts/build-github-release.sh v0.1.18 completed successfully and produced platform archives plus checksums.
  • GitHub Actions Release run 28488690269 completed successfully and uploaded public release assets.