Repository navigation
v2.4.0
2image v2.4.0
本次更新让生成过程更可控、更安全:批量变体与生成队列新增随时停止能力;付费供应商默认不自动参与生成链,并新增日预算计费器防止意外消费;历史记录搜索升级为全文检索(支持英文关键词),长历史列表改为增量加载不再一次全部载入。同时修复了 ModelsLab 同步成功路径丢弃结果、主窗口导出功能失效等缺陷。
主要更新
生成任务可控性
- 批量变体与生成队列支持中途停止:变体网格与任务队列各自接入
CancellationToken,点击 ⏹ 停止按钮后当前正在生成的任务会在下一个网络等待点立即中断,状态标记为"已取消",不会占用后续任务。 - 翻译等待可中断:中文提示词的翻译限流等待改为 0.1 秒粒度的分段检查,停止任务后不会卡在翻译等待上。
付费消费防护
- 付费供应商默认不自动参与:新增
paid_auto_opt_in配置(默认关闭),付费/商业供应商仅在用户显式开启或手动选择时才会进入生成链,避免免费额度场景下意外调用付费接口。 - 日预算计费器:新增
paid_daily_budget_usd配置(默认 $2.00/天),按供应商维护单张估值表,当天消费达到预算后自动将付费供应商移出候选链并弹出阻断提示;消费记录按天分桶存储于本地spend.json,写入为原子操作。
历史记录与搜索
- 全文检索(FTS5):历史记录英文关键词搜索升级为 SQLite FTS5 全文索引,通过数据库触发器增量维护(插入/删除/修改自动同步),前缀匹配支持输入即搜;中文关键词自动回落到 LIKE 查询。
- 增量加载:侧边栏历史列表改用 keyset 分页,滚动到底部时增量加载下一页,不再一次性载入全部记录;对比选择器与导出功能同样接入分页读取。
可靠性与性能
- 异步日志写入:文件日志改为单写线程 + 有界队列(队满丢弃、永不阻塞 UI),新增
flush_logs()供退出前冲刷。 - 线程隔离网络会话:全部 23 个供应商文件迁移至 thread-local
requests.Session,消除多线程共享连接池的竞争。 - 路由 v3 全面接入生产:场景路由与供应商健康度(熔断/降级/延迟惩罚)共同决定生成顺序,付费供应商经 opt-in 与预算双重过滤;停止任务时异常立即传播,不再吞掉取消信号。
- 字体随安装包分发:构建期按锁定的 tag + SHA256 校验获取 JetBrains Mono 字体并打入安装包(PyInstaller
fonts目录),界面字体不再依赖运行时网络下载,且分发符合 OFL 许可。
缺陷修复
- 主窗口三处
NameError:补齐ImageViewerWindow/ConfigWizard导入,恢复被误删的导出(Export)方法体——修复点击导出崩溃。 - ModelsLab:同步 success 路径直接返回下载结果,修复结果被后续模型迭代覆盖导致"所有模型均失败"的假失败。
- 翻译隐私:文件日志不再落完整译文,仅记录长度与哈希前缀。
开发者可见
- CI 质量门升级:全树 ruff F821/E9 阻断、mypy 非阻塞检查、Python 3.11 + 3.12 双矩阵、i18n 完整性双门槛(131 键 × 3 语言)、硬编码文案棘轮基线(735 条存量)。
- 测试套件扩至 448 项:新增供应商契约测试(33+42 项)、预算计费器、取消令牌、FTS 搜索与分页回归套件;代码覆盖率 54% → 70%,覆盖率门槛锁定 68%。
下载与安装
- 安装包:下载
text2image_pro_v2.4.0.exe,运行后按向导安装。 - 便携版:下载
text2image_pro.exe,无需安装即可直接运行。 - 现有用户的配置和历史记录完全兼容,升级后无需任何手动操作。如需让付费供应商自动参与生成链,请在配置中开启
paid_auto_opt_in并按需调整paid_daily_budget_usd日预算。
验证
- 完整测试套件:448 项通过,0 失败(较 v2.3.1 新增 115 项)。
- 代码覆盖率 70%(覆盖率门槛 68%),全树静态检查零阻断。
完整变更:v2.3.1...v2.4.0