Regalia v1.1.1 #32
YDW99
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
What's Changed
Full Changelog: v1.1.0...v1.1.1
🚀 Regalia v1.1.1 — Release Notes
📋 Table of Contents
Overview
Regalia is a standalone, open-source chess app for Android — play offline against Stockfish 18, analyze your games, and explore openings. No account, no network, no tracking. Features full Chess960 (Fischer Random Chess) support, bilingual Chinese/English UI, personified move animations, and a comprehensive review/statistics system.
v1.1.1 is a quality-hardening release built on top of v1.1.0 (versionCode 110). While the version number increments, the focus is entirely on bug fixes, robustness, and architectural cleanup — no new user-facing features were added. Instead, 8 revision phases (Phase 59–66) were executed, each driven by user feedback and first-principles code audits.
What's New in v1.1.1
🔧 Bug Fixes
[%eval]/ eval-description annotations. Whitespace-tolerant regex dedup.onEngineEvalnow caches stale callbacks for the original step even when the user navigates before the callback arrives. The eval trend chart's data point at step 0 is no longer missing.T()with new i18n keys).reviewStepvia_reviewAnalyzeStep/_reviewAnalyzeGen/_evalRequestBatchGen. User navigation during batch no longer invalidates in-flight callbacks.[%csl]/[%cal]PGN pollution — TRUE root cause found and fixed:reviewStatesfrom a previous game's review session was not cleared in_resetGameUIState(), causing_computeAndCacheVisualAnnotationsto use the old game's board state at the same move index. Fix: clearreviewStateson every new-game entry + gate the shortcut onreviewMode === true._savePGNYestiming bug — async export dialog could be open when the new game started. Fix: poll_pgnExportDialogActivebefore executing the pending action.cleanupEngineResources()/shutdown()/cleanupFailedEngine()now use_writerLock(consistent with Phase 58 heartbeat path).onRenderProcessGoneinfinite loop — crash-count backoff (max 3 recreates per 60s window).Integer_bitcountnegative-input infinite loop —n >>> 0unsigned coercion.🆕 New Features (minor)
[%csl]/[%cal]/[%eval]/eval descriptions). Three options: "Yes, include special annotations" / "No, exclude special annotations" / Cancel. Supports Android back-button and haptic feedback.⏮ ◀ ▶ ⏭below the stats board, context-aware (mainline vs variation).{}comment before the first move (not attached to white's first move).[Initial position]prefix, deduped on re-export.🏗️ Architectural Improvements
_resetGameUIState()now clears 25+ state variables including_reviewEvalCache,_ecoRecCache,_pvCache,_visualAnnotationsCache,reviewStates,_preReviewSnapshot,setupHistory, and 7 dialog visibility flags. All 5 new-game entry points call it uniformly.importedflag on visual annotations — distinguishes human-authored PGN annotations (imported=true) from auto-generated UI display aids (imported=false). Onlyimported=trueentries are exported to PGN.includeAnnotationsparameter on_buildPGNString()— user-controlled annotation inclusion._requestBatchEval()— decoupled batch eval requests with generation counter, surviving user navigation and engine restarts._writerLockunification — allengineWriteraccess now goes through_writerLock, eliminating lock-inconsistency races.reviewStatesbug, audited all global state for similar patterns. Found and fixed_preReviewSnapshot,setupHistory/setupRedoStack, and 7 dialog flags not being cleared.Phase-by-Phase Changelog
Phase 59 — Version bump + 4 bug fixes + analyze-all rewrite
versionCode=111,versionName="1.1.1"[%eval]annotation (dedup via whitespace-tolerant regex){}comment with[Initial position]prefixT()i18n_reviewAnalyzeStep/_reviewAnalyzeGen/_evalRequestBatchGendecoupled fromreviewStepPhase 60 — Audit-driven fixes + stats board navigation
StockfishNative.javawriter-close paths unified to_writerLockInteger_bitcount()unsigned coerciononRenderProcessGone()crash-count backoff (3/60s)normalizeTagValue()tab filteringrender_error_titlekey)⏮ ◀ ▶ ⏭) below stats board (mainline/variation context-aware)Phase 61 — Cache pollution fix + PGN cache save + annotation move
_resetGameUIState()now centrally clears ALL game-related caches (15+ variables)_resetGameUIState()uniformly_pgnCacheSaveCurrent()distinguishes pure-import vs live-play games{}comment before first movePhase 62 — Visual annotation
importedflag_visualAnnotationsCacheentries now includeimportedbooleanimported=false(UI display aids, not exported)imported=true(human-authored, exported)_buildPGNString()only exportsimported=trueentriesPhase 63 — Export annotation dialog
_buildPGNString()acceptsincludeAnnotationsparameter_showPGNExportAnnotationDialog()shown before copy/export/cache-savePhase 64 — TRUE root cause fix: stale
reviewStates_computeAndCacheVisualAnnotationsusedreviewStates[moveIdx+1]as a shortcut, butreviewStatesfrom a previous game's review session was not cleared in_resetGameUIState()reviewStates/reviewMode/reviewStep/reviewBaseStatein_resetGameUIState()reviewStatesshortcut onreviewMode === truePhase 65 — Dialog back-button + haptics + stale-state audit
HapticManager.fire('BUTTON_PRESS')_preReviewSnapshot,setupHistory/setupRedoStack, 7 dialog flags — all now clearedcallback(null)(cancel) instead ofcallback(false)(No)Phase 66 — Strict full-codebase audit
_savePGNYestiming (async dialog polling)console.logremovalsopenStatsPageexplicitincludeAnnotations=trueKey Features
♟️ Chess Engine
🎨 User Interface
📝 PGN Support
[%eval]/[%csl]/[%cal]/[%emt]/[%clk]annotation support{}before first move)🎯 Chess960
📊 Statistics Page
⏮ ◀ ▶ ⏭) with mainline/variation context awareness[%emt]/[%clk])🔒 Privacy & Security
usesCleartextTraffic="false",allowBackup="false"Downloads
Regalia-v1.1.1-release.apkRegalia-v1.1.1-manual-zh.htmlRegalia-v1.1.1-manual-en.htmlAPK Signature
Build from Source
Prerequisites
Steps
See
BUILDING.mdfor full details.License
Regalia is a combined work under dual licensing:
Per GPL v3 Section 13, these licenses are compatible for combination. Since AGPL v3 imposes stricter network-interaction provisions, its obligations effectively extend to the entire combined work.
Source code: https://github.com/YDW99/Regalia
Credits
Third-Party Components
AI-GEN Declaration
All source files, documentation, and manuals in this project are marked with:
Previous Releases
Regalia v1.1.1 — Built with care for chess enthusiasts who value privacy, offline capability, and open source.
AI-GEN: AI assisted — This release note was AI-assisted and has been reviewed for AGPL v3 compliance.
AI-GEN
This discussion was created from the release Regalia v1.1.1.
All reactions