Skip to content

Latest commit

 

History

History
525 lines (336 loc) · 38.9 KB

File metadata and controls

525 lines (336 loc) · 38.9 KB

Changelog

All notable changes to the VS Code Aster extension will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

[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 medcoupling crashes 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 signals ready, 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.py conversion process; if the Python subprocess hangs without exiting, it is killed and an actionable error is shown in the viewer.

[1.13.2] - 2026-06-29

Cross-directory study support and packaging improvements.

Changed

  • Reduced .vsix package size by excluding additional dev-only files.

Fixed

  • Mesh viewer / Validate Current Study: studies where the .export lives in a parent directory of the .comm (e.g. project/study.export referencing F 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 declared F comm path relative to the .export's own directory, and correctly resolve mesh file paths the same way.
  • Validate Current Study: when the .export declares the .comm with a relative subdirectory path (e.g. F comm subdir/study.comm D 1), the .comm file is now found correctly. Previously the subdirectory was stripped, causing lookup to fail.

[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 as F repe … R 0 in 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.

[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/.export files, 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 the UNITE= values used in the .comm and 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 .export is resolved automatically from the active file, or you are prompted to pick one when ambiguous.

Fixed

  • .comm diagnostics: keywords gated by a BLOC condition on a concept's type — e.g. CONTRAINTE/CRITERES in CALC_CHAMP — are no longer reported as "unknown keyword". The referenced concept's return type is now resolved so the catalog's is_type(...) condition evaluates correctly.
  • .comm diagnostics: a rule such as "Exactly one of INST, LIST_INST" is no longer flagged when the catalog supplies a default for the omitted keyword (e.g. MECA_STATIQUE, where INST defaults to 0.0).
  • .comm diagnostics: the reentrant reuse= keyword is no longer reported as a type mismatch against the CO output marker.
  • .comm diagnostics: 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).
  • .comm diagnostics: 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 of ASSE_ELEM_SSD and other macros called without an assignment) are no longer reported as "undefined" when referenced later.

[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 .export and the .comm, with the .comm focused — instead of only the .comm.

[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 .comm command 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 type GROUP_MA/GROUP_NO by hand. Structural modelizations (shell DKT, beam POU_D_T) generate an AFFE_CARA_ELEM block wired into the solver via CARA_ELEM. The pair is written into a self-contained <name>/ folder (with a copy of the mesh) and uses consistent logical units between the .comm and .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 .comm against the real code_aster catalog, and a headless VS Code integration smoke test. Wired into CI via a new Tests workflow.

[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 .med file 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 medcoupling build error. medcoupling ships 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 .med viewer 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.js 36, eslint 10, and vscode-languageclient 10.

[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 BLOC context. In DEFI_CONTACT(FORMULATION='CONTINUE', ...), 'NEWTON' is no longer flagged as not allowed for ALGO_RESO_GEOM/ALGO_RESO_CONT/ALGO_RESO_FROT, and the value popup now offers it alongside POINT_FIXE.
  • Typing var = quickly at top level no longer latches VS Code's "No suggestions" widget. The = retrigger now matches the \n behavior — only fires inside an unclosed call, where KEY= still pops the value list.

[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

  • DEBUT autocompletion now inserts a paired FIN() 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 to name no longer flag as undefined.
  • ASSE_ELEM_SSD and similar commands no longer report SOUS_STRUC / LIAISON missing when the keyword's value contains another call (MODELE=CO(...)).
  • CALC_MODES keywords gated by BLOC(condition=...) on defaulted catalog values are no longer reported as unknown.

[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 ~/.cave live 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> with y piped in and reports progress through phases (Pulling / Downloading / Extracting / Finalizing). Cancellable.
  • Guided setup flow — a one-shot toast chain on first .comm / .export open 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 with Install / Not now / Don't ask again, and the new code_aster: Run setup checks command 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 .comm is 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 from CommandRegistry so it updates live without saving.
  • Hover rewrite — TypeScript-style cards inside a python code 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, regles rules render as a bullet list, and the doc link points at demo-docaster.simvia-app.fr/versions/v17/. Surfaces the translation={...} short labels when present and is locale-aware (FR / EN via LANG). 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 allowed into values when the cursor is in a value position, suggests previously-defined variables compatible with the SIMP's expected class (resolves callable sd_prod via __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 .comm files with quick-fix code actions: unknown command, unknown keyword, value not in into, missing required keyword, regles violations, 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.
  • .comm formatter via python -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.
  • .comm syntax grammar overhaul — TextMate rules rewritten around a function-call begin/end block with a nested parens sub-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; wordPattern keeps _ 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 misleading Python Language Server), code_aster: Catalog, code_aster: Formatter. LSP error toasts updated accordingly.
  • Language aliases are now code_aster (comm) and code_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 the LanguageClient, so hover / completion / code-action providers don't duplicate after cave use. Server env (catalog path) is refreshed by mutating serverOptions.options.env in place before bouncing.
  • Sidebar and status bar wait for an LspServer.onReady event to re-probe, so the Command browser populates without a file switch even when the LSP starts after activation.
  • Stale ~/.cave selections (image removed via docker rmi) now correctly fall back to the bundled catalog. The trash button on the version picker also clears the matching extracted-catalog cache.
  • .comm CommandRegistry falls back to a full reparse when a single-line edit is outside any tracked command, so newly-typed top-level commands register immediately.
  • pip install for ruff / LSP deps no longer passes --user unconditionally (broke venv installs); retried with --user only on PEP-668 errors.

[1.9.2] - 2026-04-23

Better rendering for 1D meshes and a flatter, more readable face shading.

Added

  • Standalone 1D edges (edges not shared with any face, e.g. beam elements) now render by default in the object color with a thin black contour. Line style adapts to parent opacity, wireframe mode, and the face-edge visibility rules (hide / show / threshold / gradual).

Fixed

  • User-defined face groups whose name contains all_ (e.g. all_plates) are no longer mistakenly treated as file-level object actors.
  • Face specular highlight removed, so colors no longer shift toward white (e.g. blue → turquoise) at camera-facing angles.

[1.9.1] - 2026-04-23

New viewer toolbar actions (auto-rotate, video recording), a reorganized settings popup with a dedicated Toolbar tab, and a round of .export editor fixes.

Added

  • Auto-rotate toolbar button with a right-click popover for session-only speed and reverse-direction; persistent defaults in Settings → Toolbar.
  • Record toolbar button (mp4/h264 when supported, else webm, saved to .vs-code-aster/recordings/). Right-click menu offers whole-webview or without-sidebar variants. Whole-webview rasterizes the DOM and may briefly freeze the viewer on UI changes.
  • Settings → Toolbar tab grouping each toolbar action with its persisted defaults.
  • .export base directory support (R extension name D/DC/RC unit).
  • .export max_base, testlist, expected_diag form fields.
  • .export split basename / extension inputs, smarter default unit, and preservation of unknown lines.

Changed

  • Viewer settings reorganized into Rendering, Groups, Visibility, Toolbar tabs.
  • Dream background on by default.
  • Screenshot right-click now opens a menu (was a direct full-webview capture).
  • Canvas screenshots and recordings crop out the sidebar region so the mesh is centered in the output.
  • Export form error/warning panel merged into one clickable list with per-field jumps.

Fixed

  • .export file name / extension inputs no longer silently revert due to a state-sync feedback loop.
  • Optional integer parameters no longer flagged as invalid when left empty.

[1.9.0] - 2026-04-21

Volume and edge groups now appear in the viewer alongside face and node groups, a new "Groups" settings tab exposes per-kind display tweaks, the bundled vtk.js is replaced by the tree-shaken npm package, and an optional animated background adds a cosmetic touch.

Added

  • Volume groupsmed2obj.py now computes the skin of every volume group in a 3D .med mesh and writes it into the .obj as a dedicated group. The viewer renders them as their own category with a filled isometric cube icon, toggle-able independently from face groups.
  • Edge groups — level -2 groups (1D named cells) are extracted too and rendered as lines via a new EdgeActorCreator. Line width and depth offset (to avoid z-fighting with the skin) are user-controllable.
  • Groups settings tab — new tab in the viewer Settings popup covering:
    • Edge-group thickness slider (1–10 px)
    • Edge-group depth-offset toggle
    • Node-group point-size multiplier (0.25×–4×)
    • Sidebar sort order (natural / by cell count)
    • Bucket groups by kind (on by default; off merges all four kinds into a single list sorted by the same order)
  • Group-kinds legend in the help popup's Groups tab, showing each icon with a short description.
  • Edge threshold multiplier is now persisted across sessions via vs-code-aster.viewer.edgeThresholdMultiplier (was previously editable but lost on reopen).
  • Dream background — optional cosmetic viewer setting (vs-code-aster.viewer.dreamBackground) that drifts four EDF orange/blue blobs behind the mesh via a WebGL fragment shader. Theme-aware: blob intensity adapts to light vs dark themes, peak intensity is capped so overlapping blobs never fully replace the theme color. Does not affect mesh lighting.

Changed

  • vtk.js migrated to @kitware/vtk.js npm package — the 2.6 MB bundled script is gone, replaced by tree-shaken ES-module imports and real TypeScript types. Opens the door to regular version upgrades.
  • Settings popup: the "Edges" tab is renamed to "Mesh edges" and its copy rewritten to distinguish the wireframe edges drawn on each cell from the new edge groups. Tab content now scrolls when it overflows instead of clipping.
  • Sidebar groups now bucket volumes, faces, edges, and nodes in that order, each with its own icon.

Fixed

  • Mesh edge colors now repaint immediately on theme switch instead of waiting for the next camera move.
  • Translucent meshes (highlighted parent behind a selected sub-group) no longer wash out on light themes — vtk.js 35's Order-Independent Transparency pass is bypassed in favor of plain SRC_ALPHA blending.
  • .obj files cached under .vs-code-aster/mesh_cache/ from older extension versions are invalidated when the converter changes (via the bumped med2obj-version: 2 header).
  • Screenshots now work again after the vtk.js migration — the capture path switched to vtk.js's captureNextImage API (which doesn't depend on preserveDrawingBuffer), and the dream background is composited behind the mesh when enabled. The screenshot button's hover highlight is also stripped from the full-viewer capture so it no longer bakes into the saved image.

[1.8.1] - 2026-04-20

Follow-up polish on the .export editor form: smarter autocomplete suggestions and the saved file now opens automatically after create/save.

Added

  • Type-aware autocomplete — file name suggestions in the export form are now filtered by the selected F-line type so irrelevant files are hidden:
    • mmed / rmed rows accept .med, .mmed, .rmed, and any custom extension registered in vs-code-aster.medFileExtensions (so user-added MED extensions like .71 show up).
    • comm rows accept .com* (covers .comm, .com0, .com1, ...).
    • mess, msh, and dat rows require a literal extension match.
    • Types without a conventional extension (mail, base, libr, tab, nom) still accept any file.
  • Autocomplete on output rows — output file name fields now use the same autocomplete dropdown as inputs, making it easy to reuse existing file names for outputs.
  • Reveal on save — creating or saving an .export file from the form now opens the file in a text editor (or focuses the existing tab if it's already open), so you immediately see the formatted result. Stale tabs left over from a rename are closed automatically.

Fixed

  • The hidden .vs-code-aster/ folder no longer appears in the export form's autocomplete suggestions.

[1.8.0] - 2026-04-20

Full rewrite of the .export form in Svelte + Tailwind, first-class language support for .export files (syntax highlighting, formatter, format-on-save), and a batch of UX upgrades.

Added

  • Redesigned export form — rewritten in Svelte 5 + Tailwind 4, styled with VS Code theme tokens (--vscode-input-*, --vscode-focusBorder, --vscode-editorWarning-foreground, ...), so it looks native in every theme.
    • Tab icon is a blue pencil; tab title lives-updates to match the filename (falls back to untitled).
    • Titles inside the form adapt to mode: "Create a new export file" vs "Edit an export file".
    • New export files are pre-seeded with a sensible default: comm + mmed inputs and an rmed output, filenames simvia.comm / simvia.mmed / simvia.rmed.
    • .export extension locked as a visual suffix on the filename field — it can't be edited away.
    • Nested paths supported in the filename (subdir/file.export); missing folders are created on save.
    • Unsaved drafts persist via vscode.setState + retainContextWhenHidden, so switching tabs or reloading the panel no longer clears the form.
  • File rows — drag-to-reorder (powered by svelte-dnd-action, theme-colored drop zones, keyboard-accessible); per-row × delete; full-width "Add input/output file" button at the end of each section.
    • Type dropdown is filtered by direction (inputs vs outputs) and shows a Type placeholder on new rows; the file-type list is the full code_aster set (comm, mmed, rmed, mess, nom, base, mail, libr, tab, msh, dat).
    • Unit auto-increment scoped to the same type and max+1 (so med: 20, 50 → next is 51, not 21), idempotent when re-picking the same type; nom rows are locked to unit 0; ArrowUp/Down steps integer inputs.
    • Name autocomplete list matches the type dropdown styling; empty rows (no type and no name) are ignored by validation and on save.
  • Validation — per-field inline error messages, a sticky footer with clickable error / warning counts that smooth-scroll to the corresponding panel.
    • Blocking errors: filename required, parameters must be integers, at least one comm input file required.
    • Non-blocking warnings: duplicate unit across files (listing the file names), no mesh file set, no rmed output set, rename-in-edit-mode (tells the user the original file will be deleted).
  • .export language support — new TextMate grammar (source.export) colors P/F directives, parameter names, file types, direction flags (D vs R/RC), unit numbers, and # comments.
  • Document formatter for .export — available via Format Document. On save/create the form applies the same formatter automatically:
    • Groups lines into # Simulation parameters, # Input files, # Output files sections separated by blank lines.
    • Sorts F lines within each direction by a canonical type priority (comm, mmed, rmed, mess, nom, base, mail, libr, tab, msh, dat).
    • Keeps standalone # comments attached to the line they precede.
    • Emits a three-line header at the top crediting VS Code Aster and Simvia; re-saving is idempotent (no stacked headers).
  • Dedicated pencil icon (media/images/icone-edit.svg) for the "Edit export file" command, replacing the plain $(book) codicon.
  • Extension now activates on onLanguage:export, so opening a .export file registers the formatter without any prior command run.
  • Refreshed Simvia logo (new SVG), separate light/dark variants for both Simvia and code_aster logos in the form header.

Changed

  • Editing a file and changing its name now renames the file on disk (old file is deleted after the new one is written). A warning panel previews the rename before the user saves.
  • When writing a file, the output is always formatted (P/F grouping, section headers, shoutout) — so files stay clean across multiple save cycles.

Fixed

  • Loading an existing .export into the form (e.g. after a tab switch) no longer clobbers the pre-filled data with the seeded default.
  • Removing the last row no longer leaves stale autocomplete suggestions keyed to the dead row.
  • Missing parent directories no longer cause save to fail silently when the filename contains a path separator.

Removed

  • The legacy vanilla HTML/CSS/JS export form (webviews/export/export.{html,css,js}) and its hardcoded blue-on-light styling.
  • Unused media assets: media/images/aster.png, media/icons/3d.svg, media/icons/3d_light.svg.

[1.7.1] - 2026-04-17

Centralize extension-generated files under a single .vs-code-aster/ folder per project, with timestamped run logs and automatic migration from legacy locations.

Added

  • Project-local .vs-code-aster/ folder grouping all extension-generated files:
    • mesh_cache/ — converted .obj files (previously .visu_data/)
    • screenshots/ — PNGs saved from the viewer's screenshot button (previously next to source files)
    • run_logs/ — one timestamped log per code_aster run (previously a single overwritten .vscode-aster-run.log)
  • New vs-code-aster.maxRunLogs setting (default 10) to cap run-log retention; oldest logs are pruned when a new run starts
  • med2obj-version header in generated .obj files: the extension now detects stale caches from older converter versions and regenerates them automatically
  • Automatic migration of legacy .visu_data/ and .vscode-aster-run.log on first use, with info notifications so users know where files moved

[1.7.0] - 2026-04-16

New viewer toolbar with bounding box, wireframe, and screenshot tools.

Added

  • Top toolbar in the mesh viewer with three new tools:
    • Bounding box: toggleable wireframe cube with colored axes (X red, Y green, Z blue), corner dots, a "0" origin marker, and dimension labels anchored in 3D
    • Wireframe mode: toggle between solid surface and wireframe rendering to inspect mesh density
    • Screenshot: left click saves the 3D view as PNG next to the source file and copies to clipboard; right click captures the full viewer including the sidebar
  • Toolbar button tooltips using the same inline hover pattern as the rest of the UI
  • Toolbar tab in the viewer help popup documenting the three new tools
  • Updated README with diagnostics, terminal reuse, direct .med opening, and toolbar features

Fixed

  • Popup z-order: help and settings popups no longer render behind the sidebar
  • Sidebar tooltip z-order: filter/clear tooltips no longer hidden behind the top toolbar

[1.6.1] - 2026-04-15

Standalone mesh visualization: click any .med file to open the viewer directly, even without a .comm/.export pair.

Added

  • Click a .med / .mmed / .rmed file in the explorer to open it straight in the mesh viewer, via a custom editor registered with priority: "default" that bypasses the "file is binary" warning
  • Automatic MED detection: when a tab opens a file whose first bytes match the HDF5 signature, a notification offers to register the extension (e.g. .71) and open it in the viewer in one click
  • "Open as MED mesh" action exposed as an editor-title button (on auto-detected MED files) and as a right-click entry in the explorer
  • Tabs for files whose extensions are in vs-code-aster.medFileExtensions are auto-rerouted to the mesh viewer, no window reload required after registering a new extension
  • The mesh viewer tab now carries the shared orange cube icon (same as .med files in the file tree)
  • Inline error state in the viewer: when .med.obj conversion fails (e.g. medcoupling not installed), the reason is shown in the tab instead of an indefinite loading screen

[1.6.0] - 2026-04-15

Run workflow overhaul: terminal reuse, automatic diagnostics in the Problems panel, and refreshed toolbar icons.

Added

  • Run diagnostics: <A> warnings and <E>/<F> errors from code_aster, Python tracebacks, SyntaxErrors, fatal errors (e.g. segfaults), and MED/Fortran errors now surface automatically in the VS Code Problems panel — no F mess entry required in the .export
  • Diagnostics attached to the originating .comm/.com1 line when possible (via CMDTAG markers and Python tracebacks), and cleared between runs
  • The existing code-aster runner terminal is now reused across runs instead of spawning a new one each time
  • Colored toolbar icons: blue rocket for the run button (shared with the .export file icon) and orange eye for the mesh viewer button (matches the .med palette)

[1.5.4] - 2026-04-15

File icon improvements and language support for .export and MED files.

Added

  • Dedicated file icons for .export files (blue rocket) and .med / .mmed / .rmed files (orange cube)
  • Refreshed code_aster logo, now bundled with its SVG source
  • vs-code-aster.medFileExtensions setting to register arbitrary extensions (e.g. .21, .71) as MED files, which code_aster writes under the I/O unit number

[1.5.3] - 2026-03-26

Comment toggle support and Windows debugging improvements.

Added

  • Language configuration and keybindings for toggling line comments in .comm files
  • Support for attaching to code_aster embedded Python on Windows installations

[1.5.2] - 2026-03-23

Various fixes and improvements.

Added

  • Export form now auto-increments unit numbers to avoid duplicates when adding new files
  • Files named export (without extension) are now detected as export files

Fixed

  • Mesh viewer now correctly resolves .med file paths containing subdirectories (e.g. Mesh/mesh.med) relative to the .export file location (#13)
  • Selecting text no longer resets manually hidden objects in the mesh viewer (#14)
  • Fixed issues when two meshes share groups with the same name (#15)
  • Fixed error in mesh viewer (#16)
  • Reduced extension package size by excluding unnecessary files

[1.5.1] - 2026-03-16

Various fixes and optimizations.

Added

  • Selecting object names in text editors hides all other objects (hence highlighting selected object)
  • Progress bar for mesh loading

Fixed

  • Text selection now highlights groups again
  • Group sorting order now handles alphanumerical sorting

[1.5.0] - 2026-03-13

Rewrote the mesh viewer UI with Svelte, and added new viewer features.

Added

  • Migrated the mesh viewer frontend from vanilla JS/HTML to Svelte with TypeScript
  • Mesh viewer UI now follows the VS Code user theme
  • Object file names are shown in the webview tab titles
  • Focusing a .comm file now focuses its corresponding mesh viewer webview
  • Revamped help popup with tabs and more tips
  • New settings popup with various settings
    • Edge rendering settings
    • Object visibility settings
    • UI settings
  • Improved various UI components in the mesh viewer
  • Show/hide toggle button per object in the sidebar
  • Per-object color display
  • Zoom widget in the mesh viewer

[1.4.3] - 2026-03-03

Updated dependencies.

Added

  • More recent versions for a lot of dependencies

Removed

  • Unused packages

[1.4.2] - 2026-03-03

Fixed issues when different objects have groups with the same name.

Fixed

  • Clicking on a group who has a name shared with other groups will now properly highlight the correct group.

[1.4.1] - 2026-03-03

Improved med file detection.

Fixed

  • Med files that do not have a .*med extension are now properly detected as med files for the med viewer.

[1.4.0] - 2026-02-04

Added support for more comm file extensions

Added

  • .com, .com[0-9] file extensions are now supported.

Fixed

[1.2.0] - 2026-01-21

Added support for 2D meshes in the visualizer

Added

  • 2D meshes are now supported by the visualizer.

Fixed

[1.1.0] - 2026-01-08

Added support for quadratic nodes in the visualizer

Added

  • Quadratic nodes are now correctly displayed in the visualization

Fixed

[1.0.2] - 2026-01-07

Micro-patch to fix Python < 3.10 issues.

Fixed

  • Removed modern typing and use legacy one to be compatible with older Python version. Python 3.8 or later is still required.

[1.0.1] - 2025-12-18

Micro-patch to fix README issues.

Fixed

  • Simvia logo in the README now uses an absolute link rather than a relative link

[1.0.0] - 2025-12-17

Initial public release — first stable feature set.

Added

  • Interactive export form: Create and edit .export files from VS Code (command palette entry and editor button) with validation and a single-click create flow.
  • Run simulations: Launch simulations from a .export file (uses cave run [file].export by default); run command is configurable via the extension settings.
  • Smart .comm editing: Syntax highlighting, hover documentation (command descriptions, arguments, types, defaults), signature help, contextual auto-completion, and a status bar showing step progress with a detailed view.
  • Integrated 3D visualizer: VTK.js-based viewer to load .med meshes, highlight face/node groups, interact with camera (rotate/pan/zoom), quick axis alignment, and mesh conversion to .obj stored in a hidden .visu_data/ folder.
  • Documentation and requirements: Installation notes for Python 3.8+, numpy, pygls==1.3.1, and medcoupling, plus instructions for optional cave installation.
  • Troubleshooting: Ability to restart the language server for .comm files to restore hover/signature/completion features.