wangjia
90f318e246
chore: release client-v1.0.57
...
Deploy Client / build-windows (push) Failing after 21s
Deploy Client / build-client-web (push) Successful in 42s
Deploy Client / build-macos (push) Successful in 2m8s
Deploy Client / build-android (push) Successful in 1m25s
Deploy Client / build-ios (push) Successful in 2m47s
Deploy Client / release-deploy-client (push) Has been skipped
设备/状态管理屏(查看本店在线设备/会话,管理员可强制下线)、登录携带设备信息、
会话心跳(/auth/ping)、被踢下线/会话失效提示、顶栏精简 + 用户名移至左侧栏底部。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
client-v1.0.57
2026-06-17 23:13:05 +08:00
wangjia
53fa259284
chore: release server-v1.0.56
...
Deploy Server / release-deploy-server (push) Successful in 40s
会话/设备管理后端:user_sessions 会话表、JWT 加 sid 校验、按平台类限并发登录、
登录失败锁定、修复禁用账号仍可凭 refresh 续期漏洞、/auth/ping、/auth/logout、
GET /sessions、DELETE /sessions/:id(管理员强制下线)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
server-v1.0.56
2026-06-17 23:12:13 +08:00
wangjia
7c82553594
chore: release client-v1.0.56
...
Deploy Client / build-client-web (push) Successful in 40s
Deploy Client / build-windows (push) Successful in 1m53s
Deploy Client / build-macos (push) Successful in 2m3s
Deploy Client / build-android (push) Successful in 1m11s
Deploy Client / build-ios (push) Successful in 2m32s
Deploy Client / release-deploy-client (push) Successful in 1m10s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
client-v1.0.56
2026-06-17 18:34:29 +08:00
wangjia
dfa1920dda
feat(client): 列表屏搜索前置/显示字段记忆/移动端表格切换与工具栏瘦身/退出登录归位
...
- 库存查询搜索框移到工具栏最前(桌面)/独占首行(移动端)
- 修复入库/出库/财务「显示字段」失效:移除 minWidth 运行时强制隐藏,
用户勾选权威、minWidth 仅作首次默认;新增 ColumnPrefs 持久化记忆(四屏独立)
- 移动端库存支持表格/卡片列表切换
- 移动端三个列表屏工具栏改 Wrap 紧凑布局、导出/显示字段图标化
- 退出登录统一到左侧导航:删系统设置内与桌面右上角下拉,桌面左侧栏底部新增
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 18:33:31 +08:00
wangjia
48e282dd97
feat(devops): macOS 构建接入 Developer ID 签名 + 公证
...
- compile-macos.sh:flutter build 后 codesign(hardened runtime + timestamp
+ Release.entitlements)→ notarytool 公证(复用 App Store Connect API key)
→ stapler staple → 重新打包,产出已签名+公证+stapled 的 .app
- 强制策略:缺 MACOS_DEVELOPER_ID_CERT_P12_BASE64 / APPSTORE_API_KEY_P8_BASE64
时在 flutter build 前 fail-fast,绝不产出未签名包
- deploy-client.yml:build-macos 步骤注入证书与 API key secrets
- 新增 docs/macos-signing.md:Developer ID Application 证书创建与 secret 配置
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 12:56:08 +08:00
wangjia
40d9aba657
chore: release client-v1.0.55 / site-v1.0.55 / server-v1.0.55
...
Deploy Server / release-deploy-server (push) Successful in 42s
Deploy Client / build-client-web (push) Successful in 40s
Deploy Site / release-deploy-site (push) Successful in 22s
Deploy Client / build-macos (push) Successful in 1m28s
Deploy Client / build-android (push) Successful in 1m7s
Deploy Client / build-ios (push) Successful in 2m44s
Deploy Client / build-windows (push) Successful in 1m51s
Deploy Client / release-deploy-client (push) Successful in 1m23s
三条流水线首个独立版本,统一从 1.0.55 起步。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
server-v1.0.55
client-v1.0.55
site-v1.0.55
2026-06-17 08:27:53 +08:00
wangjia
aa7099ba94
feat(devops): 发版拆分为 client/site/server 三条独立流水线
...
将单一 CI/CD 流水线拆成三条互不影响的发布流水线,各有 tag 前缀、独立版本
序列与独立 CHANGELOG:
- client(client-v*):Flutter 全平台 + version.yaml 自更新清单
- site(site-v*):web/ Eleventy 营销站,不含 web 版 app
- server(server-v*):backend Go 服务 + 共享基建 nginx/systemd
新增 3 个 workflow(deploy-client/site/server.yml)替换 deploy.yml;CI 脚本
按 part 拆分为 compile-/release-/deploy-{client,site,server}.sh,抽出公共函数
lib-forgejo.sh;compile-{macos,android,ios,windows}.sh 改去 client-v 前缀;
manual.yml 按前缀路由回滚。
跨流水线解耦:version.yaml 归 client,后端每请求实时读取(不重启、不触发
server 流水线);官网下载页的版本徽章/下载链接/更新日志时间线运行时经
/api/v1/public/release 动态拉取(API 不可达回退构建时静态内容)。为此一次性
扩展后端 changelog 字段(version.go/public.go)与 download.njk 动态渲染。
CHANGELOG.md 重命名为 CHANGELOG-client.md,新增 CHANGELOG-site/server.md;
重写 /release 命令为 /release <part> [version];同步更新 CLAUDE.md 与部署文档。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 08:21:28 +08:00
wangjia
eca62ba2c3
fix(backend): 库存导入改用 shakinm/xlsReader,按唯一编号去重,入库日期取自 Excel
...
extrame/xls 误读真实 .xls(3264 行只读出 455 行、编号丢失、数字被当
日期序列),换用 shakinm/xlsReader 正确读取全部行。去重改为「有商品编号
时仅按编号匹配」,避免不同批次被 NSS 回退合并;Inventory.ProductCode
存行自身唯一编号。入库时间取 Excel 入库日期列写入 created_at。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 08:04:04 +08:00
wangjia
21700fa64c
chore: release v1.0.54
...
Deploy / build-linux-web (push) Successful in 52s
Deploy / build-windows (push) Successful in 1m58s
Deploy / build-macos (push) Successful in 1m27s
Deploy / build-android (push) Successful in 1m32s
Deploy / build-ios (push) Successful in 2m51s
Deploy / release-deploy (push) Successful in 1m55s
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
v1.0.54
2026-06-17 06:57:43 +08:00
wangjia
5cfd1795ec
fix(backend): 库存导入用 Excel「入库日期」+ 同 key 增量更新/全同跳过
...
- 读取 Excel「入库日期」列(默认第12列,兼容入库日期/入库时间/入库日),
显式写入库存 CreatedAt,不再被 GORM 落成导入当天;新增
parseTimeWithFallback 兼容 yyyy-MM-dd / 含时分秒 / Excel 序列号
- 同 key(商品编码|仓库,回退 名+系列+规格|仓库):全字段一致则跳过,
仅差异字段增量更新;库存流水仅在 quantity 实际变化时追加
- 响应新增 skipped 计数;多租户 shop_id 隔离不变
go build / vet / test 全过。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 00:56:31 +08:00
wangjia
f15692bbd5
refactor(client): 只读判断统一走 WriteGuard 控件
...
将各屏内联的 ref.watch(isReadonlyProvider) 只读判断统一改为
WriteGuard(child:) 或 WriteGuard.isReadonly(ref),全项目只读逻辑
单一入口(仅 write_guard.dart 内部保留 provider 读取)。行为不变。
121 测试通过,analyze 无 error。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 00:56:31 +08:00
wangjia
196901b6d3
feat(client): 只读角色隐藏所有写按钮(WriteGuard 统一控件 + 顶栏只读标识)
...
- 新增 isReadonlyProvider(role == 'readonly')+ WriteGuard 控件,统一隐藏写控件
- 入库/出库/库存/商品/基础数据/往来单位/财务/设置 各屏:只读时隐藏
新增/编辑/删除/审核/提交/驳回/结清/盘点/导入/激活/用户管理 等写操作
- 顶栏显示「只读」标识,让只读用户明确当前权限
- 后端 middleware.ReadOnly() 仍兜底 403,UI 隐藏 + 后端拦截双保险
修正:此前误判为后端漏洞/部署 bug,实为前端写按钮未对只读隐藏。
后端经验证正确拦截只读写操作(线上 stock-in/product-options 均 403)。
121 测试通过,analyze 无 error。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 00:42:40 +08:00
wangjia
53465ed704
fix(client): Info.plist 补 NSLocationWhenInUseUsageDescription,消除 ITMS-90683
...
某依赖引用定位 API,Apple 要求声明用途字符串(即便 App 不主动用定位)。
补上后正式提交 App Store / Beta 审核不再被该警告卡住。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 22:46:32 +08:00
wangjia
5371d40f05
chore: 彻底停用项目 todo(删除 todo/ 目录 + CLAUDE.md 规则改为停用)
...
按用户要求停用 todo skill。todo/ 历史保留在 git 记录中可恢复。
CLAUDE.md 项目规则覆盖全局 todo 规则:本项目不再记 todo。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 22:43:12 +08:00
wangjia
a63ee263ca
chore: 清空项目 todo(按用户要求,历史保留在 git 记录中)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 22:38:30 +08:00
wangjia
e8bdb19195
feat(client): 抽屉+设置页加退出登录入口;酒行信息显示微信号
...
- 左侧抽屉底部、系统设置页底部各加「退出登录」按钮(窄屏顶栏菜单
不便时也能退出;登出后路由 redirect 自动跳 /login)
- 酒行信息 tab 补显示「微信号」行(模型/编辑弹窗早已支持 wechat_id,
仅只读展示遗漏)
121 测试通过。todo #54 #55。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 22:26:17 +08:00
wangjia
cd672e500f
fix(client): iOS 顶栏避开状态栏,修复菜单按钮被遮挡退不出登录
...
顶栏 Container 原从 y=0 起绘,iOS 状态栏盖住左上角菜单按钮,窄屏无法
打开抽屉菜单/退出登录。顶栏高度加上 MediaQuery.padding.top,内容下移
一个状态栏高度,蓝色仍铺满到屏幕顶。桌面/Web 状态栏高度为 0 不受影响。
todo #53。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 22:20:07 +08:00
wangjia
018180de8c
feat(client): 网络请求重试 + 离线提示可感知重试按钮
...
修复①请求级重试:新增 RetryInterceptor,网络层失败重试 3 次间隔递增
1s→2s→4s;GET 全重试,写操作仅在连接未建立时重试以防重复提交。
connectTimeout 5s→8s。
修复②连通性:启动首检改退避重试 4s→8s→12s,根治跨境冷启动假离线;
新增检测中状态 + retry();登录页/全局离线提示加 NetworkRetryButton,
重试中转圈、结果 SnackBar 反馈。
121 个测试通过,analyze 无 error。todo #52。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-16 14:42:23 +08:00
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