Releases: Comet-zzz/CheckPause
Release list
CheckPause v1.8.0 - macOS and the Analysis Panel
新增 macOS 版(Apple Silicon 与 Intel),分析工具升级为可编辑的分析面板。 macOS 版功能与 Windows 版一致,由 GitHub Actions 打包为
.dmg;分析面板新增走子动画与棋盘编辑,并支持从任意局面开始分析。Adds a macOS build (Apple Silicon and Intel) and turns the analysis tool into an editable analysis panel. The macOS build ships as a
.dmgwith feature parity to Windows; the analysis panel gains move animations and a board editor, and can analyze from any position.未签名、未公证,首次打开需右键 → 打开。Windows 版的棋盘、分析、存档与两种 AI 模式均照旧。
🎯 What's Changed
🍎 macOS 版
-
新增 macOS 版(Apple Silicon 与 Intel),功能与 Windows 版一致;通过 GitHub Actions 在 macOS runner 上打包,产出
.dmg。 -
引擎使用 Stockfish 的 macOS universal 二进制,单个文件同时覆盖 M 系列与 Intel。
-
用户数据保存在
~/Library/Application Support/CheckPause/(Windows 仍为%APPDATA%\CheckPause\)。 -
更新清单新增按平台区分的下载地址;macOS 客户端不会再被推送
.exe。 -
A macOS build (Apple Silicon and Intel) with feature parity to Windows, produced by GitHub Actions on macOS runners and shipped as a
.dmg. -
Bundles Stockfish's macOS universal binary, one file covering both M-series and Intel.
-
User data lives in
~/Library/Application Support/CheckPause/on macOS (%APPDATA%\CheckPause\on Windows). -
The update manifest now carries per-platform download URLs, so a macOS client is never offered a
.exe.
♟️ 分析面板:走子动画
-
分析回放、上一步/下一步与棋步列表点击现在都有平滑的走子动画,与对弈、谜题两个模块一致。
-
前进与后退都有动画:吃子淡入淡出、易位时车一起移动、退回升变时显示原来的兵。
-
Analysis playback, the prev/next buttons and the move list now animate every move, matching the play and puzzle modules.
-
Animations run in both directions: captures fade, castling carries the rook, and stepping back through a promotion shows the pawn again.
✏️ 分析面板:棋盘编辑
-
新增编辑棋盘按钮:棋子调色板与擦除;拖动可移动棋子,右键或拖出棋盘可删除。
-
可设置走子方、易位权、吃过路兵(只列出当前局面下合法的吃过路兵格)。
-
初始局面 / 清空棋盘 / 复制 FEN / 应用 / 取消,应用后的局面成为新的分析起点。
-
A new Edit board mode with a piece palette and eraser; drag a piece to move it, right-click or drag it off the board to delete.
-
Side to move, castling rights and en passant can be set; only legal en passant squares are offered.
-
Start position, clear board, copy FEN, apply and cancel; the applied position becomes the new starting point for analysis.
🧩 分析面板:自己走子、从任意局面分析
-
可以直接在分析棋盘上走棋(双方、含升变),续在棋谱后面,或从任意一步分支出新变化;改写棋谱时会重置旧的分析结果。
-
分析引擎现在识别 PGN 的
SetUp/FEN头,编辑出来的局面(或自带 FEN 的棋谱)可以直接分析。 -
棋步列表支持黑方先走的局面,列编号与手数正确。
-
侧栏的「分析工具」改名为「面板」(英文界面 "Panel"),位置与功能不变。
-
You can play moves on the analysis board itself (both sides, promotions included), continuing the game or branching from any move; rewriting the line resets the previous results.
-
The engine now honours a PGN's
SetUp/FENheaders, so edited positions (and games that carry a FEN) can be analyzed directly. -
The move list handles positions where Black moves first, with the correct columns and move numbers.
-
The sidebar module "Analysis" is now labelled "Panel"; its position and contents are unchanged.
🛠️ Full Changelog
- feat(macos): platform-aware Stockfish executable path
- feat(macos): cross-platform PyInstaller spec with a
.appbundle and.icnsicon - feat(macos): GitHub Actions workflow building arm64 and x86_64
.dmgimages - feat(macos): store user data in
~/Library/Application Support/CheckPause/ - feat(updater): pick the download URL from the manifest's per-platform
urlsmap - fix(updater): never offer the Windows installer to a macOS client
- feat(analysis): animate move navigation in both directions
- feat(analysis): add a board editor with a piece palette, turn, castling and en passant
- feat(analysis): play legal moves on the analysis board and branch the line
- feat(engine): analyze from a PGN's
SetUp/FENstarting position - feat(move-list): support positions where Black moves first
- chore(i18n): call the analysis module "Panel"
- chore(version): bump the app version to 1.8.0
⚠️ Breaking Changes
-
无破坏性变更。Windows 版的棋盘、引擎分析、存档与两种 AI 模式均保持原样。
-
macOS 包未签名、未公证,首次打开需右键 → 打开,或到「系统设置 → 隐私与安全性」点「仍要打开」。
-
侧栏入口「分析工具」已改名为「面板」,位置不变。
-
No breaking changes. On Windows the board, engine analysis, saved games and both AI modes are unchanged.
-
The macOS build is unsigned and not notarized, so the first launch needs right-click → Open, or "Open Anyway" under System Settings → Privacy & Security.
-
The sidebar entry "Analysis" is now labelled "Panel"; its position is unchanged.
Full Changelog: v1.7.2...v1.8.0
SHA-256: 978609890A2650B934DF66F7C7B1947BF6EF51327F6ABD3A5B4E48200C12B804
CheckPause v1.7.2 - Icon Fix
修复安装后应用图标显示为 Python 默认图标的问题。 1.7.2 修复了 Windows 应用启动图标以及开始菜单、桌面快捷方式图标。
Fixes the issue where the installed Windows application showed the default Python icon. Version 1.7.2 fixes the application icon and the icons used by Start Menu and desktop shortcuts.
🎯 What's Changed
🖥️ 应用图标修复
-
启动时明确设置 CheckPause 应用图标。
-
SVG 图标加载失败时回退到内置
app.ico。 -
修复开始菜单和桌面快捷方式使用的图标路径。
-
安装包继续使用同一份应用图标资源。
-
The CheckPause application icon is set explicitly at startup.
-
SVG loading falls back to the bundled
app.icowhen necessary. -
Start Menu and desktop shortcuts now use the correct icon path.
-
The installer uses the same icon resource as the application.
🛠️ Full Changelog
- fix(icon): set the application icon explicitly at startup
- fix(icon): fall back to the bundled ICO when SVG rendering fails
- fix(installer): point shortcuts at the bundled application icon
- chore(version): bump the app version to 1.7.2
⚠️ Breaking Changes
-
无破坏性变更。
-
已安装 1.7.1 的用户直接安装本版本即可修复图标显示问题。
-
No breaking changes.
-
Users on 1.7.1 can install this version directly to fix the icon display issue.
Full Changelog: v1.7.1...v1.7.2
SHA-256: AC1B731C14C81BE016B2532436EF155DCE67F560BF01A51518FCB25961BB22DF
CheckPause v1.7.1 - Instant Update Checks
「检查更新」不再需要等待超时:此前两个 GitHub 镜像依次请求,其中一个在国内时常无法连接,每次检查都要耗尽它的超时时间。现在改为并发请求,并优先查询自建服务器,点击后基本可立即得到结果。
这是一次小更新:棋盘、引擎分析、存档、本地/云端模式全部照旧。
The "Check for updates" action no longer waits on a timeout. The previous code queried two GitHub mirrors in sequence, one of which is often unreachable from mainland China, so every check consumed that timeout before returning. Both are now queried concurrently, with the project's own server checked first, so the result appears almost immediately.
A small update otherwise: the board, engine analysis, saved games and both AI modes are unchanged.
🎯 What's Changed
⚡ 检查更新更快
- 两个 GitHub 镜像改为并发请求,等待时间由两者之和缩短为其中较慢的一个。
- 新增自建服务器作为首要来源(
http://43.108.99.244/version.json):国内访问速度快,且直接读取磁盘文件,不存在 CDN 缓存导致的版本滞后。 - 手动「检查更新」以主源为准,主源返回即显示结果;仅在主源不可达时回退到 GitHub 镜像。
- 开机后的后台检查仍会查询全部三个来源并取最高版本,用于发现主源文件过期的情况。
- The two GitHub mirrors are now queried concurrently, so the wait is that of the slowest one rather than their sum.
- A primary source on the project's own server is consulted first: fast to reach from China, and read directly from disk, so no CDN cache can hold a release back.
- A manual check trusts the primary source and shows its answer as soon as it arrives, falling back to the GitHub mirrors only when the server cannot be reached.
- The background check at launch still queries all three sources and keeps the highest version, which is how a stale primary manifest would be detected.
🖥 服务器
- nginx 新增
/version.json,由checkpause-version-refresh.timer每 2 分钟从仓库刷新(原子替换,失败保留旧文件)。 - nginx serves
/version.json, refreshed from the repository every 2 minutes bycheckpause-version-refresh.timer.
📜 Full Changelog
- fix(update): query every mirror at once instead of one after another
- feat(update): check our own server first so a manual check answers at once
- feat(server): mirror the version manifest from our own box
- chore(version): bump the app version to 1.7.1
⚠️ Breaking Changes
- 无破坏性变更。
- No breaking changes.
⚠️ 服务器需先重新部署(git pull+install.sh),主源才会生效;仍在使用 1.7.0 的用户需升级到本版本,才能获得即点即得的检查结果。⚠️ The server must be redeployed (git pull+install.sh) before the primary source exists, and users still on 1.7.0 need this release to get the instant result.
Full Changelog: v1.7.0...v1.7.1
SHA-256: D8A3BF0B864B1AC509F07B48B9A484EBCC97BBAD8726D92464C2CDA58EC84C19
CheckPause v1.7.0 - Cloud Coaching
新增云端讲解:无需自行填写 API Key,注册账号并充值 CP积分即可使用。云端采用服务器上持续调校的提示词。
本地模式(自行填写 Key)完全不变 —— 界面、操作与存档均保持原样。仅云端模式需要登录;若继续使用本地模式,本次更新不会带来任何影响。
充值入口位于「设置 → 云端账号」:选择金额 → 浏览器打开支付宝完成付款 → 返回后余额已经到账。
A new cloud coaching mode: no API key of your own, just an account and some CP credits. It uses a prompt tuned on the server.
Local mode is unchanged — the interface, the controls and saved games all stay as they are. Only cloud mode requires a sign-in, so if you stay on local mode this release changes nothing for you.
Top up under Settings → Cloud account: choose an amount, pay in your browser, and the balance is already there when you return.
🎯 What's Changed
☁️ 云端讲解
- 设置中新增「AI 模式」选项:本地模式(自行填写 API Key,与以往一致)或云端模式(使用 CheckPause 账号与提示词)。
- 云端模式需要注册/登录。密码仅用于登录,软件不保存密码,只保存一个可随时吊销的令牌。
- 充值流程:选择金额 → 浏览器打开支付宝付款 → 余额自动到账,无需手动刷新。
- 余额显示于「设置 → 云端账号」,同时显示在菜单中。
- Settings gains an AI mode choice: local (your own API key, exactly as before) or cloud (a CheckPause account and prompt).
- Cloud mode requires an account. The password is used only to sign in and is never stored; the app keeps a revocable token instead.
- Topping up: choose an amount, pay in the browser, and the balance arrives automatically, with no manual refresh.
- The balance appears under Settings → Cloud account and in the menu.
🔒 云端模式下不再显示用的是哪个模型
- 此前模型输入框仅置灰、仍留在界面上;现在完全隐藏,云端模式下界面不会出现任何模型名称。
- The model field used to be greyed out but still visible. In cloud mode the model and endpoint fields are now hidden entirely, so no model name appears on screen.
💬 计费单位改为「CP积分」
- 界面、错误提示、付款页面统一改成 CP积分(英文界面为 CP credits)。
- The billing unit is now called CP credits everywhere it can be read.
📜 Full Changelog
- feat(client): sign in to a cloud account and show the balance
- feat(client): buy CP credits and watch the balance update by itself
- feat(client): hide the provider fields in cloud mode
- chore(i18n): call them CP credits
- chore(version): bump the app version to 1.7.0
⚠️ Breaking Changes
- 无破坏性变更。棋盘、引擎分析、存档与本地模式均保持原样。
- 云端模式为新增的可选项,需要时在设置中切换即可。
- No breaking changes. The board, engine analysis, saved games and local mode are all unchanged.
- Cloud mode is new and optional; switch to it in Settings when you want it.
Full Changelog: v1.6.1...v1.7.0
SHA-256: 5CA34298B9D1D328848FDCC5CE50AAE7EDACD1452167332D35855CDC020F9E3B
CheckPause v1.6.1 - Update Notifications Fixed
修复了一处静默失效的问题:更新提示始终未能触发。软件读取版本信息时,会优先访问一个国内可用的加速源,而该副本可能滞后十几个小时,导致软件误判为"已是最新版本"而不再提示升级。1.5.4 与 1.6.0 很可能因此未能推送给老用户。 现在两个来源都会读取,并采用版本号更高的一个。
Fixes a silent failure: update notifications never fired. The app read its version manifest from a China-friendly CDN first, and that copy could be many hours stale, so the app believed it was already current and stayed quiet. Releases 1.5.4 and 1.6.0 most likely never reached existing users. Both sources are now consulted and the higher version wins.
🎯 What's Changed
🔔 更新提示真的会弹了
-
此前只读取第一个可连接的来源;该来源可能缓存着十几个小时前的版本号,软件据此误判为"已是最新",因此不给出提示。
-
现在两个来源都会读取,并取版本号更高的一个;任一来源过期,都不会再掩盖新版本。
-
Before: only the first reachable source was read. That source could serve a version number many hours old, so the app concluded it was current and stayed quiet.
-
Now: both sources are read and the higher version wins, so a stale copy can no longer hide a release.
🧪 补了三个测试
-
新增的三个测试覆盖"一个来源过期、另一个来源为新版本"的情形,其中包括本次实际遇到的场景。
-
Three tests now cover the case where one mirror is stale and the other is current, including the exact situation that caused this release.
🛠️ Full Changelog
- fix(update): consult every mirror and keep the newest version found
- test(update): cover a stale mirror hiding a newer release
- chore(version): bump the app version to 1.6.1
⚠️ Breaking Changes
-
无破坏性变更。但需注意:该修复仅在安装本版本后生效;在此之前,软件仍无法发现新版本。
-
No breaking changes. One caveat: the fix only takes effect once installed. Until then the app still cannot see new releases.
Full Changelog: v1.6.0...v1.6.1
CheckPause v1.6.0 - PySide6 Migration
界面的底层图形框架从 PyQt6 换成了 PySide6 —— Qt 官方维护的那套绑定,采用 LGPL 许可。这不是一次功能更新:界面、操作、数据完全不变,升级后一切照旧,你不需要做任何额外的事。
The interface toolkit moves from PyQt6 to PySide6, the binding Qt maintains itself, licensed under the LGPL. This is not a feature release: the UI, the controls and your data are all unchanged. Install it as usual and everything stays where it was.
🎯 What's Changed
🔄 Qt's official binding
-
图形界面框架由 PyQt6 迁移到 PySide6。两者 API 几乎一致,所以这是一次纯粹的底层替换,没有重写任何界面。
-
The GUI toolkit moves from PyQt6 to PySide6. The two APIs are near-identical, so this is a straight swap underneath rather than a rewrite of any screen.
🧩 界面和数据完全不变
-
布局、配色、字体、快捷键、棋子样式、谜题进度、统计数据、API 设置 —— 全部保持不变。升级后第一次打开,看到的就是原来那个 CheckPause。
-
Layout, colours, fonts, shortcuts, piece sets, puzzle progress, statistics and API settings all stay exactly as they are. The first launch after upgrading looks like the CheckPause you already know.
📦 安装包略微变大
-
从 107.6 MB 变成约 114 MB。原因是 PySide6 的打包工具会带上一批程序用不到的 Qt 组件(QML、Quick、PDF 等),后续版本会把它们排除掉。
-
The installer grows from 107.6 MB to roughly 114 MB, because PySide6's packaging pulls in Qt components the app never touches (QML, Quick, PDF and friends). A later release will trim them out.
🛠️ Full Changelog
- refactor(gui): migrate every module from PyQt6 to PySide6
- build: swap the dependency, the PyInstaller spec and the documentation
- chore(version): bump the app version to 1.6.0
⚠️ Breaking Changes
-
无破坏性变更。直接覆盖安装即可,所有设置、统计与谜题进度都会保留。
-
No breaking changes. Install straight over the previous version; every setting, statistic and puzzle progress is preserved.
Full Changelog: v1.5.4...v1.6.0
CheckPause v1.5.0 - One-Click Installer
已归档 / Archived
此版本为早期开发版本,仅保留源码存档,不提供安装包下载。
This is an early development build. Only the source archive is kept; the installer is no longer available for download.
本次更新改变了分发方式:不再需要解压文件夹,直接运行一个安装包即可完成安装,自动创建桌面与开始菜单快捷方式,安装界面为简体中文,并且全程不需要管理员权限。软件现在还会在后台检查更新,有新版本时主动提示。
This release changes how you get CheckPause: no more unzipping a folder — run a single installer instead. It sets up desktop and Start Menu shortcuts for you, shows a Simplified Chinese interface, and never asks for administrator rights. CheckPause now also looks for new releases in the background and tells you when one is available.
🎯 What's New
📦 Single-file installer
-
发布物从「一个需要解压的文件夹」变成单个
CheckPause_Setup_<版本>.exe:双击、下一步、完成,自动创建桌面快捷方式与开始菜单项,并在「应用和功能」中注册卸载入口。 -
The release is now a single
CheckPause_Setup_<version>.exeinstead of a folder you have to unzip: double-click, Next, Finish. It creates desktop and Start Menu shortcuts and registers an uninstall entry in Apps & features.
🔔 Update notifications
-
启动后会在后台静默检查是否有新版本,有则提示并提供下载入口;检查过程不阻塞界面,处于离线状态或已是最新版时完全不打扰用户。对某个版本选择「稍后」后,不会再就同一版本重复提示。
-
CheckPause now looks for a newer release quietly in the background and offers a download link when one is found. The check never blocks the UI, stays silent when offline or already up to date, and a version dismissed with "Later" is not asked about again.
🇨🇳 Chinese installer interface
-
安装界面使用 Inno Setup 官方简体中文语言包,中文系统的用户会自动预选中文,同时保留英文界面。
-
The installer uses Inno Setup's official Simplified Chinese language file and preselects Chinese on Chinese systems, with English still available.
🔓 No administrator rights
-
安装到当前用户目录,全程不弹出 UAC 提权窗口,非管理员账户也能正常安装。
-
Installs into the current user's directory and never shows a UAC elevation prompt, so non-administrator accounts can install it too.
🚧 Installs only where it can run
-
Windows 10 以下的系统会在安装前直接拒绝并给出明确提示,而不是装完之后启动崩溃(Qt6 需要 Windows 10 或更高版本)。
-
On systems older than Windows 10 the installer refuses up front with a clear message, instead of installing something that then crashes on launch (Qt6 requires Windows 10 or later).
⚙️ One command builds both
-
.\build_exe.ps1现在会依次完成 PyInstaller 打包与安装包编译,版本号自动读取checkpause/__init__.py,不再需要手工同步;便携版仍照常生成。 -
.\build_exe.ps1now runs PyInstaller and the installer compiler in sequence, reading the version fromcheckpause/__init__.pyso nothing has to be kept in sync by hand; the portable build is still produced as before.
🛠️ Full Changelog
- feat(packaging): add an Inno Setup script producing a single-file installer
- feat(packaging): ship the official Simplified Chinese installer language file
- feat(packaging): install per-user so no UAC prompt is required
- feat(update): notify the user when a newer release is available
- feat(update): read a version manifest from a CDN mirror with a fallback source
- build: emit both the portable folder and the installer from build_exe.ps1
- build: read the release version from APP_VERSION instead of hardcoding it
- docs: document the packaging outputs and Inno Setup requirement
- chore(gitignore): ignore Inno Setup output and further local caches
- chore(version): bump the app version to 1.5.0
⚠️ Breaking Changes
-
分发方式变更:发布物由
CheckPause-v1.4.x-windows-x64.zip变为CheckPause_Setup_1.5.0.exe。老用户手里已解压的文件夹仍可继续使用,但今后只提供安装包。 -
Distribution changed: the release artifact is now
CheckPause_Setup_1.5.0.exeinstead ofCheckPause-v1.4.x-windows-x64.zip. Folders already unzipped by existing users keep working, but only the installer will be published from now on.
Full Changelog: v1.4.1...v1.5.0
CheckPause v1.4.0 - Puzzle Progress and Quick Jump
已归档 / Archived
此版本为早期开发版本,仅保留源码存档,不提供安装包下载。
This is an early development build. Only the source archive is kept; the installer is no longer available for download.
谜题页焕新:已解开的谜题会被记住,重开自动继续,并可直接跳到任意一题。
The Puzzle page gets a refresh: solved puzzles are remembered, you resume automatically, and you can jump to any puzzle.
🎯 What's New
✅ Progress memory
-
已解开的谜题会被记录,重新打开自动从下一道未解题开始;顶部始终显示已完成题数。
-
Solved puzzles are recorded, reopening resumes at the next unsolved one, and the completed count stays visible at the top.
🔀 Jump to any puzzle
-
「上一题 / 下一题」之间新增跳转框:输入题号回车或点「跳转」即可直达,分母固定为题目总数。
-
A jump box between Previous and Next: type a number and press Enter or click Go, with the total fixed as the denominator.
🧹 Cleaner puzzle panel
-
题目信息改到所选题目集下方显示;未选择题集时隐藏相关控件,面板更清爽。
-
Puzzle details now show under the selected collection, and related controls are hidden until a collection is chosen.
🛠️ Full Changelog
- feat(puzzle): remember solved puzzles and resume automatically
- feat(puzzle): add a jump box between previous/next
- refactor(puzzle): show puzzle details under the selected collection
- chore(version): bump the app version to 1.4.0
⚠️ Breaking Changes
-
无破坏性变更。
-
No breaking changes.
Full Changelog: v1.3.3...v1.4.0
CheckPause v1.3.0 - Puzzles and Importable Collections
已归档 / Archived
此版本为早期开发版本,仅保留源码存档,不提供安装包下载。
This is an early development build. Only the source archive is kept; the installer is no longer available for download.
本次更新在「对弈」与「分析工具」之间新增「谜题」模块,用于做战术题。程序不预设题库内容,用户可以自行导入开源免费的题集,并且内置了一份取自 Lichess puzzle database(CC0 公共领域)的精选样例,开箱即可练手。解题支持走对继续、走错即时提示、对手自动应着、提示箭头与显示答案;导入的题集以本地 JSONL 保存并按偏移量惰性读取,再大的题库也不会一次性占满内存。
This release adds a Puzzles module between Play and Analysis for working through tactics. The app ships no preset library of its own: users can import free, open-source puzzle collections themselves, and a curated sample from the Lichess puzzle database (CC0 public domain) is bundled so there is something to solve out of the box. Solving gives correct/wrong feedback, plays the opponent's replies automatically, and offers hints and a full reveal; imported collections are stored locally as JSONL and read lazily by byte offset, so even very large files never load into memory at once.
🎯 What's New
🧩 Puzzle module
-
侧栏新增「谜题」模块,位于「对弈」与「分析工具」之间,拥有独立页面与棋盘。
-
点击己方棋子走正解:走对继续,走错即时提示并可重试,不会污染棋盘状态。
-
对手应着自动播放,双方按题解交替行棋;支持升变选择与拖拽/点击走子。
-
「提示」在棋盘上以箭头标出下一手,「显示答案」自动演示剩余解法,另有「重试」重开本题。
-
「上一题 / 下一题」在题集内切换,右侧显示题号、难度与主题标签。
-
走子动画、拖拽与棋盘翻转沿用对弈模块的统一交互;分析页仍保持只读浏览。
-
Added a Puzzles module to the rail, between Play and Analysis, with its own page and board.
-
Click a piece to play the solution: correct moves continue, wrong moves give instant feedback and can be retried without disturbing the board state.
-
Opponent replies play automatically, alternating solver and opponent down the line; promotion picking and drag-or-click moves both work.
-
Hint draws an arrow for the next move, Show solution walks through the rest, and Retry restarts the puzzle.
-
Previous / Next step through the collection, with the puzzle number, rating, and theme tags shown beside the board.
-
Move animation, dragging, and board flipping reuse the same interaction as the Play module; the analysis board stays read-only.
📥 Import your own collections
-
「导入题集...」支持 Lichess puzzle database 的 CSV 与含 FEN 的 PGN 题集,后续可扩展更多来源。
-
兼容 Lichess 约定:FEN 是对方走子之前的局面,着法序列的第一手为对方着法,第二手起才是解法。
-
大文件在后台线程流式解析并写入本地 JSONL,导入进度实时显示,界面不卡顿。
-
题集按行偏移量惰性读取,数百万题的题库也不会在启动或切题时全量载入内存。
-
题集列表显示来源文件名与题目数量,可随时删除。
-
Import collection... accepts Lichess puzzle database CSV files and FEN-based PGN collections, with room for more formats later.
-
Follows the Lichess convention: the FEN is the position before the opponent moves, the first move of the line is the opponent's, and the solution starts from the second move.
-
Large files are parsed on a background thread and streamed to local JSONL, with live import progress and a responsive interface.
-
Collections are read lazily by line offset, so multi-million-puzzle files never load fully into memory on startup or when changing puzzles.
-
The collection list shows the source name and puzzle count, and each collection can be deleted at any time.
🎁 Bundled Lichess sample
-
内置一份取自 Lichess puzzle database(CC0 公共领域)的精选样例:2000 道题,约 440 KB,难度覆盖 399–3177。
-
通过
tools/build_puzzles.py可复现该样例:HTTP Range 只下载题库开头数 MB,按难度分层抽样、过滤低质量题目,并逐题校验解法合法可解。 -
内置题集同样可以删除;删除后会记住选择,不再自动出现,用户也可重新导入完整题库。
-
Bundled a curated sample from the Lichess puzzle database (CC0 public domain): 2,000 puzzles in about 440 KB, spanning ratings 399–3177.
-
The sample is reproducible via
tools/build_puzzles.py, which downloads only the first few megabytes via an HTTP range request, samples across rating bands, filters out low-quality entries, and validates that every solution is legal and solvable. -
The bundled collection can be deleted like any other; the choice is remembered so it does not reappear automatically, and users can import the full database whenever they want.
♟️ Board and internals
-
BoardWidget支持任意 FEN 起始局面、临时隐藏导航按钮,以及提示箭头。 -
新增
PuzzleSession(纯逻辑,负责题解与对错判定)与PuzzleImportWorker(后台导入线程)。 -
中英文文案补齐;「关于」新增谜题来源与 CC0 说明。
-
BoardWidgetgained arbitrary starting FENs, a toggle for the navigation row, and hint arrows. -
Added
PuzzleSession(pure logic for the solution and correctness checks) andPuzzleImportWorker(a background import thread). -
Added Chinese and English strings, plus a puzzle source and CC0 note in About.
🛠️ Full Changelog
- feat(puzzle): add the Puzzle module between Play and Analysis
- feat(puzzle): solve puzzles with wrong-move feedback, automatic opponent replies, hints, and reveal
- feat(puzzle): import Lichess CSV and FEN-based PGN collections
- feat(puzzle): stream large imports to JSONL with a lazy byte-offset reader
- feat(puzzle): bundle a curated 2,000-puzzle sample from the Lichess database (CC0)
- feat(tools): add
tools/build_puzzles.pyto rebuild the bundled sample - feat(board): support arbitrary starting FENs, hint arrows, and a toggleable navigation row
- feat(gui): register the Puzzle module in the module rail and wire theme/board/language prefs
- feat(i18n): add Chinese and English strings for the Puzzle module
- feat(about): credit the Lichess puzzle database (CC0)
- refactor(board): keep a start FEN so positions can begin outside the standard game
- chore(build): add
zstandardtorequirements-build.txtfor regenerating the sample - chore(version): bump the app version to 1.3.0
⚠️ Breaking Changes
-
无破坏性变更。
profile.json、棋子/棋盘偏好、主题、API 配置与统计记录继续有效。 -
新增用户数据目录
%APPDATA%\CheckPause\puzzles\,仅在导入题集或删除内置题集时创建。 -
内置题集为只读资源,删除记录写入
puzzles\index.json;如需恢复,删除该文件即可。 -
打包体积约增加 0.5 MB(内置题集),
CheckPause.spec会随assets一并打包,无需改动。 -
从源码重建内置题集需要
pip install zstandard,仅构建期使用,运行时不依赖。 -
No breaking changes.
profile.json, piece/board preferences, themes, API settings, and statistics keep working. -
A new user data folder,
%APPDATA%\CheckPause\puzzles\, is created only when importing a collection or deleting the bundled one. -
The bundled collection is a read-only resource; deleting it writes a marker to
puzzles\index.json, and removing that file restores it. -
The package grows by roughly 0.5 MB (the bundled sample);
CheckPause.specalready shipsassets, so no packaging change is needed. -
Rebuilding the bundled sample from source needs
pip install zstandard; it is build-time only and never required at runtime.
CheckPause v1.2.0 - Play Against the Computer
已归档 / Archived
此版本为早期开发版本,仅保留源码存档,不提供安装包下载。
This is an early development build. Only the source archive is kept; the installer is no longer available for download.
本次更新兑现了侧栏注册表的预留:新增「对弈」模块,可以直接和 Stockfish 下棋。点击棋子再点高亮落点即可行棋,支持执白/执黑、五档难度、悔棋、认输、升变选择与棋步回看,还能把整盘棋一键送入分析模块。引擎思考在后台线程运行,界面全程不卡顿。
This release delivers on the module registry: a new Play module lets you take on Stockfish directly. Click a piece and a highlighted square to move, play as White or Black, choose from five difficulty levels, undo, resign, pick a promotion piece, and review every move; one click sends the game to the analysis module. The engine thinks on a background thread, so the interface never freezes.
🎯 What's New
🤖 人机对弈 / Play against the computer
-
侧栏新增「对弈」模块(位于「分析工具」上方),点击进入独立对弈界面。
-
点击己方棋子选中,合法落点以圆点(空格)或圆环(可吃子)提示,再点落点即走子。
-
支持「执白 / 执黑」:选择执黑时棋盘自动翻转,并由电脑先行。
-
五档难度:入门、简单、中等、困难、大师,映射 Stockfish 的
Skill Level与思考深度/时间。 -
兵升变弹出选择框,可选后、车、象、马。
-
Added a Play module to the rail (above Analysis) with its own game screen.
-
Click one of your pieces to select it; legal targets show as dots (empty squares) or rings (captures), and clicking a target makes the move.
-
Play as White or Black: choosing Black flips the board and lets the engine move first.
-
Five levels — Beginner, Easy, Medium, Hard, Master — mapped to Stockfish's
Skill Levelplus depth/time. -
Pawn promotion opens a picker for Queen, Rook, Bishop, or Knight.
🎮 对局控制 / Game controls
-
新对局、悔棋(回退你与电脑各一步,轮到你重新走)、认输。
-
状态栏显示「轮到你走棋 / 电脑思考中 / 将军」,终局显示胜负或和棋结果。
-
棋步列表实时更新,可点击回看任意局面;棋盘翻转与导航按钮沿用分析页的交互。
-
「导入分析」把当前棋谱(含完整着法)直接送到分析模块,可立即开始 Stockfish 分析。
-
New game, undo (takes back both your move and the engine's reply, returning the turn to you), and resign.
-
The status line shows Your turn / Computer is thinking / Check, and the result appears when the game ends.
-
The move list updates live and lets you step back to any position; flip and navigation work like the analysis board.
-
Send to analysis pushes the full game into the analysis module, ready for an immediate Stockfish run.
⚙️ 引擎与实现 / Engine and internals
-
新增
EngineMoveWorker(QThread):每次走子独立启动 Stockfish,思考过程不阻塞界面,关闭窗口或开新局时会安全回收线程。 -
BoardWidget增加可复用的交互模式(选中高亮、合法落点、move_requested信号),分析页仍保持只读浏览。 -
对弈界面自动跟随现有主题、棋子集与棋盘配色设置。
-
Added
EngineMoveWorker(QThread): each move spins up Stockfish in the background, the UI never blocks, and threads are reclaimed safely on exit or when starting a new game. -
BoardWidgetgained a reusable interactive mode (selection highlight, legal targets, amove_requestedsignal) while the analysis board stays read-only. -
The Play screen follows the current theme, piece set, and board theme automatically.
🛠️ Full Changelog
- feat(gui): add the Play page with an interactive board against Stockfish
- feat(gui): register the Play module above Analysis in the module rail
- feat(gui): support click-to-move with selection and legal-target highlights
- feat(gui): add side selection, automatic board flip, and engine-first opening
- feat(gui): add five difficulty levels backed by Stockfish Skill Level
- feat(gui): add new game, undo, resign, and send-to-analysis controls
- feat(gui): add a promotion dialog for queen, rook, bishop, or knight
- feat(gui): show turn status, check, and final result messages
- feat(worker): add
EngineMoveWorkerfor background engine play - refactor(board): add interactive mode and
set_movestoBoardWidget - feat(i18n): add Chinese and English strings for the Play module
- chore(version): bump the app version to 1.2.0
⚠️ Breaking Changes
-
无破坏性变更。现有
profile.json、棋子/棋盘偏好、API 配置与统计记录继续有效。 -
对弈功能使用随程序分发的 Stockfish,无需额外安装。
-
No breaking changes. Existing
profile.json, piece/board preferences, API settings, and statistics keep working. -
Play uses the Stockfish binary bundled with the app; no extra installation is needed.