v7.0.0 升级说明
================
1. 直接覆盖旧程序代码即可，data / library / .env 请继续保留。
2. 首次启动自动创建私域、用户资产、网盘项目、归因和转化数据表。
3. 旧“私人订制 / CF专属授权”已从客户端移除；旧 private_cf_* 设置和私人订制授权缓存会在启动时清理。
4. QQ机器人AI私域客服默认不主动开启，请在“私域增长 → AI私域客服”逐个机器人开启。
5. 网盘资源必须确认拥有版权、授权或合法分发依据，未确认资源不会被AI发送，也不能生成推广链接。
6. 如需 Cloudflare 渠道短链，在“网盘增长”填写自己的跳转域名，并导出路由JSON给自有 Worker/KV。

v5.9.0
- 修复左侧品牌标题和副标题在窄侧边栏中被裁切。
- 信息、确认、警告、错误和输入弹窗改为自适应卡片式 UI。
- TB 图标已处理为透明 PNG，并应用到导航栏、圆角按钮和弹窗状态提示。
- 软件品牌图标和 TB 功能图标使用内存缓存；避免每次打开弹窗重复读取/生成图标。
- 数据库、账号、Token、代理、素材与发布计划格式不变。

v5.5.7

v5.5.6
- 修复任务发布时 NameError: active_credential_fingerprint is not defined。
- 发布Worker现已显式导入真实凭证指纹函数。
- 新增运行时发布凭证校验测试，避免仅靠语法检查漏检。
- 可从v5.5.5原目录覆盖升级，保留data、library、runtime和.env。

v5.5.5
- 修复QQChannelLocalManager/tencent_channel_cli_global.lock被误当作账号凭据。
- 清理旧.native_cli_swap日志时不再触碰当前持有的全局锁。
- 文件系统凭据发现改为严格组件匹配，保留真实CLI凭据目录。

- 修复 Windows 安装完整自检误报“二维码成功后没有自动建立隔离凭证”。
- 二维码文件凭据测试不再访问真实 Windows Credential Manager、HOME 或 AppData 登录态。
- Windows 凭据接管仍由独立内存模拟测试覆盖，不降低运行时账号隔离强度。
- 从 v5.5.2 可原目录覆盖补丁升级，保留 data、library、runtime 和 .env。

v5.5.2
- 修复 Windows + npm 11 环境只安装 CLI 包装器、未安装 win32-x64 原生包的问题。
- 安装命令增加 --include=optional。
- 自动识别原生包位于顶层或包装器内部 node_modules 的两种布局。
- 若原生包仍缺失，自动按包装器精确版本显式安装 tencent-channel-cli-win32-x64。
- 官方 npm registry 失败时自动切换 npmmirror。
- 保留 v5.5.0 的 Windows 凭据自动捕获与多QQ硬隔离修复。


v5.5.7 多QQ素材全局预占修复

问题根因
--------
旧版为每个QQ频道分别保存视频、图片、文案游标。每个新QQ的游标都从0开始，
所以两个QQ在同一公共素材包中都会选择00001。若开启“发布成功后删除素材”，
第一个QQ删除00001后，第二个QQ仍引用同一个文件，导致后续发布无素材。

修复
----
1. 视频、图片、文案分别使用一套全局分配账本，不再按QQ/频道从头开始。
2. 任务进入队列时立即原子预占素材：先入队的任务得到00001，后入队得到00002。
3. SQLite BEGIN IMMEDIATE保证UI和每日调度器并发创建任务时也不会重复预占。
4. 每个素材新增allocation_count和last_allocated_at；旧任务会在首次升级时迁移到全局账本。
5. 未开启循环时，任何已经分配过的素材都不会再次分配。
6. 开启循环时按“使用次数最少、最早使用、素材顺序”全局轮换，但排队/发布中的素材仍不会重复。
7. 发布后删除只删除当前任务自己的素材，不会影响后续QQ任务。
8. 图片、视频和文案使用完全相同的全局预占逻辑。

说明
----
每日计划仍在到达时间点时创建真实任务。若多个计划时间相同，调度器按计划ID，
也就是计划首次创建的先后顺序分配素材。
