30 Commits
Author SHA1 Message Date
shy3130 1c1a3b44c9 fix(release): #513 版本号单源 — 从 frontend/package.json 派生
- 新增 scripts/sync_versions.py: VERSION / backend/pyproject.toml / _FALLBACK_VERSION 三处伴生标记由 package.json 派生, --check 供 CI/本地校验
- release.yml / docker.yml 构建前先跑同步脚本, 杜绝只改 package.json 时产物版本漂移
- Dockerfile 运行时改读 /app/frontend/package.json
2026-10-27 18:45:09 +08:00
shy3130 b1a4dc6e38 chore: v0.3.17
Signed-off-by: shy3130 <shy3130@qq.com>
2026-10-26 09:59:09 +08:00
shy3130 e01fe96241 chore: v0.3.16
本次发布包含自动策略实验室 (feat(lab): 守护复验 + 稳健选冠/权重
精调 + 组合建议 + 闭环编排), 让挖掘发布的策略在真实新数据上被
持续验证 (健康/观察/退役), 冠军按稳健分选出并做权重精调, 健康
冠军间低相关可一键生成组合策略, 实验室战报聚合守护/挖掘/名额。

版本号同源: VERSION / frontend/package.json / backend/pyproject.toml /
backend/app/__init__.py 的 _FALLBACK_VERSION / release.yml 的 inputs
默认值; uv.lock 仅改项目自身条目。

Signed-off-by: shy3130 <shy3130@qq.com>
2026-10-25 23:43:45 +08:00
shy3130 5f70eb9ef2 chore: v0.3.15
本次发布包含三组修复:

- fix(ext-data): 资金流等当日快照接口不再被日期一致性校验误拒写;
  schema 端点恢复返回真实列类型 (DuckDB 1.5 的 DESCRIBE 列名变更);
  拉取配置的分页参数不再保存后静默丢失。
- fix(settings): 系统设置的通知弹窗/声效/语音播报/外链模板/界面缩放
  改后端持久化, 修复桌面版换端口 (origin 变化) 后配置丢失。
- fix(minute): 残缺分钟分区不再被当作无数据丢弃; 新增分钟缺口体检
  面板, 让「同步完成≠数据完整」可见。

同时引入 DCO 贡献来源声明与再许可授权条款, PR 须逐提交带
Signed-off-by (CI 由 .github/workflows/dco.yml 检查)。

版本号同源 5 处: VERSION / frontend/package.json / backend/pyproject.toml /
backend/app/__init__.py 的 _FALLBACK_VERSION / release.yml 的 inputs 默认值;
uv.lock 仅改项目自身条目 (上次升版误改 pytesseract 的问题不再复现)。

Signed-off-by: shy3130 <shy3130@qq.com>
2026-10-24 22:56:37 +08:00
shy3130 a747d1f615 chore: v0.3.14 2026-10-23 11:37:41 +08:00
shy3130 b0022a088b chore: v0.3.13 2026-10-22 22:24:11 +08:00
shy3130 463729ea5e chore: v0.3.12 2026-10-21 21:07:35 +08:00
shy3130 648f096ee3 Revert "feat(release): 发布页自动生成「本次更新」说明"
This reverts commit ef132f3bf9.
2026-10-21 09:50:17 +08:00
shy3130 ef132f3bf9 feat(release): 发布页自动生成「本次更新」说明
- prepare 任务新增 notes 步骤, 两级生成: GLM 总结(每条一句话、30字内、
  合并同类、最多6条) → 无 key/调用失败时约定式提交归类兜底
  (剔除 chore/ci 等噪声与版本号提交, 每条=提交主题, 保证发布页必有说明)
- build 任务 body 模板加「🔧 本次更新」区块, 注入 notes 输出
- prepare 检出改全量+带 tag (兜底需要上一版本区间的 git log)
- 已验证: YAML 合法; 兜底在 v0.3.10..v0.3.11 实际提交上输出正确;
  AI 请求 JSON 对引号/换行/反斜杠健壮
