===== What is new in stable version 8.11.1 ====== ---- (compared to stable version [[what_is_new_8_10_0|8.11.0]]) ==== Build & Infrastructure ==== * Fixed vcpkg to work correctly when installed in paths containing spaces. ==== Logging Improvements ==== * Standardized debug logging across functor execution and test subsystems, including a new `TEST` log subsystem for test execution output. ==== Code Refactoring ==== * Introduced `ExtractStructFunctor` as a shared base class for `ExtractStruct` variants, centralizing banner logic (`hasBanner`/`getBanner`) and reducing duplication. * Cleaned up unused definitions. ==== UI & UX Enhancements ==== * Added type icons to Region Manager, Table Manager, Execution Policy, and Log Policy for easier visual identification. * Port editor now shows an error icon when a non-editable port is disconnected from any functor. ==== Bug Fixes ==== * Fixed output/error redirection to occur after app initialization, preventing spurious warnings from appearing in the message log. * Fixed a crash caused by the C++ table representation being accessed by the UI after it had already been destroyed. ---- (compared to stable version [[what_is_new_8_10_0|8.10.0]]) ===== New Features ===== ==== Database & Submodel Store ==== * SQLite database support was introduced for storing submodels, replacing the previous file-based approach. This includes a full submodel database with query functions, checks for duplicate entries during installation, and JSON metadata storage. * The submodel store also gained parallel downloads, a 10-second connection timeout, and the ability to display installed submodel info without an internet connection. * URLs were also updated to use HTTPS where possible. ==== Image Support ==== * Support was added for zstd-compressed TIFF images. * A warning was introduced for loss of GeoTIFF category colors when using non-UINT8 cell types. ==== Logging Subsystems ==== * New log debug subsystems were added: ''DATABASE'' (exported to Java), ''TABLE_IO_HANDLER'' for table I/O operations, and ''MAP_HANDLING'' for map manipulation. * Existing log calls were standardized to use the appropriate subsystem variants throughout the codebase. ==== Nullable Port Grouping ==== * Nullable input port editors can now be grouped so they enable and disable together, with their checkboxes kept in sync within the same grouping. This was applied to the ''LoadMap'', ''LoadCategoricalMap'', ''TransformMap'', and ''RasterizeShape'' functors. ===== Bug Fixes ===== * OneDrive folder file-creation check incorrectly reported errors on Windows — now uses the native Windows API. A filesystem test was added to verify writing to and reading from OneDrive folders. * Linux file status was sometimes reported incorrectly. * Uninitialized ''m_string'' field in variants. * Crashes when parsing invalid tables embedded in scripts. * Nullable port editors failing to retain their empty state. * Wrong flag being passed when reading scripts in the interface. * Ctrl+C being handled by the wrong focused UI component. * Functor Explorer updating before the Issue Panel was initialized, now prevented by assigning a scheduler immediately on load. * ''ReadOnlyTables'' causing incorrect results during Map calculation. * Debug watcher not capturing exceptions on the analyzer thread. * Validation messages not properly showing the names of expression identifiers. * Two regressions caused by earlier commits: a port name misspelling and a naming conflict, both subsequently fixed. * Empty table with subtables failing to return rows. * Incorrect version of the Synthetica Look and Feel displayed in the About dialog. * Fixed bug where validation of Get Table Value would prevent changing the input keys. * Fixed crash caused by corruption of property keys when reading certain models. ===== Performance & Robustness ===== * ''DetermineTransitionMatrix'' is now more numerically robust — near-zero Eigen eigenvalues are clamped to zero to prevent invalid fractional root operations. * The resource profiler now skips registering small maps to prevent UI congestion, and the number of registered resources in the UI is capped to prevent lock-ups. * Table validation was refactored to support multiple formats via a new ''TableFormat'' alias. * A warning was added for large tables in editors due to performance impact from table copying. * Exception details are now included in native compilation error reporting. * Fixed regression that was making compiled expressions accessing tables to run much slower than their non-compiled counterparts. ===== UI & UX ===== * Instantiating an experimental functor now prints a warning in the message log. * Large table warnings now surface in editors via the new ''Verifiable'' interface on ''DataEditor''. * Added missing criteria to search for hollow and deprecated functors when using the Explorer and Issue Panel. ===== Testing ===== Several new test cases were added across the codebase: * Compilation of image expressions accessing tables. * ''GetTableValueFunctor'' behavior. * ''DetermineTransitionMatrix'' with near-zero eigenvalue inputs. * Editor verification for ''TableEditor'' and ''LookupTableEditor''. * Linux test execution now guarantees that required files are in place before running. ===== Documentation & Housekeeping ===== * Version bumped to **8.11.0**. * Copyright updated to **2026**. * README updated. * Fixed method documentation that incorrectly referenced ''Propertiable::createProperties()''. * Fixed a mixed parameter name in method documentation. * Fixed a typo in the method name ''addCheckBox()''.