Skip to content

v1.8.0

Choose a tag to compare

@memoryfraction memoryfraction released this 28 Sep 01:00
· 1 commit to main since this release
bab5b79

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.
  • /update page. Shows the installed version, the latest version, the release notes from this
    changelog and the download progress. Buttons: Check now, Download, Upgrade & Restart and
    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 close retries the gate after 16:30 ET.
  • Pre-upgrade snapshot. config/ and Data/ are copied to backups/{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
    shows Updated 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 the Update:ReleaseRepoUrl setting, and all four consumers read it: the Velopack
    feed, the degraded-mode release check, the installer download link and the How to upgrade link.
  • How to upgrade link. The update banner and the /update page 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.ps1 builds self-contained packages for every
    platform locally; .github/workflows/release.yml publishes 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
    /update page offers an Upgrade 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, and Upgrade after market close never 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 验证成熟后再加上。