2026-10-21 09:29:55 +08:00
shy3130 59e2772f51 chore: v0.3.11 2026-10-21 09:07:40 +08:00
shy3130 5d44b2af23 chore: v0.3.10 2026-10-20 16:22:39 +08:00
shy3130 05817654d3 fix(release): Linux 产物版本号插入位置 — .tar.gz 双扩展名不再拼成 .tar-0.3.9.gz 2026-10-19 18:35:52 +08:00
shy3130 a85edf21c2 chore: v0.3.9 2026-10-19 18:12:27 +08:00
shy3130 07dfd5a17b fix(ci): 升级保护清单步骤强制 bash shell — Windows runner 默认 pwsh 不认 $() 语法 2026-10-16 18:34:00 +08:00
shy3130 d6f6962909 feat(guard): 二次开发升级保护 — 程序文件常备备份/升级对比报告/一键恢复 2026-10-16 16:45:03 +08:00
shy3130 25fd5a0fad fix(desktop): macOS 数据目录移出 .app 包 — 覆盖安装不再清空用户数据 + 包内旧数据自动迁移 2026-10-13 17:23:13 +08:00
shy3130 4ba0c9bcc0 修复部分已知Bug 2026-10-06 12:40:16 +08:00
shy3130 2b73e89b81 feat(app): 桌面端体验优化 — 界面缩放(80%-150%, 修复缩放黑条)/每小时检查更新/侧栏橘黄色呼吸灯下载图标(点击定位并自动检查)/发现新版本徽章带版本号/官网入口/顶部工具栏不折行/页面标题渐变字效; build: 安装包文件名带版本号 + 安装后自动刷新图标缓存 2026-10-06 12:10:32 +08:00
shy3130 b23db4ecd7 brand: 品牌统一为 TSP — 应用名/图标(浅色圆角卡, Windows/macOS 双平台)对齐 brand 资产, README 新增官网入口与标题行内嵌 logo 2026-10-05 18:45:09 +08:00
shy3130 7f628816b9 feat(open-api): 0.3.2 开放能力版 — API Token 网关 + Tier A 契约 + 版本清单
- Token 域模块: tsp_ 前缀 + SHA-256 哈希存储 (0600), 明文仅创建时返回一次,
  吊销立即生效, last_used_at 节流落盘 (≥60s)
- Bearer 网关中间件 (与密码会话并行): 五档 scope 校验 (read:market/read:ext/
  read:analysis/run:backtest/paper:trade) + 滑动窗口限流 (默认 120/min,
  OPEN_API_RATE_LIMIT_PER_MIN 可调) + X-RateLimit 响应头; 管理接口永不对 Token 开放
- GET /api/openapi.json?tier=a 契约视图: 按网关规则表过滤 OpenAPI 规范 (58 路径),
  规则表即唯一契约源
- 设置 → 开放接口: Token 管理 UI (创建表单/scope 说明/明文一次性展示/吊销)
- 设置 → 系统设置 检查更新: 静态链接升级为真实版本对比 (GitHub API 优先,
  latest.json 清单兜底), 发现新版本给下载入口
- release.yml 新增 manifest job: Release 附 latest.json (版本/三平台下载地址/sha256),
  支持分批发布按实际资产生成
- 版本 0.3.1 → 0.3.2 (后端 __init__/pyproject + 前端 package.json)
- docs: features.md 开放接口章节; open-platform-plan.md V1/V2 标记已实现
- 测试: test_api_gateway.py 8 项 (域模块/scope 映射/E2E 401-403-200 矩阵/
  429+Retry-After/吊销即拒), 全量 2394 通过
2026-09-25 22:38:58 +08:00
shy3130 6e317a5a43 feat(v0.2): 完善量化研究与二次开发能力 2026-08-13 20:16:02 +08:00
shy3130 75cf2b19c2 fix(packaging): support legacy Polars CPUs 2026-07-12 14:08:24 +08:00
shy3130 484050ac06 feat: — 数据目录/实时监控/定时复盘/老CPU兼容
1. 桌面客户端体验优化,Polars 兼容内核 (老 CPU 兼容)
2. 自选页实时监控优化
3. 个股监控逻辑优化
4. 新增定时复盘
6. 其他: 修复 settings.py 中 HTTPException 未 import 的既有 bug
2026-06-28 18:08:52 +08:00
shy3130 f8f7fc6488 fix(ci): PyInstaller 产物输出到 backend/dist, 与 tickflow.iss Source 路径一致
修复 Inno Setup 找不到打包产物的错误:
  No files found matching ..\backend\dist\TickFlowStockPanel\*
原因: workflow 用 --distpath ../dist 输出到项目根 dist/, 但 .iss 引用的是 backend/dist/
修复: PyInstaller 用默认输出 (backend/dist), DMG/Linux 步骤路径同步调整
2026-06-25 00:35:13 +08:00
shy3130 19e86979d3 fix(ci): macOS 图标生成显式安装 Pillow
CI 上 uv sync --no-dev --extra desktop 不装 Pillow (它属于 backtest 的
matplotlib 依赖链, 非 desktop 运行时依赖), 导致 generate_icon.py 报
'No module named PIL'。本地能跑是因 venv 残留历史依赖, 属偶然不可靠。

