Download Latest Version flamerobin-portable-26.7.1-x86.zip (19.8 MB)
Email in envelope

Get an email when there's a new version of FlameRobin

Home / v26.6.25
Name Modified Size InfoDownloads / Week
Parent folder
FlameRobin-26.6.25-x64.msi 2026-06-26 16.5 MB
flamerobin-portable-26.6.25-x64.zip 2026-06-26 20.7 MB
FlameRobin-26.6.25-x86.msi 2026-06-26 15.8 MB
flamerobin-portable-26.6.25-x86.zip 2026-06-26 19.8 MB
flamerobin_26.6.25_amd64.snap 2026-06-26 24.7 MB
flamerobin-26.6.25.deb 2026-06-26 30.6 MB
flamerobin-macos-26.6.25.zip 2026-06-26 7.2 MB
flamerobin-26.6.25.flatpak 2026-06-26 14.2 MB
FlameRobin 26.6.25 source code.tar.gz 2026-06-26 1.3 MB
FlameRobin 26.6.25 source code.zip 2026-06-26 1.8 MB
README.md 2026-06-26 4.3 kB
v26.6.25 source code.tar.gz 2026-06-26 1.3 MB
v26.6.25 source code.zip 2026-06-26 1.8 MB
Totals: 13 Items   155.7 MB 51

FlameRobin 26.6.25 Release

Summary

This release focuses on connection reliability — specifically fixing a long-standing regression where FlameRobin could not reconnect to a Firebird database after a silent connection drop (e.g. a VPN disconnect, server restart, or network timeout). It also corrects the default transaction isolation level used for metadata queries.


What is Fixed

🔌 Impossible to reconnect after connection loss (#636)

In older versions of FlameRobin, if the connection to the server was lost, the user could simply click Database → Reconnect and resume work. In recent builds this was broken in three different ways:

Problem 1 — connectedM flag was never cleared on a silent drop. When the network goes away, Firebird's IBPP layer resets its internal handle to 0 but Database::connectedM stayed true. The Reconnect menu item was gated by OnMenuUpdateIfDatabaseConnected (requires connectedM == true), so the item appeared clickable after a drop — but after a clean disconnect() call (where connectedM becomes false) the item became grayed out, making it impossible to reconnect.

Problem 2 — The old Database::reconnect() bypassed all reconnection logic. It called databaseDAL_M->disconnect() then a bare databaseDAL_M->connect(), which reconnects only the low-level IBPP handle. It never called the full Database::connect() pathway, so connectedM was never set back to true, none of the metadata collections (tablesM, domainsM, viewsM, etc.) were re-initialised, no observers were notified, and the tree remained empty or stale.

Problem 3 — Database::connect() early-returns if connectedM is true. Even if someone called connect() directly after the drop (while connectedM was still true), the guard if (connectedM) return; meant it was a no-op.

Fix applied:

  • Database::reconnect() now calls setDisconnected() first, which resets connectedM to false, destroys all metadata collection objects, and notifies observers so the tree collapses cleanly. A low-level databaseDAL_M->disconnect() is attempted first (wrapped in try/catch — it may fail if the handle is already dead). Then the full connect(getDecryptedPassword()) is invoked, which reinitialises everything including the metadata tree.

  • MainFrame::OnMenuReconnect now forces db->disconnect() (tolerating errors), then delegates to connectDatabase() — the same utility used by the normal Connect action. This ensures the password prompt, progress dialog, and charset mismatch warning all work correctly on reconnect, exactly as they do on first connect.

  • The EVT_UPDATE_UI for Menu_Reconnect is changed from OnMenuUpdateIfDatabaseConnected to OnMenuUpdateIfDatabaseSelected. Reconnect is now available whenever a database node is selected, regardless of the current connection state. This covers the scenario where the connection dropped silently and connectedM is false.


🔄 Fix default transaction isolation level to ReadCommitted

The default transaction isolation level for internal metadata queries was incorrect. It is now consistently set to ReadCommitted, which matches Firebird best-practice for DDL/metadata reads and avoids stale-read anomalies after schema changes.


Files Changed

File Change
src/frversion.h Bump FR_VERSION_RLS from 24 to 25
src/metadata/database.cpp Rewrite Database::reconnect() to call setDisconnected() plus full connect()
src/gui/MainFrame.cpp Fix OnMenuReconnect handler; change EVT_UPDATE_UI for Reconnect to OnMenuUpdateIfDatabaseSelected

Changelog

b48ad85e Bump version to 26.6.25
82661bed Fix impossible to reconnect after connection loss (#636)
58636656 Fix default transaction isolation level to ReadCommitted

Upgrade Notes

No configuration or database changes are required. Simply replace the existing FlameRobin binary with this release.


Downloads

Pre-built packages for Windows (x64/x86 MSI and portable ZIP), macOS, and Linux (.deb, Flatpak, Snap) are attached to this release as assets once CI completes.

Source: README.md, updated 2026-06-26