Regalia v1.0.1 #4
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
New Contributors
Full Changelog: v1.0.0...v1.0.1
Regalia v1.0.1 — Release Notes
The notification retains its other v1.0.1 properties:
setOngoing(true)+FLAG_NO_CLEAR.PendingIntentlaunchesMainActivity.setOnlyAlertOnce(true)+setShowWhen(false).setLocalOnly(true), no remote mirroring.On Android 14+, the user can still dismiss the notification via the
notification shade long-press menu — the OS overrides
setOngoingat thatlevel. The foreground service itself continues running. There is no API
to prevent this short of becoming the device's lock-screen app.
# Regalia v1.0.1 — Release Notes
1.0.110135(Android 15)21(Android 5.0 Lollipop)arm64-v8a(with.dotprodflag)Table of Contents
Overview
Regalia is a single-player-first chess application for Android that bundles the
Stockfish 18 engine as its sole analysis backend. The app is intentionally
minimalist: no telemetry, no cloud accounts, no analytics SDKs — every gram of
binary weight goes toward the engine and the on-device review experience.
The v1.0.1 release is a refinement patch over v1.0.0. It does not introduce
new major features; instead, it polishes six rough edges reported through
real-world use: a notification bar that was too chatty, an undo button that
silently failed to re-select the moved piece, PGN imports that lost variation
branches under non-standard SAN, and a screenshot policy that was too strict
for casual sharing.
Note
The version number stays at
1.0.1. This file documents the final stateof the v1.0.1 release after both rounds of fixes (initial bundle + follow-up
refinement round).
What's New in v1.0.1
A bird's-eye view of every change shipped in this version, relative to v1.0.0.
Summary Table
FLAG_SECUREremoved)Tip
Items 1–6 were the user's explicit requests for this round. Items 7–9
were carried over from the initial v1.0.1 bundle and remain in this release.
At a Glance
+/#suffixes).undoMove; docstrings refreshed.Deep-Dive: Each Change
1. Code Fixes & Improvements
Move evaluation labels: In English mode, the label "Book" has been replaced with "Mediocre" (Chinese label "标准" remains unchanged).
Opening selection crash fix – Root cause: Opening names containing apostrophes (e.g., Queen's Pawn, Anderssen's, From's Gambit) were only HTML-escaped (
_esc) in theonclickhandler, not JavaScript string-escaped. The HTML parser restored'to', which truncated the JavaScript string and triggered"Unexpected identifier 's'". Fixed by replacing_escwith_escJs()in bothui.jsandgame-logic.js.MobSF security hardening (each researched, evaluated for trade-offs, and implemented accordingly):
@JavascriptInterfacemethods in JS bridgenetwork_security_config.xml(Lichess certificate pinning + CT)2. Notification Bar — Three-State Model
The foreground service notification used to display live engine metrics:
That was useful for engine debugging, but noisy for end users who don't think
in plies or kilonodes-per-second. v1.0.1 collapses it to three states:
bestmovereceivedReady/就绪gosent, nobestmoveyetAnalyzing…/分析中…Unexpectedor returns emptyEngine error: <msg>(truncated to 80 chars)The notification retains its other v1.0.1 properties:
setOngoing(true)+FLAG_NO_CLEAR.PendingIntentlaunchesMainActivity.setOnlyAlertOnce(true)+setShowWhen(false).setLocalOnly(true), no remote mirroring.Note
On Android 14+, the user can still dismiss the notification via the
notification shade long-press menu — the OS overrides
setOngoingat thatlevel. The foreground service itself continues running. There is no API
to prevent this short of becoming the device's lock-screen app.
3. Undo Auto-Select Fix
Symptom
After pressing Undo, the previously-moved piece was supposed to be
auto-selected so the user could continue exploring lines. In practice, nothing
got selected — the highlight never appeared.
Root Cause
prev.lastMoveis the last move recorded inside the previous state — i.e.,the move before the one being undone. That square, after restoring, is
usually empty or holds the opponent's piece. The subsequent
pieceAtFrom.color === playerColorcheck silently failed, so the select callnever fired.
Fix
Capture the move that is actually being undone before popping the
state stack, then use its
.from:The dead fallback that used to select
lastMove.to(the wrong square,opponent's piece) was removed entirely.
Verification Matrix
Regalia v1.0.1 — refined, not rewritten.
This discussion was created from the release v1.0.1.
All reactions