https://github.com/twistedpretzel/cmo-d ... d/releases
Load a CMO message log and the dashboard reads it back as an after-action review.
Everything is parsed in your browser. The log never leaves your machine, and as always the tool ships no game data — you generate the dashboard from your own install.
Six tabs
Overview — what the log contains, an activity timeline, and how every weapon that reached an endgame actually ended. Two thirds of misses in the sample corpus never reached a probability roll at all — they ran out of energy, malfunctioned, or were seduced — so the page reports rounds-expended and engagements-scored side by side rather than blending them.
Weapons — every weapon resolved against your loaded database, so each row links to its catalog card. Hit rates carry 95% confidence intervals and anything below n=5 is dimmed rather than ranked. The logged base probability is checked against the database's own PoK value. Rows expand by target class and speed band. A separate panel lists engagements fought against targets faster than the weapon's rated TargetSpeedMax — which turns out to explain most of the hopeless shots.
Mechanics — final probability plotted against the line-of-sight rate the engine recorded, modifier incidence, worked engagement chains shown as the engine wrote them, and soft-kill systems compared declared-against-realised.
Losses — losses by cause, including units lost to fuel rather than enemy fire. Then ordnance effect: which impacts actually did damage, and which struck a target that was already finished.
ORBAT — if you also have a scenario snapshot loaded, damage taken is read against the class's database damage points, and losses against the roster. Also a rough expenditure check: rounds of each weapon seen reaching an endgame, against the quantity of that weapon held across the whole snapshot. That is a force-wide ratio, not a per-unit magazine count — the log never names the firing unit, so rounds cannot be attributed to a hull.
Denied — shots the engine refused, with the reason it gave.
Everything exports to CSV. The parsed log exports to JSON and loads straight back in.
Getting a good log
Under Options ▸ Message Log in CMO, the analysis needs Weapon Endgame Calculations, Unguided Weapon Accuracy Modifiers, Weapon Damage, Unit Damage, Unit Lost and Point Defence. Turning Scenario Events, Unit AI, Debug and User Interface off cuts the file size a lot without losing anything the page uses. CMO overwrites the log each session, so copy it aside.
Where a measure needs records your log doesn't contain, the page says so and names the setting, rather than reporting zero as though it were a finding.
Also in this release
Expanded sections stay expanded. Opening a scenario ORBAT three levels deep, clicking into a platform and pressing back used to collapse the whole tree and dump you at the top of the page. Collapsible state and scroll position now survive navigation, on every page that has them — the ORBAT tree, weapon detail blocks, AAR rows, the changelog. Reported by Parel803.
Notes
- Date formats follow your Windows regional settings. The reader works out the format from the file and shows which one it used.
- Records visible to several sides are written once per side; those duplicates are merged so counts aren't doubled.
- One log at a time. Loading another replaces it — export first if you want to keep one.
- The reader shows a count of records it could not classify, so if a scenario type produces message shapes it hasn't seen, that's visible rather than silent. Post a log and I'll add them.
