Skip to content

Releases: tioners/OpenFicM

OpenFicM 0.11.0

Choose a tag to compare

@tioners tioners released this 08 Oct 17:49

OpenFicM 0.11.0

新增:错误重试可配置、任务可取消、整库备份,以及十余处稳定性修复

本版实现 GitHub issue #4,并从一次全面代码审查中修掉了搜索、覆盖、导入、下载等链路上的多处隐患。

错误重试与超时:可配置(issue #4)

此前请求失败的重试次数、429 限流与 5xx 服务器错误的重试策略、超时后是否重发都是写死的,遇到网络不稳或供应商限流时只能干等。

现在“设置 → 连接”里新增:

  • 请求超时:单轮请求的等待上限(10 秒到 5 分钟可调)。
  • 请求失败重试次数:网络错误等一般失败的重试上限(1–5 次,默认 3)。
  • 服务器错误重试次数:5xx 错误的重试上限(1–3 次,默认 2)。
  • 限流重试次数:HTTP 429 的重试上限(1–3 次,默认 1)。
  • 超时后自动重发:默认关闭。开启后超时的请求会按上面次数重发;对计费供应商而言一次超时可能被计成多次调用,开启前请确认。

所有重试间隔沿用原有的指数退避;设置读取带 30 秒缓存,不会在每次请求时反复查库。

智能体任务:可取消、不再带入失败记录

  • 发送按钮在任务运行中变为红色的“停止”按钮,点一下立即中止本轮智能体(模型请求与工具调用链路上都已接入取消信号)。
  • 切换到其他作品时,旧作品的进行中任务自动中止,避免它继续写旧作品的章节。
  • 此前失败的任务消息仍会留在会话记录里,但不会再被当作上下文发给模型——避免模型把上次失败的工具调用当成范例模仿。
  • 长会话截取历史时,如果窗口起点落在 assistant 消息上会向前修剪到最近一条 user 消息,避免模型看到没有用户提问开头的“半截对话”。

章节搜索:中文按子串命中

全文检索表用的是 SQLite FTS5 的 unicode61 分词器,不为中文分词,所以“林雨晴”三个字搜“雨晴”搜不到。现在查询里只要含中文,就直接走 LIKE 子串匹配;纯英文查询仍走 FTS,且 FTS 查不到时回退到 LIKE,保证“作者觉得明明写过却搜不到”的情况不再出现。

章节与角色/世界书编辑:拒绝清空式误操作

  • write_chapter 与 edit_chapter 拒绝空白正文,从源头堵住“模型手滑把整章清空”的事故;如需删除整章,必须先与用户确认。
  • edit_chapter 覆盖前会先把当前已保存的正文快照一份草稿,再写入新内容,再快照新稿——即使中途出错也能从草稿里找回旧版本。
  • edit_character 拒绝把角色设定改成空白;edit_world_entry 拒绝把条目内容改成空白。

文风蒸馏:双击不再开出两个任务

“开始蒸馏”按钮此前只靠 store 状态判断任务是否已存在,从点击到状态落库之间有一个窗口期,快速双击会同时起两个蒸馏任务。现在改用同步的 AbortController 互斥:第一下点击立刻占位,第二下点击直接返回。

EPUB 参考书:缺章拒绝导入

部分 EPUB 的 manifest(文件清单)与 spine(阅读顺序)不一致,解析失败的章节此前会被静默跳过,导致参考书缺章但用户不知情。现在只要有一个章节解析失败,整个导入会被拒绝并明确提示“缺 N 章,为避免得到缺章的参考书已取消导入”。

备份:一键导出整库,删作品前可先备份

  • 设置 → 通用 → 新增“导出全部数据备份”:把 SQLite 数据库(作品、章节、角色、世界书、会话)与文风库文件打成一个 zip,经系统分享面板保存到任意位置。
  • 写作页删除作品的确认弹层里新增“先备份再删除”选项,点一下先触发上面那个备份流程,再回到删除确认。

Hugging Face 模型下载:主站失败自动走镜像

模型下载此前只连 huggingface.co,国内网络环境下经常失败。现在下载失败会自动换 hf-mirror.com 重试,两个源共用同一份 SHA-256 校验,下到一半切换源不会留下半截文件。

版本对齐

app.json、package.json 与 android/app/build.gradle 三处版本号此前不一致(0.10.3 / 0.10.3 / 21 与 10),本版统一为 0.11.0 / versionCode 22。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 22,minSdk 28,仅 arm64-v8a。
  • 不涉及数据结构与迁移,升级不影响任何本地作品数据。

OpenFicM 0.10.3

Choose a tag to compare

@tioners tioners released this 06 Oct 14:00

OpenFicM 0.10.3

修复:长内容弹层的“保存”按钮够不到,以及助手对话页频繁跳回顶部

本版修复 GitHub issue #2 与 #3,并一并修掉四处同类隐患。

世界书、角色编辑:内容变长后保存按钮消失(issue #2)

弹层只有 maxHeight 时,内部滚动容器默认不收缩(flexShrink 为 0)。条目内容超过弹层高度后会被顶出可视区,且容器自身的可滚动范围为零——“保存”按钮既看不到也点不到。

给滚动容器加 flexShrink: 1 后,长内容在弹层内正常滚动,按钮始终可达。笔记页与文风库此前已按同样方式修复,本版补齐世界书与角色两页。

助手对话页:多处滚动重置到顶部(issue #2、#3)

根因有两个:

  • 助手页每次聚焦、以及任务完成后的数据刷新都会进入整屏 loading,把消息列表整体卸载重建,滚动位置归零。
  • 进入对话页时没有定位到最新消息,发送消息后也没有主动滚到底部。

修复后的行为:

  • 进入对话(含切换作品、切换会话)自动定位到最新消息。
  • 智能体运行中与任务完成时,仅在用户已停留底部(距底 120px 内)时跟随滚动;翻阅历史时不会被打断。
  • 切到其他标签页再回来,保留原来的滚动位置。
  • 新增“回到最新消息”悬浮按钮:不在底部时出现在列表右下角,点一下回到底部。

一并修复的同类隐患

  • 结构化提问弹层:问题较多时“提交回答”按钮会被顶出屏幕。
  • 助手页的会话列表与模型选择列表:条目较多时无法滚动。
  • 设置页的模型选择列表、供应商编辑与模型编辑弹层:内容超出弹层高度时无法滚动。
  • 写作页的“作品目录”弹层:章节较多时无法滚动。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 21,minSdk 28,仅 arm64-v8a。
  • 不涉及数据结构与迁移,升级不影响任何本地作品数据。

OpenFicM 0.10.2

Choose a tag to compare

@tioners tioners released this 01 Oct 18:51

OpenFicM 0.10.2

修复:删掉参考书后,它的参考文风没有被一起删掉

症状是文风选择器里出现多条同名参考文风,其中几条的来源写着“参考书已删除”。它们不是同一本书的 V1/V2/V3,而是失去了参考书的孤儿文风——参考书删了,文风却留在了库里。

根因在数据库层:style_profiles.source_id 声明了 ON DELETE CASCADE,但 expo-sqlite 的 withExclusiveTransactionAsync 会新开一条连接执行事务(useNewConnection: true),而 PRAGMA foreign_keys 是连接级开关、SQLite 默认为关闭,应用只在主连接上打开过它。于是独占事务里的 ON DELETE CASCADE 与 ON DELETE SET NULL 全部不生效:

操作 本应发生 实际发生
删除参考书 它的参考文风一并删除 文风留下成为孤儿,且界面上再也删不掉
删除章节 草稿删除,笔记上浮到卷 草稿与笔记的 chapter_id 都悬空
删除卷 章节删除,笔记上浮到整书 章节与笔记都留下
删除作品 卷、章节、草稿、笔记、角色、世界书、对话、向量块、作者文风全部删除 全部留下成为孤儿

本版处理这个根因带来的全部后果:

  • 启动时做一次幂等的一致性修复:清掉孤儿文风、章节、草稿、笔记、角色、世界书条目、对话、消息、向量块;笔记按设计上浮(章没了归到卷、卷没了归到整书);悬空引用置空;“明确不使用文风”的哨兵值保留,不会因此重新弹出选文风询问。
  • 依赖级联的删除改为显式删除,不再依赖外键开关:删参考书、删作品、删卷、删章节、删文风都在同一事务里显式处理各自的子表。
  • 清理顺序为先父级、后按“父不存在”清理子级,一次启动即可收敛,不留二级孤儿。
  • 设计与交接文档记录这条陷阱:独占事务里外键不生效,级联关系必须显式写出。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 20,minSdk 28,仅 arm64-v8a。
  • 升级后首次启动会清理历史孤儿数据(父记录已不存在的行);正常数据、参考文风指南文本、笔记内容、对话记录都不受影响。
  • 已在 0.10.1 里加的文风选择器来源/轮次/预览提示保留,用于继续辨认同名参考文风。

OpenFicM 0.10.1

Choose a tag to compare

@tioners tioners released this 01 Oct 18:37

OpenFicM 0.10.1

修复:文风选择器里出现多条同名文风,却看不出区别

写作页和助手页的文风选择器此前只显示名字和一句“参考小说文风”,所以:

  • 同一本书导入过多次(文件内容不同才会各自入库)时,会出现多条同名参考文风,看起来像没合并干净的 V1/V2/V3;
  • 选择器里看不到文风内容,没法判断这几条到底是不是同一份。

需要说明的是:同名条目不是同一本书的多个版本。参考文风按参考书保存,每本书只有一份,版本合并已在 0.9.0 完成;而参考书按文件内容判重,同一个文件重复导入会被拒绝,所以能并存的三条只能是三份内容不同的文件。

本版把两个页面的选择器收敛成一个组件,并把“看不出区别”这件事修掉:

  • 每行显示:来源文件的格式与字数、这本书的蒸馏轮次与覆盖进度(第 N 轮 · 覆盖 x/y 章)、以及指南开头的预览。
  • 每行右侧新增“全文”,可以只读预览这份文风的完整内容,再决定用哪一份。
  • 顶部在有同名文风时给出说明:同名来自多次导入的不同文件,看字数与轮次区分,不用的到“文风书库 → 参考小说”删除对应参考书。
  • 文风书库的参考小说列表也会标出“同名 N 份”,并在列表上方解释来源;参考文风详情页补上它所属参考书的格式与字数。
  • 写作页与助手页的选择器行为保持一致(此前一处是 ScrollView、一处是 FlatList,样式与信息各不相同)。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 19,minSdk 28,仅 arm64-v8a。
  • 不改数据库结构与任何已保存数据;已有参考文风、作者文风、当前选择、蒸馏进度都不受影响。

OpenFicM 0.10.0

Choose a tag to compare

@tioners tioners released this 01 Oct 18:06

OpenFicM 0.10.0

文风蒸馏改成后台任务

此前点“蒸馏文风”之后整个参考书窗口都被锁住:关闭按钮点了没反应、点遮罩也关不掉、按钮全部变灰,一轮 5 次模型请求跑完之前什么都做不了。蒸馏本来就是异步的,锁住界面只是实现方式的问题。

  • 现在点开始即可关掉窗口、离开文风书库去写正文或翻别的作品,任务在后台继续。
  • 文风书库顶部横幅显示“正在蒸馏《书名》”和实时进度,右侧可随时取消;跑完提示第几轮、覆盖到第几章,关掉即收起。
  • 取消会立刻中断在途请求;已分析完的批次备忘录留在断点里,再点“继续蒸馏”会从断点接着跑,不重复已完成的批次。
  • 同一时间只跑一个蒸馏任务,避免几个任务一起抢同一套限流额度。
  • 说明:这是应用内后台。整个 App 被切到后台或被系统回收时,Android 不保证继续;回到应用后再点“继续蒸馏”即可接上。

模型与供应商

  • OpenAI 新旧接口可选:OpenAI 兼容供应商现在可以在 Chat Completions(/chat/completions,兼容性最好)与 Responses(/responses,OpenAI 新接口)之间选择,按供应商保存;Gemini 与 Anthropic 仍各走自己的协议。中转站大多只实现旧接口,选错的典型表现是请求直接 404。
  • 已有供应商可编辑:显示名称、Base URL、接口都能改,API Key 留空表示保持原值——切换接口不再需要删掉供应商重建,也不会连带丢掉它下面的模型。
  • 获取模型后一步入库:模型列表里点一条就直接加进该供应商,窗口不关闭、可连续添加,已添加的标成“已添加”;参数取“添加模型”区域的温度与最大输出 Token,没填就用默认值。同一供应商下相同模型 ID 不会重复添加。
  • 单个模型可删可改:模型行右侧可以单独删除该模型(默认模型指向它时清空这个选择,供应商与其它模型不受影响),也可以单独调整它的名称、温度与最大输出 Token。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 18,minSdk 28,仅 arm64-v8a。
  • 数据库新增 providers.api_mode 列,旧供应商默认按 Chat Completions 调用,行为与升级前一致。
  • 已保存的供应商、模型、默认模型选择、参考文风与蒸馏覆盖进度都保持不变。

OpenFicM 0.9.0

Choose a tag to compare

@tioners tioners released this 01 Oct 17:33

OpenFicM 0.9.0

改进:参考文风改成一份持续演进的文风文件

此前每蒸馏一轮都会新增一个版本文件。蒸到第五轮,《书名》参考文风就会以 V1、V2、V3、V4、V5 并列在文风书库里;而合并逻辑本来就是"在上一版基础上并入新证据",也就是说只有最新一版有效,其余全是中间态。既看不出该用哪一份,也让选择、删除和跨作品复用变得啰嗦。

本版把参考文风改成每本参考书一份:继续蒸馏直接改写这一份,指南在多轮样本上持续变准,反复蒸馏得到的是同一份越来越完善的文风,而不是一堆版本。

  • 蒸馏(首轮与继续蒸馏)和 Agent 的 save_reference_style_profile 都改为就地更新同一份参考文风。
  • 升级后首次启动自动合并已有的多版本:保留最新指南、删除中间版本;作品原先选中的版本自动改指保留的那一份,不会静默退回"不使用文风"。
  • 章节草稿记录的"当时用了哪份文风"一并改指保留的那一份,不会因为外键置空而丢失记录。
  • 参考文风不再显示版本号——只剩一份时 V 号没有信息量;作者文风仍按版本累积,方便回看个人风格的演进。
  • "重新开始"会用新结果替换现有参考文风,改为二次确认后再执行。
  • 文风书库、助手、写作页的文风名称统一走同一处格式化逻辑,各页面显示一致。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 17,minSdk 28,仅 arm64-v8a。
  • 合并只删除同一本书的中间版本,指南内容取最新一版,不会丢文本;作者文风版本完全不受影响。
  • 蒸馏覆盖进度(第几轮、覆盖到第几章)沿用原有记录,升级后继续蒸馏仍从上次位置往后推进。

OpenFicM 0.8.1

Choose a tag to compare

@tioners tioners released this 01 Oct 03:18

OpenFicM 0.8.1

修复:开放笔记权限后 Agent 仍被拒绝调用笔记工具

0.8.0 加入笔记后,"设置 → 工具权限"里可以给读取笔记、创建笔记、编辑笔记、移动笔记、删除笔记单独授权,但授权之后助手调用这些工具依旧被拒,笔记功能对 Agent 等于不可用。

问题不在权限系统。移动端把内容包 resources/openficm-agent-catalog.json 里的 toolNames 当作唯一白名单:它既决定哪些工具声明给模型,也决定运行时允许执行哪些调用。而这份目录一直是 1a848fb 生成的版本,那时笔记功能还不存在,8 个内置智能体的 toolNames 里没有任何笔记工具。于是无论权限设成"允许"还是"每次询问",工具都不在可用列表里——授权再细也没有作用。

  • 生成脚本按后端的 note_read / note_write 工具类别补齐白名单:全部内置智能体可读笔记,build / composer / writer / actor 可写笔记,与桌面端 DEFAULT_AGENT_DEFINITIONS 的授权保持一致。
  • 重新生成 Agent 目录并把固定提交升到补齐后的提交,首次安装和"一键拉取运行资源"都会拿到新目录。
  • 生成目录时固定 LF 换行:移动端按下载文本校验 SHA-256,换行风格不应随开发机的 Git 设置变化。
  • 同一个固定提交也提供 Lorn 移动端目录,该文件的校验值同步到仓库现有版本。

各智能体的笔记工具

智能体 笔记工具
build、composer、writer、actor 读取 + 写入
plan、explore、auditor、reviewer 仅读取

写入类笔记工具默认权限仍是"每次询问",可在"设置 → 工具权限"改为"允许"。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 16,minSdk 28,仅打包 arm64-v8a。
  • 已装旧 Agent 目录的设备会在启动资源检查里看到"部分运行资源尚未安装",点"一键拉取并预热"重新下载目录即可;笔记、章节、角色、世界书等本地数据不受影响。
  • 自定义智能体不受影响:它们的工具白名单本来就是全部工具。

OpenFicM 0.8.0

Choose a tag to compare

@tioners tioners released this 21 Aug 19:00

OpenFicM 0.8.0

新增:三级笔记

移动端此前有章节、角色、世界书,唯独没有放大纲的地方。要存"三卷剧情走向""伏笔清单""人物弧光规划",只能塞进世界书——而世界书会被一致性检查扫描,系统提示词也要求 Agent 把其中的内容当作已确认设定。把还没写的剧情存进去,Agent 会把它当成既定事实,这是语义污染,不是凑合的问题。

本版新增笔记,按作品已有的结构分三级归属:

层级 典型内容
整书 全书大纲、主线设定、人物弧光总规划、禁忌清单
卷 本卷剧情走向、本卷要埋或要收的伏笔
章 这一章要达成什么、留什么钩子、临时备忘

三级复用作品已有的卷章结构,不引入需要用户自己维护的第二套目录。上游桌面端用的是自由路径分类(/设定/角色),在手机上多级路径导航体验差,且与作品结构脱节。

界面

  • 书架顶部新增"笔记"入口,与角色、世界书并列。
  • 笔记页按整书、各卷、各章分组,每组标题右侧可直接在该层级新建。
  • 每条笔记可编辑、删除,或通过移动按钮改变归属层级——把只影响单章的备忘提升为整卷适用是常见操作。

删除章节或卷时

会先统计该范围内有多少条笔记,弹窗让你选"保留笔记"或"一并删除"。选择保留时笔记自动上浮:删章节则归到所在卷,删卷则归���整书级。数据库外键用 ON DELETE SET NULL 而不是 CASCADE,笔记不会静默消失。

没有笔记时保持原来的两按钮确认框,不增加多余步骤。

Agent 工具

新增 6 个工具,权限可在"设置 → 工具权限"单独调整:

工具 权限类别
list_notes 只读
read_note 只读
write_note 写入
edit_note 写入
move_note 写入
delete_note 写入

系统提示词里只列出笔记标题和 ID,不带正文,Agent 需要内容时再调 read_note——和技能的处理方式一致(提示词列技能名,用到才加载完整指令)。全量注入正文会让每次请求都变重,与 0.7.4 起压低请求体量的方向冲突。标题超过 40 条时提示 Agent 调用 list_notes 查看完整列表。

提示词同时明确告知 Agent:大纲、剧情走向、伏笔规划属于笔记,不要写进世界书。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 15,minSdk 28,仅 arm64-v8a。
  • 新增 notes 表,建表语句是 CREATE TABLE IF NOT EXISTS,升级时自动创建,不影响已有数据。
  • 未搬运桌面端的笔记分类树(create_note_category 等 4 个工具)。移动端笔记按卷章归属,不需要独立分类;需要更细的组织可用标题前缀。

OpenFicM 0.7.7

Choose a tag to compare

@tioners tioners released this 21 Aug 16:57

OpenFicM 0.7.7

修复:底部弹层里的滚动时灵时不灵

用户实测发现文风指南预览"往下拉没反应",但快速上滑有时又能滚。0.7.6 给 ScrollView 补的 flexShrink 解决了内容被裁剪的问题,却没解决滚动本身被抢走。

根因在所有底部弹层共用的一段写法:

<Pressable style={styles.modalBackdrop} onPress={close}>
  <View style={styles.sheet} onStartShouldSetResponder={() => true}>

外层 Pressable 负责"点击空白处关闭",内层 onStartShouldSetResponder ��来阻止点击弹层内容时误触关闭。问题是后者会在触摸开始的瞬间就把 JS responder 抢到手,而内部 ScrollView 要等到手指移动才争取滚动。快速滑动时原生滚动抢先拦截所以能滚,稍慢一点 JS responder 先设上,滚动就被挡住——表现就是同一个页面时灵时不灵。

现在改为遮罩与内容平级、遮罩铺满全屏并排在内容之前:内容天然盖在遮罩上,点内容不会命中遮罩,点内容之外才关闭。不再需要 onStartShouldSetResponder,responder 冲突随之消失。

这段写法在 4 个页面里有 10 处完全相同的副本,全部收敛到 components/ui.tsx 的 SheetBackdrop 组件,因此以下弹层的滚动和手势都一并修好:

  • 文风书库:参考书详情、文风指南预览
  • 助手:会话列表、模型选择、文风选择
  • 写作页:文风选择、卷章目录、导出选项、卷章操作
  • 设置:模型列表

角色库、世界书和书架的弹层用的是另一套 KeyboardAvoidingView 写法,没有这个问题,未作改动。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 14,minSdk 28,仅 arm64-v8a。
  • 纯界面手势修复,不涉及数据、模型请求和蒸馏逻辑。

OpenFicM 0.7.6

Choose a tag to compare

@tioners tioners released this 21 Aug 15:45

OpenFicM 0.7.6

本版集中修复三个用户实测发现的问题,并补上三处易用性改进。

修复:文风蒸馏卡在“正在汇总文风指南”

现象是走到汇总步骤后固定报错“模型返回的文风指南不能为空”,两台设备都能复现。

真实原因不是模型没返回,而是输出被截断,但代码把截断当成了空。OpenAI 兼容分支此前完全没有检查 finish_reason,模型因为撞上 max_tokens 而返回 content: null 时被静默降级成空串。思考型模型的推理 Token 同样计入这个上限,而默认上限只有 4,096——批次分析输出短能过,汇总要输出一份完整指南就会在正文出来前把预算耗尽。

  • 三个供应商分支现在都检查截断状态(OpenAI 的 finish_reason=length、Gemini 的 finishReason=MAX_TOKENS、Anthropic 的 stop_reason=max_tokens),并直接告诉你该去哪里调高上限,而不是报“内容为空”。
  • 蒸馏的两个步骤有了独立的输出预算下限:批次分析 8,192,汇总 16,384。这个下限不会低于你自己配置的上限,只是保证结构上需要长输出的步骤不会被默认值卡死。
  • 供应商返回非 JSON、返回非对象 JSON 或空响应体时,报错会带上实际返回内容的前 300 个字符。此前这些情况只报一句“无法解析的非 JSON 响应”,把唯一的诊断线索丢掉了。

修复:换模型后重试仍然打旧模型

助手里模型选到失效的那个之后,即使切回可用模型,点“重试”或重新提问仍然报同样的错,只有新建对话才正常。

原因是重试优先使用失败消息里记录的模型,用户当前的选择被忽略。现在反过来:当前选中的模型优先,消息里记录的只在当前没有可用模型时作兜底。

修复:文风指南预览看不全

文风详情面板的 ScrollView 缺少收缩约束,父层只有 maxHeight,内容超出后会被裁掉且滚不动。参考书详情面板是同样的写法,一并修掉。

改进

  • 参考书详情页显示蒸馏实际使用的模型名。蒸馏一直跟随“设置 → 模型与供应商”里的默认模型,此前界面上看不出是哪一个。
  • 获取模型列表后新增“查找模型”过滤框,按名称或模型 ID 做子串匹配。中转站动辄返回几百个模型,翻找很费时。
  • “设置 → 高级”新增应用版本检查,可查询本项目 GitHub 最新 Release 并跳转下载。版本号按段做数值比较,不会把 0.10.0 判成小于 0.7.5。

兼容性

  • 沿用 0.7.0 起的正式签名证书,可直接覆盖升级。
  • applicationId com.openfic.mobile,versionCode 13,minSdk 28,仅 arm64-v8a。
  • 未新增任何运行时依赖;版本号读自 app.json,与构建配置同源。