Releases: simvia-tech/vs-code-aster
Release list
v1.13.3
[1.13.3] - 2026-07-02
Mesh viewer reliability on remote machines.
Added
- Sidebar: added a link to browse code_aster examples (
astest) under the External section.
Fixed
- Mesh viewer stuck on "Loading…": on machines where
medcouplingcrashes immediately (e.g. unsupported CPU instructions), the conversion error was posted to the webview before its JavaScript event listener was registered, causing the message to be silently dropped and the loading screen to persist indefinitely. The error is now buffered and delivered once the webview signalsready, so it correctly shows a red error message instead of spinning forever. - Mesh viewer stuck on "Loading…": added a 120-second timeout to the
med2obj.pyconversion process; if the Python subprocess hangs without exiting, it is killed and an actionable error is shown in the viewer.
Full Changelog: v1.13.2...v1.13.3
v1.13.2
[1.13.2] - 2026-06-29
Cross-directory study support and packaging improvements.
Changed
- Reduced
.vsixpackage size by excluding additional dev-only files.
Fixed
- Mesh viewer / Validate Current Study: studies where the
.exportlives in a parent directory of the.comm(e.g.project/study.exportreferencingF comm subdir/study.comm D 1) no longer fail with "No .export file found". Both the mesh viewer and the study validator now search ancestor directories up to the workspace root, resolve the declaredF commpath relative to the.export's own directory, and correctly resolve mesh file paths the same way. - Validate Current Study: when the
.exportdeclares the.commwith a relative subdirectory path (e.g.F comm subdir/study.comm D 1), the.commfile is now found correctly. Previously the subdirectory was stripped, causing lookup to fail.
Full Changelog: v1.13.1...v1.13.2
v1.13.1
[1.13.1] - 2026-06-29
WSL and sidebar polish.
Fixed
- WSL / remote: sidebar settings items now open the Remote settings tab when the extension is running in a WSL (or other remote) context, so the Python interpreter path is set where the language server actually runs. Previously, clicking a setting always opened the User tab, leading to silent mismatches between a Windows path and a WSL environment.
- Sidebar: clicking a settings item no longer collapses file-specific quick actions (Validate, Run, …). The sidebar previously refreshed whenever focus left the active editor — including when settings opened — causing study-related actions to disappear until settings was closed.
- LSP: the language server now uses the same Python resolution logic as the formatter (
resolvePythonExecutable), so a managed virtual environment set up via the onboarding flow is also picked up by the LSP. Previously it was ignored there and only applied to formatting. - LSP: the resolved Python executable path is now logged to the code_aster: Language Server output channel on every start and restart, making it easy to verify which interpreter is actually in use.
- Validate Current Study: unit
0(code_aster's built-in results/message unit, typically declared asF repe … R 0in the.export) is no longer flagged as "declared but unused in.comm". It is now treated as implicit, the same as other built-in unit types.
Full Changelog: v1.13.0...v1.13.1
v1.13.0
[1.13.0] - 2026-06-25
Adds the Validate Current Study command — a pre-run study consistency check across the .comm and its .export.
Added
- Validate Current Study: a new command — in the Command Palette, on the editor title bar for
.comm/.exportfiles, and in the code_aster sidebar's Quick actions — that checks a study for common structural issues before you run it. It works at two levels: (1) command/concept validity inside the.comm(each command is checked for being recognised and well-formed, for its concept dependencies resolving to earlier definitions, for naming consistency, and for whether the concept it produces is ever used), and (2) I/O consistency between theUNITE=values used in the.command the file units declared in the associated.export— flagging units used but not declared, units declared but unused, and input/output direction mismatches. Results show up both in the Problems panel and in a dedicated validation report — which includes a legend, a hover explanation for every check column, and a "Findings" list that spells out each issue in words (not just a glyph) with click-to-jump to the offending line. The.exportis resolved automatically from the active file, or you are prompted to pick one when ambiguous.
Fixed
.commdiagnostics: keywords gated by a BLOC condition on a concept's type — e.g.CONTRAINTE/CRITERESinCALC_CHAMP— are no longer reported as "unknown keyword". The referenced concept's return type is now resolved so the catalog'sis_type(...)condition evaluates correctly..commdiagnostics: a rule such as "Exactly one ofINST,LIST_INST" is no longer flagged when the catalog supplies a default for the omitted keyword (e.g.MECA_STATIQUE, whereINSTdefaults to0.0)..commdiagnostics: the reentrantreuse=keyword is no longer reported as a type mismatch against theCOoutput marker..commdiagnostics: multi-valued keywords given a tuple — e.g.CONTRAINTE=("SIGM_ELNO",)— are now validated element by element against the allowed list, instead of comparing the whole tuple (which always failed)..commdiagnostics:DEBUT,FIN, and the other structural commands (POURSUITE,INCLUDE,DEFI_FICHIER) are no longer tagged "legacy / boilerplate" — they are mandatory or normal in a hand-written.comm, so the hint was noise on every file.- Validate Current Study: a concept is no longer reported as "redefined" when a command legitimately reuses it in place via
reuse=(the standard code_aster reentrant idiom). - Validate Current Study: concepts declared via
CO("name")(e.g. the outputs ofASSE_ELEM_SSDand other macros called without an assignment) are no longer reported as "undefined" when referenced later.
Full Changelog: v1.12.1...v1.13.0
v1.12.1
[1.12.1] - 2026-06-24
A polish release for the Generate study from scenario assistant.
Fixed
- Generate study from scenario: the group dropdowns (most visibly "Constrained groups") now open correctly on meshes that reuse the same group name across topologies — e.g. a name that is both a surface group and a node group. Such meshes previously left the dropdown unresponsive.
Changed
- Generate study from scenario: group dropdowns now show a topology icon (volume / surface / edge / node) beside each group — the same icons the 3D mesh viewer uses — so the kind of each group is clear at a glance.
- Generate study from scenario: generating a study now opens both files — the
.exportand the.comm, with the.commfocused — instead of only the.comm.
Full Changelog: v1.12.0...v1.12.1
v1.12.0
[1.12.0] - 2026-06-23
Adds the Generate study from scenario assistant (beta) — a guided webview that turns a MED mesh into a runnable code_aster study (.comm + .export) for linear static, nonlinear static, and modal analyses — and an extension-wide automated test suite.
Added
- Generate study from scenario (beta): a new command — in the code_aster sidebar under Quick actions (and the Command Palette) — opens an interactive form (with a live preview of the generated files) and produces a runnable code_aster study — a
.commcommand file and a matching.export— for one of three mechanical scenarios: linear elastic static (MECA_STATIQUE), nonlinear static (STAT_NON_LINE), and modal (CALC_MODES). It reads the selected MED mesh and proposes its real group names (filtered by use: volumes/surfaces/edges/nodes) so you never have to typeGROUP_MA/GROUP_NOby hand. Structural modelizations (shellDKT, beamPOU_D_T) generate anAFFE_CARA_ELEMblock wired into the solver viaCARA_ELEM. The pair is written into a self-contained<name>/folder (with a copy of the mesh) and uses consistent logical units between the.command.export.
Fixed
- Mesh viewer: bounding-box dimension labels (
0,X,Y,Z) and the element/node counter now appear in screenshots. They are HTML overlays rather than part of the 3D canvas, so the default screenshot was dropping them.
Internal
- Added an automated test suite across the whole extension: Vitest for the TypeScript extension host (formatter, run-log parser, project paths, scenario generators with golden fixtures) and the Svelte webviews (OBJ loader, viewer state, export units), pytest for the Python LSP (catalog, command parser, validators) and the mesh scripts, a cross-layer contract test that validates every generated
.commagainst the real code_aster catalog, and a headless VS Code integration smoke test. Wired into CI via a newTestsworkflow.
Full Changelog: v1.11.0...v1.12.0
v1.11.0
[1.11.0] - 2026-06-22
A mesh-viewer release: group lists are now searchable and filterable with a visible scrollbar, and a counter shows the mesh's element and node totals. Setup is more resilient on Python 3.14, .med read failures report clearly, and all dependencies were refreshed to clear known npm advisories.
Added
- Mesh viewer: a counter beside the sidebar shows the mesh's total element and node counts (the true FEA counts from the
.med, not the rendered surface). - Mesh viewer: search group names in the sidebar and the "Sidebar groups" popup. The list filters to matching groups as you type, making it easy to locate a specific group (e.g.
M34522) in large meshes. - Mesh viewer: the sidebar and "Sidebar groups" group lists now keep a visible scrollbar for top-to-bottom navigation of large meshes.
Fixed
- Mesh viewer: when a
.medfile can't be read (e.g. it's still being written or is corrupt), the viewer now shows a clear message instead of a raw HDF5/MED traceback. - Python 3.14+ setup no longer fails on a cryptic
medcouplingbuild error.medcouplingships prebuilt wheels for Python 3.10–3.13 only; on newer interpreters it's now skipped automatically so the language server still installs and runs. Onboarding, the sidebar status, and the.medviewer error all explain that the mesh viewer needs a Python 3.10–3.13 interpreter.
Changed
- Dependencies updated to their latest versions, clearing all known npm audit advisories (0 vulnerabilities). Notable major bumps: vite 8,
@kitware/vtk.js36, eslint 10, andvscode-languageclient10.
Full Changelog: v1.10.2...v1.11.0
v1.10.2
[1.10.2] - 2026-04-30
A small round of LSP fixes targeting catalogs that declare the same SIMP under mutually-exclusive BLOCs (most visibly DEFI_CONTACT), plus a long-standing race in the suggestion retrigger.
Fixed
- Value validation and value completion now resolve duplicate-named SIMPs by
BLOCcontext. InDEFI_CONTACT(FORMULATION='CONTINUE', ...),'NEWTON'is no longer flagged as not allowed forALGO_RESO_GEOM/ALGO_RESO_CONT/ALGO_RESO_FROT, and the value popup now offers it alongsidePOINT_FIXE. - Typing
var =quickly at top level no longer latches VS Code's "No suggestions" widget. The=retrigger now matches the\nbehavior — only fires inside an unclosed call, whereKEY=still pops the value list.
What's Changed
- Docs/update readme and requirements by @basile-simvia in #34
Full Changelog: v1.10.1...v1.10.2
v1.10.1
[1.10.1] - 2026-04-28
A round of LSP polish: completion no longer auto-opens on top-level newlines or sticks on "No suggestions", and edit-time diagnostics stop crying wolf on macros that take CO("name") outputs or commands whose keywords live behind a BLOC gate.
Added
DEBUTautocompletion now inserts a pairedFIN()block with the cursor parked between them.- Hovering a
CO("name")-declared variable shows which macro will produce it and on what line, matching the regular variable hover.
Fixed
- Suggest widget no longer auto-opens on a brand-new top-level line, no longer latches on accepted snippet bodies, and still pops parameter suggestions on Enter inside a function call.
CO("name")inside a macro is recognised as a future-output declaration, so later references tonameno longer flag as undefined.ASSE_ELEM_SSDand similar commands no longer reportSOUS_STRUC/LIAISONmissing when the keyword's value contains another call (MODELE=CO(...)).CALC_MODESkeywords gated byBLOC(condition=...)on defaulted catalog values are no longer reported as unknown.
What's Changed
- Feat/lsp and ide experience by @ulysse-bouchet-simvia in #33
Full Changelog: v1.10.0...v1.10.1
v1.10.0
[1.10.0] - 2026-04-27
A broad LSP and IDE-experience pass: cave-driven catalog resolution, a TypeScript-style hover layer, context-aware autocompletion, edit-time diagnostics with quick fixes, a .comm formatter, a guided setup flow, and a new activity-bar panel that doubles as a command dictionary. The status bar slims to an icon and Output channels are grouped under a single code_aster: prefix.
Added
- Catalog from cave — the language server now reads its catalog directly from the Docker image of the cave-selected code_aster version (extracted on demand to
~/.cache/vs-code-aster/catalogs/<version>/and cached). A bundled 16.7 catalog ships as a zero-config fallback, so the editor still works when Docker / cave aren't installed. The selection follows~/.cavelive and an in-memory reconcile clears orphan caches when an image is removed. - Cave version picker — right-aligned status-bar item modeled on VS Code's Python interpreter chip. Shows the current version, click to switch / install / remove. Install runs
cave use <v>withypiped in and reports progress through phases (Pulling / Downloading / Extracting / Finalizing). Cancellable. - Guided setup flow — a one-shot toast chain on first
.comm/.exportopen walks the user through Python LSP deps (auto-installed into a managed venv at<globalStorage>/.venv), ruff, Docker, cave, and a code_aster image. Each step is opt-in withInstall/Not now/Don't ask again, and the newcode_aster: Run setup checkscommand re-fires the chain. - Activity-bar sidebar panel with seven groups: Setup (
Setup (n/5), top when failing, bottom when healthy), Quick actions (filtered per active editor), Command browser (only when a.commis active), Versions, Settings, External links, and the bottom Setup. The brand mark gets a tightened monochrome icon for the activity bar plus light/dark variants for in-tree use. - Command browser — five canonical families (Mesh / Material / BC & Loads / Analysis / Output), each listing the file's commands first (✓) then the rest of the catalog dim. Title-bar action runs a fuzzy
Cmd+P-style QuickPick over every catalog command. Reads fromCommandRegistryso it updates live without saving. - Hover rewrite — TypeScript-style cards inside a
pythoncode fence (signature → description → details → doc link). Required vs optional read as Python defaults, BLOC branches filter by the parameters already typed at the call site,reglesrules render as a bullet list, and the doc link points atdemo-docaster.simvia-app.fr/versions/v17/. Surfaces thetranslation={...}short labels when present and is locale-aware (FR / EN viaLANG). Variants for command, keyword, allowed-value literal, factor marker, plain-Python variable assignment, and legacy-command notes. - Context-aware autocompletion — forward scanner replaces the old backward one (no longer confused by mid-edit unmatched quotes). Detects nested
_F(...)scopes, suggests allowedintovalues when the cursor is in a value position, suggests previously-defined variables compatible with the SIMP's expected class (resolves callablesd_prodvia__all__=True), and filters already-typed kwargs at every depth (not just the outer call). Snippet inserts:LIRE_MAILLAGE($0),KEY=$0,KEY=_F($0)— each retriggers the popup. Trigger characters expanded to(,,,=, space; client-side hide-then-trigger keeps the suggest widget from sticking on "No suggestions". - Edit-time diagnostics for
.commfiles with quick-fix code actions: unknown command, unknown keyword, value not ininto, missing required keyword,reglesviolations, undefined variable, type mismatch, and a soft information note for legacy commands. Quick fixes offer fuzzy-matched replacements (Levenshtein) and allowed-value swaps. Wrapped end-to-end so a CATA quirk can never block hover, completion, or formatting. .commformatter viapython -m ruff format --quote-style=preserve --line-length=100. First-open prompt offers to install ruff with one click into the managed venv; PEP-668 retry with--user..commsyntax grammar overhaul — TextMate rules rewritten around afunction-callbegin/end block with a nestedparenssub-block so_F(...), tuples, and multi-line kwargs all color correctly. Lowercase scientific notation, Python constants (None/True/False), and lowercase kwarg names are now recognized. Single-quote auto-close added;wordPatternkeeps_attached.- External links group in the sidebar (Star on GitHub, Rate on Marketplace, Browse code_aster website / documentation, Visit simvia.tech). Always at the bottom, always expanded.
Changed
- Status bar down to a single icon:
$(symbol-namespace)neutral when 3+ command families are present in the file,$(circle-outline)warning-tinted otherwise. Click opens and expands the sidebar's Command browser group. - Output channels unified under a
code_aster:prefix —code_aster: Language Server(replaces the misleadingPython Language Server),code_aster: Catalog,code_aster: Formatter. LSP error toasts updated accordingly. - Language aliases are now
code_aster (comm)andcode_aster (export). - Hover layout: signature first, then italic description, then details and rules, then doc-link footer. Drops the per-keyword inline
# …doc strings to keep the signature scannable. - Dream background off by default for new users (existing explicit-on choices preserved).
Fixed
- LSP
restart()no longer recreates theLanguageClient, so hover / completion / code-action providers don't duplicate aftercave use. Server env (catalog path) is refreshed by mutatingserverOptions.options.envin place before bouncing. - Sidebar and status bar wait for an
LspServer.onReadyevent to re-probe, so the Command browser populates without a file switch even when the LSP starts after activation. - Stale
~/.caveselections (image removed viadocker rmi) now correctly fall back to the bundled catalog. The trash button on the version picker also clears the matching extracted-catalog cache. .commCommandRegistryfalls back to a full reparse when a single-line edit is outside any tracked command, so newly-typed top-level commands register immediately.pip installfor ruff / LSP deps no longer passes--userunconditionally (broke venv installs); retried with--useronly on PEP-668 errors.
What's Changed
- Feat/lsp and ide experience by @ulysse-bouchet-simvia in #32
Full Changelog: v1.9.2...v1.10.0