v1.8.0
English
One-click upgrade — update from inside the app; configuration and strategy data are never lost.
- In-app updater (Velopack). The app checks GitHub Releases on startup and every 24 hours.
When a new version is available a banner appears at the top of the page. One click downloads,
applies and restarts into the new version on Windows, macOS and Linux. /updatepage. Shows the installed version, the latest version, the release notes from this
changelog and the download progress. Buttons:Check now,Download,Upgrade & Restartand
Upgrade after market close.- Dismissible banner. Dismissing a version hides it until a newer version appears;
the dismissal is stored in your user settings, not in the program folder. - Trading safety gate. An upgrade is refused while a rebalance is running, while orders are
still working/pending/queued, or — with automatic mode enabled — during US market hours
(09:30–16:00 ET on weekdays). Refusals explain the reason instead of silently doing nothing.
Upgrade after market closeretries the gate after 16:30 ET. - Pre-upgrade snapshot.
config/andData/are copied tobackups/{UTC}-{old version}/
before every upgrade; the five most recent snapshots are kept. Tokens and credentials are never
copied. If the post-upgrade data migration fails, the latest snapshot is restored automatically. - Post-upgrade feedback. After a restart into a new version the app opens the dashboard and
showsUpdated to vX.Y.Z. - Degraded mode for zip installations. If the app was not installed through the Velopack
installer, it only compares versions against the public release repository and offers the installer
download. Nothing on your disk is replaced automatically; after one manual installer run, every
later upgrade is a single click. - Public release repository. Releases are published to a separate, public repository
(memoryfraction/Quant.Infra.Net.Pro-Public) that holds nothing but release assets, so checking for
an update and downloading the installer need no account at all. The source repository stays private.
Its address is theUpdate:ReleaseRepoUrlsetting, and all four consumers read it: the Velopack
feed, the degraded-mode release check, the installer download link and theHow to upgradelink. How to upgradelink. The update banner and the/updatepage link to the upgrade
instructions published with the release repository.- Version single source. This changelog is embedded into the app and drives the version history
page; the git tag drives the build version. No more hand-copied version numbers. - Release pipeline.
CS 架构/scripts/build-release.ps1builds self-contained packages for every
platform locally;.github/workflows/release.ymlpublishes them to GitHub Releases with
full and delta (incremental) packages. Upgrade anyway(when open orders cannot be verified). If the open-orders check cannot be
completed at all (for example Schwab is not connected, or the authorization has expired), the
/updatepage offers anUpgrade anyway (I have no open orders)button with a warning. The
confirmation only bypasses the "orders could not be verified" refusal; it can never bypass a
running rebalance, clearly in-flight orders, or the market-hours rule, andUpgrade after market closenever uses this bypass.- MVP scope. Windows is the fully supported one-click upgrade target; Linux ships an
AppImage (packaged, not end-to-end verified in this cycle); macOS is deferred to a future release.
macOS requires Apple Developer ID ($99/year) for code signing and notarization — a complex and costly process.
Once Windows verification is complete and proven solid, macOS support will be added in a future cycle.
中文
一键升级 —— 在应用内完成升级,配置与策略数据永不丢失。
- 应用内升级器(Velopack)。 启动后检查一次 GitHub Releases,之后每 24 小时检查一次。
有新版本时页面顶部出现提示横幅。Windows、macOS、Linux 上点一下即完成下载、替换与重启。 /update页面。 显示当前版本、最新版本、来自本变更记录的更新说明与下载进度。
按钮包括Check now、Download、Upgrade & Restart、Upgrade after market close。- 可关闭的横幅。 关闭某个版本后不再提示该版本,出现更新版本时仍会提示;
关闭状态写入用户设置,而不是程序目录。 - 交易安全闸门。 再平衡执行中、存在未完成订单、或开启自动模式且处于美股交易时段
(美东工作日 09:30–16:00)时拒绝升级,并明确说明原因。Upgrade after market close
会在美东 16:30 之后重新检查闸门再执行。 - 升级前快照。 每次升级前把
config/与Data/复制到backups/{UTC}-{旧版本}/,
只保留最近 5 份;不复制 token 与凭据。升级后的数据迁移若失败,会自动从最近快照恢复。 - 升级后反馈。 重启进入新版本后自动打开 Dashboard 并显示
Updated to vX.Y.Z。 - zip 安装的降级模式。 如果不是通过 Velopack 安装器安装的,只与公开发布仓库比对版本
并提供安装器下载链接,不会自动替换磁盘上的任何内容。手动装一次安装器后,之后每次升级都只需一点。 - 公开发布仓库。 发布投递到独立的公开仓库(
memoryfraction/Quant.Infra.Net.Pro-Public),
只承载发布资产,因此检查更新与下载安装器都无需任何账号;源代码仓库保持私有。
该地址即Update:ReleaseRepoUrl设置,四个消费者全部读取它:Velopack 发布源、
降级模式的版本检查、安装器下载链接、How to upgrade链接。 How to upgrade链接。 升级横幅与/update页面均链接到随发布仓库一同发布的升级说明。- 版本单一来源。 本变更记录嵌入程序并驱动版本历史页;git tag 驱动构建版本号,不再手工复制版本号。
- 发布流水线。
CS 架构/scripts/build-release.ps1在本地构建各平台 self-contained 包;
.github/workflows/release.yml把全量包与增量包发布到 GitHub Releases。 Upgrade anyway(无法核实在途订单)。 当在途订单查询完全无法核实时(例如 Schwab 未连接、
或授权已过期),/update页面会提供Upgrade anyway (I have no open orders)按钮并附警示语。
该确认只绕过"无法核实"这一种拒绝 - 再平衡执行中、明确在途的订单、或交易时段规则永远无法绕过,
Upgrade after market close也不使用该绕过。- MVP 范围。 Windows 为完整支持的一键升级目标;Linux 仅交付 AppImage(只打包,本周期未做端到端
验证);macOS 留到后续阶段发布。 macOS 需要申请 Apple Developer ID($99/年)并做代码签名和公证,
成本和流程相对复杂。等 Windows 验证成熟后再加上。