Skip to content

Releases: albertoarena/laravel-truss

v1.5.0: schema doctor (CLI and dashboard Health panel)

Choose a tag to compare

@albertoarena albertoarena released this 30 Jul 13:25

The schema doctor: a deterministic, structure-only review of your database schema, in the terminal, in CI, and in the dashboard. No AI, no network call, no row data.

Added

  • php artisan truss:doctor (aliased truss:check) reviews your structure for problems visible from structure alone: a table with no primary key, an unindexed foreign key, duplicate or redundant indexes, a foreign key type mismatch, money stored as a float, and more. Thirteen rules across integrity, index, and type categories, presets (recommended, strict, none), per-rule and per-category configuration, ignore patterns, a grouped console table and JSON output, and exit codes so a migration that introduces a problem fails the build. Configured under truss.doctor.
  • Doctor in the dashboard ("Health" panel): the same findings in the browser, grouped by table, with tables flagged on the diagram (by worst severity) and the offending column marked inline. The toggle is an animated heart, the panel maximizes for reading, and heuristic findings are marked. Rides the existing schema endpoint; toggled with truss.doctor.dashboard, and truss.doctor.flag_tables controls the always-on diagram flags.

See the schema doctor guide for presets, confidence, engine awareness, the dashboard panel, and the full list of rule codes.

Full Changelog: v1.4.2...v1.5.0

v1.4.2: Connections label and legend anchoring

Choose a tag to compare

@albertoarena albertoarena released this 29 Jul 18:00

Changed

  • The dashboard connection switcher label now reads "Connections" instead of "Conn".
  • The legend overlay anchors to the dashboard container rather than the viewport, so it stays correctly placed when the dashboard is embedded below other page chrome (an iframe, or an embed).

v1.4.1: sentence-case dashboard labels

Choose a tag to compare

@albertoarena albertoarena released this 29 Jul 14:47

Changed

  • The dashboard toolbar and overlay labels (Filter, Focus, Legend, Export view, and the rest) now read in sentence case instead of all caps, matching the documentation site. Diff badges read "Added" / "Removed" / "Changed". Visual only, no behaviour change.

v1.4.0: schema diff since last migration

Choose a tag to compare

@albertoarena albertoarena released this 29 Jul 11:38

Added

  • Schema diff: see what changed since your last migration. After each migration Truss records the previous schema as a baseline and compares it against the current one. The dashboard gains a "Changes" panel that tints added and changed tables and lists every added, removed, or changed table, column, index, and foreign key, and a new php artisan truss:diff command prints the same diff in the terminal (handy in CI). Structure only, never row data. The baseline is a structure-only JSON file, the only thing Truss writes to disk, stored at truss/baselines/{connection}.json on the disk set by truss.diff.disk. Set TRUSS_DIFF_ENABLED=false to turn the feature off entirely so nothing is written to disk.

v1.3.2

Choose a tag to compare

@albertoarena albertoarena released this 29 Jul 08:42

Changed

  • The dashboard toolbar now shows the lowercase truss wordmark in IBM Plex Mono, matching the documentation site and the refreshed brand. Visual only, no behaviour change.

Full changelog: https://github.com/albertoarena/laravel-truss/blob/main/CHANGELOG.md

v1.3.1: scope introspection to the current schema

Choose a tag to compare

@albertoarena albertoarena released this 28 Jul 22:00

Fixed

Schema introspection is now scoped to the connection's own database.

On a server that hosts more than one database (a shared local MySQL, a PostgreSQL cluster), truss:show, truss:rebuild, and the diagram listed the tables of every database the connection could reach, not just the application's own. That also made the snapshot build far slower and could collapse same-named tables from different databases into each other.

The table listing now resolves the current schema per driver: the database name on MySQL, the search-path schema on PostgreSQL, and main on SQLite. Structure only, as always.

If you are on a shared database server, run php artisan truss:rebuild after upgrading to refresh the cached snapshot.

Thanks to @santos-sabanari for the thorough diagnosis in #3 and @m0shiurX for the fix in #8.

Full changelog: v1.3.0...v1.3.1

v1.3.0: data dictionary and DBML exports

Choose a tag to compare

@albertoarena albertoarena released this 27 Jul 20:38

Added

  • Data dictionary and DBML exports. The diagram export button now also saves the current selection as a Markdown data dictionary (one section per table, with columns, keys, indexes, and foreign keys, ready to paste into a README or wiki) or as a DBML file that opens in dbdiagram.io and other DBML tools. The per-table menu gains a Download Markdown option. Both are generated in the browser and contain structure only, never row data. DBML relationships are included only when both tables are in the current view, and the native type mapping is best-effort (types are passed through, quoted when needed).

Full changelog: https://github.com/albertoarena/laravel-truss/blob/main/CHANGELOG.md

v1.2.0

Choose a tag to compare

@albertoarena albertoarena released this 24 Jul 08:12

Changed

  • Self-referential foreign keys (a column pointing back at its own table, such as parent_id on categories) are now marked with a self-ref note on the column instead of a looping relationship line, which Mermaid drew as a large sweeping curve. Keeps the diagram tidy while the hierarchy stays visible on the row. Ordinary relationships are unaffected.

v1.1.0

Choose a tag to compare

@albertoarena albertoarena released this 23 Jul 20:35

Added

  • truss:show Artisan command: print the database structure as a terminal table (table, column count, foreign-key count), the text counterpart to the visual dashboard. Structure only.
  • truss:open Artisan command: open the dashboard in the default browser, honouring the configured route prefix and app URL.

v1.0.0

Choose a tag to compare

@albertoarena albertoarena released this 23 Jul 20:00

First stable release. The API, config, and authorization model are considered stable and will follow semantic versioning from here.

Added

  • Diagram image export: an export button saves the whole current diagram (the current filter/focus selection) as a PNG or SVG. Fully client-side and dependency-free (no CDN, CSP-safe): labels are flattened to SVG text and the font is embedded, so the output is theme-matched and correct anywhere. Structure only.