Spitfire 0.18.0 release notes
Released: 2026-10-08
- SQL query mix: up to 200 weighted queries in one step; each iteration runs one, picked by weight. Each query's count, share, p50/p95/p99 and error rate show separately on the run page, in the HTML/PDF report and the CLI summary; a threshold can target one query ("filter": {"check": "<name>"}).
- SQL bulk add: paste statements or pick a .sql file; they are split by PostgreSQL, MySQL/MariaDB, SQL Server (GO) and Oracle (/) rules and listed with line numbers and read/write kind. A repeated statement is taken once with its count as the weight; writes come unticked. Output: one query mix step, or one step per statement.
- Import from production statistics: paste pg_stat_statements or MySQL performance_schema digests as CSV/TSV, or (admins) read them read-only through the connection; the weight is the call count, parameters bind to a CSV column or fake data.
- SQL write protection rewritten: it follows each database's own rules (MySQL # comments, PostgreSQL nested comments and $ strings, SQL Server [names] and GO, Oracle q'' strings); a write counts only where a statement starts, so replace() or a column named update no longer makes a read a write. FOR KEY SHARE, LOCK IN SHARE MODE and SQL Server lock hints are caught too. On SQL Server and Oracle a warning says reads do not run in a read-only transaction.
- Support bundle: "Download support bundle" on the System events page — controller and runner logs, version and install details, settings with secrets removed, the license status (not the key), the last 30 days of events and a summary of recent failed runs in one zip. Its contents are listed before the download; nothing is sent anywhere on its own. When the UI is down: ./install.sh --support-bundle or install.ps1 -SupportBundle.
- System events (installation admins): panics, server errors, runners connecting and dropping, failed runs, the license, the update check, the database, SSO/LDAP and notification channel failures, kept 30 days and filterable.
- Error code: on a server error the UI shows an "Error code" (with a copy button); the same code finds the request in the log and the support bundle.
- Panics no longer bring the controller or a runner down: an API request answers 500 with an error code, background jobs restart, and a panic in a protocol driver counts as a failed request while the runner keeps going.
- The controller log is also written to the data volume (20 MiB × 5; SPITFIRE_LOG_FILE, SPITFIRE_LOG_MAX_SIZE_MB, SPITFIRE_LOG_MAX_FILES); the runner's --log-file now rotates too. Existing installations get this with the update command.
Updating
Your installation tells you about a new release itself: admins see its notes and the update command for that installation at the top of the UI. The command backs up the database first and keeps the settings (Updating). You can also follow new releases with the RSS feed.