Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.

Sync with base#5

Open
LeeGathercole wants to merge 692 commits into
NHSDigital:mainfrom
event-catalog:main
Open

Sync with base#5
LeeGathercole wants to merge 692 commits into
NHSDigital:mainfrom
event-catalog:main

Conversation

@LeeGathercole

Copy link
Copy Markdown
Collaborator

Motivation

(Write your motivation here.)

github-actions Bot and others added 29 commits March 26, 2026 09:49
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* feat(sdk): add entities, containers, and flows to dumpCatalog

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* update README

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* fix(core): handle circular refs in asyncapi spec rendering

The AsyncAPI parser resolves $ref pointers creating circular object
references with oneOf/allOf discriminator patterns. Astro's define:vars
calls JSON.stringify internally which crashes on these cycles. Add
safeStringify to break circular refs before serialization.

Refs: event-catalog/generators#364

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix(core): track ancestors not all-seen objects for cycle detection

Use a recursive deep-copy with ancestor tracking instead of a WeakSet
of all-ever-seen objects. This preserves shared (non-circular) refs
while still breaking true cycles from oneOf/allOf discriminator patterns.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
- Add flows to Service and Domain interfaces
- Add deliveryGuarantee, detailsPanel.parameters, and detailsPanel.attachments to Channel
- Align SDK types with content.config.ts schema definitions

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* docs: add breaking schema change detection implementation plan

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: add .worktrees/ to .gitignore

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(breaking-changes): scaffold package

* feat(breaking-changes): json schema differ with tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(breaking-changes): breaking change rules per strategy with tests

* feat(breaking-changes): integration tests for public API

* feat(cli): add schema_breaking_change trigger type and BreakingSchemaChange

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(cli): parse compatibility strategy from governance.yaml

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(cli): evaluate schema_breaking_change governance rules

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(cli): enrich breaking schema changes with actual diff results

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(cli): schema_breaking_change webhook payload with CloudEvents envelope

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore: format code

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(breaking-changes): detect root type changes and implicit nested objects

- Detect root-level type changes (e.g., object → array)
- Recurse into nested schemas that have properties/required but no explicit type

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* fix(cli): validate compatibility strategy and narrow catch scope

- Validate strategy against BACKWARD/FORWARD/FULL/NONE on config load
- Narrow try/catch to only JSON.parse so detectBreakingChanges errors propagate

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: remove implementation plan from repo

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* chore: add changeset for breaking schema change detection

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
… groups (#2421)

* docs: add message grouping design spec (#2079)

Design spec for collapsing grouped messages into MessageGroupNode
in service/domain visualiser graphs with Focus Mode drill-down.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add MessageGroupExpandedNode container component (#2079)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: register messageGroupExpanded in all visualiser touch points (#2079)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: implement inline expand/collapse for message group nodes (#2079)

Replace modal-based messageGroup click handler with inline expand/collapse.
Clicking a compact messageGroup node now swaps it for an expanded container
with child message nodes using ReactFlow's parentId + extent pattern.
Dagre re-layout recalculates positions after expand/collapse.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add messageGroupExpanded default size to layout (#2079)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat(visualiser): render full downstream graph when expanding message groups

Pre-compute channels, consumers, and producers server-side for grouped
messages so expanding a group shows the same nodes/edges as the ungrouped
view. Includes stacked card visual, post-render child centering, edge
deduplication, and collapse cleanup that preserves shared nodes.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* change detection

* fix(visualiser): preserve shared downstream nodes when collapsing one of multiple expanded groups

When two expanded groups share downstream nodes (e.g. same channel),
collapsing one group now checks if surviving edges still reference the
node before removing it. Prevents dangling edges from the other group.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix(core): match grouped message pointers by id/version instead of index

The partition function can produce misaligned messages/pointers arrays
when a pointer fails hydration. Using explicit id/version matching
prevents incorrect channel refs being fed into expansion precomputation.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix(visualiser): respect hidden-channel mode when expanding message groups

Read hideChannels from a stable ref and filter out channel nodes/edges
from the downstream expansion data when channels are hidden. Prevents
channel nodes from reappearing after toggling channel visibility off.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* chore(visualiser): fix formatting

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* feat(sdk): add group field to sends/receives pointers

Add optional `group` field to SendsPointer and ReceivesPointer types,
buildMessagePointer utility, addMessageToService, and addMessageToDomain.
Enables generators to assign messages to named groups for visualiser grouping.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* test(sdk): add tests for group field on sends/receives pointers

7 tests covering: persisting group on write, including group via
addEventToService, preserving existing groups, omitting group when
not provided, and combining group with fields.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…odeConnections (#2426)

Closes #2420

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
#2429)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
#2430)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
boyney123 and others added 30 commits July 3, 2026 13:30
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Unwrap the default export when requiring eventcatalog.config.js so
dependencies declared in ESM config files are recognized by the
refs/resource-exists rule.

Fixes #2293

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Closes #1689

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Adds From/To version selectors to the schema Changes tab so users can
diff any two versions, replacing the previous consecutive-only diffs.

Refs #2368

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Closes #1813

- Use nodeLookup so grouped/nested graphs resolve absolute bounds and no longer get cropped
- Inline resolved theme CSS variables and SVG styles before capture so edges and labels keep their colors in the exported PNG

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…n `trailingSlash: true` (#2690)

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants