v3.2.2
Added
- The Message Monitor now has a Live mode alongside the existing snapshot
view. It drains the bus emission buffer on a timer into a columnar log with a
record/pause toggle, named Untargeted/Targeted/Broadcast filter chips, the same
typed filter query as snapshot mode (type:,message:,context:,stack:),
a detail pane for the selected row whose stack trace starts collapsed, and a
footer reporting shown, buffered, recorded and missed counts. Repeated identical
emissions coalesce into one counted row, and aLIVEbadge plus a footer line
say so, so the mergedNcolumn is not a mystery. The log updates in place as
it drains, so scrolling into older rows is not undone by the next poll, and
emissions the bus overwrote before the log could drain them raise a notice
saying the log has gaps instead of leaving that to a number in the footer. Live
mode is editor-only and reads data the bus already records, so it adds no
runtime cost. - Add a Message subscriptions section to every
MessageAwareComponent
inspector. It lists the registrations itsMessageRegistrationTokenholds: the
message type, the registration kind, a priority badge, the observed call count,
and a dot showing whether the registration is currently subscribed on the bus.
Call counts read ascalls n/awhile diagnostics are off rather than as zero.
Multi-object selections group matching registrations, show how many selected
components carry each one, and mark mixed enabled states so a missing or
disabled handler stands out across a scene selection
(#297).
See Inspector Overlay.
Changed
- Change Flow Graph to lead with an interactive node-and-edge canvas. Message
nodes connect to receiver nodes through live registration edges, with pan,
zoom, automatic framing, and selection. Text-heavy route analysis, trace
activity, raw topology, and overflow rows now start inside one collapsed
section. Empty captures explain how to restore live registrations instead of
filling the window with zero-value summaries. A crossing-aware layered layout
and ordered node ports keep arrow paths traceable without text labels on the
lines. Nodes use named metric rows instead of compact+Nsummaries, and
multi-kind message types use neutralMIXEDmetrics until filtered to one
route kind. Route selection opens responsive route, activity, emission, and
trace cards. Evidence lists message types and call sites as separate rows,
links every resolvable type declaration and live call-site asset, and keeps
dense type sets behind an eight-row disclosure. Technical diagnostics now
use separate route-health and trace-coverage cards with bordered relationship
records for their busiest paths. Captured object contexts render as breadcrumb
hierarchies, call sites separate the method from the file and line, and compact
selection headers keep exact identities in tooltips. Breadcrumbs backed by an
exact captured Unity-object identity and relationship endpoints select their graph items, message
details expose a bounded on-demand route roster with receiver, registration,
context, and context-ID identities, and global observers use the accessible amber taxonomy
badge. The complete text report remains available through Copy diagnostics
without rendering a text wall.
Broadcast and targeted routes
expose recent component- and registration-exact delivery call sites without
leaking evidence across message buses. Global accept-all
registrations appear asANY MESSAGEobservers instead of a misleading
IMessagemessage type. Destroyed Unity context references fall back to their
stable instance ID instead of aborting capture for that component. Follow-up
interaction work makes the full feathered route path clickable, dims unrelated
paths after selection, adds explicit fit and zoom controls with a 20 percent
overview floor, and removes the automatic default selection. Route activity
now leads while emission, trace, and technical evidence start collapsed.
Message and call-site source links open the exact declaration or captured
line when Unity can resolve it, and evidence disclosures stay open when the
background source index refreshes. Dense many-to-many coverage keeps hundreds of
crossing routes present and selectable in constrained layouts
(#345). - Change the snapshot Message Monitor to the same columnar surface as its live
log. Rows are fixed-height and carry the route kind, message type, context, and
dispatch id under a column header; the stack trace moved out of every row into
the selected entry's detail pane, behind a disclosure that starts collapsed.
ASNAPSHOTbadge and a one-line explanation say that the log is buffered
history with one row per emission, so it is no longer ambiguous whether the
window is streaming or merging. Named taxonomy chips carrying per-kind counts
act as both the color legend and a per-kind filter, and Copy JSON follows
them. The always-expanded message-type and context lane panels became one
collapsed Breakdown disclosure of clickable filter pills, with their counts
and member lists in tooltips, and component diagnostics moved behind its own
collapsed disclosure. The log now flexes while the detail pane holds its height,
so neither is pushed off the bottom of the window. The detail pane also links out
to what a row stands for: the message type opens its declaring source, the
context selects and pings its object in the Hierarchy while that object is still
alive, and the stack trace renders one row per frame with its own Open
button, leaving out Unity's own stack-capture frames so the first row is the
emitting call site. The mode badge is now the mode switch in both directions, so
live mode is no longer one-way; the log gutter sits on the row rather than on the
live-only time column, so snapshot rows are no longer flush against the window
edge; Component Diagnostics and the stack trace carry drag handles instead of a
fixed cap; and everything that answers a click shows the pointer cursor
(#344). - Improve targeted and source-bound broadcast routing throughput and reduce the
memory retained by their per-target lookup tables without changing the public
messaging API or delivery behavior
(#289). - The
MessagingComponentinspector's matched and potential-match emission labels
now use the design system's colors instead of raw green and yellow, so they stay
readable on the light editor skin.
Fixed
- Fix Flow Graph message-source links stalling the editor while scanning large
compilation assemblies. Source declarations now index in the background and
each assembly source file is read once, while exact nested and generic source
links continue to appear when the index completes
(#345). - Keep a selected Flow Graph route and its marker above dimmed paths at crossings
so the highlighted route remains visible and wins overlapping clicks
(#345). - Reflexive message dispatch to a destroyed
GameObjectorComponenttarget
now skips Unity hierarchy delivery instead of throwing
MissingReferenceException; normal targeted bus handlers still run. - Fix the Diagnostics Tooling Exerciser losing all live registrations after a
reload-disabled Play Mode reset. Active receivers now rebuild their tokens and
the runner restarts its deterministic emissions on every activation
(#346). - Pooled collection rentals now return to their pool when attaching them to a
registration or reclamation owner throws, instead of remaining stranded
after a failed ownership transfer. - Documentation-site pages load faster. Every page was downloading the Mermaid
renderer (about 950 KB compressed) whether or not it had a diagram, and pages
that did have one rendered it twice. Diagrams now go through the site theme's own
Mermaid integration, which loads it only where a diagram exists and colors it
from the site palette in both light and dark. The display font is also linked
rather than@import-ed, so it no longer waits on the stylesheet that requested
it. - The documentation-site footer no longer wraps its social icon onto its own
left-aligned line, and it carries links to the repository, releases, changelog,
issue reporting and license.
Install
- Import the attached
.unitypackagedirectly into your Unity project, or - add
com.wallstop-studios.dxmessagingthrough the Unity Package Manager, pinning this
release ascom.wallstop-studios.dxmessaging@3.2.2(scoped npm registry) or the
matching Git tag.
Each release attaches the npm tarball and the .unitypackage, each with a
.sha256 checksum; verify a download with sha256sum -c <file>.sha256.