Skip to content

Bump to 1.35.0: a project whose whole definition is one matlab.toml reads - #62

Merged
ww-mw merged 1 commit into
mainfrom
bump-1.35.0
Oct 2, 2026
Merged

ww-mw merged 1 commit into
mainfrom
bump-1.35.0

Conversation

@ww-mw

@ww-mw ww-mw commented Oct 2, 2026

Copy link
Copy Markdown
Member

Releases the matlab.toml reader merged in #61.

R2026b's matlab.project.DefinitionFiles.Toml deletes resources/ and the .prj marker both and writes a single matlab.toml at the project root. That file now parses into the same ParsedProject the three XML layouts produce, so everything behind parseProject is unchanged.

Two new fields, both because this format records something the others do not — and omits something they all have:

  • ParsedProject.membersEnumerated answers "does this format record a member list", not "did we find any". True on every XML path, including the one for a store that would not open; false only here. Without it an empty files means two different things and a consumer reports a real project as empty.
  • ProjectLabel.declaredFiles is the inverted assignment only this format has: a label declares the files it covers, where a store assigns labels per member file.

ProjectPage.memberCount, labelledCount and ProjectPageLabel.count are therefore number | null — null rather than 0 or -1, so that reaching the markup is a compile error in the consumer that escapes it.

Consumer status: data-explorer-vscode is already building and testing green against this commit through a local install (typecheck clean, 2998 unit tests), so the API is exercised by its consumer before the tag goes on.

The lockfile's own version is bumped alongside package.json this time; bumping package.json alone is what let the two drift apart by a full release.

…eads

R2026b's `matlab.project.DefinitionFiles.Toml` deletes `resources/` and the
`.prj` marker both and writes a single `matlab.toml` at the project root. That
file is now parsed into the same `ParsedProject` the three XML layouts produce,
so the page, the tree and every consumer behind `parseProject` are unchanged.

Two fields are new, and both exist because this format records something the
others do not — and omits something they all have:

- `ParsedProject.membersEnumerated` answers "does this FORMAT record a member
  list", not "did we find any". True on every XML path, including the one for a
  store that would not open; false only here. Without it an empty `files` means
  two different things and the page reports a real project as empty.
- `ProjectLabel.declaredFiles` is the inverted assignment only this format has:
  a label declares the files it covers, where a store assigns labels per member.

`ProjectPage.memberCount`, `labelledCount` and `ProjectPageLabel.count` are
therefore `number | null`. Null and not 0 or -1: a renderer that prints "0
members" for a project whose members are every file under its root is confidently
wrong, and null is the only value that makes reaching the markup a compile error
in the consumer that escapes it.

The parser is `smol-toml` (BSD-3-Clause, zero dependencies, browser-safe) rather
than a hand-rolled subset, because this is the one definition format designed to
be hand-edited: it will carry comments, quoting variants, dotted keys and
multi-line arrays, and a subset parser that mis-reads one of those renders a
confidently-wrong page.

The lockfile's own version is bumped with package.json this time. Bumping
package.json alone is what let the two drift apart by a full release.
@ww-mw
ww-mw merged commit 35ce228 into main Oct 2, 2026
4 checks passed
@ww-mw
ww-mw deleted the bump-1.35.0 branch October 2, 2026 19:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant