Skip to content

Releases: wbsjl321/ai-image-workbench

Release v1.1.5

Choose a tag to compare

@wbsjl321 wbsjl321 released this 13 Oct 12:15

🎯 修复内容

Fix electron-builder.yml files whitelist missing payCashierReturn.js (#169)

  • 现象: 安装打开后弹出 "Cannot find module './payCashierReturn'"
  • 真因: electron-builder.yml 的 files: 块是白名单机制,漏写任何同目录 require 模块都会导致运行时找不到
  • 修复:
    • ✅ 补上 electron/payCashierReturn.js 到 files 列表
    • ✅ 新增 guards test (scripts/electron-packaged-files.test.mjs) 在提交时拦截配置遗漏
  • 验证: 门禁全绿通过,重新打包测试确认应用可正常启动

Changes:

  • electron-builder.yml: Add electron/payCashierReturn.js to files whitelist
  • scripts/electron-packaged-files.test.mjs: New guard test for main process modules

🏗️ Build details: 79MB, NSIS one-click=false, per-user install | Windows x64

v1.1.4

Choose a tag to compare

@wbsjl321 wbsjl321 released this 13 Oct 03:33

桌面版 1.1.4(Windows x64 安装包)。自 v1.1.3 起 166 个提交。门禁:npm run verify 全绿 —— tsc 0 错 / eslint 0 错 78 警 / 主仓 284 files 3023 tests / 画布 112 files 798 tests / next build 与画布构建通过 / 模块边界 744 files。

网关分组与钥匙

  • 令牌从「一把走到底」改成按分组存的钥匙串:用哪一把由这次要调的模型决定,登录时给每个可用分组各备一把
  • 「这个账号能把令牌绑到哪些组」从猜变成问网关;目录与反推按账号真实分组筛,AAAgpt / grok 组里的模型第一次进得了列表
  • 反推提示词可以选分组了;「自动」=倍率最低那一组,并把生效的组写进标签
  • 能力组约定优先于模型名:AAA生图=图片、AAA视频=视频、其余组=文本;无限制-Qwen-2.1NEW 不再被名字带偏成文本模型
  • 建令牌的请求体按上游结构体来(model_limits 是字符串),签发被拒时把网关那句原话搬到界面上,不再只说「去确认一下」

标价与模型目录

  • 单价跟网关的「表达式计费」走:fixed(x)=每张、u("seconds")*x=每秒,不再读留在旧值上的 model_price
  • 画布价签与生图工作台同一口径,并加一条守卫:同一份 payload 两处必须算出同一个价;价签缓存按 TTL 重拉,不再一次拉取终身有效
  • 模型判据加「网关端点类型优先」:新上架的生图模型不用回来改代码
  • 画布 AI 文本改成左边选组、右边选模型;Agent 与画布 Agent 的规划模型按分组分段并标出倍率

登录与会话

  • 网关 rc43 改发 access token,登录契约跟上新形态;Cloudflare 人机校验开着也登得上(Turnstile 已接)
  • 反复掉登录的根因收口:会话表落盘改读盘合并、作废留墓碑;会话答复绑住它校验的那枚令牌,迟到的旧 401 不再删掉刚登录上的新令牌
  • 会话改成「闲置 7 天」才失效,不再每登录一次就定时掉线;读不出会话不再冒充过期,会回 503 并说清原因
  • 账号显示名跟网关卡齐(预置的 Root User 不再顶在界面上),改名真落盘

充值

  • 应用内二维码收银台落地:服务端下单、应用内画码、轮询查单到账,不再跳系统浏览器
  • 「缺少支付参数」与「每次打开充值都要重登」两处真因修掉:收银表单的 POST 不再被换成裸地址 GET,注入的 refresh 取探活之后那一枚
  • 付完款用余额当回执自动收起;金额可自定义、默认不预选;按钮文案改成「充值」

生图工作台

  • 一条记录=多个任务:第一条图并回来不再把整条判成已完成;逐图勾选改用图自己的身份,删过一张之后不再删错图
  • 画布选 16:9 + 1K 到线上什么都没剩下的真因修掉:出口闸不再删掉像素 size;画布默认分辨率改 1K
  • 并发上限 3 → 10;生成中不再靠「没见过这条任务」硬撑,任务查不到就回落读盘、404 当场收场
  • 「清理丢失」不再凭 <img> 报错定罪,误移出的图能找回;参考图补水把「这次读不到」和「文件真没了」分开数
  • 一条记录里的逐图明细取消张数封顶;记录档只在内容真变化时才整档重传

视频工作台

  • completed 之后补问 tasks/{id}/artifacts 才拿得到成片地址;上游 5xx 不再压成一句「暂时不可用」,状态码和原话都带出来
  • 成片原件归生成记录,素材库里那份从此只是副本;下载不再交给系统浏览器(也不暴露上游地址)
  • 自定义宽高原样发给渠道;Seedance 时长上限按版本算
  • 结果卡按提交先后排、在飞任务浮到最前并走秒、每格给详情、支持「下载选中」;素材库终于删得掉视频素材
  • 视频记录册 60 条上限不再静默挤掉老记录:落进归档,侧栏能翻出来也能移回

动图

  • 左侧「生成记录」侧栏对齐生图工作台(搜索 / 批量删 / 改名 / 归档 / 兜底),一条记录=一次网格
  • 生成中切模块不再丢在飞的网格,入册用的是提交那一拍的参数;手动微调切走会写回活动记录
  • 48px 真缩略图链路;单格宽高超了上限要说得出来,不再静默夹;「无缝循环」与「循环播放」两个开关分开说明

Agent

  • 切模块、切会话都不再打断在飞那一轮:run 台账按会话分,规划/执行旗子也按会话记账
  • 对话不再切了就丢(防抖被流式帧喂不饱、卸载只清定时器两处都修);半截回复不再显示成空气泡
  • 上下文改成按 50k token 额度装配,不再每轮切 200 字、也不把模型自己说过的话丢掉;回溯深度 8 → 50
  • 那句「No token」的真相修掉:签发令牌的链路走续签通道
  • 角色卡按会话独立、滚动位置按会话记住、工具条挪到输入框下方、弹层不再被裁一半;产物按自己的比例摆,不再被 4:3 的框裁掉

画布

  • 「项目保存坏」的真因修掉:rename 撞 EPERM 时重试发布,并在打开时把留在 .tmp 里的最新正文补发布出去
  • 服务端拒绝与素材没落盘都要有可见回执,不再悄悄把 base64 兜进项目 JSON
  • 素材库对齐生图工作台那一套(分类含动图 / Agent,日间模式白底),拖视频文件进画布不再没反应
  • 图片池的读口径只认一份并保住位置,打开旧档不再串图
  • 画布库留着应用外壳,打开项目才整屏;侧边功能条挪到底部

提示词库与素材

  • 「我的收藏」与「我的提示词」融合成一份(以服务端为准),渠道统一进一张注册表并有门禁守着
  • 保存的提示词真能在库里查到(写的和读的终于是同一张表);存入素材时把配图一起写进去,收藏可以给一条提示词配本机图
  • 反推历史上限 20 → 60 并加字节预算,被挤掉几条要说得出来

界面与外壳

  • 「界面语言」现在管整个应用(外壳与画布共用),顶部导航整文件过了 i18n
  • 无边框标题栏定稿:30px 无缝条、按钮只在右端、logo 留在侧栏
  • 更新链收成一条并画成侧栏圆环(下载进度 → 点环即装)
  • 导航上给「这个模块还在跑」的记号;未登录要在动手前说破,不再让人白点一次

数据与安全

  • 两处 P0 数据丢失修掉:加密钥匙读不出来时不再重新生成并覆盖;记录档读不出来不再被当成「权威空档」(生图 / 动图 / 视频三处一起收口)
  • P0 越权修掉:归属 sidecar 读不出来时 fail-closed(不给看,更不给删)
  • 写盘收口:11 处自己拼 tmp + rename 的写法全部改走带重试的原子写,并加守卫防回潮;令牌明文全仓只留一处写

这一版还没验到的

  • 自动更新端到端(旧客户端真的升到 1.1.4)仍未真跑过;解压即用的 win-unpacked 版 100% 不会自动装
  • 画布与工作台价签的真机回归:打包这台机器此刻连不上网关(/api/pricing 直连与走代理都超时),装好后打开画布确认那行显示的是 $0.05/张 才算收口

v1.1.3

Choose a tag to compare

@wbsjl321 wbsjl321 released this 09 Oct 08:50

桌面版 1.1.3(Windows x64 安装包)。自 v1.1.2 起 118 个提交。门禁:tsc 0 错 / eslint 0 错 82 警 / 模块边界 649 文件通过 / vitest 198 文件 2015 用例通过。

生图工作台

  • 结果区统一按生成时间正序(先出的在前),切回记录不再翻转,归档视图同一口径
  • 「质量」不再被 glow/yellow 这类颜色词抢成「低」:按短语匹配,且不覆盖你手动选的档
  • 并发上限 3 → 10:一次选 10 张就 10 张同时发,第 11 张起才显示「排队等待空位」
  • 「模型排队处理中」改成「模型处理中」:等待计时不能冒充上游排队状态
  • 「存为素材」真的上传本机图片字节并逐次回执(成功 / 已在库 / 失败原因)
  • 表单草稿:没提交过的参数选择也会存,重启不再被上次提交冲掉,提交也不再清草稿
  • 记录落盘留最新 200 张且不再砍掉刚生成完的几张;开机不再反复弹「已找到 N 个任务的生成结果」
  • 遮罩图上传入口从生图工作台撤掉:局部重绘统一在画布做(选中图片 → 编辑 → 重绘),参考图区给了引导语
  • 重启后回到最近一次生成的表单;重新生成回填那次真实用过的宽高;分辨率显示实测到货像素,与请求不一致时两个数一起给
  • 「请求超时」不再替模型背锅:连接层失败说清没发出、不扣钱

动图工作台

  • 新增「生成记录」侧栏:网格图一生成就入册,不导出 GIF 也不会消失;搜索、勾选批量删、双击改名对齐生图工作台
  • 合成不再默认进素材库:改成显式「保存到素材库」+「撤销入库」,撤销留墓碑不再被合并并回来
  • 切记录/切模块后合成过的 GIF 还在;预览限高、帧序条挪到输出设置下面;「未导出」改「未入库」
  • 「重置」回到自动识别那份切割,手填被夹限时当场说明;改单格宽/高真的跟着裁
  • 记录补 status 与「上次导出为什么没成」,列表改按生成时间排

画布

  • 空画布不再覆盖已有项目(PUT 失败静默降级到会话存储那条链修掉);并发保存不再撞临时文件,兜底横幅能自愈
  • 模型目录拉取失败加冷却:网关一挂不再是 120 次/秒的死循环
  • 侧栏画布库与提示词库高亮互斥;点提示词库不再有时停在画布

尺寸与上游口径

  • 出站尺寸闸把档位令牌折成像素;gpt-image-2 按上游词表发 aspect_ratio + size_tier,grok 2.x 走白名单像素,两套口径不互相污染
  • 请求只带比例、缺 size 时按比例补一个像素值,比例不再交给上游决定;渠道可用 imageSizeContract 显式声明
  • 画布日志不再把详情压成 [object Object],比例告警改成带事实的结论

提示词库

  • 统一到一张注册表(内置社区精选成为一条可关的源),整库同步按 kind 分派;渠道没先进注册表就 CI 红
  • 源停用后不再回吐旧整库;取数失败的源沿用上一次存量,去重改全文比对;「哪个源没刷新」说到界面上
  • 401 与空列表分开答;填完按回车就提交;封面按源图比例铺开

视频工作台

  • 记录改成容器:手动点开的那条装得下不同提示词、不同参数的任务结果,生成中也能继续提交
  • 视频完成后自动落本机素材库,界面不再出现上游中转地址
  • 提交前先算一次预扣费,余额不够当场拦下;价签改按秒口径,预估乘上实际时长
  • 上游鉴权拒绝不再糊成一句:401 与 403 分开说并留下原话;额度不足单独说清并搬出余额与所需金额

设置与全局

  • 「界面语言」现在真的管整个应用(外壳与画布共用同一份语言设置)
  • 「画布」tab 改「通用」,外观归整个应用;「打开画布高级设置」在任何模块点了都跳过去并替你开上面板
  • 挂上「本机图片存储」统计与清理入口(服务端早就有实现,界面上零入口)
  • 窄屏汉堡菜单补上 Agent 模式入口

数据不丢与安全(一轮分层体检)

  • 五处「静默丢用户东西」:坏配置、归档溢出、旧快照覆盖、上限不一致、墓碑不落盘
  • 四处「钱花了拿不到东西」:R2 签名、备份谎报成功、多张整单作废、SSRF 重定向绕过
  • 三处并发竞态与状态谎报:流式规划写错会话、双连点把 A 的切割写进 B、取消没送出去
  • 三处「查无此图」:视频 taskId 落地、动图孤儿网格补扫、孤儿缩略图回收
  • v1.1.2 遗留的更新装不上(同名附属进程把安装器推进「无法关闭」死循环)已修
  • 令牌分组按能力挑:号主走自用、其余账号走共享组,不再写死共享组

Agent

  • 会话列表与运行历史各加一个搜索框
  • 规划器兜底链按本会话可路由的文本模型筛,不再让下游先白吃一次失败

体积

  • 安装包 82.1 MB → 82.3 MB(+134 KB)

安装 / 升级:下载 ai-image-workbench-1.1.3-setup.exe 运行即可,数据目录 %APPDATA%\gpt-image-playground 不变,升级不需要重新登录。

v1.1.2

Choose a tag to compare

@wbsjl321 wbsjl321 released this 01 Oct 05:48

桌面版 1.1.2(Windows x64 安装包)。自 v1.1.1 起 30 个提交,门禁:tsc 0 错 / eslint 0 错 / 模块边界 615 文件通过 / vitest 152 文件 1431 用例通过。

生图工作台

  • 逐图操作只作用当前可见记录:全选 / 删除选中 / 下载选中 / 清理丢失与单图删除、失败任务删除一律按记录作用域,勾选切记录即失效;令牌未到手时的 401 不再把健康的图标成「丢失图片」
  • 结果区多选不再要求滑动:吸顶工具条 + 底部悬浮操作条,并修掉工具条压住顶栏的遮挡
  • 下载可选保存位置:设置页开关(默认开)+ 主进程弹系统保存框,落盘结果分三种如实回执
  • 多选下载可选「存到文件夹」或「打包 ZIP」
  • 结果网格瓦片下限 300→220 且图框随视口收高:1920×1080 笔记本从 1 列变 2 列
  • 图片文件大小徽章恢复显示;「参考图」点击不再静默失败,取不到就说明原因

提示词库与素材

  • 提示词库改成工作台内弹层,Agent 页复用同一个对话框
  • 提示词素材只收手工攒下的提示词:Agent 自动登记与视频另存不再把这栏灌满
  • 提示词库新增「加入我的素材」,正文长度上限三处写入入口统一 8000
  • 提示词源改动即时生效并如实报数,改动先答一声再等同步
  • 素材 meta.json 的读-改-写排队串行:四个写入口不再互相覆盖丢写;账本写入改 tmp+rename,归属只从 entry 取,孤儿临时文件回收补齐测试

视频工作台

  • 四刀对齐生图工作台:卡号与空态措辞统一、xl 定高分栏内滚 + 窄宽记录卡回到首位、原生 select 换成生图控件语言、记录栏补搜索框并把 pill 档位抽成共享组件
  • 三处真实裁切修掉(视频 pill 溢出、生图工具条换行、裸图标)

画布

  • 素材令牌改读时重签,历史画布不再烤死旧令牌导致全部 401

反推提示词

  • 失败不再一律算到模型头上:把网关返回的真实错误正文摆出来,空返回也报模型名与结束原因,不再用「不支持图片理解」盖住 400/502

其它

  • 切模块加加载反馈:兜底不再空白,被点的导航项当帧给记号
  • 文本模型价签改口径:0 价是「按 token 计费」,不是未标价
  • 预览层补对话框语义与键盘操作(焦点陷阱 + 方向键翻图);失败卡的重试入口按卡片来源分流,派生记录卡不再挂空操作

体积

  • 安装包 132 MB → 82 MB:裁掉未使用的 sharp / @img native 依赖与 1243 个 source map

安装:下载 ai-image-workbench-1.1.2-setup.exe 运行即可,数据目录 %APPDATA%\gpt-image-playground 不变,升级不需要重新登录。

v1.1.1

Choose a tag to compare

@wbsjl321 wbsjl321 released this 27 Sep 19:35

桌面版 1.1.1(Windows x64 安装包)。自 v1.1.0 起 299 个提交,门禁:tsc 0 错 / eslint 0 错 / 模块边界 606 文件通过 / vitest 147 文件 1177 用例通过。

Agent 模块

  • 执行引擎从路由里抽出,run 加只追加流水账 + 执行权租约:付费请求发出前先落一条,抢不到租约的实例不发付费请求
  • 续跑监督器:没人认领的「运行中」记录自己接着跑;缺凭据时只报告不改状态
  • 暂停 / 继续按游标驱动事件流,付过费的那一轮不硬中断;SSE 关流后界面不再停在「生成中」
  • 输入框支持 @ 提及点名要改的历史产物;参考图抽成独立 hook,重做时把被评的那几张挂回去
  • 一轮出图后可视觉复盘:带图模型看真实产物,挑出第几张不满足需求
  • 生图 / 视频产物登记进素材库(grok 短链不再顶掉本地路径、jpeg 不再存成 .png);素材面板每次打开重拉列表,可放大与单张下载
  • 多轮记忆沿 prevRunId 链收集上下文;切会话不再串台

备份与本机保存

  • 完整备份导出改为服务端流式落暂存、主进程按 uuid 认领后复制进「下载」文件夹:1 GB 量级的包不再进渲染层,也不再撞 IPC 体积闸
  • 导出过程给出已用秒数与转圈,完成后播报写明落点文件夹和文件名
  • 未登录时用户主动点的操作不再静默返回,一律给出原因

安全与归属收口

  • 认证路由限流 + 同源写请求闸(CSRF / 暴破);body 大小前置 Content-Length 闸
  • SSRF 闸收敛为 DNS 解析级助手并多处接入;外部参考图不再泄漏会话令牌
  • 本机历史(记录 / 图片 / 视频 / 画布)按 ownerId 读写,R2 / WebDAV 备份前缀与恢复校验带 userId
  • 注册不再产生 userId=0 会话;死会话接口下线;令牌不再走 query
  • /api/pricing 收敛为共享缓存,规划点击不再全量打网关

金额与额度口径

  • 换算常数从网关 /api/status 动态读取(不再写死),缺价统一显示「未标价」,裸美元格式化收敛到一条规则

视频工作台与画布

  • 结果区回到单记录视图并对齐生图工作台排布;瓦片改悬停播放,一条记录堆 20 条时不再 20 路同时拉流
  • 画布内存补丁:历史快照剥大图 + 视口写入节流
  • 性能:动图帧网格 data-URL 改 blob object URL,预览层引用稳定

桌面端

  • 无边框窗口 + 自定义标题栏(跟随主题),图标 / 任务栏 / 浏览器标签统一
  • 退出后服务端与 Node reaper 的善后窗口重做;更新安装待决状态不再掐死在飞任务
  • 应用内嵌充值窗口 + 关闭后余额自动刷新

安装:下载 ai-image-workbench-1.1.1-setup.exe 运行即可,数据目录 %APPDATA%\gpt-image-playground 不变,升级不需要重新登录。

v1.1.0

Choose a tag to compare

@wbsjl321 wbsjl321 released this 15 Sep 17:24

v1.1.0 从 agent-v2 发布。

  • 新增视频、动图、反推三工作台移植与批次/队列体验。
  • 优化画布图片与项目状态,减少 base64 与项目池重复占用。
  • 加强生成记录归属、删除墓碑、归档与重启恢复。
  • 发布侧增强令牌隔离、本机回环限制、源码映射与构建路径清理。

v1.0.6

Choose a tag to compare

@wbsjl321 wbsjl321 released this 07 Sep 09:28

修复与优化:

  • 默认模型固定为 gpt-image-2(用户手动选择后记住偏好)
  • 移除不可用的 grok-imagine-image-edit 模型
  • 兼容返回 url 而非 b64_json 的生图渠道(自动下载转 base64)
  • 生图令牌自动创建/复用修复 + 401 Invalid token 自愈重试
  • 构建不再依赖 Google Fonts

生图工作台 v1.0.4

Choose a tag to compare

@wbsjl321 wbsjl321 released this 25 Aug 03:40

v1.0.4 更新内容

  • 修复:重新打开应用不再要求重新登录(会话同步落盘)
  • 修复:防止多开导致端口漂移、数据丢失(单实例锁)
  • 新增:更新检测代理支持(check-update)
  • UI:兑换充值按钮恢复绿色样式

生图工作台 v1.0.3

Choose a tag to compare

@wbsjl321 wbsjl321 released this 25 Aug 00:51

修复:桌面端排版穿模、Next16 standalone路径、下载反馈、配色回退

生图工作台 v1.0.2

Choose a tag to compare

@wbsjl321 wbsjl321 released this 24 Aug 09:25

新增:API Key 幂等防重复创建、并发登录安全、日志脱敏、启动自动检测更新