wangjia
3f3aa41121
feat(client): iOS Info.plist 声明加密豁免,免每次上传答出口合规
...
加 ITSAppUsesNonExemptEncryption=NO,App 仅用标准 HTTPS 属豁免加密。
以后上传 TestFlight/App Store 不再弹「App 加密文稿」手动问答。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 13:38:47 +08:00
wangjia
73dbd65ef5
fix(client): iOS Release 配置改手动签名,修复 CI archive 自动签名失败
...
archive 阶段原走 Automatic 签名,会去申请 Development profile 并失败
(Failed Registering Bundle Identifier / No profiles found)。改为 Manual
并指定 Team BYL4KQHMTN + Apple Distribution 证书 + Jiu App Store profile,
与 compile-ios.sh 的 app-store ExportOptions 一致。仅改 Release,
Debug 保持 Automatic,不影响本地开发。本机已用真实证书验证签名 IPA 构建成功。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 12:29:40 +08:00
wangjia
8749bbae72
ci: 新增 test-ios workflow 手动验证 iOS 签名上传链路
...
只跑 iOS 构建+上传 TestFlight,workflow_dispatch 触发,默认版本 v0.0.1
(build 号最低,不与正式发版冲突),用于验证 7 个签名 secret 配置正确。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 12:20:12 +08:00
wangjia
146444ccc3
fix(client): Windows 热敏打印 GBK 编码改用 WideCharToMultiByte FFI
...
Deploy / build-linux-web (push) Successful in 47s
Deploy / build-macos (push) Successful in 1m29s
Deploy / build-windows (push) Successful in 2m32s
Deploy / build-android (push) Successful in 1m0s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m52s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.53
2026-06-15 22:09:57 +08:00
wangjia
2ca65e8077
chore: release v1.0.52
...
Deploy / build-linux-web (push) Successful in 52s
Deploy / build-windows (push) Successful in 1m52s
Deploy / build-macos (push) Successful in 1m24s
Deploy / build-android (push) Successful in 1m56s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m53s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.52
2026-06-15 21:10:54 +08:00
wangjia
bf36f7aa3f
fix(client): 标签字体细化:阈值 128,店名细体
...
Deploy / build-linux-web (push) Successful in 46s
Deploy / build-windows (push) Successful in 1m43s
Deploy / build-macos (push) Successful in 1m24s
Deploy / build-android (push) Successful in 59s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m53s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.51
2026-06-15 19:04:32 +08:00
wangjia
097e466372
fix(client): 标签打印 2× 超采样 + 阈值 160,消除热敏字体模糊
...
Deploy / build-linux-web (push) Successful in 51s
Deploy / build-windows (push) Successful in 1m46s
Deploy / build-macos (push) Successful in 1m30s
Deploy / build-android (push) Successful in 1m0s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m54s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.50
2026-06-15 18:20:42 +08:00
wangjia
c1ba6c6d97
feat(backend): 二维码链接统一改为 /app/product/ 路径,消除 URL 跳变
...
Deploy / build-linux-web (push) Successful in 46s
Deploy / build-windows (push) Successful in 1m41s
Deploy / build-macos (push) Successful in 1m27s
Deploy / build-android (push) Successful in 58s
Deploy / build-ios (push) Successful in 6s
Deploy / release-deploy (push) Successful in 1m53s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.49
2026-06-15 17:55:24 +08:00
wangjia
2b327cd365
fix(backend): 修复 /app/product/ 分享无 OG 标签,描述分两行显示
...
Deploy / build-linux-web (push) Successful in 49s
Deploy / build-windows (push) Successful in 1m45s
Deploy / build-macos (push) Successful in 1m24s
Deploy / build-android (push) Successful in 58s
Deploy / build-ios (push) Failing after 10m6s
Deploy / release-deploy (push) Has been skipped
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.48
2026-06-15 17:52:41 +08:00
wangjia
07f8973477
fix(backend): 分享卡片描述补充系列(度数)信息
...
Deploy / build-linux-web (push) Successful in 47s
Deploy / build-windows (push) Successful in 1m44s
Deploy / build-macos (push) Successful in 1m26s
Deploy / build-android (push) Successful in 58s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m50s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.47
2026-06-15 17:36:04 +08:00
wangjia
3b02a848c0
fix(client): 商品公开页加载后更新浏览器标题为商品名称
...
Deploy / build-linux-web (push) Successful in 49s
Deploy / build-windows (push) Successful in 1m43s
Deploy / build-macos (push) Successful in 1m26s
Deploy / build-android (push) Successful in 58s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m46s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.46
2026-06-15 17:26:22 +08:00
wangjia
bde2d35756
fix(backend): 修复分享卡片 <title> 因缩进导致替换失效的问题
...
Deploy / build-linux-web (push) Successful in 47s
Deploy / build-windows (push) Successful in 1m45s
Deploy / build-macos (push) Successful in 1m27s
Deploy / build-android (push) Successful in 1m0s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m48s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.45
2026-06-15 16:37:20 +08:00
wangjia
4ac5adac3e
chore: release v1.0.44
...
Deploy / build-linux-web (push) Successful in 47s
Deploy / build-windows (push) Successful in 1m44s
Deploy / build-macos (push) Successful in 1m24s
Deploy / build-android (push) Successful in 1m0s
Deploy / build-ios (push) Successful in 6s
Deploy / release-deploy (push) Successful in 1m56s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.44
2026-06-15 16:31:47 +08:00
wangjia
8c2dcf49a8
chore: release v1.0.43
...
Deploy / build-linux-web (push) Successful in 49s
Deploy / build-windows (push) Successful in 1m44s
Deploy / build-macos (push) Successful in 1m25s
Deploy / build-android (push) Successful in 1m9s
Deploy / build-ios (push) Successful in 6s
Deploy / release-deploy (push) Successful in 1m56s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.43
2026-06-15 16:11:38 +08:00
wangjia
f400459497
fix(backend): 修复扫码页 index.html not found
...
Deploy / build-linux-web (push) Successful in 50s
Deploy / build-windows (push) Successful in 1m42s
Deploy / build-macos (push) Successful in 1m28s
Deploy / build-android (push) Successful in 1m0s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m50s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.42
2026-06-15 15:11:30 +08:00
wangjia
64ac17d6b5
fix(client): 标签打印布局与字号优化
...
Deploy / build-linux-web (push) Successful in 49s
Deploy / build-windows (push) Successful in 1m43s
Deploy / build-macos (push) Successful in 1m24s
Deploy / build-android (push) Successful in 1m9s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m55s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.41
2026-06-15 15:00:44 +08:00
wangjia
a5bdb79f81
chore: release v1.0.40
...
Deploy / build-linux-web (push) Successful in 48s
Deploy / build-windows (push) Successful in 1m41s
Deploy / build-macos (push) Successful in 1m22s
Deploy / build-android (push) Successful in 1m9s
Deploy / build-ios (push) Successful in 6s
Deploy / release-deploy (push) Successful in 1m49s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.40
2026-06-15 14:23:03 +08:00
wangjia
c4b4259a3d
feat(client): 表格加横向滚动条 + 库存页列显隐
...
- DataTableCard 横向/纵向 ScrollView 各加 Scrollbar(thumbVisibility:true),
Windows 鼠标用户可拖动滚动条查看右侧截断的列(6 个表格全受益)
- 库存查询页新增「显示字段」按钮,可按需隐藏生产日期/供应商/备注等列,
列变少后横向溢出大幅缓解;商品编码/名称/操作三列锁定不可隐藏
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 12:35:57 +08:00
wangjia
68e0ca30ad
chore: release v1.0.39
Deploy / build-linux-web (push) Successful in 47s
Deploy / build-windows (push) Successful in 1m42s
Deploy / build-macos (push) Successful in 1m23s
Deploy / build-android (push) Successful in 1m0s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m50s
v1.0.39
2026-06-15 12:16:52 +08:00
wangjia
a8c684ad0c
fix(client): 单实例锁改用 TCP loopback socket
...
文件锁在 Windows 上行为不一致,改用绑定本地端口(54317)作为互斥锁,
进程退出时 OS 自动释放,Windows/macOS 均可靠生效。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 12:09:34 +08:00
wangjia
0779bf57e3
fix(client): 修复标签打印预览三个问题
...
- 打印完成后自动关闭预览弹窗
- 打印机列表改为仅显示热敏打印机,无热敏打印机时显示"无打印机可用"并禁用打印按钮
- 库存列表表格行"打标签"按钮改为调用预览弹窗(之前仍走旧直接打印逻辑)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 12:04:03 +08:00
wangjia
d26a64f149
chore: release v1.0.38
Deploy / build-linux-web (push) Successful in 46s
Deploy / build-windows (push) Successful in 1m42s
Deploy / build-macos (push) Successful in 1m26s
Deploy / build-android (push) Successful in 1m3s
Deploy / build-ios (push) Successful in 6s
Deploy / release-deploy (push) Successful in 1m53s
v1.0.38
2026-06-15 11:52:11 +08:00
wangjia
104b98f4ac
feat(client): 标签打印预览弹窗(打印机选择 + 份数 + 所见即所得预览)
...
- 新增 LabelData 模型统一聚合单张标签字段(qrBytes/copies 等)
- 抽取 _renderLabelBitmap 共享位图绘制逻辑,TSPL 裸发与预览渲染完全一致
- 新增 renderLabelPreview / listLabelPrinters / detectDefaultPrinter 公开 API
- printProductLabel 新增 printerName 参数,透传到热敏裸发路径
- 新建 LabelPreviewDialog:缩略图条+大图主视图,打印机下拉+记忆(SharedPrefs)
份数调整、勾选跳过、逐张打印进度状态显示
- 库存/商品详情/入库单 打标签 均接入预览弹窗,移除旧 _LabelPrintDialog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 11:49:37 +08:00
wangjia
2d01e5d8cf
chore: release v1.0.37
Deploy / build-linux-web (push) Successful in 48s
Deploy / build-windows (push) Successful in 1m49s
Deploy / build-macos (push) Successful in 1m29s
Deploy / build-android (push) Successful in 1m30s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 2m7s
v1.0.37
2026-06-15 11:23:21 +08:00
wangjia
01c7d7a416
chore: 补充 .gitignore(后端二进制、Claude 私有目录)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 11:19:47 +08:00
wangjia
36564571fa
chore: 补提测试修复、新增测试工具和设计文档
...
- fix(test): 同步 listInventory 签名(补 series/spec 参数)
- test(backend): 新增 import_parse_test.go
- chore(backend): 新增 cmd/test_xls 调试工具
- docs: UI 筛选组件设计规范、Gemini 项目配置
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 11:17:35 +08:00
wangjia
eac3e8825c
feat(client): 库存查询新增规格/系列/入库时间;筛选组件支持搜索+滚动+标签
...
- 库存查询加规格、系列服务端筛选(后端 IN 条件,前端从 product-options API 加载全量选项)
- 库存查询新增「入库时间」列,导出 Excel 同步带上
- 入库单商品明细:隐藏商品编码列,生产日期从选填折叠区移至主行常显
- 筛选弹窗重构:顶部搜索框实时过滤 + 滚动列表(ConstrainedBox maxHeight)根治溢出
- 已选项以 Chip 标签置顶展示,每个标签带 × 可单独取消
- FilterableColumnHeader 筛选图标改为常驻,不再需要 hover 才显示
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-15 11:15:43 +08:00
wangjia
316e9b6fc9
fix(backend): ImportProducts 改用 parseUploadedExcel 修复导入截断 100 条问题
...
旧代码直接调用 excelize.GetRows() 有内部 100 行限制;
其他 7 个导入函数在 50b139c 已修复,唯独 ImportProducts 漏网。
统一改用 parseUploadedExcel() 辅助函数,支持 .xls/.xlsx 且无行数截断。
2026-06-14 08:26:46 +08:00
wangjia
2ed0010c67
fix(backend): 补全多处 Scan/Count 错误未检查,私钥缺失改为 Fatal
...
- stock.go: ApproveStockIn 入库前库存 Scan 加错误检查
- license.go: Activate 阶段 Count 设备数加错误检查;createTrialLicense
私钥未配置由静默跳过改为 log.Fatalf,防止生产环境新注册门店无 license
- inventory.go: List 接口两处 Raw Scan 加错误检查并返回 500
- finance.go: ArBalance 汇总 Raw Scan 加错误检查并返回 500
2026-06-14 08:12:57 +08:00
wangjia
f251953dbc
chore: release v1.0.36
2026-06-13 22:33:30 +08:00
wangjia
2a75b3a8b6
ci: 新增仅构建 Windows 的 workflow (build-windows.yml)
...
Build Windows Only / build-windows (push) Successful in 1m53s
手动 workflow_dispatch 或推 winbuild* tag 触发,复用 provision/compile-windows.sh,
产物经 upload-artifact 传到 Forgejo,不触发完整 deploy。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
winbuild1
2026-06-13 20:46:55 +08:00
wangjia
0714fb8a1b
feat(client): 标签 TSPL 裸发支持 Windows(winspool WritePrinter)
...
- 抽出 _findThermalPrinter(macOS: lpstat -e;Windows: Printing.listPrinters)
与 _sendRaw(macOS/Linux: lp -o raw;Windows: winspool WritePrinter RAW)
- 新增 _winRawPrint:OpenPrinter/StartDocPrinter(RAW)/WritePrinter 直送裸字节
- 位图渲染与 TSPL 生成跨平台复用;macOS 行为不变
- 依赖新增 win32/ffi(仅 Windows 运行时调用,已 Platform.isWindows 守卫)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-13 20:42:49 +08:00
wangjia
d966951b6b
feat(client): 标签打印改为热敏机 TSPL 裸发 + 自适应扁平版式
...
- 桌面端(macOS)检测到得力 DL-888B 等热敏机时,用 dart:ui 直接把标签绘制成
单色位图,经 TSPL BITMAP 命令 lp -o raw 裸发;系统打印走 CUPS 通用驱动会
多走纸/空白,故对热敏机绕过系统打印
- 新版式(无字段名标签):酒行名 / 商品名 / 度数(系列)+规格同行 / 生产日期,
右侧二维码 + 下方居中"扫码溯源";左侧各行按高度等比铺满、字号自适应
- 二维码用后端 PNG 解码后绘制(避免 PDF 光栅丢图);生产日期仅在有值时显示
(商品库无该字段,入库/库存才有)
- 修复 macOS printing 包 layoutPdf 主线程死锁(dynamicLayout: false)
- macOS 关闭 app-sandbox 以允许调用 lp 裸发
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-13 20:26:30 +08:00
wangjia
c5a72ecbdf
merge: maestro/tsk_Qmk4wT_dkqRR [License license_key 前缀索引修复]
2026-06-13 14:38:03 +08:00
wangjia
c553237f15
fix(db): 缩短 license_key 列至 VARCHAR(768) 避免 InnoDB 索引超限 [tsk_Qmk4wT_dkqRR]
...
原 size:2048 在 utf8mb4 下产生 8192 字节索引,超过 InnoDB 3072 字节上限,
全新环境 AutoMigrate 必失败。改为 VARCHAR(768)(768×4=3072 字节,恰好
在上限内),schema.sql 同步更新列类型并将 uk_license_key 改为全列索引(无
需前缀)。新增测试 TestLicenseTokenFitsColumnLimit 验证最坏情况 token 长度
确实在 768 字符以内。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-13 12:01:30 +08:00
wangjia
02082df525
chore: release v1.0.35
...
Deploy / build-linux-web (push) Successful in 52s
Deploy / build-windows (push) Successful in 1m48s
Deploy / build-macos (push) Successful in 1m26s
Deploy / build-android (push) Successful in 1m32s
Deploy / build-ios (push) Successful in 7s
Deploy / release-deploy (push) Successful in 1m51s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
v1.0.35
2026-06-12 23:51:22 +08:00
wangjia
4c75f328c7
chore: release v1.0.34
...
Deploy / build-linux-web (push) Successful in 46s
Deploy / build-windows (push) Successful in 1m47s
Deploy / build-macos (push) Successful in 1m22s
Deploy / build-android (push) Successful in 59s
Deploy / build-ios (push) Successful in 6s
Deploy / release-deploy (push) Successful in 1m47s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
v1.0.34
2026-06-12 01:28:01 +08:00
wangjia
8628df5848
chore: release v1.0.33
...
Deploy / build-linux-web (push) Successful in 49s
Deploy / build-windows (push) Successful in 1m48s
Deploy / build-macos (push) Successful in 1m28s
Deploy / build-android (push) Successful in 1m9s
Deploy / build-ios (push) Successful in 6s
Deploy / release-deploy (push) Successful in 1m50s
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
v1.0.33
2026-06-12 00:10:58 +08:00
wangjia
85cd262525
chore: release v1.0.32
Deploy / build-linux-web (push) Successful in 51s
Deploy / build-windows (push) Successful in 1m51s
Deploy / build-macos (push) Successful in 1m24s
Deploy / build-android (push) Successful in 1m28s
Deploy / build-ios (push) Successful in 6s
Deploy / release-deploy (push) Failing after 2m58s
v1.0.32
2026-06-11 18:09:49 +08:00
wangjia
e0bee00ff4
fix: 批量改进 (#2/#23/#38/#39/#40/#47)
...
- Web: 隐藏 ICP 备案号(条件渲染),联系入口改为微信咨询(条件渲染,配置 wechat 字段后生效)
- backend: 拼音回填抽取为独立 cmd/backfill-pinyin 工具,不再在启动时运行
- backend: DB 连接池参数(max_idle_conns/max_open_conns)改为配置可控,默认 10/100
- backend: Inventory 反范式字段添加注释说明快照语义
- backend: 全量 handler 采用 util.RespondSuccess/RespondCreated 统一响应格式(51 处)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 09:33:43 +08:00
wangjia
d28aba863e
fix(backend): license service 小修 (#45-46-48)
...
- #45 Activate 幂等路径 Update 加错误检查,失败时返回 error 而非静默成功
- #46 Verify 加载 license 加 shop_id 过滤(防御纵深)
- #48 删除 ErrDeviceMismatch 死代码(多设备迁移后已无单设备约束)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 09:06:15 +08:00
wangjia
f928d5c6a3
fix(backend): 架构质量改进批次三 (#41-44)
...
- #41 CheckInventoryAvailability Scan 加错误检查,DB 故障不再误报库存不足
- #42 finance ListRecords 和 inventory Logs 补加 pageSize 上限(500)
- #43 ReconcileInventory 两条 Scan 加错误检查,DB 故障返回 500 而非误导性空结果
- #44 license Info 改用 CountDevices(licenseID) 统计当前 license 绑定数,修复跨 license 计数偏差
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 08:21:42 +08:00
wangjia
3ab78dbf7a
fix(backend): 架构质量改进批次二 (#32-37)
...
- #32 License 激活迁移到 license_devices 表:Activate/Verify/Deactivate 全部改用
license_devices,新增 max_devices 校验和 GET /license/devices 端点;
Activate 现在校验 shop_id 防跨租户激活
- #33 checkInventory 从 StockOutHandler 移到 StockService.CheckInventoryAvailability
- #34 新增 util/response.go 统一错误响应工具(RespondError/RespondSuccess/RespondCreated)
- #35 生产模式 CORS Origin='*' 启动时 Fatal
- #36 生产模式 License 私钥未配置启动时 Fatal
- #37 新增 util/page.go ValidatePageSize,应用到 partner/product/stock_in/stock_out handler
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 00:38:49 +08:00
wangjia
51cfe5fc6d
fix(backend): 修复库存 TOCTOU 竞态 + handler 白名单更新 + 对账接口
...
#29 ApproveStockOut:FOR UPDATE 锁定批次后再内存汇总总量,
消除预检 SUM 与加锁之间的竞态窗口,减少一次 DB 往返
#30 partner/warehouse/user/product_attr/product_option Update 方法:
- 绑定到独立 req struct,防止请求体覆盖记录 ID
- 改用 db.Model.Where("shop_id=?").Updates(map) 白名单更新,
数据库层强制 shop_id 隔离约束
#31 新增 GET /api/v1/admin/reconcile:对比 inventories 当前库存
与 inventory_logs 流水净量,返回差异行,用于发现不平账异常
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-11 00:21:48 +08:00
wangjia
666bf56933
chore: release v1.0.31
...
Deploy / build-linux-web (push) Successful in 51s
Deploy / build-macos (push) Successful in 1m25s
Deploy / build-android (push) Failing after 4m56s
Deploy / build-windows (push) Failing after 9m7s
Deploy / build-ios (push) Has been skipped
Deploy / release-deploy (push) Has been skipped
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.31
2026-06-10 23:53:32 +08:00
wangjia
1a0a7bd5ef
fix(client): 将 _buildLicenseBanner/_showLicenseExpiryDialog 移回 _AppShellState
...
两个方法误放入 _StatusItem 类,导致 Windows CI 编译报错:
- _buildLicenseBanner/showLicenseExpiryDialog 对 _AppShellState 未定义
- _StatusItem 内 context.go() 调用找不到 context getter
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-10 23:50:55 +08:00
wangjia
8a62b5e174
chore: release v1.0.30
...
Deploy / build-windows (push) Failing after 48s
Deploy / build-macos (push) Has been cancelled
Deploy / build-android (push) Has been cancelled
Deploy / build-ios (push) Has been cancelled
Deploy / release-deploy (push) Has been cancelled
Deploy / build-linux-web (push) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
v1.0.30
2026-06-10 23:06:32 +08:00
wangjia
47b3c89460
feat(web): 新增更新日志、服务条款、隐私政策页面;关于页更新日志链接修正
...
- web/dist/changelog/ 版本历史页,收录 v1.0.0–v1.0.29 全部发版记录
- web/dist/terms/ 服务条款页(付费/授权/数据/免责等)
- web/dist/privacy/ 隐私政策页(数据收集/使用/共享/用户权利等)
- 全站页脚补充 更新日志、服务条款、隐私政策三个链接
- about_screen 「更新日志」按钮链接由 /downloads/ 改为 /changelog/
- 新增 backend/cmd/issue 工具,用于签发指定门店的授权码 token
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-10 22:56:22 +08:00
wangjia
bc85b2c8ad
fix(backend): license/info 返回 phase 字段,前端横幅/弹窗依赖此字段
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-10 09:30:25 +08:00
wangjia
13fc9b7aaf
test(backend): 授权系统端到端验证测试 (21H)
...
util/license_key_test.go:
- TestLicenseKeyRoundTrip: 签发→验签完整流程
- TestVerifyLicenseToken_TamperedPayload: 签名被篡改后被拒绝
- TestVerifyLicenseToken_WrongKey: 用错误公钥验签失败
- TestVerifyLicenseToken_InvalidFormat: 格式非法被拒绝
middleware/license_guard_test.go:
- TestCalcLicensePhase: 覆盖全部 phase 边界
(perpetual→normal / future→normal / <7d→grace /
7-15d→readonly / >15d→locked)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-10 07:10:15 +08:00