 shenleiandClaude Sonnet 5
|
dae14a8a10
|
fix: App_Store 钉钉通知因缺少关键词「打包」被拦截,标题改回含「打包」
钉钉机器人启用了自定义关键词校验。9ace2c8 将 App_Store 标题改为
「【iOS】App_Store 包信息」,丢掉了「打包」二字,导致消息被钉钉拒收
(errmsg: 关键词不匹配),任务日志出现「钉钉通知未发送」。
标题改回「【iOS】App_Store 打包信息」,重新包含关键词;测试同步更新。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014FETBaqMgRqx3kdpzccKg1
|
2026-09-01 11:34:57 +09:00 |
|
 shenleiandClaude Sonnet 5
|
9ace2c8aca
|
feat: App_Store 打包也发钉钉通知,Ad_Hoc/App_Store 各自的 @ 名单
- App_Store 完成后同样发送钉钉通知:标题改为「【iOS】App_Store 包信息」,
下载链接为 IPA 地址,不带二维码。
- 钉钉 markdown 消息需在正文出现 @手机号 才会真正 @ 到人,故除 at.atMobiles
外同时在正文追加。
- 新增 upload.dingtalk.at_mobiles(Ad_Hoc)与 at_mobiles_app_store(App_Store)
两份名单,按 BUILD_TYPE 选用;配置页「钉钉通知」区新增两个输入框。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YZULZ8fkiaiJrxqf318xTn
|
2026-09-01 11:02:57 +09:00 |
|
 shenleiandClaude Sonnet 5
|
fa559101b9
|
fix: 企业微信 Schema 未替换,改写 CFBundleURLTypes 中 wxwork 条目
之前把 wxworkSchema 当成 Info.plist 顶层键写入,但真实 readoor31.plist
里企业微信 Schema 位于 CFBundleURLTypes(CFBundleURLName == "wxwork",
占位值 "1"),顶层键无效、占位符从未被替换。
改为并入 _update_plist 已有的 CFBundleURLTypes 替换逻辑:填写则替换
CFBundleURLSchemes,未配置则整条移除,与 weixinlogin/wechatpay/tencent 一致。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YZULZ8fkiaiJrxqf318xTn
|
2026-09-01 11:02:50 +09:00 |
|
 shenleiandClaude Sonnet 5
|
e10afb180d
|
feat: APP 配置新增企业微信 Schema,写入 Info.plist wxworkSchema 键
与微信登录 AppID 处理一致:填写则写入 Info.plist 的 wxworkSchema,
未配置则移除该键。前端「关联配置」区新增输入框,打包流程透传该字段。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011wQh7H1Dn3TjQm87TyYgvf
|
2026-08-28 16:38:22 +09:00 |
|
 shenleiandClaude Sonnet 5
|
082c487cf8
|
fix: dSYM/混淆映射下载缺少认证头导致下载失败,dSYM 远端下载改为签名链接
历史记录点击 dSYM 下载后停留在接口地址本身:window.open 无法带
Authorization 头,接口未认证直接 401,重定向逻辑根本没机会执行。
改为前端先用 authFetch 认证请求,再按返回类型跳转远端地址或保存二
进制文件;远端地址同时改造成与 IPA 一致的 OSS 签名短时链接,避免
未签名地址在私有 bucket 下被拒绝。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
2026-08-26 16:36:36 +09:00 |
|
 shenleiandClaude Sonnet 5
|
1466e24c83
|
feat: dSYM 按上传配置一并保存到远端,本地清理后回退到远端地址下载
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
2026-08-26 16:02:03 +09:00 |
|
 shenleiandClaude Sonnet 5
|
c17b7d5ad9
|
fix: 皮肤包删除后被自动迁移逻辑复活,IPA 下载连击刷屏操作日志
_migrate_old_themes 之前每次 load_config() 都会重跑,只要证书仍引用某皮肤
且旧版 themes 目录还在,删除后会被立即重新生成;现改为仅首次执行一次并
在 config.json 中打标记跳过后续调用。
打包历史下载 IPA 按钮此前无连击防护,前端加 in-flight 禁用态,后端对同一
用户同一任务的下载操作日志增加 5 秒去重,避免连击刷屏审计日志。
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
2026-08-24 14:19:00 +09:00 |
|
 shenleiandClaude Opus 5
