v0.10.1 | 2026-08-11
Cross-save default profile
* Added a selectable cross-save default profile under OPTIONS for notification rules, system alarms, alarm colors/UI scale, and window positions.
* Added the built-in UNMA Recommended Quiet profile, created and persisted only when default.json is genuinely absent. Exactly recognized, unchanged earlier built-ins with six Silent rules or with six Silent and two Hidden rules are upgraded in memory only; their seed files, divergent profiles, and custom profiles remain unchanged. Import still requires preview and explicit confirmation.
* Set UpgradeInProgress, DowngradeInProgress, VehicleGoalStruggling, VehicleNoReachableDesignations, NoTreesToHarvest, and ExcavatorHasNoValidTruck to Silent. This disables only UNMA sound while retaining the Captain of Industry notification, HOME visibility, and history.
* Set TruckCannotDeliver and TruckCannotDeliverMixedCargo to Ignored because CoI withdraws and re-emits them with transient NotificationIds. UNMA discards new events before SetAlarm, history creation, and persistence; confirmed import and normalization remove matching active states and memories plus older global history when no more-specific non-ignored rule applies. This reduces Incident Lens and save-processing load while leaving the original CoI notification unchanged. CannotDeliverFromMineTower, VehicleGoalUnreachable, and VehicleNoFuel remain audible.
* Added an import preview that classifies new, changed, unchanged, and skipped values before atomically merging the selected categories into the target world; unrelated target settings remain intact.
* Made Vanilla rules keyed by stable NotificationType and entity prototype portable, while safely skipping world-bound entity-instance rules and reporting them in the result.
* Added semantic validation for edited or damaged profiles; invalid values are skipped without changing the target, and unavailable sounds are reported in the preview.
* Excluded history, active alarms, acknowledgements, timers, and all other runtime memories from export and import.
* Kept imported ignore rules scoped to UNMA; the original Captain of Industry notification remains unchanged.
* Stored the default profile atomically at %LOCALAPPDATA%\UNMA\profiles\default.json while retaining public API and assembly binding V1 and persistence schema 20.

v0.10.0 | 2026-08-11
Consolidated operations release
* Consolidated and stabilized the complete 0.9.19 through 0.9.26 feature line: operator keybinds, history search/export, atomic panel cloning, persistent timing and hysteresis, per-slot audio snooze, escalation and safe operator attention, Historian forecasting, operational areas, and the read-only Incident Lens.
* Suppressed every optional Keybind Framework action while a native UNMA text field owns focus, preventing rebound letter keys from triggering operator actions during text entry.
* Added viewport-bounded scale-aware minimum sizes for the main window, editor, and detached panels so their usable logical workspace remains intact at 200 percent.
* Unified every main view around the same dark card grid, spacing, input treatment, and responsive action rows; history, system alarms, notification options, instruments, and options now use the available width without empty action columns or horizontal overflow.
* Added controlled instrument-title truncation and collision-free gauge values, and made the Historian use true COI fullscreen before restoring the exact prior window size and position.
* Replaced unsupported icon glyphs with clear text actions and filtered COI's built-in core modules from external-provider diagnostics.
* Added a fail-safe for schema 21 or newer: the main configuration plus backup, temporary, and broken-file artifacts remain untouched, and writes stay blocked for the session instead of dropping unknown future fields.
* Kept the public extension API and assembly binding on V1 and the persistence model on schema 20; no migration is required for 0.10.0.
* Passed the warning-free Release build, 125,696 core assertions, and all IL/reflection, localization, rollback, and package checks.
* Intentionally advanced directly from 0.9.26 to 0.10.0; no 0.9.27 release was published.

v0.9.26 | 2026-08-11
Incident Lens and alarm pressure
* Added a dashboard-only Incident Lens that groups active alarms by a two-game-day temporal burst heuristic.
* Labeled the earliest member as FIRST SIGNAL without claiming a confirmed cause or root cause.
* Kept incident clusters within ALL, UNASSIGNED, or the selected operational area while deriving one global ten-game-day weighted pressure level: NORMAL, ELEVATED, STORM, or SEVERE.
* Added recent-occurrence and distinct-alarm counts plus an expanded view capped at six incident cards and eight visible members per card.
* Made member focus a read-only navigation action with no acknowledgement, hiding, audio, history, or alarm-state mutation.
* Added a revision-bound immutable history cache over the newest 8,192 occurrences; unchanged frames do not rescan history, sorting plus analysis run outside the alarm lock, and continuous revisions fall back to a coherent uncached snapshot after at most two attempts.
* Kept every result transient and derived from current snapshots, with no persisted result fields or new schema migration.

