本项目遵循 Keep a Changelog 格式,版本号采用日期式(YYYY.0.0)。
- 「书籍多语言」翻译含 HTML 表格(如从 Sphinx 文档采集的
<table class="docutils">)等大量标签的章节不再失败:只含标签的行、相邻的标签合并处理,属性分多行书写的标签整体保留;个别段落仍无法保留格式时改为逐块翻译,个别块保留原文、章节照常完成,并在进度中用提示说明,不再整章失败。 - 整站采集的目录标题改为取自站点导航的链接文字(如「Getting Started」「New To Gluten」),不再在导航链接的样式名含 nav 时退回为网址片段(如「getting started」「NewToGluten」),与原站目录一致。
- 修复首次保存通知设置时关闭的开关被存成开启的问题。
- 用户菜单在屏幕较矮时显示不全:宽屏改为两列,菜单不超过可视高度、超出时可滚动,「退出登录」固定在底部;窄屏顶栏只显示头像,菜单不再超出屏幕。
- 所有分页列表的页码保存在地址栏(如
?page=2),刷新、分享链接、前进后退都保持当前页;同一页面中的多个列表各用独立参数(如个人主页的书单listsPage),弹窗内的分页不受影响。 - 翻页时被点击的页码或「上一页 / 下一页」按钮显示加载状态,整条分页在加载完成前不可再点(如「我的文件」此前翻页没有任何加载提示);加载失败也会恢复。
- 「我的成长」与「我的会员」页中的「我的权益」改为标题旁的帮助图标,点击弹出各项权益的生效值与来源(按需加载,Esc 或点击外部关闭),不再占用页面正文。
- 「我的 AI 用量」新增本月估算费用(含按功能分布),调用记录的每条操作与每次调用也显示估算费用,按站点设置的模型单价估算、仅供参考;管理员可在「AI 服务」设置中关闭「向用户展示估算费用」。
- 系统设置新增「自定义 HTML」:可配置「HTML Head 额外内容」(追加到每个页面的
<head>,支持 meta、link、script、style、noscript、base、title,适合统计脚本与站点所有权验证)与「HTML Footer 额外内容」(原样追加到</body>前);在服务端渲染时注入,搜索引擎验证可直接读取;单项不超过 64 KB,修改记入审计日志。 - 站点设置中的「编辑器帮助文档」「用户协议」「隐私政策」改为一个选择框:点击后左侧搜索书籍、右侧筛选并点选章节(同名书籍显示访问路径加以区分),已选章节显示为「书名 / 章节名」;底部仍可直接填写任意地址。
- 章节选择框在读取设置与解析书名、章节名期间显示加载状态,不再先闪现原始地址再变为「书名 / 章节名」;刚选中的章节直接显示名称。
- 管理后台新增「内容采集 · 采集规则」:原有的清理行为整理为可逐项启用/停用的内置规则(页头页脚导航侧栏、页内目录、文档站装饰、标题永久链接、空标题与孤立符号行、页尾反馈提问);可添加自定义规则(删除元素、删除行、替换文本),并限定只对某些站点生效;「试采」可用未保存的规则预览采集结果。规则对所有用户的单页采集、网页导入与整站采集生效。
- 新增内置规则「去除空标题与孤立符号行」,去掉采集时混入的只剩 # 号的空标题与单独一行的 #、¶(代码块内不受影响);文档站装饰规则同时去掉正文中的按钮(如「Copy page」)。
- 修改「存储配置」后(如从本地磁盘换成阿里云 OSS),如有文件不在当前存储中会询问是否迁移:后台逐个文件上传到新存储,并把章节正文、版本记录、书籍封面与简介、头像、站点设置以及成就、等级、标签、会员方案、问答、全书概览中的地址改为新地址,可选迁移成功后删除原存储中的文件;进度显示在「我的任务」与存储设置页,完成后发送站内通知。早期上传、没有文件记录但仍被引用的本地文件也会一并迁移。
- 发现页新增「精选书单」:管理员在书单页点「设为精选」即可展示在发现页(不带搜索与标签筛选的第一页),没有精选时展示收藏最多的书单;精选书单带「精选」标记。
- 点击「我的文件」中的图片改为在全屏图片查看器中打开:支持缩放(按钮、滚轮、键盘)、拖动查看、适应窗口与实际大小、旋转与翻转查看、上一张 / 下一张、图片信息(尺寸、大小、来源、上传时间、引用)、复制链接、下载与删除。
- 查看器中可编辑 PNG、JPEG、GIF 图片:旋转、水平 / 垂直翻转、拖动裁剪框裁剪,另存为新图片(原图与正文中的引用不变,新图片计入个人存储)。
- 书籍设置「章节链接」新增「关系图」(默认)与「列表」两种查看方式:关系图以章节为节点、链接为带箭头的边,被引用越多的章节越大,草稿为灰色;可拖动画布与章节、滚轮缩放、搜索并定位章节,点击章节高亮其关联并在侧栏列出「链接到」与「被引用」,可直接编辑或阅读;可选显示没有链接的章节与目录结构(虚线)。
- 新增模板插件(默认关闭):新建书籍时可选择书籍模板,创建后按模板生成章节目录与正文(均为草稿)并打开第一章;写作台工具栏与
/菜单可插入章节模板到光标处,也可把当前章节存为模板。 - 站点模板由管理员在后台「站点模板」维护,首次启用时预置产品文档、技术教程、团队知识库三份书籍模板,以及会议纪要、接口文档、教程章节、版本发布说明、常见问题五份章节模板;作者可在「我的模板」新建章节模板,或把自己的书保存为书籍模板(可选是否包含正文)。
- 模板支持变量:日期、时间、书名、章节名、作者名,使用时按浏览器时区替换为实际值。
- 新增权益「个人模板数量」(默认 50),可由会员方案与成长等级提升。
- 新增站点备份(系统设置 · 备份):一键备份或按计划每天 / 每周自动备份,自动备份保留最近若干份;备份为 zip,包含全部业务数据(与数据库类型无关的逐表导出)、可选的本地上传文件与站点密钥,进度显示在备份页与「我的任务」中,完成或自动备份失败时发送站内通知。
- 下载备份需要管理员权限与短时下载凭证,开启二次认证时按「导出数据」验证;删除按「删除」验证。备份含站点密钥与各类接口密钥,只保存在服务器数据目录中,不上传到公开访问的对象存储。
- 安装向导新增「从备份恢复」:选择一个空数据库并上传备份,按进度建表、写入数据、恢复文件,完成后用原账号登录,原有登录状态仍然有效;可以恢复到与备份时不同的数据库(如从 SQLite 换成 PostgreSQL);拒绝来自更新版本的备份。
- 新增运行指标(系统设置 · 运行指标,默认关闭):开启后
/metrics以 Prometheus 格式输出请求量与耗时、正在处理的请求、事件流连接数、模型调用次数 / tokens / 估算费用 / 耗时、后台任务积压与最早任务等待时长、在线实例、数据库连接池、用户 / 书籍 / 章节总数及版本与运行时指标;抓取需携带访问令牌(只显示一次,可重新生成),页面提供 Prometheus 抓取配置示例与当前指标预览。
- 站点可以安装为应用(添加到手机主屏幕或桌面,独立窗口打开),用户菜单中出现「安装应用」(浏览器支持时)。
- 读过的章节自动保存到浏览器,断网时仍可打开;书籍详情页新增「离线阅读」,可一次下载全部章节(含正文图片与页面脚本),也可更新或移除;离线时底部提示正在显示已保存的内容,未保存的页面显示离线页。
- 离线期间的阅读进度在联网后自动补传;断网时不再因校验登录失败而退出登录。离线内容只保存在当前浏览器,登录或退出登录时清除。
- 站点设置新增「允许安装为应用并离线阅读」(默认开启),关闭后浏览器中的离线缓存在下次访问时清除。
- 写作台显示同时在编辑这本书的协作者(顶栏头像,悬停可见各自所在章节与是否有未保存修改),目录中标出协作者正在编辑的章节;同一章节有其他人打开时给出提示。
- 保存冲突保护:保存时检查打开章节后是否有其他人保存过;有则以打开时的内容为基准自动合并双方互不冲突的修改,改到同一处时弹出合并对话框,逐处选择保留自己的、采用对方的或两者都保留,也可以放弃自己的修改改用对方版本。不会再出现后保存的人覆盖他人修改。
- 他人保存了正在打开的章节时:没有未保存修改则自动载入新内容,有修改则提示保存时将自动合并;他人新建、删除、移动或改名章节时目录自动刷新。
- 修复:保存过程中继续输入的内容在保存完成后被显示为「所有更改已保存」。
- 新增写作批注:在写作台选中正文,点工具栏的批注按钮或按 ⌘/Ctrl + Alt + M 添加批注;批注侧栏按「未解决 / 已解决」列出讨论串,可回复、修改、删除与标记解决,点击原文在正文中选中对应位置(正文修改后按上下文重新定位,找不到时提示原文已修改)。批注只有书籍作者与协作者可见,不出现在阅读页;目录中标出各章节未解决的批注数;新批注与回复会通知书籍作者与讨论中的其他人,并实时同步到其他人的写作台。
- 新增协作者角色「建议者」:可以进入写作台查看草稿、批注,修改正文后点「提交修改建议」(可附说明)交给作者审阅,不能直接保存,也不能新建或调整章节。作者在批注侧栏的「修改建议」中审阅,按改动块对比原文与建议、逐处勾选采纳(标题修改单独选择)或全部不采纳;采纳的部分与当前版本合并后保存,建议提交后正文已被改动时互不冲突的部分自动合并、冲突处由作者选择。目录标出各章节待处理的建议数,提交与处理结果会通知对方,建议者可撤回未处理的建议。
- 批注中输入 @ 可选择书籍作者与协作者,被提及的人收到「提到了你」的通知,批注中的提及会高亮显示。
- 新增章节分工:在写作台的章节设置中为每章指定负责人(作者或协作者)、阶段(未开始 / 写作中 / 待审阅 / 已定稿)与截止日期,修改即时保存;目录显示阶段色点与负责人头像(悬停可见详情,逾期标红),并可筛选「分配给我的 / 待审阅 / 未定稿」章节(地址中的 ?filter=)。分配章节时通知负责人,章节进入「待审阅」时通知作者与编辑者,分工变化实时同步到其他人的写作台;建议者可以查看分工。
- 编辑者也可以在写作台顶栏打开「建议模式」(按书记住),修改以建议提交给其他协作者审阅,关闭后恢复直接保存。
- 写作台新增「协作」侧栏(?team=activity|tasks):「动态」按天列出谁修改了哪一章(新增 / 删除行数,连续保存合并为一条)、新建或删除章节、恢复历史版本、批注与回复、处理修改建议、调整分工,实时刷新,可直接打开相关章节,保留 180 天;「分工总览」按阶段统计章节数、逾期与未指定负责人的章节数,并列出全部章节的负责人与截止日期。
- 通知设置新增「邮件发送方式」:每条即时发送、每日摘要、每周摘要或不发送邮件。选择摘要后,通知在服务器时间每天 8:00(每周摘要为周一)汇总成一封邮件,按类型分组并遵守逐类型开关,同时附上你参与写作的书籍中他人的协作动态(修改、批注、修改建议、分工调整次数);可随时给自己发送一封预览。
- 摘要邮件附一键退订链接(签名校验,无需登录),退订后改为不发送邮件,站内通知不受影响;多实例部署时只由一个实例发送。
- 新增「AI 朗读」插件(默认关闭):读者在阅读页点「朗读」即可收听章节,逐段播放并高亮当前段落,可调语速、切换音色,读完自动进入下一章;支持锁屏与耳机按键控制。只朗读读者有权阅读的内容(付费章节需解锁)。
- 「AI 服务」新增语音合成配置(OpenAI 兼容接口,可沿用对话服务的地址与密钥)、可选音色、按字计价与连通测试;朗读用量按字数记入 AI 用量。
- 每月朗读字数为权益,可由会员方案与成长等级提升,同一段当月重复收听不重复计数;已合成的音频缓存在服务器数据目录复用(不上传对象存储),管理员可设置缓存上限或清空缓存。
- 新增「团队空间」插件(默认关闭):可以创建团队、邀请成员(所有者 / 管理员 / 成员),对方在「我的团队」中接受邀请;团队主页分书籍、成员、设置三栏,支持转交与解散团队、退出团队。
- 作者可以把自己的书加入团队(在团队主页或书籍设置的协作者页):所有者与管理员自动获得编辑权限,其他成员按每本书设置的编辑、建议或只读权限参与,成员与角色变动时自动同步;书籍协作者中标记「来自团队」,直接邀请的协作者优先。
- 每人可创建的团队数与每个团队的成员数为权益,可由会员方案与成长等级提升;管理员可在后台查看与解散团队。
- 团队会员:会员方案可开启「可按团队购买」,团队所有者与管理员在「我的会员 › 团队会员」按席位开通,团队中按次序(所有者、管理员,再按加入时间)的前 N 名成员享有方案权益;与个人会员同时有效时每项权益取较高值。有效期内可续期,或按剩余天数折算增加席位;退款撤销时按比例扣回天数或席位,到期前提醒购买人。
- 成员在「我的会员」中可以看到通过团队享有的会员,席位已满时提示联系团队管理者;管理员可在「会员 › 团队会员」中调整方案、席位与到期时间,或立即取消。
- 新增权益「每月 PDF 导出次数」(默认不限):用完后当月不能再导出 PDF,可作为会员权益提升;游客导出仍由书籍的「允许游客导出」控制。
- 新增权益「私有书籍数量」(默认不限):新建私有书、把公开书改为私有,以及导入、复制、采集、翻译新建的私有草稿都会校验;公开书籍不受限,可把私有空间作为会员权益。
- 新增权益「每章可查看的历史版本数」(默认不限):版本历史只显示最近的若干版本,更早的仍然保存、只是隐藏,并提示隐藏数量,放宽后即可查看和恢复,不会丢失历史。
- 新增权益「语义搜索」(默认开):关闭后站内搜索只提供关键词结果,可把语义搜索作为会员专享;书籍与章节的相关推荐不受影响。
- 新增权益「个人存储空间」(默认不限):上传、Markdown 导入的图片与外链图片本地化保存的文件合计计入;新增「我的文件」页查看用量、每个文件被使用的位置,并可删除(同时从本地、S3 或七牛存储中删除)。本功能上线前上传的文件不计入。
- 新增权益「自定义导出页脚」(默认开):关闭后导出文件的页脚固定为「Powered by 站点名」,可把去除站点标识作为会员权益;导出设置页会相应提示。
- 会员管理新增「兑换码」:可批量生成一次性卡密(可导出 CSV 分发),或创建一个多人可用的推广码(可自定义码值并限制总次数);每批指定方案、天数与可选的截止时间。
- 用户在「我的会员」输入兑换码即可开通或续期,不区分大小写、可省略分隔符;同一批次每人只能兑换一次,并发兑换不会超出次数上限。
- 整批或单个兑换码可随时停用;输错次数过多会暂时限制兑换,防止穷举;兑换记入会员流水(来源「兑换码」)。
- 新增会员礼品卡:方案的每档价格旁可「送人」,付款后在「我的会员 → 我的礼品卡」得到一个兑换码,复制发给对方即可开通;被兑换后通知购买者,也可自己兑换。
- 礼品卡订单退款并撤销时:未兑换的按退款比例缩短天数、全额退款则作废;已兑换的按比例从兑换者的会员中扣回。
- 新增会员优惠券:管理员可创建折扣(如 8 折)或满减(如满 100 减 20)优惠码,限定适用方案、是否可用于礼品卡、仅限首次开通会员的用户、总次数与每人次数、生效与截止时间。
- 结算页可输入优惠码,实时显示优惠后价格;下单时占用次数,支付后确认,订单取消或过期后自动归还;订单详情、我的订单与后台订单显示优惠金额。
- 新增会员免费试用:方案可设置试用天数,从未开通过会员的用户可在「我的会员」领取一次(默认需先验证邮箱,可在会员设置中关闭);试用中显示「试用」标记,到期前提醒与到期通知使用试用专属文案。
- 试用期间购买同一方案,剩余试用天数会累加到新的有效期中;试用不影响「仅限首次开通」的优惠券。
- 新增会员邀请奖励:沿用站点邀请码,好友通过邀请链接注册并首次购买会员后,邀请人与好友都获得会员天数(默认 30 天与 7 天,可配置);可选在好友验证邮箱后奖励邀请人。奖励加在当前会员方案上,不会更换已有方案。
- 每位邀请人每月获得奖励的次数有上限(默认 10 次,超出后好友仍获奖励);触发奖励的订单退款并撤销时按比例扣回双方的奖励。「我的会员」显示邀请规则、邀请链接与已获得的奖励,后台可查看全部奖励记录。
- 「我的会员」新增「自动续费」:为当前方案选一档时长开启续费计划。到期前会提醒一键续费,通知链接直达该时长的结算页,并替代普通的到期提醒;方案下架、时长删除或更换方案时自动关闭并通知。
- 为支付渠道的签约扣款预留了中性的周期扣款接口:渠道开通签约后,到期前一天自动扣款续期,失败每天重试、共 3 次,仍失败则提醒手动续费。后台会员列表标记开启了自动续费的会员。
- 书籍付费设置中「免费阅读的内容访问等级」改为下拉选择「哪些读者免费阅读」,选项直接列出会员方案(如「专业版」会员)和成长等级(如「Lv3」及以上),由管理员在方案与等级中设置的内容访问等级生成,不再需要填写数字。
- 付费墙与书籍付费信息改为显示「「专业版」会员可免费阅读本书」,替代原来的访问等级数字。
- 修复试读可能超出设置比例的问题:原来按空行分段整段截取,整章只有一段(或首段很长)时会给出全文或远超比例的内容;现在按字数精确截断,尽量停在句末并以「…」结尾,代码块中截断时自动补齐结束标记。
- 新增个人访问令牌:在账号设置「访问令牌」中生成,供脚本、持续集成以
Authorization: Bearer kf_pat_…调用 API;权限可选「全部权限」,或按资源逐项勾选(如书籍·查看、章节·创建,提供「全部只读」「全选」快捷选择),自定义令牌只能调用所选权限对应的接口、未登记权限的接口一律拒绝;可设有效期、随时吊销,列表显示最近使用时间与 IP,明文只显示一次。 - 访问令牌可限定书籍:只能操作选定的一本书(其他书籍按游客可见),只能使用书籍相关的权限,不能新建书籍,也不能访问通知、阅读进度等个人数据;令牌列表显示「仅限《书名》」。
- 令牌始终按普通用户权限访问,不具备管理员权限,也不能修改密码、二次认证、注销账号或管理令牌。每人的令牌数量为权益(基础 10 个),可由会员与等级提升,设为 0 即不开放 API 访问。
- 新增 Webhook 插件(默认关闭):在账号设置「Webhook」订阅自己书籍上的章节发布、收到评论、收到点赞或收藏,事件发生时向指定地址投递带签名的 JSON;可限定某本书、发送测试事件、查看投递记录(请求与响应)并重新投递。
- Webhook 新增事件:作品被购买(含订单金额与作者到手金额)、收到读者提问(公开后投递)、我的会员变化(开通、续期、调整、取消与到期);分别需要启用「付费内容」「问答」「会员」插件。
- 投递失败按退避重试共 5 次,连续失败 10 次的订阅自动停用并通知;默认拒绝投递到内网地址以防 SSRF(内网部署可用环境变量放开);订阅数为权益(基础 5 个)。
- 新增 RSS 订阅插件(默认关闭):每本公开书籍与每位作者各有一个订阅地址,列出最近发布的章节;付费章节只给出试读摘要。书籍详情页与作者主页提供复制订阅地址的按钮,并支持阅读器自动发现。
- 新增嵌入组件插件(默认关闭):书籍详情页「嵌入到其他网站」可选择书籍信息卡片(封面、作者、简介、标签、章节数与阅读量,不含目录)、整本书(信息与目录)或某一章,设置高度、预览并复制 iframe 代码;嵌入页按游客身份显示,付费章节只显示试读,并链接回本站阅读。
- 章节正文支持双向链接:
[[章节标题]]、[[章节标题|显示文字]],跨书用[[书籍slug/章节slug]];按 slug 或标题匹配本书章节,找不到的显示为灰色虚线文字。阅读页、打印页、嵌入页与写作台预览都会渲染。 - 写作台输入
[[弹出本书章节选择,可按标题或 slug 过滤,回车插入链接。 - 新增反向链接插件(默认关闭):阅读页底部显示「被引用」,列出链接到本章的已发布章节及链接处的上下文(付费章节不显示上下文);书籍设置新增「章节链接」,查看章节之间的链接、失效链接与没有链接的章节。
- 新增书单插件(默认关闭):书籍详情页「加入书单」可勾选收录到自己的书单或新建书单;书单可设为公开或私有。
- 书单页显示收录的书籍,创建者可写推荐语、调整顺序、移出书籍;其他读者可收藏书单。书单只显示查看者可读的书,书籍被删除或改为私有时对创建者提示隐藏数量。
- 新增「书单」页(顶部导航):热门、最新、我的书单与我收藏的;公开书单还会显示在个人主页,以及所收录书籍详情页的「收录于 N 个书单」。
- 每人可创建的书单数为新权益「书单数量」(默认 20 个),可作为会员权益或随成长等级提升。
- 新增经验规则「购买会员」(默认 50 经验):每笔付款开通或续费会员的订单发放一次,订单退款并撤销会员时收回。
- 新增权益「经验加成」(百分比,默认 0):会员方案或成长等级可设置,按经验规则获得的经验按比例增加,每日上限仍按基础经验计算;经验流水显示「含经验加成 +N」。管理员不因「不受限制」获得最大加成。
- 成就新增会员指标:当前是会员、累计会员天数、购买会员次数(需启用会员插件);新增预设成就「尊享之始」「年度会员」「千日相伴」「忠实支持」,会员插件启用后可在「预设成就」中安装。会员开通、续期、调整、取消与到期时自动重新评估。
- 新增「按模型单价」:不同模型可单独设置每百万 tokens 的输入/输出单价(可用 * 通配,如 gpt-4o-mini*),未设置的模型使用默认单价;设置页列出最近调用过的模型及当前按哪条单价计费,可一键添加,修改后可按新单价重算最近 7/30/90 天的费用。
- 「我的 AI 用量」调用记录与管理员的调用明细显示关联对象并可跳转:书籍翻译跳到翻译任务进度,书籍问答跳到书籍「问答」(读者问题分析跳到「读者问题」),AI 写作跳到写作台,章节导读跳到导读设置,AI 审核跳到内容审核(仅管理员);用户看不到不可读书籍的关联。
- AI 翻译的任务详情与已有译本列表在「审阅译稿」前新增「查看书籍」,直接打开译本的书籍详情页。
- 新建译本支持预设:管理后台新增「书籍多语言」,可设置译本书名与访问路径模板(默认模板 + 按语言覆盖,如简体中文书名「{title} 简体中文」、路径「{slug}-chinese」;默认路径为「原书路径-语言代码」)。新建译本时按目标语言预填书名与访问路径,作者可修改;书名留空仍由 AI 翻译原书名,访问路径已被占用时自动追加数字。
- 新增「名字显示方式」:个人资料中可选择显示昵称(默认,未设置昵称时显示用户名)或始终显示用户名;作者署名、书籍卡片、评论、书评、问答、排行榜、书单、个人主页、导航栏、嵌入页、RSS 与 Webhook 等处统一按此显示。
- 「书籍多语言」的 AI 翻译与写作台的「翻译」不再改动 Markdown 语法:
[children]、[toc]、组件标签与属性、:::块、链接与图片地址、图标、代码、公式与流程图、front-matter 的键与图标注释等在翻译前替换为占位符、翻译后原样还原,只翻译读者可见的文字(含组件的title、标签页标题、front-matter 的title与description);双向链接改为指向章节路径,在译本中仍然有效。译文丢失或改动了这些语法时自动重试一次,仍不正确则该章记为失败、不保存损坏的内容,可重试该章。 - 「书籍多语言」AI 翻译的进度页在某一章刚开始翻译时打开,实时译文前面不再多出
undefined。 - 连续的 GitHub 风格提示块(如
> [!NOTE]后空一行再写> [!TIP])不再被合并成一个,与 GitHub 一致以空行结束;行内按钮!btn[…]的文字不再被正文链接颜色覆盖而看不见,Issue 徽章同样保持自己的颜色。 - 网页采集去掉文档站页尾的「Was this page helpful?」反馈提问(及其后的按钮等),同样识别常见的英文与中文写法。
- 「我的书籍」与个人主页在加载书籍时不再先显示分页,数据加载完成后才出现;其他列表已检查(后台列表的分页本就在加载完成后显示,排行榜、版本列表等翻页时保留上一页内容并变淡,分页随之保留)。
- 书籍详情页的「全书概览」默认折叠,只显示开头几段,点「展开全文」查看全部,避免较长的概览把目录挤到页面下方;内容较短时不折叠。
- 章节管理的批量改状态与批量删除改为一次提交、由服务端逐个处理并以 SSE 推送进度:工具栏显示「正在设为「草稿」:2/4」与进度条,正在处理的章节显示「处理中」,完成的章节状态即时切换;失败的章节保持选中并提示数量,便于重试;批量删除与单个删除一样需要二次认证(开启时)。
- 修复日期与日期时间选择器被遮挡:弹出面板改为按视口边缘自动定位(下方放不下时向上弹出,并始终完整显示在屏幕内),在弹窗中也不再被裁切;面板内的时间下拉菜单不再被面板盖住,选择的时间能正确生效;下拉菜单与提示也显示在弹窗之上。
- 修复 SQLite 下并发写入偶发失败的问题:两个先读后写的事务交错时,后一个会立即报 database is locked,导致同时兑换同一活动码等操作被误判为「已兑换过」。现在事务开始即取得写锁并排队等待;数据库错误也不再被当成业务错误提示。
- 网页采集不再把文档站的页面装饰带入正文:Docusaurus 的「Version: x」版本标记与旧版本提示、「On this page」页内目录(移动端与桌面端)、编辑链接与最后更新时间,以及 VitePress、MkDocs 的同类元素。
- 修复同时启用多语言与多版本时版本切换中出现重复版本的问题:译本继承原书的版本组,现在每个版本号只显示一本(优先当前书籍、其次同语言),书籍列表的「N 个版本」也按版本号计数。
- 启用「书籍多语言」时,版本切换只列出当前语言已有的版本:例如只翻译了 2.5.0 的简体中文,简体中文版不再列出只有原文的其他版本(只剩一个版本时不显示版本切换);未启用时仍列出全部版本。
- 安全:站点页面默认只允许同源嵌入(X-Frame-Options 与 CSP frame-ancestors),防止被其他网站嵌入后诱导点击;只有嵌入组件页 /embed/* 允许被其他网站嵌入。
- 新增端到端测试(Playwright):在真实浏览器中走通会员购买与优惠券、礼品卡、免费试用、邀请奖励、后台退款、付费墙与问答实时推送,CI 每次提交运行。
- 修复登录或注册后、整页刷新前,服务端渲染的页面(如阅读页)仍按未登录显示的问题:付费章节提示「登录后解锁」、划线与问答要求登录;切换账号时也会更新登录 Cookie。
- 弹窗补充对话框语义(屏幕阅读器可识别);后台订单列表的操作按钮不再折行。
- 「翻译任务」列表中进行中的任务实时显示进度,翻译目录阶段有提示。
- 修复在 PostgreSQL 上无法禁用标签、书籍关注等插件(查询语法错误后按默认启用处理)、卸载插件返回 500、PDF 导出组件检测失败的问题。
- 修复在 PostgreSQL 上「我的点赞 / 我的收藏」列表总数始终为 0 的问题。
- 成长等级插件未启用时,删除内容不再查询其数据表。
- 后端测试可在 PostgreSQL 与 MySQL 上运行,CI 在 SQLite、PostgreSQL、MySQL 上各跑一遍完整测试。
- 支持在负载均衡后运行多个服务实例(PostgreSQL / MySQL + 共享数据目录):实例之间通过数据库自动发现与通信,单实例部署没有额外开销。
- 站内通知、问答、写作助手、整本翻译、章节导读、审核队列与插件安装日志的实时推送,送达连在任何实例上的页面;后台 AI 任务可从任何实例取消或暂停,中途打开的页面从执行实例补齐已生成的内容,不会因为其他实例的巡检被误判为中断。
- 后台任务执行期间持续心跳,长任务不会被重复执行,实例退出后遗留的任务由其他实例接手;周期巡检只由一个实例执行;同一本书的问答索引跨实例互斥重建。
- 插件启用/禁用后所有实例同步权限,缺少插件文件的实例自动补齐;运行日志设置在所有实例生效;兑换码防穷举计数改为跨实例共享。
- 管理后台「系统概览」新增「服务实例」,列出在线实例,并在使用 SQLite、数据目录未共享、版本不一致时给出提示;安装指南新增「多实例部署」。
- 发布审核新增「AI 辅助审核」:命中敏感词的内容交给模型结合上下文复核,给出结论(安全 / 疑似违规 / 无法确定)、置信度、违规类别与理由,显示在审核队列中,作者看不到。
- 可选「判定安全时自动通过」:模型判定安全且置信度达到阈值(默认 90%)时自动发布,减少敏感词误判带来的人工审核;其余仍由审核员决定。
- 可选「复查自动通过的内容」:词典漏掉的疑似违规由模型标记并通知管理员,新增「AI 标记」页集中处理,不会自动撤回。
- 可填写站点补充规则;复核在后台进行,审核队列实时更新,每条记录可重新让 AI 复核;调用记为系统调用。
- 书籍设置新增「读者问题」:汇总读者就本书向 AI 与社区提出的问题,相近的问题自动归为一类并按数量排序,展开可看到具体提问与关联章节;可切换近 7 / 30 / 90 天。
- 「内容缺口」列出读者问到、但书中没有找到相关内容的问题,适合补充成新的章节;另列出问题最多的章节与尚未回答的社区提问。
- 读者的 AI 提问以匿名方式汇总(不含提问者,作者与协作者自己的提问不计入),问答面板中有相应提示;管理员可关闭 AI 提问的汇总,只统计社区提问。
- 每周有新提问时给作者发一条站内摘要(可关闭);「读者问题洞察」为权益,可设为会员专享。
- 账户菜单新增「我的任务」:集中查看自己发起的后台任务(导入书籍、PDF 导入、外链图片本地化、「书籍多语言」的 AI 翻译、整站采集、写作助手、章节导读生成),按「进行中 / 已完成 / 失败」分组,显示进度、开始与结束时间和失败原因,可跳到任务详情或结果。
- 进度经站内通知的实时通道推送,不再轮询;整站采集每采完一页即更新进度。
- 有任务进行中时,导航栏显示转圈标记与数量,点击进入「我的任务」。
- 导入书籍、PDF 导入与外链图片本地化等待结果时改为接收推送,不再反复请求任务状态。
- 访问令牌新增「我的任务 · 查看」权限。
- 新增卡片与卡片组组件,兼容 Mintlify 写法:
<CardGroup cols={2}>中放多个<Card title="…" icon="…" href="…">,正文支持 Markdown。 icon使用 Font Awesome 图标名(如headset,可用iconType="regular"/"brands"),也可以填图片地址;href让整张卡片可点击(站外链接在新窗口打开);horizontal让图标与标题同行;color设置图标颜色。- 卡片组按
cols(1–4)分列,窄屏自动变为单列;卡片也可以单独使用。 - 写作台的「插入」菜单与
/命令新增「卡片组」。 - 章节元数据支持两种写法,只在文档开头识别:图标注释
<!-- icon: database -->,以及---包围的 front-matter(title、description、url、icon),两者可同时使用。元数据不显示在正文中;阅读页在标题下方显示简介与「原文」链接,页面标题与简介用于搜索引擎与分享;写作台预览顶部显示元数据;设置章节图标时若已有 front-matter 则写入其中;DOCX/EPUB 导出不含元数据。 [toc]生成的本章目录包含一到六级全部标题,并按层级缩进(已有的二、三级标题锚点不变)。
- 新增按用户生效的权益:书籍数量上限、单本书协作者人数上限、单文件上传大小、单页网页采集、整站采集及整站采集页数上限;超限时接口返回 403。
- 系统设置新增「权益」页配置全站基础值;默认与升级前一致(书籍/协作者不限,上传与采集沿用原设置),管理员主动收紧才生效,管理员本人不受限制。
- 成长等级可配置「等级特权」,用户获得当前等级及以下各启用等级的累计权益;「我的成长」新增「我的权益」卡片展示生效值与来源。
- 权益由插件登记来源(核心只提供通用机制),为后续会员方案预留独占来源;采集入口按用户权益联动显示。
- 新增「会员」插件(默认关闭):多个会员方案,每个方案可配置权益与多档时长价格(划线价可选),方案名称/说明支持多语言。
- 用户同一时间持有一个方案,续期顺延到期时间,有效期内更换方案从当前时间起算;会员有效期内按方案权益生效,优先于成长等级,未配置的项回退基础值。
- 管理端可开通/续期、调整方案与到期时间、取消会员,查看会员列表与流水,设置价格货币与到期提醒;用户在「我的会员」查看当前会员、方案与记录,并收到开通、到期前与到期通知。
- 新增「支付」插件(默认关闭):支持线下转账(用户提交付款说明、管理员确认到账)、支付宝(电脑/手机网站支付)、微信支付(APIv3 Native 扫码)与 Stripe Checkout,异步通知均验签并校验金额。
- 会员方案可在线购买:会员页每档价格显示「购买/续期」,结算页选择支付方式,订单页展示二维码/收银台/转账说明并自动刷新状态;支付成功后自动开通会员并通知。
- 管理端可查看与筛选订单、确认线下收款、取消订单、重试履约,并配置各支付方式(密钥只写不读、保存前校验格式);用户可在「我的订单」查看购买记录。
- 支付与会员互不依赖:支付插件售卖通用「商品」,会员插件登记商品并处理履约。
- 退款:用户在支付后可申请期内(默认 7 天,可配置或关闭)申请退款,管理员审核(可部分退款、选择是否撤销商品)或驳回,也可直接退款;支持支付宝、微信支付、Stripe 原路退款与线下退款,退款单号作为渠道幂等键,并发不超额,结果未知时向渠道查询确认、必要时人工核实,不会重复退款。退款成功后会员按比例扣回天数、付费内容按比例扣回作者收益并可重新锁定。修复全额退款后重复的支付通知可能导致订单被重新履约的问题。
- 书籍设置新增「更多信息」:可添加 GitHub/GitLab/Gitee、官网、原始文档、文档地址、在线演示、联系邮箱、原作者、许可证、版本、ISBN 及自定义属性,支持排序;书籍详情页侧栏展示(链接可点击),随导出/导入与复制保留。
- 支持上传多个 Markdown 文件或 Markdown 目录 ZIP 新建书籍(「导入书籍」新增 Markdown),也可在写作台「从 Markdown 导入」为本书章节:目录成为章节层级,README/index 作为目录正文,按名称自然排序;相对路径图片自动上传到当前存储并改写,包内互相引用的 .md 链接改写为阅读页链接。
- 原「书籍压缩包」导入在 ZIP 不含 book.md 时自动按普通 Markdown 目录导入。
- 存储新增「S3 兼容对象存储」驱动(AWS S3、阿里云 OSS、腾讯云 COS、MinIO、Cloudflare R2 等,Signature V4),可配置对外访问地址(CDN)、对象键前缀与路径风格;Secret Key 只写不回显。
- 书籍设置「清理」新增「外链图片本地化」:后台下载章节中的外部图片存入当前存储并改写链接(含 SSRF 防护与大小限制),改动章节生成版本记录。
- 新增「发布审核」插件(默认关闭):管理员维护敏感词词典(批量添加、分类、启停、试审),章节发布与书籍公开前自动审查(忽略大小写/全半角,可识别插入空格或符号的写法)。
- 未命中直接发布并记入「自动通过」供抽查复审;命中则拦截(章节保持草稿、书籍保持私有),标出命中的字段、行列号与上下文并通知作者与管理员;复审通过自动发布,驳回把命中位置与意见通知作者,作者可在「我的审核」查看。
- 写作台与书籍设置在发布被拦截时提示「已提交审核」。
- 新增「付费内容」插件(默认关闭):作者在书籍设置「付费设置」中为整本/章节定价,可设免费试读章节、试读比例与逐章免费/单独价格;未解锁章节只显示试读内容与付费墙,阅读目录显示锁标记,书籍详情页展示价格与「购买全书」。
- 内容门禁覆盖阅读、整本导出与搜索摘要;购买经支付插件完成,已购内容在「我的购买」查看。
- 作者收益:平台按比例抽成,作者在「我的收益」查看流水并申请提现,管理员线下打款后确认或驳回(退回余额)。
- 与会员/等级结合:新增「内容访问等级」「付费内容折扣」「全部付费内容免费」三项权益,可在会员方案或成长等级中授予(书籍可设「访问等级 ≥ N 免费读」)。
- 系统设置新增「AI 服务」:配置站点使用的大模型,支持 OpenAI 兼容接口(OpenAI、DeepSeek、通义千问、Kimi、Ollama 等,支持工具调用)与 Anthropic 接口,另可配置 OpenAI 兼容的向量嵌入模型;密钥只写不读,可一键测试连通性。
- 未单独配置时沿用「翻译服务」中的 OpenAI / Claude 配置;插件经核心的通用 AI 接口调用,不直接接触密钥。
- 每次模型调用都记录用量(调用用户、功能、模型、输入/输出 tokens、耗时,服务未返回用量时按文本估算),可配置单价估算费用;管理后台新增「AI 用量」:按日趋势、按功能/模型分布、用量最高的用户与调用明细。
- 新增权益「每月 AI 用量」(tokens,默认不限),可在成长等级与会员方案中设置额度,超出后当月暂停 AI 功能。
- 写作台与多语言内容的「翻译」同样记录每次调用(OpenAI/Claude 记 tokens,Google 翻译按字符计价,可关联到章节);新增权益「每月翻译字数」(默认不限)。「我的权益」显示按月计量项的本月已用量。所有模型调用都必须经过统一的计量入口,有测试防止新功能绕过。
- 新增「我的 AI 用量」页:用户可查看本月 tokens/翻译字数与额度、每日用量、按功能分布,以及按调用链分组的全部调用记录(每次操作展开可看到其中每一次模型调用的模型、tokens、耗时与结果);管理端调用明细可按调用链筛选。
- AI 用量预警(只报警、不限流):可设置全站当日估算费用、单个用户当日 tokens、单条调用链 tokens 三类阈值,超过时通知所有管理员并在「AI 用量」页列出,可一键查看对应用户或调用链的调用明细;同一对象只提醒一次。
- AI 用量数据保留与导出:「AI 服务」可设置调用记录保留天数(默认永久,最少 90 天),超期的调用记录与预警由每日维护任务分批清理;管理端「AI 用量」按当前筛选导出 CSV(含用户、估算费用与报错),用户在「我的 AI 用量」可导出自己的调用记录(不含费用)。
- AI 调用不再设置整体超时(翻译、连通性测试同样取消 60 秒限制),只保留建连超时。
- 问答管理新增「调用链详情保留天数」(默认永久,最少 7 天):超期只清除逐步的调用链详情,问题、回答与用量合计保留。
- 新增「书籍问答」插件(默认关闭):阅读页右侧「问答」抽屉,读者就本书内容向 AI 提问,回答只依据本书并标注出处,点击角标定位到对应章节小节;在正文中选中文字可直接「问 AI」。
- 检索采用关键词(BM25,支持中文)与向量的混合检索(配置嵌入模型后启用,后台自动向量化,内容更新后自动重建索引);「深度模式」由 AI 多步检索、查看目录并阅读多个小节后作答。
- 社区问答:书籍详情页新增「问答」Tab,读者可公开提问(可附 AI 回答作参考),作者与其他读者回答,提问者或作者采纳后标记已解决,提问、回答与采纳均有站内通知。
- 额度均为权益、可纳入会员体系:「每日 AI 提问次数」「每日深度模式提问次数」(可设为 0 作为会员专享),并受「每月 AI 用量」约束;付费内容门禁同样生效,未解锁章节不参与回答。
- 每条回答显示模型消耗(tokens);新增「我的问答」页:今日额度与本月 AI 用量、跨书的 AI 问答记录(可展开出处、删除)与社区提问。
- 回答正文逐字流式输出:模型以流式接口调用,生成的文字经 SSE 实时推给读者(中途打开的页面也能接上已生成的部分),深度模式中间轮的临时文字在调用工具时清除;OpenAI 兼容接口与 Anthropic 均支持,用量从流末尾准确记录。
- 社区问答纳入内容治理:提问与回答发布前经发布审核(敏感词命中时待审核,通过后公开并补发通知),可被举报并下架;审核插件新增「审查用户发布的其他内容」开关。插件可经新的中性扩展点登记自己的用户内容类型,审核与举报不需要认识具体插件。
- 回答改为后台生成:不设整体超时、深度模式不限轮数(直到模型不再调用工具,相同的工具调用不重复执行),可随时停止;每条回答可查看完整调用链(上下文、查询向量化、检索命中、每次模型调用的模型/tokens/耗时/请求的工具、每次工具执行及返回的小节),生成过程中经 SSE 实时推送每一步(不轮询)。
- 书籍问答设置新增「全站语义搜索与相关推荐」(默认关闭,需配置嵌入模型):为公开书籍建立向量索引,章节发布或修改后自动更新,可一键补齐。
- 站内搜索在关键词结果之后增加「语义相关」:按意思匹配的章节小节,点击直接定位到对应小节;单独加载,不拖慢关键词结果。
- 书籍详情页「你可能也喜欢」优先推荐内容相近的书(不含同一作品的其他语言/版本),没有时仍按标签推荐;阅读页正文后新增「相关阅读」,推荐内容相近的章节。
- 语义检索经核心的中性扩展点接入,核心与其他插件不依赖问答插件;未解锁的付费内容不参与搜索。
- 新增「章节导读」插件(默认关闭):AI 为章节生成阅读前导读与本章要点,显示在阅读页正文上方(可折叠);为书籍生成全书概览,显示在书籍详情页。
- 书籍设置新增「章节导读」:查看每章状态(未生成、已生成、内容已修改、已编辑、失败),一键生成未生成与已修改的章节,或单章重新生成;导读与概览都可编辑,编辑过的不会被自动覆盖;状态实时更新。
- 可开启「发布与修改后自动生成」:章节发布后立即生成,已发布章节修改后约 1.5 分钟更新,连续保存只生成一次;内容不变时复用,不重复调用模型。
- 未解锁的付费章节不向读者显示导读;费用可由作者或站点承担(管理员设置);每月生成次数为权益,可由会员/等级提升。
- 书籍设置新增「AI 翻译」:选择目标语言,AI 先翻译目录并按原书结构建好全部章节,再逐章翻译正文,生成与原书同一翻译分组的新译本(读者可在阅读页切换语言);译稿均为草稿,在写作台审阅后发布,每章保存翻译版本可回退。
- 支持术语表(按目标语言保存,统一专有名词译法)和整本书的翻译要求;代码块原样保留、不计字数。
- 进度实时显示(当前章节译文逐字出现),可暂停、继续,某章失败不影响其他章节,失败章节可重试;完成后站内通知。
- 原书修改或新增章节后,可一键「同步更新」,只翻译有变化的章节。
- 字数计入「每月翻译字数」(配置 AI 服务后即生效);「整本 AI 翻译」本身也是权益,可设为会员专享;每次调用都记入 AI 用量。
- 新增「AI 写作助手」插件(默认关闭):写作台工具栏或斜杠命令
/打开右侧助手,对选中的文字续写、润色、改写、扩写、精简,为章节生成大纲或摘要,也可填写自定义要求;可附加要求(如「语气正式一些」)。 - 结果在后台以流式接口生成并经 SSE 逐字显示(不轮询、不设超时,可随时停止);完成后对比原文,一键替换原文、插入到下方或插入到光标处,生成期间正文被修改时按原文重新定位。
- 「记录」页查看本书的全部结果,可再次插入、复制或删除;每条结果显示模型消耗。
- 每月使用次数为权益(默认 100 次,可在成长等级与会员方案中提升或设为 0 作为会员专享),同时受「每月 AI 用量」约束;每次调用都记入 AI 用量,可在「我的 AI 用量」查看。
- 创建时直接发布的章节此前不会通知关注者、也不给作者加成长经验,现在与先建草稿再发布一致。
- 「我的 AI 用量」与管理端「AI 用量」的每日用量柱状图不显示:柱子宽度为 0,已修复;用户页补充起止日期。
- 事件流(站内通知、问答进度、插件安装日志)改用 60 秒有效的短时凭证鉴权,登录令牌不再出现在 URL 中(避免进入代理与访问日志);凭证不能当作 API 令牌,前端在连接被拒时自动换新凭证重连。
- 审计日志的操作、资源类型、变更字段与系统对象,异步任务的类型全部支持多语言;筛选项改为服务端下发的实际取值,并有测试保证新增词汇必有中英文文案。
- 修复 MySQL 严格模式下成就评估(
last_evaluated_at)与登录锁定(locked_until)写入零时间报错;后者导致 MySQL 下登录锁定此前实际不生效。 - 「我的书籍」中已完成/已归档的书籍不再显示「继续写作」,改为「查看书籍」。
- 待补充
- 待补充
- 新增站点语言管理:可配置语言、文字方向、默认语言、回退链及界面/内容启用状态。
- 新增界面语言包草稿、发布、JSON 导入导出和 ICU 消息支持;Cookie/账号语言同步到服务端首屏。
- 成就改为按启用语言动态填写名称、说明和提示,旧中英文数据自动迁移;逐语言版本校验避免覆盖其他翻译,草稿不泄露到公开响应。
- 通用多语言字段组件支持复制及翻译空白字段,可供后续会员和等级模块复用。
- 管理员可默认关闭或启用成就模块,并配置公开陈列、解锁通知、用户隐藏权限和陈列数量。
- 新增 18 项阅读、创作、社区和账号白名单指标,支持 all/any 多条件、阈值、时间窗口、对象过滤、系列等级、稀有度与中英文文案。
- 成就图标支持 Font Awesome、栅格图片和安全净化 SVG;自动评估使用持久化去重事件与后台重算任务。
- 新增“我的成就”、公开主页成就陈列、人工授予与撤销、展示偏好、通知偏好和完整审计记录。
- 本地会话与配置:服务器地址、登录令牌改用本地 SQLite(
knowforge.db)保存;旧config.json首启自动迁移。 - 令牌桥:注入脚本同步 seed 令牌恢复登录态,并把 web 端登录/登出经 IPC 回写 SQLite(不改
app/web代码)。 - 多服务器:设置页支持保存多台服务器、一键切换与删除;托盘「切换服务器」保留列表。
- 应用内 GitHub OAuth:授权回调链留在 webview 内完成,桌面端可直接第三方登录;修正 dev/prod 下本地页与回环地址的导航判定。
- 我在读:跨书聚合进度页(已读/总章节、百分比、上次读到、继续阅读)。
- 数据概览:在读 / 已读完 / 累计已读章节 / 连续阅读天数。
- 精细进度:记录章节滚动位置以精确续读,累计每本阅读时长并在我在读页与书籍详情页展示。
- 进度管理:书籍详情页支持「标记读完」与「重置进度」。
- 每日目标与打卡日历:可配置每日目标(新读章节数),12 周活动热力图 + 当前/最长连续打卡。
- 作者分析:书籍分析页新增章节到达漏斗,直观呈现读者在哪一章流失。
- 待补充
KnowForge 全新版本:后端从 Node.js/Express/EJS/MySQL 重构为 Go + Next.js 双服务架构,附带桌面与 Android 客户端。与旧版不共享运行时,可通过 migrate-legacy 命令迁移历史数据。
- 服务端:Go + Gin + GORM,REST API(
/api/v1/*),JWT 认证 + bcrypt 密码散列,单文件二进制部署,在线升级(system:upgrade)。 - 多数据库:SQLite(默认零配置)/ MySQL / PostgreSQL,安装向导选择,GORM 幂等迁移。
- 前端:Next.js 14 + TypeScript + Tailwind,SSR standalone 部署;SEO 一等公民——公开页服务端渲染,动态 title/description/Open Graph/canonical/JSON-LD(WebSite/Book/Chapter/ProfilePage),动态
sitemap.xml与robots.txt。 - 安装门禁:未安装时 API 全部 503、页面强制 307 到
/install、SSR 再校验三层强制;本地data/config.json标记。 - CI/CD:GitHub Actions 质量门禁(go vet/test、tsc/vitest/next lint/build)→ dev 分支自动部署(原子切换 + 健康检查)→ tag 自动发布多架构 Release。
- 内容:书籍/章节树(多级、排序规则、章节前缀)、标签 many2many 与热门检索、草稿/发布/归档、评论(多级+权限)、点赞与收藏、阅读进度。
- 全文搜索:书籍标题/简介 + 章节标题/正文聚合检索(
search:read),登录可见私有内容。 - 第三方登录:GitHub OAuth(授权码流程、已验证邮箱自动关联、自动注册),凭据管理端配置。
- 站内通知:评论/回复、点赞/收藏、协作邀请、升级完成触发;SSE 实时推送 + 导航铃铛。
- 协作:书籍协作者 editor/viewer 角色,编辑权扩展与私有书共享,邀请通知。
- 邮件:SMTP/日志双驱动,找回密码一次性令牌(60 分钟、SHA-256 哈希、幂等申请)。
- 导入导出:书籍打包为 markdown zip(front-matter + 章节 + 图片)再导入还原,round-trip 无损验收。
- 存储驱动:上传支持本地磁盘与七牛云对象存储,管理端切换,七牛令牌自实现零依赖。
- 桌面(Tauri 2):macOS/Windows/Linux,服务器地址引导、连接探测回退、系统托盘、窗口状态记忆。
- Android(Kotlin + Compose):服务器配置、登录、书籍搜索、通知、书籍详情、Markdown 原生渲染、章节离线缓存。
go run ./cmd/migrate-legacy -legacy-dsn "user:pass@tcp(127.0.0.1:3306)/knowforge" [-dry-run]旧版 Node/MySQL 的用户(bcrypt 密码平移,原密码可直接登录)、书籍、章节树、第三方绑定、站点配置一次性迁入;唯一键冲突自动跳过,幂等可重跑。详见 docs/migrate-legacy.md。
完整兼容旧版语法::::tabs / :::grid / :::diff / :::katex / :::mermaid / [toc] / !btn / !tip / !switch / :icon: / 图片尺寸对齐 / 对齐表格 / GitHub issue 引用 / :::api。由 vitest 17 项断言守护(含 XSS 净化回归)。
所有端点声明 resource:action 语义权限(book:create、user:read、notification:read 等),角色映射 admin/user,归属校验在 handler 内完成。完整清单见 docs/api.md。