Skip to content

Releases: mardakurt/kingfisher

Kingfisher 1.1.9

Choose a tag to compare

@mardakurt mardakurt released this 15 Sep 15:38

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

Choose a tag to compare

@mardakurt mardakurt released this 15 Sep 14:11

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

Choose a tag to compare

@mardakurt mardakurt released this 14 Sep 20:07

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

Choose a tag to compare

@mardakurt mardakurt released this 14 Sep 19:18

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

Choose a tag to compare

@mardakurt mardakurt released this 14 Sep 15:01

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

Choose a tag to compare

@mardakurt mardakurt released this 13 Sep 20:33

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.ico exists; 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

Choose a tag to compare

@mardakurt mardakurt released this 13 Sep 19:20

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

Choose a tag to compare

@mardakurt mardakurt released this 13 Sep 12:38

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
    writes SquirrelMacEnableDirectContentsWrite as the string "TRUE"
    in its own defaults domain on first launch — ShipIt compares with
    isEqualToString:, so a boolean written with defaults 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.ts drives 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

Choose a tag to compare

@mardakurt mardakurt released this 13 Sep 07:05

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

Choose a tag to compare

@mardakurt mardakurt released this 12 Sep 17:20

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.