显式 uv pip install pillow 再生成图标。
2026-06-24 15:14:54 +08:00
shy3130 a8ed19ac8c fix(ci): 修复 macOS 构建两个失败点 (venv 发现 + 缺图标)
macOS 构建在 macos-26 runner 上失败, 两个独立问题, 均已本地验证通过:

1. uv pip install --project backend 报 'No virtual environment found'
   macos-26 runner 上 --project 的 venv 自动发现不可靠。改为
   working-directory: backend, 与 uv sync 步骤一致。

2. spec 打包时找不到 packaging/icon.icns
   icon.ico 已入库 (Windows 用), 但 icon.icns 未入库 (macOS 专用产物)。
   release.yml 此前无生成图标步骤, macOS 构建必然缺图标而崩。
   新增 '生成 macOS 图标' 步骤 (仅 macos), 用 backend venv 里的 Pillow
   (传递依赖) 跑 generate_icon.py 现场生成。

3. 打包步骤改为 backend cwd 执行, 用 --distpath/--workpath 显式指定
   产物输出到项目根 dist/, 与后续 DMG 步骤路径保持一致。

本地完整验证 (生成图标 + pyinstaller) 成功产出 dist/TickFlowStockPanel.app。
2026-06-24 15:10:10 +08:00
shy3130 0e49708466 ci(release): macOS 仅构建 ARM64 包, 移除已不可行的 Intel 构建
原因 (经核实, 技术上无法产出可用 Intel 包):
  1. GitHub 最后一个原生 Intel runner (macos-13) 已于 2025-12-04 退役;
  2. 项目依赖 polars, 而 polars 自 1.33 起移除了 macOS x86_64 原生 wheel
     (改 py3-none-any), 在 arm64 runner 上经 Rosetta 无法装出 x64 原生库,
     产出的 Intel 包会在 polars 调用处崩溃。

改动:
  - 平台矩阵移除 macos x64 项, runner 从 macos-14 升到 macos-26 (2026-02 GA, 免费)
  - Release 下载表格删除 'macOS (Intel 芯片)' 行, 仅保留 Apple Silicon
  - 注释说明放弃 Intel 的原因, 面向用户文案标注仅支持 Apple Silicon
2026-06-24 14:41:35 +08:00
shy3130 6aff0b1389 feat: Release 说明加下载按钮 (markdown 链接直连附件)
- release.yml body 模板: 下载表格每行加「⬇️ 立即下载」按钮
  · 用 $github.repository + 版本号变量拼稳定下载 URL
  · CI 自动填充, 无需手动改链接
- v0.1.35 Release 已同步更新 (本地 gh release edit)
- 新增 generate_icon_designs.py (图标设计方案生成, 选定方案后产出最终 ico)
2026-06-23 22:33:05 +08:00
shy3130 5933ef1bc8 feat: Windows 打包改为 Inno Setup 安装包 (Setup.exe)
- 新增 packaging/tickflow.iss: Inno Setup 脚本
  · 用户目录安装 (不弹 UAC), 桌面+开始菜单快捷方式
  · 卸载时询问是否删除用户数据
  · 内置简中语言包 (ChineseSimplified.isl, 官方仓库获取)
- 新增 packaging/generate_icon.py + icon.ico: 应用图标
  · 与 favicon.svg/Logo.tsx 一致 (紫色方括号 + K线)
  · 用 Pillow 绘制, 多尺寸 (16/32/48/64/128/256)
- spec 加 icon: exe 图标 = 安装包图标 = 快捷方式图标
- release.yml: Windows 步骤改为 choco install innosetup + ISCC 编译
- 本地验证通过: 安装→快捷方式→启动→health 0.1.35 全 OK
2026-06-23 22:26:31 +08:00
shy3130 168f996c49 feat: 桌面客户端打包 (pywebview + PyInstaller) + 系统通知
- 桌面入口: desktop.py (单实例锁 + 端口探测 + uvicorn + pywebview 窗口)
- 配置层: config.py 加 sys.frozen 检测, frozen 下 data_dir 指向用户目录
- 系统通知: notify_adapter.py 三平台 (Win winotify / mac osascript / Linux notify-send)
  接入 quote_service 告警出口, preferences 开关控制, 前端监控设置加 toggle
- 前端: 监控设置加系统通知开关, 系统设置加检查更新入口
- 打包: packaging/tickflow.spec (onedir, collect-all 原生库, 排除 vectorbt)
- CI: .github/workflows/release.yml 手动触发 + 平台可选 (windows/macos/linux)
- 依赖: platformdirs/winotify/plyer 入主依赖, pywebview 入 desktop extras
- README 加桌面客户端下载章节
- bump 版本号到 0.1.33
2026-06-23 21:47:29 +08:00