v0.9.25 | 2026-08-11
Operational alarm areas
* Added user-defined areas that group global panels without changing alarm state, history, historian data, or audio behavior.
* Added ALL, UNASSIGNED, and concrete area filters for the panel bar and HOME; filtered HOME deduplicates active alarm tiles from its member panels.
* Added area-scoped acknowledgement and next-alarm navigation while keeping MASTER ACK explicitly global.
* Kept acknowledgement on the underlying global alarm state, so one alarm visible in several areas becomes acknowledged everywhere without duplicate history.
* Made area create, rename, reorder, and delete one atomic draft; deleting an area only moves its panels to UNASSIGNED.
* Added area assignment to panel settings, source-area inheritance for panel clones, and concrete-current-area inheritance for new panels.
* Protected unsaved panel and area drafts and stacked narrow or 200-percent layouts without hiding required controls.
* Migrated schema 20 with existing panels UNASSIGNED and the prior ALL behavior unchanged.

v0.9.24 | 2026-08-10
Instrument historian and directed ETA
* Added HIST to every instrument type with shared game-time ranges from one day through the complete session history.
* Added current, minimum, average, maximum, linear rate per game month, and R-squared fit statistics.
* Added reliable rising/falling ETA toward the configured scale maximum or minimum, with explicit insufficient, stable, unreliable, and beyond-100-years states.
* Kept chart and forecast on one coherent runtime snapshot and the same inclusive time window.
* Started a fresh session-history epoch on every game-clock rollback so future-timeline samples cannot contaminate analysis.

v0.9.23 | 2026-08-10
Escalation and operator attention
* Added one-shot, game-time custom-alarm escalation to a strictly higher severity with an optional inherited or explicit sound.
* Started a new alarm occurrence on escalation so acknowledgement and occurrence-bound audio snooze reset correctly.
* Added safe operator actions to custom escalation and system-stage transitions.
* Limited actions to opening and scrolling the matching UNMA panel, with an option to end only the temporary five-minute mute.
* Added a bounded, deterministic attention queue with exact occurrence pruning and no camera, machine, global-audio, or per-slot-snooze mutation.
* Migrated schema 19 with disabled defaults while preserving all schema-18 timing memories.

v0.9.22 | 2026-08-10
Alarm timing
* Added per-rule and per-system-stage activation delay, reset delay, and minimum active time on the COI game calendar.
* Added per-condition hysteresis for every numeric comparison, with immediate legacy defaults.
* Persisted running timers and condition latches so save/load and display-only edits do not create artificial alarm transitions.

Operator audio control
* Added per-slot audio snooze for one game month with an explicit resume action.
* Kept snooze independent from acknowledgement, visibility, counters, sound assignment, and history.
* Applied snooze and resume to every real occurrence represented by aggregated object slots.

v0.9.21 | 2026-08-10
Panel workflows
* Added safe duplication of global panels with columns, filters, automatic sources, exclusions, and stable slot order.
* Deep-copied assigned custom alarms to collision-free IDs and left every clone disabled for deliberate review.
* Kept live alarm state, history, links, dashboards, and entity panels outside the copy operation.
* Made the operation atomic with rollback on persistence failure and explicit reporting for skipped orphan rule slots.

v0.9.20 | 2026-08-10
History 2.0
* Added free-text search across message, detail, source, panel, and alarm ID.
* Added combinable state and severity filters with stable newest-first ordering.
* Added game-time stamps for alarm raise, clear, and acknowledgement events.
* Added filtered RFC 4180 CSV and JSON export to the local UNMA exports folder.

Compatibility and groundwork
* Kept legacy history entries readable and normalized malformed time values.
* Added a tested game-tick timing policy with legacy-compatible immediate defaults.

v0.9.19 | 2026-08-10
Operator controls
* Added per-slot, per-panel, and global acknowledgement without mutating projected UI copies.
* Added cyclic next-alarm navigation with panel scrolling and object focus where available.
* Added optional Keybind Framework 2.0.2 integration for primary and secondary shortcuts.
* Added a five-minute audio mute that preserves alarm and acknowledgement state.

Fixes and tooling
* Preserved entity metadata while aggregating panel slots so navigation resolves the correct object.
* Added deterministic, non-deploying package and release-verification scripts plus automated core tests.

v0.9.18 | 2026-08-10
Native game UI
* Moved all visible UNMA launcher, window, editor, detached-panel, form, and instrument rendering into Captain of Industry's native UI hierarchy.
* Removed the legacy IMGUI layer and transparent uGUI pointer shield so UNMA and Vanilla windows now share the same game-controlled z-order.
* Hardened text-field focus, UI scaling, and dynamic-list interactions across multiple open UNMA windows.

Fixes
* Made the Options page scrollable so every setting remains reachable in smaller windows and at larger UI scales.

v0.9.17 | 2026-08-10

Alarm editor
* Replaced the implicit first-panel destination for instrument alarms with an explicit target-panel picker.
* Added independent multi-panel assignment per instrument alarm and enforced at least one destination.
* Added INSTRUMENT as a permanent third source button beside game selection and global variables.

