Releases: mardakurt/kingfisher
Release list
Kingfisher 1.1.9
Kingfisher 1.1.9
Released 2026-09-15. One defect in the Mac application, found by the
release gates for 1.1.8 within the hour of publishing it, and one release.
The web application has the same source and no change in it. The 1.1.8
bytes are untouched; 1.1.9 is a new release that Kingfisher → Check for
Updates… offers to an installed 1.1.8 through Sparkle, and to an
installed 1.1.0–1.1.7 through the engine those shipped with.
| Surface | Address |
|---|---|
| Web app | https://kingfisherchess.app/analysis |
| Landing page | https://kingfisherchess.app/ |
| macOS | Kingfisher-1.1.9-arm64.dmg on the v1.1.9 release |
| Data mirror | https://github.com/mardakurt/kingfisher-data |
Apple Silicon (arm64), macOS 13 (Ventura) or later — the floor of the
Electron 44 runtime the application is built on. Signed with a Developer ID
certificate and notarised by Apple, ticket stapled to the disk image and the
application.
What changed since 1.1.8
The user-facing list is the 1.1.9 entry in
CHANGELOG.md. In one paragraph:
After an update is installed, Kingfisher hands the profile it was running
on to the instance that relaunches, through one small file
(desktop/src/relaunch-profile.mjs). A Kingfisher started with an
explicit --user-data-dir in the five minutes after an install took that
file, adopted the updated instance's profile instead of its own, and the
real relaunch — which arrives with no arguments — found nothing and opened
the default profile. Only a launch that names a profile could do this; a
double-click never does. A launch that names its own profile now leaves
the file for the relaunch. Everything in 1.1.8 — Sparkle, its window, the
signed feed — is unchanged.
Installing and updating
Same as 1.1.8: download Kingfisher-1.1.9-arm64.dmg, open it, drag
Kingfisher to Applications, double-click. An installed 1.1.8 is offered
1.1.9 in Sparkle's own window; an installed 1.1.0–1.1.7 is offered it by
the engine it shipped with (the release carries latest-mac.yml for it).
Verification
The exact bytes the landing offers — size, SHA-256, build number and
commit — are in src/release/macos-download.json; npm run desktop:public:verify -- --landing --full downloads them from GitHub and
checks the hash, the signature and the stapled ticket. The commands run
for this release and their results — including a real update from the
public 1.1.8 to 1.1.9 through Sparkle's own window and the public feed —
are recorded in
docs/reports/phase-54-handover.md.
Kingfisher 1.1.8
Kingfisher 1.1.8
Released 2026-09-15. One change, in the Mac application: the update
engine is now Sparkle, the framework Mac
applications use to update themselves. The web application has the same
source and no change in it. The 1.1.7 bytes are untouched; 1.1.8 is a new
release that Kingfisher → Check for Updates… offers to an installed
1.1.7 — through the previous engine's feed, for the last time.
| Surface | Address |
|---|---|
| Web app | https://kingfisherchess.app/analysis |
| Landing page | https://kingfisherchess.app/ |
| macOS | Kingfisher-1.1.8-arm64.dmg on the v1.1.8 release |
| Data mirror | https://github.com/mardakurt/kingfisher-data |
Apple Silicon (arm64), macOS 13 (Ventura) or later — the floor of the
Electron 44 runtime the application is built on. Signed with a Developer ID
certificate and notarised by Apple, ticket stapled to the disk image and the
application.
What changed since 1.1.7
The user-facing list is the 1.1.8 entry in
CHANGELOG.md. In one paragraph:
Check for Updates… now asks the release feed through Sparkle 2.10.0,
embedded in the bundle from a recorded download (desktop/sparkle.json).
When a newer version exists Sparkle shows its own window with the release
notes; Install Update downloads the archive and verifies its EdDSA
signature against the key baked into the application, Install and
Relaunch confirms your work is saved, replaces the bundle and reopens
it. No password or Touch ID prompt: Sparkle installs with your own
permissions. The quiet, information-only look at launch stays; it shows
nothing and downloads nothing. Everything in 1.1.7 is unchanged.
Installing and updating
Same as 1.1.7: download Kingfisher-1.1.8-arm64.dmg, open it, drag
Kingfisher to Applications, double-click. An installed 1.1.0–1.1.7 is
offered 1.1.8 through Kingfisher → Check for Updates… by the engine it
shipped with (the release carries latest-mac.yml for it); that last
update may show the helper-tool prompt once, and 1.1.8 never will.
Verification
The exact bytes the landing offers — size, SHA-256, build number and
commit — are in src/release/macos-download.json; npm run desktop:public:verify -- --landing --full downloads them from GitHub and
checks the hash, the signature and the stapled ticket. The commands run
for this release and their results — including a real update from the
public 1.1.7 to a Sparkle build, and from one Sparkle build to the next,
both driven through Sparkle's own window — are recorded in
docs/reports/phase-54-handover.md.
Kingfisher 1.1.7
Kingfisher 1.1.7
Released 2026-09-14. Made from the owner's report on 1.1.6, in the Mac
application (the web application has the same source and no change in it). The 1.1.6
bytes are untouched; 1.1.7 is a new release that Kingfisher → Check for
Updates… offers to an installed 1.1.6.
| Surface | Address |
|---|---|
| Web app | https://kingfisherchess.app/analysis |
| Landing page | https://kingfisherchess.app/ |
| macOS | Kingfisher-1.1.7-arm64.dmg on the v1.1.7 release |
| Data mirror | https://github.com/mardakurt/kingfisher-data |
Apple Silicon (arm64), macOS 13 (Ventura) or later — the floor of the
Electron 44 runtime the application is built on. Signed with a Developer ID
certificate and notarised by Apple, ticket stapled to the disk image and the
application.
What changed since 1.1.6
The user-facing list is the 1.1.7 entry in
CHANGELOG.md. One defect, found by
the owner within minutes of 1.1.6:
- Mac: an update's relaunch reopens the profile that installed it. The
update engine relaunches with no arguments, so a Kingfisher on a
non-default profile came back on the default one — the owner's own
work. The update harness had done this in three phases; the owner's
installed 1.1.4 read "updated to 1.1.4, previously 1.1.6" before they
had updated anything. The shell now hands its profile to the relaunch. - Going backwards is never called an update.
Everything in 1.1.6 — the full-network browser Stockfish, the version-4
bundled reference, the palette, the header, the Databases rail, the
full-screen brand and the draggable headers — is unchanged.
Installing and updating
Same as 1.1.6: download Kingfisher-1.1.7-arm64.dmg, open it, drag
Kingfisher to Applications, double-click. An installed 1.1.6 is offered
1.1.7 through Kingfisher → Check for Updates…; Install Update replaces
the bundle in place and reopens the new version with the work intact.
Verification
The exact bytes the landing offers — size, SHA-256, build number and
commit — are in src/release/macos-download.json; npm run desktop:public:verify -- --landing --full downloads them from GitHub and
checks the hash, the signature and the stapled ticket. The commands run
for this release and their results are recorded in
docs/reports/phase-53-handover.md.
Kingfisher 1.1.6
Kingfisher 1.1.6
Released 2026-09-14. Made from the owner's Phase 53 round of fourteen
items, in both the web application and the Mac application. The 1.1.5
bytes are untouched; 1.1.6 is a new release that Kingfisher → Check for
Updates… offers to an installed 1.1.5.
| Surface | Address |
|---|---|
| Web app | https://kingfisherchess.app/analysis |
| Landing page | https://kingfisherchess.app/ |
| macOS | Kingfisher-1.1.6-arm64.dmg on the v1.1.6 release |
| Data mirror | https://github.com/mardakurt/kingfisher-data |
Apple Silicon (arm64), macOS 13 (Ventura) or later — the floor of the
Electron 44 runtime the application is built on. Signed with a Developer ID
certificate and notarised by Apple, ticket stapled to the disk image and the
application.
What changed since 1.1.5
The user-facing list is the 1.1.6 entry in
CHANGELOG.md. In short:
- The web has the full-strength Stockfish. A second browser engine,
Stockfish 18 (full network), carries the full-size evaluation network
the native binary uses — 113 MB, fetched once, no companion. Web only;
the Mac application has native Stockfish 19. - The bundled reference is a third larger: four years of broadcasts,
206,451 games, 38,749 openable scores, up to 300 a player. - The command palette answers what you typed, gathered by section.
- Data sources are never cut off in the Databases rail, and the page
is less crowded. - The header fits an iPad: Position and Set up are labelled from
430 px, and the row is measured to fit at three sizes. - Three workspace icons redrawn (Opening, Endgame, Training).
- The review queue orders by staleness, the Recent page's games say
when they were brought in, and Preparation gains a Recent form tab
and a 2,000-game cap. - Mac: the brand sits in the corner in full screen, and the window
can be dragged by any route's header, not only the sidebar's.
Installing and updating
Same as 1.1.5: download Kingfisher-1.1.6-arm64.dmg, open it, drag
Kingfisher to Applications, double-click. An installed 1.1.5 is offered
1.1.6 through Kingfisher → Check for Updates…; Install Update replaces
the bundle in place and reopens the new version with the work intact.
Verification
The exact bytes the landing offers — size, SHA-256, build number and
commit — are in src/release/macos-download.json; npm run desktop:public:verify -- --landing --full downloads them from GitHub and
checks the hash, the signature and the stapled ticket. The commands run
for this release and their results are recorded in
docs/reports/phase-53-handover.md.
Kingfisher 1.1.5
Kingfisher 1.1.5
Released 2026-09-14. Made from the owner's twelve reports on 1.1.4, in both
the web application and the Mac application. The 1.1.4 bytes are untouched;
1.1.5 is a new release that Kingfisher → Check for Updates… offers to an
installed 1.1.4.
| Surface | Address |
|---|---|
| Web app | https://kingfisherchess.app/analysis |
| Landing page | https://kingfisherchess.app/ |
| macOS | Kingfisher-1.1.5-arm64.dmg on the v1.1.5 release |
| Data mirror | https://github.com/mardakurt/kingfisher-data |
Apple Silicon (arm64), macOS 13 (Ventura) or later — the floor of the
Electron 44 runtime the application is built on. Signed with a Developer ID
certificate and notarised by Apple, ticket stapled to the disk image and the
application.
What changed since 1.1.4
The user-facing list is the 1.1.5 entry in
CHANGELOG.md. In short:
- The evaluation bar can be read, and a running engine follows the
board instead of stopping on every move. Concealing workspaces (Review
before reveal, Training) keep it off. - The evaluation graph is a graph — titled, scaled, captioned — and a
Reset moves button sits beside the move controls. - Review's journal records candidates on the one board; the second
board in the dock is gone and the panel is padded. - Annotation colours repaint the move-quality marks and every verdict,
not only the brushes, and Settings previews the result. - Three tournament-grade piece sets: Pirouetti, Kryukov, Sophia.
- More games behind every player: the bundled reference, version 3,
keeps 27,521 full scores (from 10,707) and up to 200 a player. - A sparring partner in Preparation plays the opponent's own moves
from their games, and the engine after, saying which is which. - Mac: the traffic lights no longer land on the Kingfisher mark on the
launches where React had regenerated the page; the reservation is
restated from the application. The update dialog shows three
highlights and a link instead of the whole changelog. - Analysis no longer fails hydration; Settings → Profile no longer suggests
the owner's own name.
Installing and updating
Same as 1.1.4: download Kingfisher-1.1.5-arm64.dmg, open it, drag
Kingfisher to Applications, double-click. An installed 1.1.4 is offered
1.1.5 through Kingfisher → Check for Updates…; Install Update replaces
the bundle in place and reopens the new version with the work intact.
Verification
The exact bytes the landing offers — size, SHA-256, build number and
commit — are in src/release/macos-download.json; npm run desktop:public:verify -- --landing --full downloads them from GitHub and
checks the hash, the signature and the stapled ticket. The commands run
for this release and their results are recorded in
docs/reports/phase-52-handover.md.
Kingfisher 1.1.4
Kingfisher 1.1.4
Released 2026-09-13. A small release on 1.1.3 made from the owner's second
look at it: the engines a Mac will never be offered now say why, the
landing's download card stops repeating the install guide, and
/favicon.ico exists. The 1.1.3 bytes are untouched; 1.1.4 is a new
release that Kingfisher → Check for Updates… offers to an installed 1.1.3.
| Surface | Address |
|---|---|
| Web app | https://kingfisherchess.app/analysis |
| Landing page | https://kingfisherchess.app/ |
| macOS | Kingfisher-1.1.4-arm64.dmg on the v1.1.4 release |
| Data mirror | https://github.com/mardakurt/kingfisher-data |
Apple Silicon (arm64), macOS 13 (Ventura) or later — the floor of the
Electron 44 runtime the application is built on. Signed with a Developer ID
certificate and notarised by Apple, ticket stapled to the disk image and the
application.
What changed since 1.1.3
The user-facing list is the 1.1.4 entry in
CHANGELOG.md. In short:
- Engines that do not exist for your machine say so. Berserk 14,
Obsidian 16.0 and Koivisto 9.0 publish Windows builds only (Koivisto
also Linux). On a Mac the selector marks them "Windows only" and
Settings → Engines carries a "Not offered on macOS" note naming them and
the reason, so six native engines out of nine no longer reads as three
broken ones. The six — Stockfish 19, Stormphrax 8, Viridithas 20,
Halogen 16, PlentyChess 8 and Lc0 — install and run on Apple Silicon. - The landing's download card is shorter; the install guide, linked
beside the download, says what the removed paragraph said. - A
/favicon.icoexists; every browser's conventional request for it
had answered 404.
Installing and updating
Same as 1.1.3: download Kingfisher-1.1.4-arm64.dmg, open it, drag
Kingfisher to Applications, double-click. An installed 1.1.3 is offered
1.1.4 through Kingfisher → Check for Updates…; Install Update replaces
the bundle in place and reopens the new version with the work intact.
Verification
The exact bytes the landing offers — size, SHA-256, build number and
commit — are in src/release/macos-download.json; npm run desktop:public:verify -- --landing --full downloads them from GitHub and
checks the hash, the signature and the stapled ticket. The commands run
for this release and their results are recorded in
docs/reports/phase-51-handover.md.
Kingfisher 1.1.3
Kingfisher 1.1.3
Released 2026-09-13. A feature release on 1.1.2 made from nineteen owner
reports after the first day of public use: every board page now renders the
same frame as Analysis, position setup is reachable from all of them, and a
dozen things that were broken or unreachable — the tool dock's More menu,
the engine selector, "Open on the board", the opponent search, the Lichess
sign-in on the Mac — work. The 1.1.2 bytes are untouched; 1.1.3 is a new
release that Kingfisher → Check for Updates… offers to an installed 1.1.2.
| Surface | Address |
|---|---|
| Web app | https://kingfisherchess.app/analysis |
| Landing page | https://kingfisherchess.app/ |
| macOS | Kingfisher-1.1.3-arm64.dmg on the v1.1.3 release |
| Data mirror | https://github.com/mardakurt/kingfisher-data |
Apple Silicon (arm64), macOS 13 (Ventura) or later — the floor of the
Electron 44 runtime the application is built on. Signed with a Developer ID
certificate and notarised by Apple, ticket stapled to the disk image and the
application.
What changed since 1.1.2
The user-facing list is the 1.1.3 entry in
CHANGELOG.md. In short:
- One page shape. Studies, Repertoire, Openings, Preparation, Review,
Training, Endgame and Opening Files render the frame Analysis does: the
board with its move list, the resizable dock, and the same header
controls. Each page adds only its own list (in a rail that folds), its
own actions and its own dock panel. On a laptop the rail starts folded so
the board stays the largest thing on the page. - Set up a position anywhere. A Set up button in every board
page's header; adding and removing pieces was reachable from Analysis
only. - The More menu opens and lists every tool; pinned tabs wrap instead
of scrolling out of sight. - Midnight is the default board. A profile that never chose a theme
moves to it once. - The engine selector is on the engine panel, every option says
whether it can start here, and the engine you choose is the engine you
get after a restart. - Clear the move tree while keeping the position; a second click on a
selected piece deselects it. - Open on the board opens the opening at the end of its line; Open
this position in Explorer opens the Explorer on the position. - Preparation searches the player library and builds the report from
the installed reference sources as well as your own games. - Sign in with Lichess works in the Mac application. The sign-in used
to open in the system browser, where it could never finish; it now opens
in a window of its own and returns to Kingfisher. Linking a Lichess
username explains that Lichess serves game exports only to signed-in
clients rather than claiming the account does not exist. - One row per player in the library (a Turkish ı and a one-way alias
match had split people in two), with the country beside the name. - Settings is wider, with the sections down the left.
- 188 more variation briefs, and eight corrected against the dataset's
own lines.
Installing and updating
Same as 1.1.2: download Kingfisher-1.1.3-arm64.dmg, open it, drag
Kingfisher to Applications, double-click. An installed 1.1.2 is offered
1.1.3 through Kingfisher → Check for Updates…; Install Update replaces
the bundle in place and reopens the new version with the work intact.
Verification
The exact bytes the landing offers — size, SHA-256, build number and
commit — are in src/release/macos-download.json; npm run desktop:public:verify -- --landing --full downloads them from GitHub and
checks the hash, the signature and the stapled ticket. The commands run
for this release and their results are recorded in
docs/reports/phase-51-handover.md.
Kingfisher 1.1.2
Kingfisher 1.1.2
Released 2026-09-13. A maintenance release on 1.1.1 that brings the public
Mac application back to the same source revision as the web application:
1.1.1 (build 494, 6df79f8) predated the fixes made while certifying
Phase 49 and the update-experience work of Phase 50. The 1.1.1 bytes are
untouched; 1.1.2 is a new release that Kingfisher → Check for Updates…
offers to an installed 1.1.1.
| Surface | Address |
|---|---|
| Web app | https://kingfisher-roan.vercel.app/ |
| Landing page | https://kingfisher-chess.vercel.app/ |
| macOS | Kingfisher-1.1.2-arm64.dmg on the v1.1.2 release |
| Data mirror | https://github.com/mardakurt/kingfisher-data |
Apple Silicon (arm64), macOS 13 (Ventura) or later — the floor of the
Electron 44 runtime the application is built on. Signed with a Developer ID
certificate and notarised by Apple, ticket stapled to the disk image and the
application.
What changed since 1.1.1
The user-facing list is the 1.1.2 entry in
CHANGELOG.md. In short:
- No more Touch ID or password prompt on every update. The macOS
dialog Kingfisher is trying to add a new helper tool fired on every
Install Update because Squirrel.Mac always tries to install itself as
a privileged helper (Squirrel/Squirrel.Mac#192, #247). Kingfisher now
writesSquirrelMacEnableDirectContentsWriteas the string"TRUE"
in its own defaults domain on first launch — ShipIt compares with
isEqualToString:, so a boolean written withdefaults write -bool
silently fails — and the update engine writes the bundle directly. The
first launch after a fresh install may still prompt once; every update
after that is silent. SHA-512 verification, Developer ID signing and
notarisation are unchanged. - Release notes appear inline in the update dialog. The
Check-for-Updates window renders the GitHub release body between the
headline and the footnote. Headings, lists, paragraphs, bold, italic and
inline code are supported; there is no HTML pass-through and no
string-to-DOM sink, so a hostile release body cannot run in the dialog. - A quiet background check on launch. Five seconds after start-up the
application asks the release feed once; if a newer release exists, the
Kingfisher menu's Check for Updates… item re-labels itself to An
Update Is Available… (or Update Ready to Install… once downloaded).
No badge, no banner, no notification, no further polling; the explicit
click is unchanged. - Send feedback sends. Every in-application Send since the dialog
shipped failed with Illegal invocation before the request left the
browser; the direct route worked, which is what the smoke tests had
exercised. The request now leaves the page, carries the fill-time
stamp the route requires, and attaches the current position when the
switch is on.e2e/feedback.spec.tsdrives the real dialog. - The three web fixes that 1.1.1 lacked: a PGN worker no longer loads
another worker's module after a cached navigation; a shortcut can be
rebound in Safari; one prepared position is singular.
Installing and updating
Same as 1.1.1: download Kingfisher-1.1.2-arm64.dmg, open it, drag
Kingfisher to Applications, double-click. An installed 1.1.1 is offered
1.1.2 through Kingfisher → Check for Updates…; Install Update replaces
the bundle in place and reopens the new version with the work intact. The
first such update may show the helper-tool prompt once (the flag is set on
1.1.1's next launch, not retroactively); after that they are silent.
Verification
The exact bytes the landing offers — size, SHA-256, build number and
commit — are in src/release/macos-download.json; npm run desktop:public:verify -- --landing --full downloads them from GitHub and
checks the hash, the signature and the stapled ticket. The commands run
for this release and their results are recorded in
docs/reports/phase-50-handover.md.
Kingfisher 1.1.1
A maintenance release on 1.1.0, signed with a Developer ID certificate and notarised by Apple: the DMG opens and the application starts with a normal double-click, and an installed 1.1.0 is offered it through Kingfisher → Check for Updates…. Apple Silicon (arm64), macOS 13 (Ventura) or later.
What changed since 1.1.0 — the evaluation bar keeps saying the same side is better when the board is flipped; a surname finds the player you mean ("Kasparov" is Garry, "Tal" is Mikhail); the Theory Book locates a line by its positions, so a transposition is the opening it reaches; a bare clock comment no longer doubles on every PGN round trip; full screen uses the whole corner on macOS; the command palette has one focus ring; the install page describes a notarised application; and the system requirement is stated correctly. The full list is in CHANGELOG.md.
Install: open the DMG, drag Kingfisher to Applications, double-click. The install guide has the details. If you have 1.1.0: Kingfisher → Check for Updates… installs this release and keeps your Studies, Repertoire and settings. If you have the 1.0.0 preview: it cannot update itself — replace it by hand once; your work is kept.
Build 494 · commit 6df79f8 · Kingfisher-1.1.1-arm64.dmg · 159338583 bytes
SHA-256: af3873f4e8d96386b57277209e3951a53a3481d346083ed6ed9c854dbf3dc8df
Notarisation is Apple's automated malware screening of the build, not an endorsement of the product.
Kingfisher 1.1.0
The first Kingfisher signed with a Developer ID certificate and notarised by Apple: the DMG opens and the application starts with a normal double-click. Apple Silicon (arm64), macOS 13 (Ventura) or later — corrected 2026-09-13: this note and the bundle originally said macOS 11, which the Electron 44 runtime inside the application does not support. The bytes of the release are unchanged. Kingfisher 1.1.1 is the current release.
What's new since 1.0.0 — the packaged application that contains the application (1.0.0's successors had shipped without their web server), a native Check for Updates window and a working updater, Game Review, two-engine comparison with redrawn best-move arrows, a titled-player roster of 8,339 GM/WGM/IM/WIM players, opening search that answers to the names players use, Halogen 16.8.0, and the fixes listed in CHANGELOG.md.
Install: open the DMG, drag Kingfisher to Applications, double-click. The install guide has the details. If you have the 1.0.0 preview: it cannot update itself (it predates the updater and is signed with a different identity) — replace it by hand once; your Studies, Repertoire and settings are kept.
Build 472 · commit a9d3b3e · Kingfisher-1.1.0-arm64.dmg · 160503993 bytes
SHA-256: c4b21c2ebeb0a3fd7963d63eb38002e8f955fddf8fb015c3edcec20241ce6b27
Notarisation is Apple's automated malware screening of the build, not an endorsement of the product.