Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,20 @@ GitHub Release.

Entries before this file existed were reconstructed from those release tags.

## [1.42.0] — 2026-10-19

Cells typed into the table now follow MATLAB more closely, and a Simulink.Parameter's Dimensions and Complexity follow its Value after every edit. More damaged or hand-edited files open with a warning, more values that could not be read show as not read rather than as a made-up value, and a copy or a save this extension cannot spell is refused rather than written wrong.

A cell typed into the table now refuses arithmetic written without spaces, as it already refused `{1 + 2}`: `{1+2}`, `{a+b}`, `{-a}`, `{2*3}` and `{2i+3i}` are refused with `Invalid MATLAB expression`, where each was taken as one text member, such as `'1+2'`. A sign that belongs to a number is still read, as in `{-2}`, `{1e-3}`, `{1+2i}` and `{i+1}`, and a bare word such as `{abc}` is still text. Other unquoted members holding `+`, `-`, `*`, `/`, `\` or `^`, such as `{1:-1:0}` and `{@(x)x+1}`, are refused the same way: type them in quotes to set the text. In a Simulink.VariantBank's Variant Conditions, `{V==-1}` and `{V>-2}`, which were saved as `'V == -1'` and `'V > -2'`, are now refused with `'VariantConditions' property for Simulink.VariantBank must be a cell array.`, and `{'V==-1'}` is still taken. Only typing changes: a file that already holds such text opens and saves as before. A member whose imaginary part is zero is now the real number MATLAB makes of it, so `{1+0i}`, `{1 + 0i}`, `{0i + 1}` and `{0i}` set a real double where they set a complex one; a Value typed as `1 + 0i` outside a cell is still complex. So that an edit of a cell's text cannot make a file's complex member real, a cell holding one whose imaginary part is 0, such as `complex(1,0)` in a cell shown as `{1+0i, 5}`, no longer opens an editor for its text: edit its elements one at a time, and that member stays complex.

A Simulink.VariantBank in a JSON dictionary that R2026b wrote, which holds its properties as plain properties rather than in the form R2027a writes, now shows them in its Bank Name, Variant Conditions, All Choices Coder Info and Active Choice Coder Info columns and in the Properties panel, and an edit there is saved into those same properties. Before, its cells showed the defaults, its values were listed only under Other, and every edit was refused with a message that it had nowhere to be saved. A value there that MATLAB refuses is warned of as MATLAB reads it, as that property's default alone. A Simulink.VariantBankCoderInfo whose properties are held in a property named `undefined`, as an earlier version of this extension could save one, now opens with a warning: in a binary dictionary, that MATLAB cannot read it at all, and in a JSON dictionary, that MATLAB reads it with every property at its default. Before, its cells were blank and nothing said why; it is still shown and saved as read. A Simulink.VariantConfigurations entry is no longer saved with a Value, which MATLAB's class does not have. Before, one this extension created or edited was saved with an empty Value, and one held as plain properties in a JSON dictionary gained `"Value": ""` even when nobody edited it. A Value a file already holds is kept as it was.

A Simulink.Parameter's Dimensions and Complexity now follow its Value, as MATLAB sets them, after every cut, Add, element edit and typed Value, and after Redo of one. On a 1x3 complex row, cutting an element sets Dimensions to `[1 2]`, typing `[1 2 3 4]` sets `[1 4]` and `real`, and setting every element real sets Complexity to `real`. Before, only a cut that left a single element changed them, and every other edit saved the old `[1 3]` and `complex`. As in MATLAB, a symbolic Dimensions such as `'[1,N]'` is kept, an empty Value keeps both, a struct Value keeps its Complexity, and a text Value is `[1 1]` and `real`. Neither is added to a file that does not hold it. Undo gives back the Dimensions and Complexity from before the edit, even in a hand-edited file where they disagree with the Value.

In a JSON dictionary, a bus with one element is now saved in the form MATLAB writes it, so a save leaves such a bus that nobody edited as it was; before, a save rewrote its element in the form MATLAB uses for two or more. One that grows to two elements and back to one is saved in that form again, as MATLAB saves it, and so is a one-element bus copied from a `.mat` file. A Simulink.Bus, Simulink.ConnectionBus, Simulink.ServiceBus or enumeration in a hand-edited JSON dictionary whose list of elements is not a list, such as `5`, `"x"`, `{"a": 1}` or `null`, now opens with a warning such as `"MyBus" holds 5 where its list of bus elements belongs; it is not shown, and an edit to the bus drops it from the file.`, and is saved as read. Before, any of these but `null` stopped the whole file from opening, and `null` opened with no warning and was saved as an empty list. In a binary dictionary, a struct array pasted as a Parameter's Value or as an object's property, whose elements do not all hold every field, such as one element with `a = 1` and one with no fields, is now saved with each of the struct's fields in every element, in the struct's order, and a field an element lacks as `[]`, so MATLAB reads it as it reads the text it was copied from. Before, each element was saved with only its own fields, in its own order, and MATLAB read such a struct back with no fields, or with its fields in another order. A pasted object array of one object whose size says otherwise, such as dimensions `[2,1]` in a hand-edited JSON dictionary, is now refused at a binary dictionary's save with `Cannot write ...: ... declaring dimensions [2,1] and holding 1 element, which no Dimension spells. Nothing was written.`; before, it was saved as a single object.

In a `.mat` file, more values that could not be read now show as not decoded, with a warning, no editor and a refused copy, where they showed a made-up value, were left out, or stopped the file from opening. A numeric array of more than 134,217,728 elements, such as a 1x134217729 uint8, no longer stops the whole file from opening, here or in a model workspace or a dictionary: it shows as `<1x134217729 uint8, not decoded>`. An element of a cell in a MATLAB object's property that could not be read showed an editable `0` with no warning, and copied as `0`; it now shows `<unknown, not decoded>`, with a warning such as `"holder.C" declares 2 cell(s) and only 1 could be read.` A field of a 1x1 struct whose data is not a matrix, which was left out with no warning, is now listed. A value of a MAT array class this extension does not read showed an editable `null`, which a Value edit turned into a double. A copy of a cell or struct array that holds none of the elements it declares is refused too, such as `a 1x3 cell none of whose 3 elements could be read`: pasted into a binary dictionary, such a cell was saved as a 0x0 cell, and MATLAB read such a struct array back with no fields. The refusal of a copy of a sparse array that was not read now says `a 3x4 sparse double`, as its row does, where it said `a 3x4 double`. This version ships `data-explorer-core` 1.43.0.

## [1.41.0] — 2026-10-18

Saving a binary dictionary now writes an edited entry as the bytes it was read from, with only what the edit changed written anew, and more saved values are spelled as MATLAB reads them back. A save this extension cannot spell is refused rather than written wrong, and more damaged or hand-edited files open with a warning.
Expand Down
10 changes: 5 additions & 5 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "simulink-data-explorer",
"displayName": "Simulink Data Explorer",
"description": "Explore Simulink models, data dictionaries, MAT-files, and projects as interactive tables and relationship trees.",
"version": "1.41.0",
"version": "1.42.0",
"publisher": "mathworks",
"icon": "media/icon.png",
"private": true,
Expand Down Expand Up @@ -236,7 +236,7 @@
},
"dependencies": {
"@lit/context": "^1.1.6",
"data-explorer-core": "github:mathworks/data-explorer-core#v1.42.0",
"data-explorer-core": "github:mathworks/data-explorer-core#v1.43.0",
"fast-xml-parser": "^5.8.0",
"fflate": "^0.8.3",
"highlight.js": "^11.11.1",
Expand Down
6 changes: 3 additions & 3 deletions test/corePin.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ import { describe, it, expect } from 'vitest';
import { readFileSync } from 'node:fs';
import { fileURLToPath } from 'node:url';

const TAG = 'v1.42.0';
const COMMIT = '68b02c780b6baa432d4fe920571548cb19574d55';
const VERSION = '1.42.0';
const TAG = 'v1.43.0';
const COMMIT = 'e7c018067c108e82404300f6631eb315725bd158';
const VERSION = '1.43.0';

const SPEC = `github:mathworks/data-explorer-core#${TAG}`;

Expand Down
Loading