# Syside 0.11.0

**URL:** <https://forum.sensmetry.com/t/syside-0-11-0/583>\
**Category:** Changelogs\
**Created:** [September 29, 2026, 11:18am UTC](https://forum.sensmetry.com/t/syside-0-11-0/583 "2026-09-29T11:18:43Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Simonas](https://yyz2.discourse-cdn.com/flex008/user_avatar/forum.sensmetry.com/simonas/32/13_2.png) [@Simonas](https://forum.sensmetry.com/u/Simonas)\
**Post date:** [September 29, 2026, 11:18am UTC](https://forum.sensmetry.com/t/syside-0-11-0/583/1 "2026-09-29T11:18:43Z")

</div>

Released on September 29th, 2026.

This version’s [documentation](https://docs.sensmetry.com/0.11.0/).

This version contains an important breaking change to Modeler’s Grid Views. The semantics and `SysideViews.sysml` library for grid views have been changed. A workspace that keeps its own pre-0.11 `SysideViews.sysml` renders and edits those views exactly as before; the old notation is deprecated and will not be supported in a future release. Run the automated **Migrate grid views to the 0.11 column notation** to move a model forward, or see the migration guide: [Migrate pre-0.11 grid views — Syside](https://docs.sensmetry.com/0.11.0/modeler/grid-views/table-views/migration/)

The Automator Python library now ships a first batch of our higher level APIs. This brings three Python modules: [`syside.query`](https://docs.sensmetry.com/0.11.0/python/syside/query/) to make it easier to ask questions about your model, [`syside.evaluation`](https://docs.sensmetry.com/0.11.0/python/syside/evaluation/) to make it easier to evaluate your models, and [`syside.testing`](https://docs.sensmetry.com/0.11.0/python/syside/testing/) to make it easier to write assertions against your models. You can find the user documentation for these changes [here](https://docs.sensmetry.com/0.11.0/automator/query/).

And Syside can now evaluate more of your model by supporting `forAll`, `reduce`, `select` and other control functions.

# All Syside Tools

## 🚀 Features

- **grammar** : ( **breaking** ) Allow visibility on annotating members in `enum defs`, change `frame concern` body to match other requirements for consistency
- **sema** : ( **breaking** ) Add rendering usage naming feature to the referenced feature target if it is owned by view rendering membership
- **validation** : Diagnose invocation expression with unbound parameters (`invocation-expression-missing-arguments`)
- **interpreter** : Implement standard `select` and `collect` functions and corresponding operators
- **sema** : Extend `checkRenderingUsageRedefinition` to instead redefine inherited `render` members if they exist to avoid `namespace-distinguishability` errors
- **formatter** : Use identifiers in the source to indent successions and transitions with explicit sources similarly to without
- **printer** : Indent shorthand successions if they succeed an empty succession in `fork`/`decide` blocks
- **sema** : Exclude required constraints when computing implicit requirement usage supertypes
- **model** : Make all usages owned by attributes non-composite automatically
- **validation** : Skip checking whether owned features are composite in `attribute-*-features` now that they are implicitly referential
- **model** : Skip binding connectors when searching for owned cross feature
- **conf** : Add `lint.redefinition-end-conformance` option
- **validation** : Default `redefinition-end-conformance` behaviour to the new specification checking only redefining features owned by associations and connectors
- **sema** : Revise multiplcity range expression type featuring to copy featuring types from the owning feature of the owned cross feature if one exists
- **sema** : Implement revisions from KerML 1.1 and SysML 2.1 ballots #3
- **interpreter** : Evaluate chained invocations in the scope of penultimate segment
- **interpreter** : Capture features from parent scope when invoking a feature with an owning type
- **conf** : Add `format.line-ending`
- **interpreter** : Diagnose common recursion cases on recursive evaluations
- **validation** : Diagnose specializations to self
- **conf** : Add `lint.type-specialization-not-self`
- **dot** : Italicize names of abstract not variation elements
- **interpreter** : Add evaluation trace to diagnostics as related information
- **interpreter** : Implement remaining control functions
- **interpreter** : Implement control functions with expression arguments

## 🐛 Bug Fixes

- **viz** : Fix that multiplicity part was not in `decl` if there were no other specializations
- **sysand,windows** : Silence harmless `cannot find the path specified` warnings
- **sema** : Fix that names could be resolved to deeply redefined features
- **pipeline** : Fix that invalidated documents could skip sema and validation stages
- **grammar** : Allow chained feature conjugations in KerML, and visibility on guarded successions
- **formatter** : Fix that indentation would be reset after `else` transitions
- **interpreter** : Fix error on empty input sequences to collect and select expressions
- **fs** : Fix globs with multiple recursive segments could fail to compile
- **sema** : Include implicit occurrence super types in port usage super types
- **interpreter** : Return owned feature references directly without evaluation
- **printer** : Assert KerML model when printing KerML-only connectors

## ⚡ Performance

- **interpreter** : Reduce the amount of temporaries created when evaluating classification expressions on metadata accesses
- **sema** : Add special case for `meta` operator expressions in sematic metadata evaluation
- **sema** : Reduce sema preparation and reference resolution overhead
- **model** : Improve `Element` layout to reduce memory usage

## ⚙ Miscellaneous Tasks

- **platform** : ( **breaking** ) Bump `x64-osx` minimum version to 10.15
- **windows** : Fix issues when comparing paths as strings normalized to forward slashes
- **deps** : Update syside-license to 0.3.7

# Modeler & Editor

## 🚀 Features

- Add option to resolve relative paths in links to make VS Code render images
- Include start byte point in documentation of anonymous elements
- Add opt-in path resolution in documentation links

## 🐛 Bug Fixes

- Do not send crash logs by default. Ask the user for explicit opt-in via a notification.
- Fix server crash on exit
- Exclude hidden files and directories from file events
- Place implicit specialization hints after portion kind modifiers

# Syside Automator

## 🚀 Features

- **reqif** : ( **breaking** ) Deprecate the ReqIF library surface in favour of the CLI. All functionality still accessible through the CLI.
- **reqif** : ( **breaking** ) Change absolute paths to attachments into relative paths
- **reqif** : ( **breaking** ) Reject `--attachments-dir` at the workspace root
- **reqif** : ( **breaking** ) Only package attachments into `.reqifz` file that are actually referenced in the exported elements
- **reqif** : Map ReqIF concepts from multiple exchanges onto one SysMLv2 ontology. Docs: [Linking an existing ontology — Syside](https://docs.sensmetry.com/0.11.0/automator/reqif/linking/)
- **query** : Add query API, primitives, and pytest assertions. Docs: [Query API — Syside](https://docs.sensmetry.com/0.11.0/automator/query/) API Reference: [query — Syside](https://docs.sensmetry.com/0.11.0/python/syside/query/), [evaluation — Syside](https://docs.sensmetry.com/0.11.0/python/syside/evaluation/), [testing — Syside](https://docs.sensmetry.com/0.11.0/python/syside/testing/)
- **reqif** : Extend name mangling for deduplication to target more than just requirements
- **reqif** : Add `--newline {auto,native,lf,crlf}` to `import`, `init`, `lock` and `link apply` to choose the line endings of generated `.sysml` files; the default, `auto`, keeps the line endings each file already has
- **reqif** : Extend name mangling for deduplication beyond requirements, to duplicate enum values and attribute defs, and to attribute defs that clash with or shadow an enum def
- **grid views** : Add `syside.grid.write_csv(model, output_dir)` and `syside grid export` to export a model’s table and matrix views to CSV, with the same file names and messages as the Modeler CLI’s `syside table export`
- Add `Lint.invocation_expression_missing_arguments`
- Change `Url` to raise `ValueError` instead of `RuntimeError`
- Add `CstNode.text()` method to get the text from the associated `TextDocument`
- Add options to `viz.Label.decl` to skip some parts of the declaration
- Deprecate `Sema.resolve` overload accepting mutexes
- Deprecate `LazyIterator. __getitem__ ` for performance reasons, replaced with explicit `get`
- Add `conf.InlayHints.succession_sources`
- Add `Lsp.hover`
- Add `ide.resolve_relative_md_links`
- Add `Lint.redefinition_end_conformance`
- Add `version.tag` for prereleases
- Add `conf.Format.line_ending`
- Add `Compiler.recursion_depth`
- Add `conf.Lint.type_specialization_not_self`
- Add `escapes` option to `viz.Label.decl`
- Add `nested` option to `viz.Node.style`
- Add `viz.NodeStyle.italicize_names`
- Add `viz.Label.suffix`
- Disable crash report upload by default
- Add `util.discard_redefined_features` ([Forum post: 574](https://forum.sensmetry.com/t/574))

## 🐛 Bug Fixes

- **reqif** : ( **breaking** ) names travel in ReqIF.Name; LONG-NAME is no longer a name carrier
- **reqif** : ( **breaking** ) Stop losing attachment references in ReqIF round trips
- **reqif (breaking)**: Write exported `.reqif` files and `link --output` mappings with Unix line endings on every platform, and keep the existing line endings of generated `.sysml` files instead of always writing Windows line endings on Windows
- **reqif** : Tolerate enumeration attributes with no `<VALUES>` child
- **reqif** : Stop delta import reporting unchanged elements as changed
- **reqif** : Handle enum attributes with no selected value
- **packaging** : Include ipython extra in all
- **cli,windows** : Fix that formatted files would always contain carriage returns
- **cli** : Fix crash when using `check --stats` without any documents to validate

## ⚙ Docs Tasks

- Insert deprecation messages into docstrings
- Add documentation to enum members

# Modeler

## 🚀 Features

- **grid views (breaking)**: New SysML semantics for table views. Please visit the documentation website for a migration guide: [Migrate pre-0.11 grid views — Syside](https://docs.sensmetry.com/0.11.0/modeler/grid-views/table-views/migration/)
- **grid views (breaking)**: Remove `includeLibraryElements` for grid views; standard library elements are now excluded automatically. This is the one pre-0.11 setting that is not honoured against an old workspace copy — the line still parses there but has no effect
- **grid views** : Add **Migrate grid views to the 0.11 column notation** , which previews and then applies the migration and replaces the workspace `SysideViews.sysml` in the same operation;
- **grid views** : Add **Add legacy (pre-0.11) SysideViews.sysml to workspace**, for models that still use the old column notation and have no workspace copy to fall back on
- **grid views** : Mark a column still written in the pre-0.11 notation with a warning in its header, naming the setting it uses and the `columnFeature` / `featureRepresentation` that replaces it, so a view can be migrated one column at a time
- **grid views** : Add bulk cell editing by dragging a cell’s fill handle over a range in table views
- **grid views** : Add a list editor for attributes holding a list of numbers in `attributeValue` columns, with entries separated by `;`
- **grid views** : Add requirement creation from hierarchical table views via the right-click context menu
- **grid views** : Save cell edits and view layout changes (column order, widths, filters) in a single save
- **grid views** : Add **Go to Row Element** and **Go to Cell Element** to the cell context menu, and **Go to column view usage** to the column header
- **grid views** : Show save progress in view banners and lock views read-only while a save is in progress
- **grid views** : Update an open view panel in place when the view’s type changes
- **grid views** : Confirm before discarding pending cell edits in the row details dialog
- **grid views** : Add the `direction` column representation, showing a feature’s explicit SysML direction (`in`, `out` or `inout`)
- **grid views** : Add collection columns that split a row into one sub-row per item
- **grid views** : Expose the tree column of hierarchical table views as `hierarchicalColumn`, so its label can be configured
- **lsp** : Disable implicit specialization inlay hints on successions that contain no declaration other than the ends
- **lsp** : Add inlay hints for implicit succession and transition sources

## ⚡ Performance

- **grid views** : Improve performance of content saves

## 🐛 Bug Fixes

- **grid views** : Fix the regression that broke creating attributes from `attributeValue` columns
- **grid views** : Fix a “model changed on disk” error when editing a view after a file was rewritten with identical content
- **grid views** : Stop reporting the model as changed on disk when the change was the view’s own save
- **grid views** : Report unresolved views with a Refresh action in the SysMLv2 Views panel, instead of claiming the model contains no views
- **grid views** : Fix feature value columns failing on expressions that need many evaluation steps
- **grid views** : Only save `columnOrder` to the view when the columns were actually reordered
- **grid views** : “Export as CSV” now offers the file name the command line writes, based on the view’s qualified name (`Pkg::Overview` is offered as `table-Pkg__Overview.csv`), and no longer leaves a truncated file behind when the write fails part-way through
- **grid views** : “Overwrite with bundled version” now refuses when the `SysideViews.sysml` it would replace belongs to a sysand package that is not editable, naming the package instead of rewriting a file that `sysand sync` may restore or reject
- Report malformed license keys before any modeling work, naming where the key came from (the keyring, an environment variable, a `.env` file or a key file) and how to correct it
- Fix downloading Syside tools directly from keygen.sh; previously only downloads through the Sensmetry proxy worked
- Fix installing Python and Syside Automator behind corporate proxies that inspect TLS traffic (`invalid peer certificate: UnknownIssuer`): the bundled uv now trusts the operating system’s certificate store and `syside.modeler.tlsCerts`. The new `syside.modeler.useSystemCertificates` setting (on by default) can be turned off to make uv use its own built-in certificates instead

# Modeler CLI

## 🚀 Features

- **viz** : Add ability to hide connection elaboration nodes (`[viz.filters.<VIEW>].show_connection_elaborations`, or the `showConnectionElaborations` view attribute)
- **grid views** : Accept `syside grid` as another spelling of `syside table`; scripts calling `syside table` keep working
- Print a warning when no files were found for validation under the given path(s)
- Use `format.line-ending` for formatting, defaulting to `auto`
- Add `--line-ending` option to `format` command
- **viz** : Support recursive imports in models
- **viz** : Load `.kerml` files into the model
- **viz** : Show quotes in declarations of names that need them (for example, names with spaces)
- **viz** : Add ability to customize the style of edges and boundary elements
- **viz** : Add ability to customize styles per metadata tag

## 🐛 Bug Fixes

- **grid views (breaking)**: `syside table export` now names each CSV after the view’s **qualified** name (`Pkg::Overview` writes `table-Pkg__Overview.csv` where it used to write `table-Overview.csv`), so two views sharing a declared name no longer write to one file and silently replace each other’s rows. Scripts that open exported files by name have to be updated, and files left by earlier exports are not removed. Names are kept to 100 characters by default; `--max-file-name-length` changes that
- **viz (breaking)**: Exit with code 4 when there is nothing to draw: a model with no matching view reports `Error: no views matched the model.` (previously a warning and exit code 1), and a view whose elements are all filtered out writes no file (previously an image was written and the exit code was 0)
- **grid views** : Keep letters and digits of every script in exported file names instead of replacing them with `_`, and leave the quotes a name is written with out of the file name
- **grid views** : A failed export no longer leaves a truncated CSV behind: each file is written beside its destination and moved into place only once it is complete
- **viz** : Name the segment that failed to resolve in “not found” errors (`Element 'X::Y' not found: segment 'Y' not found in namespace 'X'`)
- **viz** : Fix rendering a model with several hundred files; on Windows the failure was reported as a misleading “The filename or extension is too long” error
- **viz** : Fix duplicated and incorrect routing of inherited specialization edges
- **viz** : Render transitions in action flow views
- **viz** : Fix inherited sequence views not drawing
- **viz** : Fix `--zoom-level` being ignored
- **viz** : Fix `for` loop compartment rendering
- **viz** : Fix self-loop endpoints drawing at incorrect ranks (sequence view)
- **viz** : Fix text and edge overlaps (sequence view)
- **viz** : Fix some inherited library elements not being filtered out
- **viz** : Fix recursive expose (`::**`) not drawing inherited members
- **viz** : Fix models without a top-level package failing to render
- **viz** : Fix a crash caused by incorrect type inference
- **viz** : Fix drawing of inherited members in `flat` expose mode
- **viz** : Draw succession edges with a dashed line (action flow view)
- **viz** : Ignore unknown keys in `[viz]` config entries instead of failing with an error
- **cli,windows** : Fix that formatted files would always contain carriage returns
- Fix crash when using `check --stats` without any documents to validate
