Repository navigation
Releases: Raja0sama/vibex
Releases · Raja0sama/vibex
Release list
v0.2.1 — the demo, on the page
Documentation, README and landing page. No change to the CLI, the renderers, the
schemas, or anything a generated file contains.
Changed
- The README leads with the skill rather than the CLI, and folds its reference material into collapsible sections.
- The demo is shown rather than promised: a linked thumbnail in the README, and an embedded player on the landing page.
- Attribution is now a
Prior artsection crediting the wider diagrams-as-code field — Mermaid, PlantUML, Structurizr, DBML, Graphviz and archify — instead of naming a single project. - The landing page gained depth, and its nav no longer swallows the heading you jumped to.
- Article drafts are no longer tracked;
content/is ignored.
v0.2.0 — four diagram types and documentation as a fact graph
Four diagram types, documentation as a checkable fact graph, and a release list
built from git history.
Changed
- Redesigned the generated viewer shell: icon toolbar with segmented zoom/export controls, dot-grid canvas, floating hint pill, sectioned side panel, scrollable detail tables that drop empty columns, tinted note cards, styled scrollbars, and a print stylesheet.
- Dashboard: brand mark, per-type colour dots in the sidebar, a totals strip on the overview, tiles that lift on hover, and a two-column stat grid on phones.
- Diagram boxes get a soft drop shadow; the theme button now shows the theme you are switching to.
- C4 diagrams redesigned. Databases and queues now have their own fills (teal, indigo) instead of sharing the container blue, so the legend swatches finally match the canvas; the swatches also echo each shape. Boxes hug their content and share one height per diagram, with the text block centred rather than top-aligned. Person elements read as a head over shoulders. Databases are proper cylinders with both caps. Boundaries get a tinted frame, a label tag that straddles the top edge, and a more solid frame the deeper they nest.
Drill down ↗is an underlined footer instead of a corner note. Edge labels are slightly smaller and grow a dotted leader when obstacle avoidance pushes them off their own line. - C4 edge routing gets lanes. Every edge crossing a gap used to turn at the same midpoint, so their turning segments — and the labels riding on them — stacked into one column. Edges sharing a gap are now spread across the gap by greedy interval colouring, which separates only the turns that actually overlap, so simple diagrams route exactly as before. Turns are clamped inside the gap so no lane runs over a box.
routeOrthogonaltakes anoffset.channeland reports thecorridorit used;channelOffsetsassigns the lanes. ERD, endpoints and lifecycle still route down the middle.
Fixed
- Lifecycle transitions crossing the same gap all turned at its midpoint, stacking their labels into one column. Lifecycle now uses the same lane assignment as C4 and ERD — every diagram type has it.
- When no free spot existed for a label,
placeLabeltook the first candidate that cleared the other labels, which could be one sitting across a node's title. It now measures the overlap and takes the least bad position, and searches further off the line before giving up. Across the eleven diagrams this repository ships, labels sitting on a node went from four to none — and a test now parses the rendered SVG and fails if that ever regresses. - The Prisma importer wrote
1 enumsinto the subtitle, which is the first line a reader sees of an imported diagram. - The dashboard sorted C4 diagrams alphabetically, so a set of levels read component, context, container. Within C4 it now sorts by zoom — landscape, context, container, component — because that is the order a reader drills in.
- The demo's Changes panel was built from vibeX's own commit history and shown beside the Relay specs, so a fictional parcel network's release notes read "fix the clean-install gate". The changelog describes the repository being documented, not the tool doing the documenting; the showcase now carries a fixture describing a fictional Relay release, like the rest of it.
- The documentation-diff placeholder told the reader to pass
--specs, which fires equally when--specswas passed and the range simply had no start commit to compare against. It now names the actual reason, and the CLI warns at the point the range is chosen. - ERD relationships crossing the same gap all turned at its midpoint, stacking their cardinality labels into one column — the same defect fixed for C4, now using the same lane assignment.
- The clean-install CI gate ran
npm pack --pack-destination /tmp/pkgwithout creating that directory. It passed locally, where the directory already existed, and failed on the first real runner. - The example documentation anchored into
test/fixtures/, whichnpm packdoes not ship. A freshly installed package runningvibex demotherefore opened on 22 unverifiable claims — the worst possible first impression for a tool whose pitch is documentation you can trust. The fixture moved toexamples/shop-repo/(it is an example, and it is the code the example documentation describes), and CI now installs the packed tarball and runs the demo, failing on any unverifiable claim rather than trusting a hand-maintained file list. - Dashboard hash routing only ran on first load, so
#docs-1, a pasted deep link, and browser back/forward did nothing on an already-open page. There is now one router, wired tohashchange. renderSpecthrew aTypeErroron any spec whosediagram_typehas no diagram renderer. It now reportsnot-a-diagramand names what to run instead.- Dashboard: every panel but the last rendered its boxes invisibly. The drop-shadow filter was referenced from the shared SVG stylesheet, and because CSS cascades across the whole document all four panels resolved to the last panel's namespaced filter id — a reference the other panels do not contain, which suppresses the element entirely. The filter now rides on the elements themselves, so each panel resolves its own copy.
Added
- The showcase now shows the breadth. Nine diagrams instead of four: all three C4 levels with working drill-down, a second data model imported from a real
schema.prisma, a GraphQL API imported from a real.graphqlSDL, and a second lifecycle drawn top-to-bottom against the first one's left-to-right — the same renderer, a visibly different shape. Both importers run against files committed beside the output, so the demo proves they work rather than asserting it. - A Changes panel in the dashboard. A
changelog.jsonbeside the specs becomes a panel, or pass--changelog. Each entry links to its commit in the repository the commits came from — not the one a spec happens to describe — and the specs it touched are chips that open those diagrams. Reworded claims are shown as the change they were, old wording struck through beside the new, which is the thing a file diff buries. vibex changelogbuilds a release list from commit history. With--specsit also reports what those commits did to the documentation — claims written, reworded, superseded and removed — which is the part a reader of a changelog cannot otherwise see. Derived facts are counted rather than named, because ninety machine-generated sentences appearing is not news. Conventional-commit prefixes are honoured where a project uses them; where it does not, sections are inferred from the files each commit touched and the output says so, because a reader who thinks the headings were chosen deliberately will draw conclusions from them. A commit that touches a renderer and a workflow is not internal: internal means every path was.- Proposals.
meta.proposedmarks a spec as describing something that does not exist. It renders with a banner, a distinct badge, and a stamp drawn into the SVG so an exported image still says so; its claims readproposedrather thanverified, and--checkignores it because there is nothing to drift from. The validator refuses an anchored claim inside one — there is no code to anchor to — and warns when a proposal carries no trail back to whoever made it. A document that merely derives facts from a proposed spec marks those facts proposed too. - Intake. Four issue forms, a triage workflow, and a dispatcher that resolves an issue's
vibexblock against the current build. A claim id that no longer exists, a diagram nobody named, or a proposal with no stated problem gets a specific question posted back rather than a confident wrong pull request. The authoring step is gated onANTHROPIC_API_KEY: without one the queue still triages and answers, it just writes nothing. Nothing merges — every path ends at a pull request with the drift check running on it. - Report it from where you noticed it. Every claim, and every node's details panel, now carries a link that opens a prefilled issue on the project's own repository. The body holds a fenced
vibexblock with the claim id, the spec and node it is about, its confidence, and the exact commit the reader was looking at — so whoever picks the issue up, person or agent, does not have to reconstruct where the reader was standing. The docs toolbar adds the three intents that are not about one claim: request a document, report a gap, propose a change. GitHub and GitLab are understood; any other host gets no link rather than one that opens a 404, and a project with nometa.repositorygets none at all. - A public showcase.
showcase/is a fictional parcel delivery network — 16 containers, 13 tables, 17 operations, a twelve-state parcel lifecycle with retry loops and a recoverable failure, and two documents totalling 129 claims with nine stated gaps. GitHub Pages now builds the demo from it rather than from the bundled examples: a different domain, at the depth the tool is actually for, whileexamples/stays small and didactic for the skill to read as a pattern. It ships with the repository, not the npm package, and the deploy fails if it ever publishes a claim it could not verify. examples/order.lifecycle.jsonreplaces the previous lifecycle example and ties intoorders.erd.json, so the bundled set is now one coherent system rather than a shop plus an unrelated flow.docs: a fact graph for the system, for people and for agents. A new spec type whose unit is a claim — one checkable sentence with a source — rather than a page of prose. Three kinds of source:derived(computed from a diagram spec by one of ten fixed generators, so the sentence cannot disagree with the diagram),anchored(prose pinned to a file and symbol by a content hash), andasserted(a person, with a date). A claim cannot declare its own confidence; t...