zanith

studio / tables · 01 — The daily surface

Browse, edit, ship.

The Tables tab is what you open every morning. FK drilldown from any column. Inline edit with type coercion. JSON tree editor. Image preview from URL columns. Sensitive cells masked until you click reveal. Per-row tags and bookmarks.

overviewtablescatalogsecuritysqlTABLESusersordersproductssessionsusers· 4,218 rowssearch rows…+ newTx modeidemailactivemetadataavatara4c8…[email protected]true{ 3 keys }b1f2…[email protected]true{ 5 keys }c702…[email protected]false{ 2 keys }d955…[email protected]true{ 0 keys }e8a2…[email protected]true{ 4 keys }2selectedCopyBulk editDelete3 pending changes⌘S to commit · ⌘Z to undoCommit
tx mode default⌘S commit⌘Z undoshift-click range selectv0.2 · shipped

02 — Six ways to edit a cell

The right editor for every type.

Type-aware everywhere. Booleans get a select. JSON gets a tree. URLs that point at images get a lightbox. FKs become links. The right tool surfaces without a mode switch.

Inline edit

Double-click a cell. The right input type appears — number, datetime, text, boolean.

Row modal

Open all fields at once for a full-row edit, with smart suggestions for new rows (created_at → =NOW()).

JSON tree editor

JSON columns get a structured editor — add keys, change types, edit nested objects without manual quoting.

Image preview

URL columns that point at images render a thumbnail. Click for the full-size lightbox.

FK drilldown

Foreign-key cells become links. Click to jump to the referenced row in its table.

Default picker

⚡ button next to each input. UUID, NOW, TODAY, NanoID — type-aware presets.

03 — Operations on selections

Edit forty rows like one.

Browse tools usually stop at one-row-at-a-time. Studio ships the bulk operations the table-first pattern actually needs — without dropping into a SQL tab.

Bulk edit

Select rows, pick a column, set one value. Server runs it as a single UPDATE in a transaction.

Find & replace

Substring, exact, or regex (Postgres). Preview matches before you write. Three modes, one column at a time.

Fill NULLs

One column, one value, applied wherever it's currently NULL. Picker integration for type-aware defaults.

Sensitive masking

Mark a column sensitive. Cells render as ••• with a peek of first/last char. Reveal one cell at a time.

04 — The quiet wins

Six small things you'll use every day.

None of these change the model. They change the surface you spend Tuesday afternoon staring at.

Saved views

Filters + sort + hidden cols + density, per table. Recall in one click.

Find on page

Local filter on currently rendered rows. No server roundtrip.

Bookmarks

Pin specific rows by PK. Persist across sessions.

Per-row tags

Free-form labels for triage — todo, follow-up, do-not-touch.

Tail mode

Auto-refresh every N seconds. Watch a table fill up live.

Hidden columns

Show all 40 columns, then hide the boring ones for the next session.