Project /
Changelog
What changed in each version of Gresbase, newest first.
On this page
v0.3.0 is the first public version; v0.1.0 and v0.2.0 were never published.
v0.3.0 (2026-10-14)#
Polish of the base product, and fixes from using it on real projects.
Added#
- Structure editing: create tables, and add, rename, retype or drop columns. Also indexes, unique and check constraints, and foreign keys. Every change shows the exact SQL and its warnings before it runs. Drops ask you to type the name.
- Columns: hide, reorder, resize and reset the view. Saved per connection and table, with pinned columns and rows.
- Rectangular selection, copy as TSV, CSV, JSON or
INSERT, and paste from a spreadsheet into the change queue. - Table tabs, favorites and recents per connection, also in the command palette.
- SQL editor tabs per connection, and
:nameparameters sent as bound parameters. - Settings screen with general, connections, security, SQL editor and about sections. Settings set by environment variables are locked.
- Row selection with a click, a resizable table list, and context menus in the table list, the SQL history and saved queries.
- Free mode: private saved queries for each user and server, and a session menu with Switch connection and Disconnect.
GRESBASE_DB_NAMEandGRESBASE_DB_USERfix the database and user of the connection forms. With host, database and user fixed, free mode only asks for the password.GRESBASE_TRUSTED_PROXIES: behind those proxies, the sign-in limit uses the client's own IP.- Setup token: the log carries a ready
/setup#token=…link, andgresbase setup-tokenprints the token inside the container. - Long SQL queries, CSV imports and structure changes stay alive behind Nginx or Cloudflare, with no proxy timeout to raise.
Changed#
- Initial JavaScript halved (510 → 275 KB gzip): heavy screens load on demand. Tablet layout fixes.
- A typed value that doesn't fit its column now blocks saving instead of failing on the server.
- Tables with a primary key show the newest rows first by default.
- Licensed under Apache 2.0.
Fixed#
- The SQL editor selection was hidden behind the active line.
- The cell editor has a single accent border, both language flags have the same size, and the row panel footer stays at the bottom.
- The
host_not_allowedconnection failure has its own message. - A relative
GRESBASE_DATA_DIRno longer shows the warning about data that isn't kept.
Security#
- A role with
default_transaction_read_onlycould lift it from the SQL editor. The editor now treats that role as read-only. - The sign-in limit counts only failed attempts.
- The warning about data that isn't kept now detects an anonymous volume, the container layer and tmpfs, and says when the data would be lost.
v0.2.0 (unreleased)#
Compatibility, access and configuration.
Added#
- PostgreSQL 12 to 19, with capabilities per version. Notices for legacy and pre-release servers, and a clear refusal of 11 and older.
- Zero mandatory variables: settings in
gresbase.json, with encrypted secrets. Environment variables win over the file, and the file over the defaults. - Local administrator account and a password change that ends the other sessions.
- Connection manager: one pool per connection, and idle pools are closed.
- Setup wizard on first start, protected by a setup token unless the request is local.
- Free mode, like Adminer (
GRESBASE_MODE_FREE), withGRESBASE_ALLOWED_DB_HOSTSand session limits. - Saved connections with color labels, a selector in the connection card and in ⌘ K, and one connection per browser tab.
Fixed#
- The destructive SQL detector flags
MERGE … THEN DELETE/UPDATEand an unconditionalWHEN NOT MATCHED BY SOURCE. - Canceling a query while it waited for a pool connection was lost.
- Idle pool timing used the wall clock.
- Test containers no longer stall when the disk is under pressure.
v0.1.0 (2026-10-10, unreleased)#
First version (MVP).
Added#
- One image and one binary with the frontend embedded. Configuration through environment variables,
/healthzandgresbase healthcheck. - Floating, collapsible sidebar, light, dark and auto themes, English and Spanish, and state kept in the URL.
- Optional sign-in with signed cookies, rate limiting, a CSRF header and a
Hostguard when there is no sign-in. - Table browser and data grid: filters, multi-column sort, keyset pagination, exact count, long and binary values, and the equivalent SQL.
- Safe editing: change queue with a diff, one transaction per save, conflict detection, undo and redo, cascade impact, and typed confirmation to empty or delete a table.
- Structure and relations tabs, generated DDL, foreign key jumps and "referenced by".
- SQL editor: autocomplete, run one statement or all, cancel, error position, transactions, confirmation for destructive SQL, history and saved queries.
- Command palette (⌘ K) and keyboard shortcuts help.
- CSV and JSON export in streaming, and CSV import into existing tables with a per-row error report.
- Read-only mode in two layers.
- Column and row pinning, kept per table in the browser.
Hardening before release#
- CSV export runs a parameterized query and writes the CSV in Go.
- An open SQL transaction is rolled back when you leave the page. On load, the editor offers to resume or roll back the ones still open.
- CSV import has its own timeout (
GRESBASE_IMPORT_TIMEOUT,10mby default) and stops when the client disconnects. - SQL autocomplete suggests unqualified columns from the tables in the current statement.
- Generated DDL includes the sequences of
serialcolumns and theirOWNED BY. - Dark theme: muted text reaches a 4.5:1 contrast on edited cells.
The full list is in CHANGELOG.md.