|
84a2d3db01
|
feat: 安装页改为移动端卡片样式并支持深色模式
- 抽出 DOWNLOAD_PAGE_TEMPLATE,卡片布局 + 大按钮,适配 iPhone 安全区
- 通过 prefers-color-scheme 切换配色,主色沿用 #50a0ff
- 展示构建版本/Bundle ID/分支,补充 Safari 打开与信任描述文件提示
- 动态字段统一 html.escape,修正 install_url 中裸 & 未转义的问题
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-04 16:50:22 +09:00 |
|
 shenleiandClaude Opus 5
|
64715a2c9e
|
feat: 腾讯 AppID 自动补全 tencent 前缀
新增/编辑 App 时,腾讯 AppID 允许只填数字,后端统一归一化为
tencent 前缀;前端输入框失焦即时补全,保存前再校正一次。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-04 12:27:36 +09:00 |
|
 shenleiandClaude Opus 5
|
21542c88d7
|
feat: 版本号按分支轨道分开管理,版本号配置收归管理员
master/develop 共用 release 轨(App_Store 打包构建号自增),feature 分支走
feature 轨(构建号永不自增,始终使用手填值),两条轨道的 App_Ver 各自独立。
- versions 改为 tracks 结构,旧的单轨/单值配置在加载时自动迁移进 release 轨
- 新增 config["branch_track"] 记录分支归属,缺省按分支名推断,可在分支管理页改
- 新增 PUT /api/config/branches/track;分支名含 / 时走请求体而非路径参数
- 修复 DELETE /api/config/branches/{name} 无法删除含 / 的分支(405)
- 版本号接口不再对普通用户开放,打包设置页整页改为管理员可见
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-07-31 17:56:10 +09:00 |
|
 shenleiandClaude Opus 4.8
|
3cb4053ab5
|
chore: 运行时 config.json 不再纳入 git 跟踪,改用 config.example.json 模板
config.json 是运行时高频写入的数据文件(网页改配置、每次 App_Store 打包递增
构建号都会写盘),纳入版本控制会导致服务器每次 git pull 与本地生产配置冲突。
- git rm --cached backend/data/config.json(保留磁盘文件,仅移出索引)
- .gitignore 显式忽略 backend/data/config.json 并补充说明
- 新增 config.example.json 作为结构模板(不含真实密钥/生产数据)
- README 说明其为运行时文件、pull 不覆盖,及从模板初始化的方式
首次部署仍可通过根目录 config.json 自动导入为 backend/data/config.json。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 17:12:09 +09:00 |
|
 shenleiandClaude Opus 4.8
|
91e9b027e8
|
feat: 构建号按版本号(App_Ver)独立记录,避免回退旧版本号被 App Store 拒
将 versions.build_ver 单值改为 build_map(每个 App_Ver 独立记录已用到的最大
构建号)。App Store 的构建号唯一性按 MARKETING_VERSION 分别计算,改为单一全局
计数器时回退到打过包的旧版本号会重复(如 2.195.0 已到 .5,切 2.196.0 后再回退,
重置/沿用全局计数都会 < .5 而被拒)。
- config.py: 新增 _ensure_versions 迁移旧 build_ver → build_map;PUT /versions
不再重置构建号,改版本号仅切换当前 App_Ver,并支持可选手动设置 build_ver;
GET /versions 返回 build_map 及当前版本号对应的 build_ver
- build_service.py: App_Store 打包时在 build_map[app_ver] 自身上 +1 并回写
- ConfigView.vue: 打包设置页显示可编辑的 Build_Ver,修改 App_Ver 时自动切换为
该版本号已记录的构建号
- 迁移 config.json;更新前后端相关测试
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 16:49:14 +09:00 |
|
 shenleiandClaude Opus 4.8
|
b6e56f5f9a
|
docs: README 补充一键部署(up)、就绪探测与 Git 推送说明
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 15:58:22 +09:00 |
|
 shenleiandClaude Opus 4.8
|
b2982ae8f7
|
feat: deploy.sh 支持一键部署与就绪探测
- 新增 up 子命令:build + start + watchdog 一键强制重来
- start 改为轮询 /api/health 就绪才返回,消除启动竞态误报
- start 增加端口占用守卫:非本项目进程占用时明确报错
- watchdog 增加启动宽限(WATCHDOG_STARTUP_GRACE),避开启动窗口误重启
- watchdog 支持 launchd 模式(WATCHDOG_RESTART_MODE),用 launchctl
kickstart 重启以避免与 KeepAlive 抢端口
- 抽取 _spawn_server/_wait_ready/foreign_port_holder 公共函数
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 15:50:59 +09:00 |
|
 shenleiandClaude Opus 4.8
