Sailfish

Changelog

Every released version, with its date and what changed in it.

Every released version of Sailfish, newest first, with what changed in each. Releases are published to the private Composer registry at sailfish.composer.sh; composer update boring-o11y/my-sailfish moves you to the newest release your version constraint allows.

All releases#

Version Date Headline
0.2 23 Oct 2026 Transactions after they finish, and an Instrumentation page
0.1 2 Oct 2026 First public release

0.2 — 23 October 2026#

Added — a Transactions page. Every collection reads the transactions that finished since the previous one: committed against rolled back, charted as the share rolled back, and those that ran at least transactions.long_seconds (5 by default, SAILFISH_LONG_TRANSACTION_SECONDS), listed slowest first with how long each ran, whether it rolled back, how many statements it ran, its access mode and isolation level, and the account and program that ran it. Never its text. Long transactions are kept for retention.long_transaction_days (30). See The dashboard and What gets recorded.

Added — two events. A rollback surge, sent immediately, when the share of transactions rolled back over the last hour is at least 3× its usual share for that hour, at least 5%, and at least 60 rollbacks. A long transaction, sent in the daily digest, for each account and program that finished a transaction over transactions.long_seconds in the last hour. See Events.

Added — the statements each open transaction has run. On the Activity page, under the session in the open transactions and in the blocking trees: their text, time, rows affected, sent and examined, and any error, from events_statements_history. The statement that took row locks on a table someone is waiting for is marked where performance_schema can tell. Text and error messages are behind the viewSailfishQueryText gate.

Added — what a running statement waits on, and ALTER TABLE progress. While events_waits_current is on, the Activity page says what each running statement is waiting on: disk I/O, the redo log, a row, table or metadata lock, a mutex or latch, the network. While events_stages_current is on, it says the stage each statement is in, and shows a running ALTER TABLE's progress with an estimate of the time left. See The dashboard.

Added — an Instrumentation page. What each part of Sailfish needs from performance_schema and whether it is on, every consumer with what it records and what Sailfish reads it for, the share of statements sent as native prepared statements, and the SQL and my.cnf lines to turn on what is off. The overview also warns when most statements get no digest. See The dashboard.

Changed — table-scan surges allow for traffic. The usual scans are grown by as much as the table's index reads grew, and the surge must add twice the usual on top of that, so more queries alone stay quiet. A quiet hour still needs 3× the usual. A surge opens only on a table of at least min_rows (1,000), since a small lookup table is scanned by design. See Events.

Removed — PHP 8.2 and 8.3. Sailfish now requires PHP 8.4 or later.

0.1 — 2 October 2026#

The first public release: five-minute snapshots of performance_schema kept across restarts, the overview, Server, Activity, Indexes, Tables, Errors and Events pages, sixteen detectors, and notifications by mail, Slack and webhook with a daily digest, reminders and recoveries.

Common questions

What is the latest version of Sailfish?

0.2, released on 23 October 2026. It reads transactions after they finish, with a Transactions page and events for long transactions and rollback surges, shows what a running statement waits on and how far an ALTER TABLE has got, lists the statements each open transaction has run, and adds an Instrumentation page. It requires PHP 8.4.

How do I update Sailfish to the latest version?

Run composer update boring-o11y/my-sailfish. That moves you to the newest release your version constraint allows. Every purchase includes twelve months of upgrades.

Install Sailfish today.

Checkout ends with your license key, and the installation guide takes it from there.