Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/guides/change-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ Green marks an addition, amber a change. On the Graph and Flows views the mark i
| Level menus | pulsing green dot after the diagram's name | pulsing amber dot | no row; listed in the Changes panel only |
| Changes panel | green bar | amber bar | a solid red bar, a red ✕ before the name, and `removed` in red |

Click an entity's `added`, `changed`, or `removed` badge in the entity dialog or the Dictionary's Read lens to see why. Processes, externals, and stores in the Dictionary carry the same badge for their flow changes. A scrollable popover lists each change behind the badge and flags the ones no note covers. Below that it shows the title and body of every note that covers them.

In the flow index (**☰ Process Flows**, or `i`) and the breadcrumb level menus, a row whose diagram holds changes further down shows a steady dot after its label: red if any of them is unexplained, amber if any is a change or removal, green if all are additions.

The Changes panel appears in `serve`, and read-only in an export made from a model with an approved baseline, and only when there is something to review. It lists, in order:
Expand Down
18 changes: 18 additions & 0 deletions docs/guides/commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -232,6 +232,24 @@ Every view has a `?` button in the top-right corner. It opens a short, view-awar

Every dialog (entity, process, groups, legend, help, settings) keeps keyboard focus inside itself while it is open. Opening one focuses its close button. `Tab` and `Shift` + `Tab` cycle through the dialog's controls and wrap at either end, and focus that lands behind the dialog moves back into it. Escape closes the dialog and returns focus to the control that opened it. When one dialog opens another, such as a JSON value expanded from an entity dialog, only the top one responds to Tab and Escape.

Drag either side edge of a dialog to change its width; a double-click on the edge restores the default. The width is saved in localStorage. Entity, process, Groups, and the other node dialogs share one width; settings, help, legend, and JSON value dialogs each keep their own.


### History and tab titles


Every navigation is a browser history entry, so Back returns to where you were, dialog included. Navigations are switching views, jumping to a Dictionary section, opening a diagram, and opening an entity or flow-node dialog; closing a dialog and scrolling replace the current entry instead. The URL hash carries what you are looking at, so a copied URL opens the same screen:

