Repository navigation
1.0.0
What's new since 0.8.0
Breaking changes
-
[#105] Made 'check-diagram' report undefined reference targets and 3 new model rules as errors that exit with 1. @AlexSkrypnyk (#136)
In 0.8.0,npm run check-diagramonly warned about a reference to an entity the document doesn't define, and warnings alone exit with 0. It now runs the Checks panel's rules too, so that reference, a non-base reference field with no target type, 1 field name with 2 types or cardinalities on the same entity type, and a machine name outside Drupal's pattern or length limit are errors that exit with 1. If a script or CI job runs it over your documents, run it once before upgrading and fix what it reports, usually by adding the missing target entities the old warning pointed at. -
[#133] Changed the fields CSV layout: a new third 'Bundle' column and references written as 'Label (entity id)'. @AlexSkrypnyk (#147)
Save as > CSV > Fields now writes aBundlecolumn afterEntity type, so every column after it moves 1 place right, and the References cell names each target asTags (taxonomy_term.tags)instead of the label alone; it also writes a row for each entity with no fields and appendsUsed in,Help text,Default,Allowed valuesandTranslatable. A spreadsheet or script that reads this CSV by column position or parses References should read columns by header and take the id from the parentheses.
Highlights
-
[#104] Showed descriptions, help text and field settings read from config. @AlexSkrypnyk (#121)
Nexus now reads each bundle's description and each field's help text, default value, allowed values and translatability from exported config, where 0.8.0 dropped everything but label, type, cardinality, required and targets. They show in the tooltip, the Fields table and its CSV, and the Inspector edits them in Edit mode..nexus.json, the schema and thecreate-nexus-diagramskill carry them as optional keys, so older documents open unchanged. -
[#106] Added 'Copy link', which puts the whole diagram in the URL fragment, and opened diagrams from such links. @AlexSkrypnyk (#129)
Copy link at the end of the Save menu packs the diagram, compressed, into the URL fragment, so you can drop it into a chat or a ticket and it opens in 1 click with the same model, layout and type settings. The fragment never reaches a server,&focus=points at 1 entity, and the deflate checksum makes a link damaged in transit fail with a clear alert. A link over 32,000 characters isn't copied; the dialog offers the.nexus.jsonfile instead. -
[#140] Edited fields in place in the Fields table and rendered allowed markup in help text and descriptions. @AlexSkrypnyk (#138)
Every editable cell of the Fields table now opens an editor in place, in View and Edit mode alike: label, machine name, type, cardinality, required, references, help text, default, allowed values and translatability, each as its own undo step. Help text and descriptions from config also render their allowed HTML (em,strong,code, lists), while scripts, attributes and styles are dropped and links draw as text that can't navigate the page. -
[#105] Added a Checks panel that lists model problems as errors and warnings. @AlexSkrypnyk (#136)
The new Checks panel lists what Drupal would reject, and what just looks off, and re-checks after every edit, undo and redo: 3 error rules (reference targets, shared field storage with a different type or cardinality, machine names) and 5 warnings, including a field limit you set in Settings. A count badge on the toolbar button turns red on an error, and clicking a problem focuses it on the canvas. -
[#133] Added a CSV import and a CSV template to the Open menu. @AlexSkrypnyk (#147)
You can now write a content model in a spreadsheet and open it as a diagram: Open > CSV file… or a.csvdropped on the landing screen reads it, and Open > CSV template downloads an example with every column filled in. The import is strict and lists up to 5 problems with their row numbers rather than opening a half-read model, and a fields CSV exported from Nexus imports back as the same entities, fields and references. -
[#114] Added an explore view that shows the entities within 1 to 5 references of an entity, outward, inward or both. @AlexSkrypnyk (#153)
Explore from here, in the new right-click entity menu and the entity Inspector, keeps only the entities within 1 to 5 references of the one you picked and re-runs the layout on what's left. It answers "what references this media type?" without tracing lines across the whole diagram, records no history step, and Clear in the status bar puts every position and the viewport back. -
[#108] Added 'Compare with' to the Open menu, which shows the bundles, fields and references another version adds, removes or changes. @AlexSkrypnyk (#152)
Open > Compare with sets the open diagram against a saved.nexus.jsonor a config folder and marks every bundle, field and reference that's added, removed or changed, with a Changes panel listing the old and new values by bundle. That's the quick answer to "what does this release change in the content model?" or "does the site still match the spec?". Editing and saving are off while it's open, and stopping restores the diagram exactly, with no history step.
Other changes
-
[#107] Added a Markdown export that documents each bundle, its fields, notes and references, with an optional Mermaid diagram. @AlexSkrypnyk (#120)
Save as > Markdown writes<title>.mdwith a table of contents and a section per bundle holding its fields table, notes and a "Referenced by" line, so the content model can live in the repository next to the code. The Mermaid diagram is included up to 50 entities by default, and the Markdown export settings switch it to always or never. -
Added a daily 'Update templates' workflow that opens 1 pull request per template with its latest upstream tags. @AlexSkrypnyk (#102)
Template bumps used to be hand edits, and nothing flagged a new upstream release, which is how both templates fell behind. A daily workflow now moves each template to its latest stable tags and opens 1 pull request per template, andnpm run update-templatesgained--latest,--prand--listand writes the bundle counts itself. -
[#115] Added the Umami demo profile from Drupal core as a landing template. @AlexSkrypnyk (#125)
The landing screen offers Umami, the food magazine demo from Drupal core 11.4.12 that most Drupal people have seen: 3 content types, 2 vocabularies, 5 media types, 4 block types and the user. -
Added an HTML report to the 'Save as' menu that documents each bundle, its fields, notes and references. @AlexSkrypnyk (#124)
Save as > HTML writes a standalone report with the same sections and anchors as the Markdown export, for anyone who'd rather open the model in a browser than in a Markdown viewer. The page loads nothing and runs no script, enforced by its own Content Security Policy, and follows the reader's light or dark scheme. -
Fixed the outline test reading 'field_media' by index after the saved document gained a 'field_layout' field. @AlexSkrypnyk (#126)
A unit test readfield_mediaby position and broke once the shared fixture gained a field before it, so the test now finds the field by name. Test-only, with no change to the app. -
[#116] Added the Thunder publishing distribution as a landing template. @AlexSkrypnyk (#130)
The landing screen offers Thunder 8.4.7, the publishing distribution built from paragraphs and 7 media types. Along the way the parser learned negated Paragraphs selections (negate: 1): a field that allows every paragraph type except a listed few now targets those bundles, where it used to point at anAny Paragraphplaceholder, or with exclusions, at exactly the excluded ones. -
Fixed the templates e2e spec failing on every template update by reading versions and counts from 'TEMPLATES'. @AlexSkrypnyk (#132)
The templates e2e spec spelled out each version and bundle count, so every automated template update failed CI on its own pull request. It now reads them fromTEMPLATES, the file the update script rewrites. -
Skipped the Scorecard job on pull requests, where its local-only upload left code scanning neutral. @AlexSkrypnyk (#127)
On a pull request Scorecard could upload only 1 of the 3 code scanning categoriesmainhas, which left every PR with a neutral "2 configurations not found" check. It now runs onmainonly, while CodeQL still runs on every pull request. -
Added sortable Fields table columns with a '#' column, scrolled the table with its panel, and resized floating panels from their edges. @AlexSkrypnyk (#128)
Every Fields table column sorts from its header, cycling ascending, descending and back to the new#order within each entity, and the table scrolls both ways inside its panel with the toolbar and header sticky. Floating panels resize from their left, right and bottom edges and bottom corners, a double-click on a handle resets the size, and the table's search and sort now survive docking. -
Updated the Drupal CMS template to 2.2.9. @github-actions[bot] (#123)
-
Updated the CivicTheme template to 1.14.0. @github-actions[bot] (#122)
-
[#117] Added Open Social 13.1.0 as a landing template. @AlexSkrypnyk (#131)
The landing screen offers Open Social 13.1.0, the community and intranet distribution: 8 content types, 20 paragraph types, 11 vocabularies, 9 block types, 1 media type and the user, read from 33 feature-module config folders. Nexus doesn't draw groups, profiles or posts, so references to them land on placeholder entities that stay out of the template's counts. -
Started the e2e server on a free port each run instead of reusing whatever listens on port 8000. @AlexSkrypnyk (#137)
npm run test-e2enow starts its own server on a free port each run, so several checkouts on 1 machine each test their own code instead of whichever server grabbed port 8000 first.NEXUS_E2E_PORTpins the port, andnpm startstill serves on 8000. -
[#110] Added a 'Used in' column to the Fields table and its CSV, and listed the bundles that share a field in the Inspector. @AlexSkrypnyk (#141)
The Fields table and its CSV gain a Used in column counting the bundles of the same entity type that share a field's storage, and the field Inspector lists them under Also used in with the label each one gives the field. Good reuse likefield_tagson 4 content types, and near-duplicates likefield_imagebesidefield_main_image, are now easy to spot. -
[#134] Added a Note that draws Markdown text anywhere on the diagram. @AlexSkrypnyk (#146)
The Edit palette's Note button places a sticky note anywhere on the canvas, written in Markdown: headings, bold, italic, underline, strikethrough, code and links. Notes save in documents and links as a newnoteannotation kind, and PNG and SVG exports show their plain text. -
[#142] Deferred the vendor scripts and showed a loader in the template list, so the landing draws before the diagram libraries load. @AlexSkrypnyk (#145)
The diagram libraries now load deferred, so the styled landing card draws before roughly 700KB of Cytoscape and Dagre has arrived, and an inline script applies the stored or system theme before the first paint. The landing ignores clicks until the app has wired its controls, and the template list's spinner from this change gave way to per-row download bars in #158. -
[#113] Added bundles and references CSV exports under a 'CSV' submenu in the Save as menu. @AlexSkrypnyk (#139)
Save as > CSV is now a submenu with Fields, Bundles (1 row per bundle) and References (1 row per target bundle), which together rebuild the usual spreadsheet spec from a site's config. Every CSV cell that starts with=,+,-,@, a tab or a carriage return now gets a leading', so a label like=HYPERLINK(...)in an opened document can't run as a spreadsheet formula. -
[#135] Added a 'Lines' toolbar dropdown that draws connection lines right-angled, merged into 1 trunk per node or straight. @AlexSkrypnyk (#144)
The new Lines dropdown after Tidy up draws connection lines right-angled (the default and the old look), merged into 1 trunk per node, or straight. It's a display preference kept in the browser, so documents and links don't carry it, while PNG and SVG exports draw what's on screen. -
Compacted the landing card so it fits a MacBook screen, with the template list capped at 80% of the window. @AlexSkrypnyk (#148)
On a 1470x820 window the landing card was 786px tall and overflowed, and it grew with every template. It's now 527px with all 5 templates, and the template list scrolls once it reaches 80% of the window. -
[#143] Renamed the toolbar's 'Table' button to 'Fields', after the panel it opens. @AlexSkrypnyk (#149)
The toolbar button now reads Fields, the title of the panel it opens. Its ids and the stored layout key stay the same, so saved panel layouts keep working. -
[#103] Added Mermaid and Graphviz DOT exports that draw the canvas graph, and sorted the 'Save as' menu alphabetically. @AlexSkrypnyk (#119)
Save as now offers Mermaid (.mmd) and Graphviz DOT (.dot), both drawn from what the canvas shows, so detail level, switches, type filters and hidden fields shape the text. DOT pins every node at its canvas position, and Mermaid needs Mermaid 11.3 or later and compacts itself to fit Mermaid's 50,000-character limit when it has to. The Save as menu is now alphabetical. -
[#112] Added a hover highlight that lights an entity's fields, references and connected entities and fades the rest. @AlexSkrypnyk (#150)
Resting the pointer on a node for 250 ms lights its fields, references and connected entities and fades the rest, then restores any focus, search or isolation exactly when the pointer leaves. Drags, pans and keyboard use never trigger it, and a Hover highlight switch in Settings turns it off. -
[#118] Added a manual 'Benchmark' workflow that compares load and interaction times with the last release. @AlexSkrypnyk (#154)
The Benchmark workflow, run by hand as the first step of a release, times diagram loads and 10 interactions under 4x CPU throttling, measuring the last release and the branch in the same job so runner noise cancels out. It fails when a load or interaction is more than 15% and 10 ms slower, andnpm run benchmarkruns the same measurement locally. -
[#111] Replaced the 'Fields' switch with 4 detail levels, picked from icon buttons in the status bar. @AlexSkrypnyk (#151)
The status bar's on/off Fields switch is now 4 detail levels: Entities, References (only fields that point at another entity), Configurable (no base fields) and All, picked from icon buttons, withFstepping through them. A stored new-diagram Fields setting reads as All or Entities, and a field you create or retype is never left hidden by the level. -
Fixed focused field labels and labels on dark entity colours being unreadable by picking dark or light text from the fill. @AlexSkrypnyk (#156)
A focused field's label was light grey on a light mint fill in the dark theme, and a dark type colour picked in Settings left dark text on a dark box. Labels, type captions and proxies now pick dark or light text by WCAG contrast with their fill, and proxies take a new type colour straight away instead of after a reload. -
Drew the landing card once in its final layout and showed a download bar on each template row. @AlexSkrypnyk (#158)
On a throttled cold load the landing card drew in 3 jumps and settled only after about 7 seconds; it now appears once, in its final layout, at about 2.3 seconds, and holds still. Each template row downloads its diagram in the background with a download bar along its bottom edge, so opening it needs no further request, and a failed download turns red and retries on click. -
Showed pointer, grab and crosshair cursors over diagram nodes and a pointer over the entity type filter checkboxes. @AlexSkrypnyk (#159)
The whole diagram used to show the plain arrow. Nodes now show a cursor that says what a press does: pointer in View mode, grab and grabbing in Edit mode, and crosshair over a field in Connect mode. -
[#155] Unified the status bar hint and tips into 1 centred slot that shows the description of any hovered control. @AlexSkrypnyk (#157)
The hint used to jump between 2 spots in the status bar and stayed empty over anything below the toolbar. It's now 1 centred slot showing the tips by default and the description of the hovered control, including panels, the Inspector, the Fields table and the canvas handles. -
Added the icon of the button that opens each panel and dialog to its title. @AlexSkrypnyk (#161)
Every panel and dialog shows the icon of the button that opens it before its title, so a window stays easy to tie back to its toolbar button when several are open. The Inspector takes the Edit button's pencil. -
Converted the Settings panel to a dialog with vertical tabs and a cog icon, and gave View and Edit mode their own frame switch. @AlexSkrypnyk (#160)
Settings is now a modal dialog with vertical tabs (Entity types, New diagrams, Mode frame, Hover highlight, Markdown export, Checks), opened from the cog button or,, and each tab has its own reset. View and Edit mode get their own frame switch and colour; existing frame settings carry over as they drew, and a stored layout that still names the old Settings panel is ignored. -
Loaded the Settings dialog's Shoelace components before its first open and kept each symbol select's caret inside its border. @AlexSkrypnyk (#162)
On the first open the colour pickers popped in a frame late and grew each entity type row by 3px, and each symbol select's caret sat 1px from its border. The components now load before the dialog opens, and the caret sits 9px inside the border. -
Redrew the entity type symbols in 1 proportional box with pixel-aligned edges, and drew them at 34 pixels wide in Settings. @AlexSkrypnyk (#163)
The symbols used fixed pixel insets, so at small sizes some shapes folded in on themselves and every outline smeared across 2 pixel rows. They're now drawn from 1 set of shapes in a 28 by 20 box with edges on whole pixels, so they stay crisp and keep their proportions at any size, and Settings shows them 34 pixels wide.
Full Changelog: 0.8.0...1.0.0