|
9d766a0b58
|
fix: 皮肤包替换忽略 __MACOSX 及隐藏文件
macOS 压缩产生的皮肤 zip 顶层含 __MACOSX 目录,导致解压后判定为
多目录、退回使用解压根目录作 THEME,从而把 __MACOSX 和真实皮肤目录
一并复制进 Images.xcassets。解压统计顶层条目时过滤 __MACOSX 与隐藏
文件,并在 _apply_theme 复制时兜底跳过,使 THEME 正确下钻到真实皮肤
目录。旧皮肤包不含这些条目,行为不变,完全兼容。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 15:32:45 +09:00 |
|
 shenleiandClaude Opus 4.8
|
605c09c88a
|
feat: 皮肤包上传区支持拖拽上传
- 抽出 uploadSkinFile 复用点击与拖拽两种上传方式
- 拖入时高亮上传区并提示,松开即触发上传
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 15:20:04 +09:00 |
|
 shenleiandClaude Opus 4.8
|
5014376b81
|
feat: 支持皮肤包就地更新与新建即传
- 新增皮肤包更新接口,覆盖内容保持文件名不变,避免 APP 配置的主题引用失效
- 上传新皮肤后自动为空主题目录的证书选中该皮肤
- 新建 APP 保存后不关弹窗并回填 upload_key,可直接上传皮肤
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 15:14:08 +09:00 |
|
shenlei
|
bb8a0afeac
|
feat: 自动隐藏被覆盖的打包历史
|
2026-07-24 12:05:37 +09:00 |
|
shenlei
|
4dccc4d96b
|
feat: 增加操作审计与受控下载
|
2026-07-22 18:12:19 +09:00 |
|
shenlei
|
624f534b0f
|
feat: 限制历史操作为管理员可见
|
2026-07-20 17:18:00 +09:00 |
|
shenlei
|
13366ab3b4
|
fix: 修复 OSS 删除与历史筛选
|
2026-07-20 17:09:28 +09:00 |
|
shenlei
|
44405e589d
|
feat: 优化打包产物与历史筛选
|
2026-07-20 16:55:17 +09:00 |
|
shenlei
|
de33b3d4b2
|
feat: 按环境前缀生成 Apps ID
|
2026-07-20 16:24:13 +09:00 |
|
shenlei
|
8747792a4b
|
feat: 根据应用版本自动重置构建版本
|
2026-07-20 16:03:59 +09:00 |
|
shenlei
|
89fb633b00
|
feat: 普通用户可维护应用版本号
|
2026-07-20 15:42:52 +09:00 |
|
shenlei
|
51d7374f2d
|
fix: 提示打包提交并重置表单
|
2026-07-20 15:28:02 +09:00 |
|
shenlei
|
9b77441ec7
|
fix: 上传二维码并发送 Ad Hoc 通知
|
2026-07-20 15:22:44 +09:00 |
|
shenlei
|
8c0bce45a4
|
fix: 将密码最小长度调整为 11 位
|
2026-07-20 15:11:02 +09:00 |
|
shenlei
|
cf6cc1d21a
|
fix: 打包副本包含 AutoPacking 脚本
|
2026-07-20 15:03:21 +09:00 |
|
shenlei
|
cede7978e4
|
fix: 输出完整归档日志
|
2026-07-20 15:00:30 +09:00 |
|
shenlei
|
f0c6a2d9b6
|
fix: 完整显示打包历史信息
|
2026-07-20 14:57:49 +09:00 |
|
shenlei
|
3e3e4123d0
|
fix: 完善打包历史与登录提示
|
2026-07-20 14:54:06 +09:00 |
|
shenlei
|
c209ae423c
|
fix: 兼容新版 Xcode 的 AFNetworking 头文件
|
2026-07-20 14:37:04 +09:00 |
|
shenlei
|
2ad5f208ed
|
fix: 统一打包副本 Podfile 大小写
|
2026-07-20 14:34:18 +09:00 |
|
shenlei
|
2661435273
|
修复打包签名并支持 App Store IPA 上传
|
2026-07-20 14:16:45 +09:00 |
|
shenlei
|
7fd3845447
|
fix: disable git credential cache during builds
|
2026-07-20 11:45:26 +09:00 |
|