| Name | Modified | Size | Downloads / 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 callssetDisconnected()first, which resetsconnectedMtofalse, destroys all metadata collection objects, and notifies observers so the tree collapses cleanly. A low-leveldatabaseDAL_M->disconnect()is attempted first (wrapped in try/catch — it may fail if the handle is already dead). Then the fullconnect(getDecryptedPassword())is invoked, which reinitialises everything including the metadata tree. -
MainFrame::OnMenuReconnectnow forcesdb->disconnect()(tolerating errors), then delegates toconnectDatabase()— 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_UIforMenu_Reconnectis changed fromOnMenuUpdateIfDatabaseConnectedtoOnMenuUpdateIfDatabaseSelected. 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 andconnectedMisfalse.
🔄 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.