Skip to content

Releases: tablexdev/tablex

TableX v1.0.0

Choose a tag to compare

@github-actions github-actions released this 05 Aug 16:39

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
    Dialect interface with ~45 opt-in capability interfaces, so an engine that
    lacks a feature degrades rather than breaking. Adding a fifth engine means
    implementing Dialect and registering it — see
    docs/adding-an-engine.md and the reusable
    conformance suite in internal/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 /metrics endpoint 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/null and 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-busy on
    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, scope on 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 RETURNING rows 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 full COUNT(*) 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

TableX v1.0.0-rc.2 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Aug 16:19

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

TableX v1.0.0-rc.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Aug 15:48

Pre-release v1.0.0-rc.1. See CHANGELOG.md on the tagged commit for what is coming in the final release.