| Param | Example | Meaning |
|---|---|---|
| `view` | `view=dict` | `graph`, `dict`, or `flow` |
| `entity` | `entity=Business` | the open entity dialog |
| `section` | `section=process:Create-Sales-Order` | the Dictionary section in view (`entity`, `process`, `external`, `store`); updated as you scroll, so a refresh returns there |
| `dfd` | `dfd=order-to-cash/Create-Sales-Order` | the diagram in the Flows view |
| `node` | `node=proc:Collect-Payment` | the open flow-node dialog (`proc:`, `ext:`, or a store's `<kind>:`) |

The tab title names the view and what it shows: `DG` Graph, `DD` Dictionary, `DF` Flows, then the open dialog or section or diagram, then the model's `name`. For example `DD - 1.1 Create Sales Order | Key-Inherited`.


### Zoom

Expand Down
4 changes: 2 additions & 2 deletions docs/guides/flows.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ part of that key.

The `data:` field is the flow's contract. On a `db:` endpoint it is **always column names** — a string for one column, a list for several — and every name is checked against the entity's `pk` and `columns` (the `flow.unknown_attribute` rule). On a `cluster:` endpoint it is a map from member entity to that entity's column list, checked the same way. On any other endpoint it is a phrase; make it enumerate everything the flow carries rather than a one-word summary. The `label:` is what the diagram shows on the edge chip; the contract sits one click behind it (see [Labels, stacks, clusters, and groups](#labels-stacks-clusters-and-groups)).

Bodies support the same `[[Entity]]` wiki-links as entity files, and they can also link to processes, externals, and stores by name. Links open the target's dialog in place.
Bodies support the same `[[Entity]]` wiki-links as entity files, and they can also link to processes, externals, and stores by name. A process can be named by its id, or by its id with spaces for hyphens: `[[Collect Payment]]` and `[[Collect-Payment]]` both reach `Collect-Payment.md`. Links open the target's dialog in place, except a link to a process that has a sub-DFD, which opens that diagram. That process's dialog, opened from its ⓘ badge, and its Dictionary section carry an **Open sub-diagram** link to the same place. Every process's Dictionary section also has **Show in diagram**, which opens the diagram the process is drawn in.

A body may also carry an optional `## Logic` section: a Mermaid diagram of how the process handles the data it receives, named with its own inputs, outputs, and stores (see [Diagrams in the body](folder-format.md#diagrams-in-the-body)).

Expand Down Expand Up @@ -283,7 +283,7 @@ The Flows FAB menu carries three flow-specific controls: a view item labelled by
## Viewing flows


`ignatius serve` shows flows in the **Flows** view (`#view=flow`); the active diagram is deep-linkable via the `dfd=` hash parameter (a flow by its folder name, a sub-diagram by its path, e.g. `dfd=invoicing/Submit-PCI`) and survives refresh, alongside `flowview=` and `collapse=` for the view and collapse-level settings above. `ignatius export` includes the Flows view in the same single HTML file. Every node carries a ⓘ badge: a `db:` store opens the rich entity dialog, everything else opens its markdown doc. The process dictionary — every process, external, and store with its body and IO tables — is fused into the **Dictionary** view, searchable alongside the entities.
`ignatius serve` shows flows in the **Flows** view (`#view=flow`); an open process, external, or store dialog is `node=` (`node=proc:Collect-Payment`); the active diagram is deep-linkable via the `dfd=` hash parameter (a flow by its folder name, a sub-diagram by its path, e.g. `dfd=invoicing/Submit-PCI`) and survives refresh, alongside `flowview=` and `collapse=` for the view and collapse-level settings above. `ignatius export` includes the Flows view in the same single HTML file. Every node carries a ⓘ badge: a `db:` store opens the rich entity dialog, everything else opens its markdown doc. The process dictionary — every process, external, and store with its body and IO tables — is fused into the **Dictionary** view, searchable alongside the entities.

`ignatius validate` checks flows whenever a `flows/` directory exists, with seventeen `flow.*` rules covering unknown references, column contracts, connection shape, numbering, decomposition balance, and cluster references. See [Validation and findings](validation.md#flow-rules) for the catalog. One rule is configurable: direct process-to-process flows warn by default and can be silenced with `flow_rules: { process_to_process: false }` in `ignatius.yml`.

Expand Down
4 changes: 2 additions & 2 deletions docs/guides/folder-format.md
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ A customer settles invoices with a [[PaymentMethod|payment method]] on file.
`[[Party]]` links to the Party entity and shows "Party". `[[PaymentMethod|payment method]]` links to PaymentMethod but shows "payment method". In the graph viewer the link opens that entity's modal; in the data dictionary it jumps to that entity's section.


The target must match an entity id exactly (case-sensitive). A link to an entity that does not exist renders as muted, non-clickable text and is reported as a `body.unknown_link` finding, so a typo never passes silently. See [Validation and findings](validation.md).
A target can be an entity, a process, an external, or a store, named by its id (case-sensitive) or by its title with spaces for hyphens (`[[Collect Payment]]`). A column's `desc` takes the same links and inline markdown (`**bold**`, `` `code` ``): `desc: "The ordering [[Party]]."`. A link to an entity opens that entity; a link to a process that owns a sub-DFD opens the diagram; another process opens its diagram with its dialog; an external or store opens its Dictionary section. A target that names nothing renders as muted, non-clickable text and is reported as a `body.unknown_link` finding, so a typo never passes silently. See [Validation and findings](validation.md).


### Code in the body
Expand Down Expand Up @@ -202,7 +202,7 @@ flowchart TD
```
~~~

The viewer loads Mermaid the first time a diagram appears, so a model with no `mermaid` fence never downloads it. `ignatius export` and the in-app Export HTML include Mermaid in the file only when some body holds a diagram. Diagrams follow the light or dark theme, with nodes in the entity colors; [Themes and branding](themes-and-branding.md#mermaid-diagrams) covers the defaults and the `theme.mermaid` overrides. A diagram that fails to parse shows its source and Mermaid's error message in its place, so the body stays readable.
The viewer loads Mermaid the first time a diagram appears, so a model with no `mermaid` fence never downloads it. `ignatius export` and the in-app Export HTML include Mermaid in the file only when some body holds a diagram. Diagrams follow the light or dark theme, with nodes in the entity colors; [Themes and branding](themes-and-branding.md#mermaid-diagrams) covers the defaults and the `theme.mermaid` overrides. A diagram that fails to parse shows its source and Mermaid's error message in its place, so the body stays readable. Click a diagram to open it in a full-window dialog: the mouse wheel zooms around the pointer, dragging pans, and the **−**, **Fit**, **1:1**, and **+** buttons set the zoom.

A process body is the usual home for a diagram: a `## Logic` section can show the branches, reads, and writes inside one process, named after the process's own inputs, outputs, and stores. The diagram explains the process; it never replaces a flow, store, or process in the DFD. See [`Collect-Payment.md`](../../models/key-inherited/flows/order-to-cash/Collect-Payment.md) in the `key-inherited` example.

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/validation.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ All Class A: the entity renders, flagged with a warning.

| Rule ID | Class | Meaning |
|---|---|---|
| `body.unknown_link` | A | A `[[wiki-link]]` in the body targets an entity that does not exist. The link renders as muted, non-clickable text. |
| `body.unknown_link` | A | A `[[wiki-link]]` in a body or column description names no entity, process, external, or store (an id, or a title whose spaces stand for hyphens). The link renders as muted, non-clickable text. |


### Edge rules
Expand Down
Loading
Loading