chengma
b324e5d332
feat(settings): prevent spinbox wheel changes
2026-07-21 09:40:53 +08:00
chengma
9c0007ca4c
docs(tasks): add settings spinbox wheel task
2026-07-21 09:37:46 +08:00
chengma
1c93c1b08f
feat(settings): compact custom gateway model panel
2026-07-21 09:31:33 +08:00
chengma
02793fb108
docs(tasks): add custom gateway layout task
2026-07-21 09:29:30 +08:00
chengma
d76a1de864
feat(settings): rename custom gateway models
2026-07-21 09:23:08 +08:00
chengma
0da2d8a3c0
docs(tasks): add model rename task
2026-07-21 09:17:07 +08:00
chengma
415efe91a8
feat(settings): use radio buttons for gateway
2026-07-21 09:07:04 +08:00
chengma
4217f855ac
docs(tasks): add gateway radio layout task
2026-07-21 08:59:17 +08:00
chengma
b803a2a15a
feat(product-suite): complete multi-source recovery
2026-07-20 18:50:08 +08:00
chengma
2e6b93d7e0
feat(product-suite): enable direct generation flow
2026-07-20 18:37:27 +08:00
chengma
aa000ff5e6
feat(product-suite): add direct job state machine
2026-07-20 18:12:44 +08:00
chengma
2a2cbad7bd
feat(ai): enforce direct image edit contract
2026-07-20 17:52:59 +08:00
chengma
61db0f4ed6
docs(tasks): harden direct suite release semantics
2026-07-20 17:35:54 +08:00
chengma and Claude Fable 5
34c7a2e148
docs(tasks): close review gaps in custom gateway suite split
...
对 T-678 细化与 T-679a/b/c 拆分的全栈复核结果:
T-678:修正背景中不准确的收敛理由。api_type 在 app/ai.py 只有 :348、
:350 两处使用且都在图片路径内,文字路径从不读取该字段;不能全局收敛
的真实原因是 appconfig.py:881 对所有模型统一校验,收窄取值集合会让
存量文字模型在载入与保存时抛 ConfigError。方案首条同步改为按校验口径
表述,避免实现时去找不存在的文字侧分支。
T-679a/b/c:三处补加发布门禁,说明三者未全部完成前不得发布。拆分只为
控制改动面,不构成可独立发布的中间态——重复计费的二次确认定义在
T-679c,若 a/b 先上线,用户已能创建并失败 direct 任务却在无提示情况下
重试,属资金口径缺口而非体验缺陷。
T-679a:补记本任务组有意放宽 T-677「不给商品套图新增自定义网关路径」
的边界及理由(套图是来源切换后唯一完全断链的模块,图片理解不在放宽
范围内),避免后续回看误判两者矛盾。
T-679a:比例近似映射改为同时记录用户选择的比例与实际输出尺寸。原方案
只存原始比例会让 DB 记 9:16 而文件实际为 1024x1536;当前 add_asset 的
aspect_ratio 只写入无消费者(app/image_studio.py:707-731)故暂不可见,
但历史展示或导出一旦信任该字段即出错。新增字段迁移须附加式且幂等。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-20 17:30:08 +08:00
chengma
7734b20434
docs(tasks): refine custom gateway product suite plan
2026-07-20 17:23:23 +08:00
chengma and Claude Fable 5
cd2dfe97ef
docs(tasks): add custom gateway OpenAI lock and suite integration
...
拆成两个任务,T-678 是可独立发布的破坏性变更,T-679 依赖它。
T-678 自定义网关锁定 OpenAI 图片接口规范并支持多图输入:
- 记录当前 chat 接口类型并非 OpenAI 规范的证据(_find_image_ref 的
跨结构搜刮器只为非标准中转网关而存在),收敛 API_TYPES 并删除
chat/auto 请求构造。
- _image_edit_body 与 _multipart_body 支持有序多图,为 T-679 铺路;
②生图行为与计费口径不变。
- 记录迁移窗口:T-529 起自定义模型 UI 被硬藏,T-677 才放出,当前
装机量几乎没有 chat 配置,现在收敛成本接近零,晚做则成为真正的
破坏性变更。
- 存量 chat/auto 模型标记不可用而非静默改写,避免把请求打到不支持
的端点。
T-679 商品套图接入自定义网关(主图 + 参考图):
- 指明来源耦合只有 _runtime() 与 _submit_or_resume_job() 两处接缝,
direct 为同步路径,是跳过 submit/poll 而非补齐异步状态机。
- 记录回收守卫按 task_id 判断,direct job 天然不被拦,无需修改即可
继续保护已扣点的 cmhub 任务;create_generation_jobs 需改写真实来源。
- 明确主体保留在 OpenAI 侧只能靠提示词,与 cmhub 服务端强制契约不
等价,UI 须如实说明而非宣称同等效果。
- 记录三个实际问题:同步请求导致停止迟钝、超时常量需改用模型配置、
aspect_ratio 到尺寸需换算。
- AI 帮写仍为默认网关独占(CATEGORIES 无 vision 类别)。
- 关联中写明本任务有意放宽 T-677 的边界及理由。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-20 17:07:08 +08:00
chengma and Claude Fable 5
049d4b6bbc
feat(brand): add application logo for exe and window icon
...
新增品牌标识并接入运行时与打包流程。
- `scripts/gen_logo.py` 从单一几何定义同时产出 SVG 母版、多尺寸 ICO 和
PNG 预览,避免母版与位图漂移;改样式改脚本后重新生成即可。
- 标记为暖橙圆角徽章 + 白色上升箭头(提升并发布)+ 四角星芒(AI 生成),
刻意避开蝦皮官方购物袋标识,避免暗示官方关联。
- ICO 含 16/20/24/32/40/48/64/128/256 九档,每档从矢量几何独立渲染而非
由大图缩放,保证任务栏与资源管理器小尺寸清晰。
- `app/assets` 作为可导入包提供无 Qt 依赖的路径解析,兼容源码树、
PyInstaller onedir 的 _MEIPASS 与 exe 同级目录三种布局。
- `widgets.app_icon()` 在 Qt 缺失或资源未生成时返回 None,调用方容错;
在 QApplication 上设置图标以便任务栏、对话框和消息框一并继承,
MainWindow 另行设置以覆盖直接构造窗口的测试路径。
- 两个 spec 均加 `icon=`,主 spec 收集资源到 datas 并在资源缺失时直接
报错提示先跑生成脚本。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-20 16:39:18 +08:00
chengma
6a0cd1c763
feat(settings): support gateway source switching
2026-07-20 16:29:28 +08:00
chengma and Claude Fable 5
ed1d8ee764
docs(ui): apply T-677 gateway source switch to workbench prototype
...
⑤ 设置的网关分区按 T-677 改为生成来源二选一:
- 分区标题「cmhub 网关」改为「生成网关」并保留,新增互斥选中态的
「默认网关 / 自定义网关」分段选择器(radiogroup,表达状态而非动作)。
- 双面板显隐:默认网关面板含网关地址、API Key、生文/生图/图片理解别名、
连接超时、测试连接·查余额、批量生成前检查余额;自定义网关面板含模型
列表、模型详情(名称/类别/接口地址/模型ID/API Key/接口类型/超时/启用)、
独立的测试按钮与结果标签、默认文本与默认图像模型选择。
- 保存语义区分:来源切换只标记未保存,点「保存设置」才生效;模型的新增、
保存、删除立即写入配置,「放弃更改」不回滚这些操作,两者各有中文反馈。
- 接口类型按现有 direct 实现说明三种行为,明确「自动」不探测对方服务。
- 文案收敛:⑤面板、标题栏网关状态与②余额展示不再出现 cmhub 字样;
自定义网关下②显示「不计点数,费用由服务商收取」而非 0 点或旧余额,
稳定取值 cmhub/direct 仅保留在 value 与 data-* 中。
- ⑥联动:自定义网关下停用「生成套图」与「AI 帮写」,同时保留
「继续查询已提交图片」入口取回已扣点的默认网关任务,不新建、不重复计费。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-20 15:50:59 +08:00
chengma and Claude Fable 5
e65a1595fe
docs(ui): rebuild workbench prototype per Windows UI/UX spec
...
按 windows-ui-ux skill 的核心体验层、Windows 平台层和 Qt 适配方向重写
docs/ui/workbench-redesign-v1.html:
- 对齐已定稿产品决策:移除 ①②③ 的商品状态列与商品状态下拉筛选
(T-662b/c/d 非目标),范围确认改为纵向全宽按钮 + 警示橙色描边
(T-663),文案改为「采集/生成架上商品|全部商品」(T-664、T-665),
③ 改为后台预检拦截且无强制更新入口(T-662d),移除「待检测」状态
与状态重检入口(T-667)。
- 统一页面骨架与命令分区:数据准备区、表格命令区、表格、状态反馈区、
完成任务区;导入/刷新/选择集/工作流完成命令不再混区,每区一个主按钮。
- 补齐表格交互契约:选择复选框列、三态全选、当前行/焦点/选择集分离、
Ctrl/Shift 多选、排序 aria-sort、隐藏选择计数、空与筛选无结果状态。
- 按干扰层级重排反馈:破坏性操作改真实确认框且默认聚焦取消,部分成功
与预检结果改页面级信息条,停止增加 cancelling 中间态,Toast 仅承载
非关键短反馈。
- 平台基线:语义 Token 对齐 app/gui/widgets.py 颜色常量与 4epx 间距,
新增深色主题与高对比度近似,触控目标 ≥32epx,键盘补 tablist 方向键、
F6 窗格切换、Ctrl+F、F5,Ctrl+S 仅在设置页生效并接未保存协议。
- 新增「原型说明与验收边界」对话框,记录已对齐决策、待确认假设,以及
不能仅靠 HTML 验收的原生标题栏、材质、DPI、无障碍与性能项。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-20 15:43:31 +08:00
chengma
a04eb911e9
docs(tasks): close T-677 recovery gaps
2026-07-20 15:30:42 +08:00
chengma and Claude Opus 4.8
5b3b65ea16
docs(tasks): refine T-677 gateway switch boundaries
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-20 15:23:21 +08:00
chengma
79f51d9b91
docs(tasks): refine gateway source switch scope
2026-07-20 15:17:48 +08:00
chengma and Claude Opus 4.8
dfcca03850
docs(tasks): add gateway source switch task
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-20 15:04:33 +08:00
chengma
7b0990443b
feat(gui): optimize product status filter defaults
2026-07-20 11:49:37 +08:00
chengma
4c7c02a1e2
docs(tasks): add product status filter defaults task
2026-07-20 11:29:59 +08:00
chengma
7dbfcb5a24
feat(apply): open product page on left double click
2026-07-20 11:22:26 +08:00
chengma
9f43e5547a
feat(gui): add task deletion menus
2026-07-20 11:12:01 +08:00
chengma
6abe4decff
docs(tasks): add task delete and product tab tasks
2026-07-20 11:04:27 +08:00
chengma
9c4224286a
fix(status): ignore promotion edit warnings
2026-07-20 10:52:32 +08:00
chengma
b3d9857b3e
docs(tasks): add promotion status misclassification fix
2026-07-20 10:47:43 +08:00
chengma
ffc4cd8ca2
feat(apply): filter updates by product status
2026-07-20 10:35:38 +08:00
chengma
fa101c16ce
feat(generate): filter tasks by product status
2026-07-20 10:32:04 +08:00
chengma
9852b1c9c1
feat(collect): support soft deletion of one task
2026-07-20 10:27:21 +08:00
chengma
a92f1c86f4
feat(collect): show and filter product status
2026-07-20 10:16:25 +08:00
chengma
c81a24d173
fix(generate): limit gallery preview to left double-click
2026-07-20 10:12:12 +08:00
chengma
391a50a982
docs(tasks): add apply product status filter
2026-07-20 10:04:45 +08:00
chengma
5e897c0565
docs(tasks): add generation product status filter
2026-07-20 10:00:16 +08:00
chengma
c80b4e1c17
docs(tasks): add collection status and task deletion
2026-07-20 09:54:17 +08:00
chengma
38e91b4747
docs(tasks): add left-click gallery task
2026-07-20 09:45:26 +08:00
chengma
d687c833e0
feat(status): default legacy batches to normal
2026-07-20 09:41:55 +08:00
chengma
00c695d035
docs(tasks): add legacy status migration task
2026-07-20 09:33:37 +08:00
chengma
ba36b9fd8e
feat(collect): add product status recheck
2026-07-18 18:09:07 +08:00
chengma
3e9052e1b6
docs(tasks): add product status recheck task
2026-07-18 17:46:06 +08:00
chengma
15bd62597a
feat(generate): simplify scope option copy
2026-07-18 17:39:10 +08:00
chengma
bcab01d408
docs(tasks): add generation scope copy task
2026-07-18 17:36:42 +08:00
chengma
1d703f1c94
feat(collect): simplify scope option copy
2026-07-18 17:32:36 +08:00
chengma
b0ef62c21a
docs(tasks): add collection scope copy task
2026-07-18 17:30:00 +08:00
chengma
7538009f94
feat(gui): improve status scope dialogs
2026-07-18 17:23:22 +08:00
chengma
89f1b085dc
docs(tasks): add status scope dialog task
2026-07-18 17:15:57 +08:00
chengma
d64e3c7404
feat(apply): block abnormal product statuses
2026-07-18 17:10:12 +08:00
chengma
3a92119187
feat(generate): confirm product status scope
2026-07-18 16:57:57 +08:00
chengma
4658a1ca61
feat(collect): choose product status scope
2026-07-18 16:46:59 +08:00
chengma
0cf23db403
feat(collect): persist product status snapshots
2026-07-18 16:34:37 +08:00
chengma and Claude Fable 5
b4250f36f8
docs(tasks): commit T-662a/c/d scope-dialog redesign
...
Redesign per user requirement: pre-run scope dialogs in ①② replace
the status column/dropdown model; ③ keeps background interception
only. T-662b already landed in previous commit alongside the red
text alignment.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-18 16:19:34 +08:00
chengma and Claude Fable 5
21c72d0d93
docs(tasks): T-662b collect-all option uses red text per requirement
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-18 16:19:14 +08:00
chengma and Claude Fable 5
3777f84ce0
docs(tasks): finalize status dropdown placement and terminology in T-662b/c/d
...
- dropdown sits left of the renamed 任务状态 label in all three tabs
- option wording aligned with platform text: 审核中 not 未审核,
未知 not 其他
- clarify the status filter scopes collection candidates in ① (the
existing model.tasks mechanism), default 全部 so first-round
collection of unknown-status imports still works
- reinforce composite defaults 可生成/可更新 include unknown so
legacy batches are not blocked
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-18 15:37:43 +08:00
chengma
7ddf3a7262
docs(tasks): split T-662 product status workflow
2026-07-18 15:14:44 +08:00
chengma and Claude Fable 5
d00a204916
docs(tasks): add T-662 product status collection and filtering
...
Include the two Shopee edit-page status banner HTML samples as CDP
detection evidence for 未上架/审核中.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-18 15:04:12 +08:00
chengma
d853db1c8a
feat: rename bundled cover prompt template
2026-07-17 18:24:58 +08:00
chengma
d1cd50f5c5
docs(tasks): add T-661 cover prompt resource rename
2026-07-17 18:21:38 +08:00
chengma
da0a42090c
feat: skip incomplete apply tasks before update
2026-07-17 17:32:43 +08:00
chengma
e77b16ae2e
feat: fix product suite reference prompt rule
2026-07-17 17:27:08 +08:00
chengma
e4f0733333
docs(tasks): add T-660 fixed suite reference rule
2026-07-17 17:23:03 +08:00
chengma and Claude Fable 5
311616f2d5
docs(tasks): add T-659 apply pre-check skip instead of abort
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-17 17:16:20 +08:00
chengma
def05c9ae8
feat: explain product suite multi-image generation
2026-07-17 17:10:13 +08:00
chengma
f64dfffe40
feat: align product suite prompts with reference images
2026-07-17 17:06:47 +08:00
chengma
1fabd8afcf
feat: snapshot product suite reference assets
2026-07-17 17:03:40 +08:00
chengma
d11dc752b5
feat: use images payload for product suite generation
2026-07-17 16:59:50 +08:00
chengma and Claude Fable 5
611bfde233
docs(tasks): add generation rule matrix to T-658b
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-17 16:53:55 +08:00
chengma and Claude Fable 5
cba13593d3
docs(tasks): fix review findings in T-658 split
...
- T-658a: client-side trimming responsibility (cmhub rejects >8,
never trims); add release-gating note for the four-task unit
- T-658b: missing reference files are fail-fast only, drop the
skip-and-rewrite fork that violated T-637 snapshot semantics
- T-658d: mark as release gate for the a/b/c/d unit
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-17 16:49:44 +08:00
chengma
8725ff8380
docs: split T-658 into four subtasks
2026-07-17 16:43:39 +08:00
chengma and Claude Fable 5
3c68dd1ef2
docs(tasks): add T-658 multi-image reference submission rules
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-07-17 16:34:00 +08:00
chengma
f0be2a291f
feat(product-suite): label reference prompt rules
2026-07-17 16:27:33 +08:00
chengma
03d1fa74be
docs(tasks): add reference rule label task
2026-07-17 16:25:29 +08:00
chengma
43d50ca629
feat(product-suite): include category in target prompt
2026-07-17 16:12:03 +08:00
chengma
ff0ad8bb73
docs(tasks): add suite target label task
2026-07-17 16:09:17 +08:00
chengma
782f1dcdd9
feat(product-suite): align reference prompt rules
2026-07-17 16:03:10 +08:00
chengma
35dc010d44
docs(tasks): add reference prompt rule task
2026-07-17 15:58:26 +08:00
chengma
f6a1ad9ffc
feat(product-suite): add category targets and prompt compatibility
2026-07-17 15:35:28 +08:00
chengma
7426c181a7
docs(tasks): add suite category prompt task
2026-07-17 15:25:11 +08:00
chengma
4e10cce794
refactor(navigation): simplify main tab labels
2026-07-17 12:24:05 +08:00
chengma
01697759fc
fix(suite): prevent wheel changes in generation settings
2026-07-17 12:05:57 +08:00
chengma
d5d991e844
feat(suite): confirm planned generation cost
2026-07-17 11:59:07 +08:00
chengma
1ef5721a20
feat(suite): confirm AI writing cost before request
2026-07-17 11:48:25 +08:00
chengma
a06a02ddcf
docs(tasks): plan tab title and warning cleanup
2026-07-17 11:24:56 +08:00
chengma
2ad11625a8
docs(tasks): plan suite generation confirmation safeguards
2026-07-17 11:17:45 +08:00
chengma
29782b1924
docs(tasks): add AI write cost confirmation task
2026-07-17 11:09:53 +08:00
chengma
098dc667b3
feat(product-suite): refine history account filters
2026-07-17 11:00:02 +08:00
chengma
9f55dcd4f0
feat(product-suite): confirm prior successful generations
2026-07-17 10:47:44 +08:00
chengma
9166cb7010
docs(task): add suite generation safeguards
2026-07-17 10:35:13 +08:00
chengma
335c4b6206
feat(product-suite): improve multi-image AI writing
2026-07-17 10:15:34 +08:00
chengma
fa97fa6d3c
docs(task): add multi-image AI writing analysis
2026-07-17 10:09:44 +08:00
chengma
e232097ba5
feat(product-suite): add global generation history
2026-07-17 09:59:55 +08:00
chengma
f1dc7f28dc
docs(task): add global product-suite history plan
2026-07-17 09:27:03 +08:00
chengma
40a9f5fbf2
feat(product-suite): add cmhub vision AI writing
2026-07-17 09:09:09 +08:00
chengma
56d6b59a00
docs(task): plan product suite vision AI write
2026-07-17 08:48:31 +08:00
chengma
cd150ef6c7
feat(product-suite): add grouped generation history
2026-07-16 23:47:47 +08:00
chengma
f3defdeb95
feat(product-suite): persist current generation rounds
2026-07-16 23:27:25 +08:00
chengma
c146c0b41d
docs: add product suite generation history tasks
2026-07-16 21:08:29 +08:00