Fixes
* Fixed rules with missing or invalid target panels during configuration normalization.

v0.9.16 | 2026-08-10
* Added a dedicated LINKED VALUES source when opening the alarm editor from an instrument.
* Added direct selection of other instrument values from the same instrument panel as alarm conditions.
* Restored the linked source context when editing an existing instrument-bound alarm.

v0.9.15 | 2026-08-10
* Changed recorder archives from real-time ranges to COI game-time ranges spanning one day through one century.
* Added absolute and percentage increase/decrease conditions plus sustained comparisons over time.
* Added days, months, years, decades, and centuries as explicit condition units.
* Migrated legacy second-based conditions to equivalent game-time windows.

v0.9.14 | 2026-08-10
* Added global stored quantities for every unlocked product to the free-form notification editor.
* Added global storage capacity and fill percentage conditions per product.
* Added maintenance fill, reserve, capacity, monthly change, and current/maximum monthly demand conditions.
* Localized product names through COI and all new labels through MultiLangLib.

v0.9.13 | 2026-08-09
* Routed all player-visible UNMA UI and runtime text through MultiLangLib.
* Added complete German and English translations and key-complete English fallbacks for every other language catalog.
* Made system metric, unit, and built-in sound labels resolve dynamically in the active language.
* Added regression coverage for catalog parsing, key parity, referenced keys, and format placeholders across all 21 languages.

v0.9.12 | 2026-08-09
* Integrated UNMA windows with Captain of Industry's native frames and button styling, including resizing and correct input boundaries.
* Added a maximized paper-recorder archive with selectable time ranges and a continuous trace.
* Added calculated instruments that aggregate the same metric from multiple buildings as sum, average, minimum, or maximum.
* Added threshold and timed absolute/percentage decrease alarms for calculated instrument values.
* Separated instrument titles and action controls so labels no longer overlap.

v0.9.11 | 2026-08-09
* Fixed the global-variable picker closing whenever its live values refreshed.

v0.9.10 | 2026-08-09
* Added global game variables such as population, worker reserve, food supply, and health to custom alarm conditions.
* Added a persistent, prominent warning when another unsaved alarm draft is still open.
* Added Save, Minimize, and Discard choices when closing the alarm editor.
* Added direct deletion of custom alarms from the editor.
* Added fault-tolerant JSON exports for optional external UNMA displays.

v0.9.9 | 2026-08-09
* Fixed untranslated metric labels and units when playing in English.
* Localized comparison-editor labels, display settings, severity labels, missing-source details, and condition counts.

v0.9.8 | 2026-08-09
* Fixed terrain-collapse warnings from structural child entities such as transport pillars missing from their visible parent object's panel.
* Added the potential uneven-terrain collapse notification to collapsible static object panels before it becomes active.
* Applied parent object and prototype suppression rules to attached pillar notifications.

v0.9.7 | 2026-08-09
* Added all Vanilla continuous notifications registered on an object to its individual panel before they occur.
* Added preventive per-object and per-object-type suppression for these potential notifications.
* Increased the main tab width so Notification Options is displayed completely.

v0.9.6 | 2026-08-09
* Renamed the Sounds tab to Notification Options.
* Added inactive Vanilla alarm previews to individual object panels.
* Added direct per-object and per-object-type suppression controls to Vanilla alarm tiles.

v0.9.5 | 2026-08-09
* Added a Do Not Log / Ignore Completely mode for Vanilla notifications.
* Added per-object and per-prototype cleanup of matching active and recent UNMA history entries when complete suppression is enabled.

v0.9.4 | 2026-08-09
* Added a Mod Hub compatible changelog file.

v0.9.3 | 2026-08-09
* Added Normal, Log Without Sound, and Log Without Sound + Hide modes for existing Vanilla notifications.
* Added separate notification handling for one object or all objects of the same prototype.
* Kept hidden notifications in history while removing them from HOME, active counters, and UNMA audio.
* Migrated previous global notification suppression settings to configuration schema 13.

v0.9.2 | 2026-08-09
* Fixed autosave failures caused by a saveable runtime event registration.
* Added complete MultiLangLib catalogs for all 21 supported game locales.
* Added English user documentation and provider integration documentation.

v0.9.0 | 2026-08-08
* Added scalable per-entity alarm panels and a separate alarm editor window.
* Added linked global panels without duplicating alarm state.
* Added persistent UI scaling and input protection for all UNMA windows.

v0.8.0 | 2026-08-07
* Added global Vanilla notification suppression in UNMA.
* Added the active-only HOME dashboard and permanent fixed alarm panels.
* Added the versioned external mod API and MultiLangLib integration.

v0.1.0 | 2026-08-06
- Initial release of the configurable industrial alarm annunciator.
