Releases: tablexdev/tablex
Releases · tablexdev/tablex
Release list
TableX v1.0.0
The first public release. TableX's development history predates this
repository going public, so 1.0.0 describes the whole tool rather than a
delta; see SECURITY.md
for how to verify the signed binaries, packages and images this release
introduces.
Added
- Multi-engine support for MySQL, MariaDB, PostgreSQL and SQLite behind one
Dialectinterface with ~45 opt-in capability interfaces, so an engine that
lacks a feature degrades rather than breaking. Adding a fifth engine means
implementingDialectand registering it — see
docs/adding-an-engine.mdand the reusable
conformance suite ininternal/driver/drivertest. - A phpMyAdmin-shaped UI reproduced clean-room: browse with multi-column
sort, filtering, column visibility and bulk row actions; structure editing with
column rename, reorder, ENUM/SET editing and index depth; the SQL console;
export and import in SQL, CSV, JSON and XML with gzip on both sides; a schema
designer; users and privileges down to column and routine scope; stored
routines, triggers and events with full CRUD; table maintenance operations. - Enterprise platform layer: a durable session store and metadata database
(internal/storage), a pluggable audit trail recording who changed what from
where (internal/audit), restricted mode (read_only,allow_console,
allow_ddl,database_allowlist) enforced in middleware and reflected in
the UI, a Prometheus/metricsendpoint with no new dependency, and a
per-session query budget. - Release artifacts: signed checksums, an SPDX SBOM, static binaries for six
OS/arch pairs, and multi-arch container images — none of which previously
existed, since CI cross-compiled to/dev/nulland discarded its image. - A startup version check. Connecting a server older than the documented
engine floor now says so at login instead of degrading silently at the point of
use. - Optional single sign-on (
[sso]) — an OpenID Connect provider in front of
the login form, as an extra factor rather than a replacement for it: the
connection still uses your own database credentials, so per-user audit
attribution and the never-store-a-credential guarantee both survive. Code flow
with PKCE, written against the standard library with no new dependency. - A global per-account lockout (
login_account_max, on by default). Every
other login throttle key starts with the client IP, so an attacker with an
IPv6 /64 or a botnet previously got the full per-IP budget per address against
one account.
Changed
- Both themes meet WCAG AA contrast, enforced by a test that parses the
shipped stylesheet and resolves every token pair. Dark mode is now entirely a
re-spec of token values: no rule in the stylesheet carries a raw colour, and a
test fails the build if one appears. - Every request reports that it is running — a progress bar,
aria-busyon
the region being replaced, and disabled submit controls, so a slow query no
longer looks like an ignored click. - Assets are fingerprinted and cached for a year rather than revalidated
hourly, and htmx's page cache is off so query results are no longer written to
sessionStorage. - The accessibility baseline is asserted, not asserted-to: one
<h1>per
page naming it,scopeon every column header, accessible names on every
row-editor control, one permanent live region, and an off-canvas drawer that
leaves the tab order when closed.
Fixed
- The SQL console ran on an unspecialized dialect, so
RETURNINGrows were
silently discarded on MariaDB and PostgreSQL 17. - Imports buffered up to 32 MiB per request in memory; text cells were uncapped;
views paid a fullCOUNT(*)on every render. - PostgreSQL dumps were not byte-deterministic (a map iteration leaked into
output ordering). - Leaving a half-finished edit discarded it silently — there was no dirty
tracking and, because htmx swaps without navigating, no browser prompt either.
TableX v1.0.0-rc.2
Pre-release v1.0.0-rc.2. See CHANGELOG.md on the tagged commit for what is coming in the final release.
TableX v1.0.0-rc.1
Pre-release v1.0.0-rc.1. See CHANGELOG.md on the tagged commit for what is coming in the final release.