Skip to content
MANUAL

Changelog

3.0.0 (2026-05-13)

Dyad 3.0 is a major, breaking release. Highlights:

  • The distribution now ships with Julia 1.12. This unlocks many new features throughout Dyad, such as binary trimming which allows for generated FMU binaries to be small.

  • Every core component library reorganised into domain-appropriate namespaces, with corresponding component renames.

  • A new first-party library for multibody mechanics, MultibodyComponents. The first version ships with components for planar mechanics: 3D mechanics are scheduled for a near future release.

  • A new first-party library for Heating, Ventilation, Air Conditioning and Refrigeration Cycles, HVACComponents.

  • FMU generation: build FMUs (FMI v2 / v3, Model Exchange + Co-Simulation) on Linux and Windows.

  • A new generation of the Dyad AI Agent built around user-authored skills. The standard library and shipped analyses have added skills throughout the ecosystem to improve agent automation.

  • A new Windows MSI installer for one-shot setup, especially valuable on restricted networks.

  • Substantial reduction in cold-start latency for analysis runs.

Existing Dyad 2.x projects opened in 3.0 will be offered a one-click migration that pins the new Julia channel and bumps your project's component-library dependencies to the new major versions. Please note that the project migration will not handle updating user libraries to reflect structural and naming changes in the component libraries. The Dyad AI agent can perform this migration for you. To migrate your project, open it in Dyad Studio and paste the prompt below into the Dyad AI Agent chat box. The agent will read each library’s changelog and apply the required updates for you. Before you start, ensure you do not have any component text or diagram tabs open — those will interfere with the agent’s changes.

text
The Dyad component libraries have had a breaking release. Please update this project so it builds against the new versions:

1. Look at the project’s Project.toml and identify the Dyad component standard libraries used by this project.
2. For each Dyad component library, find its CHANGELOG.md by evaluating the Julia snippet `abspath(Base.locate_package(Base.identify_package("<PackageName>")), "..", "..", "CHANGELOG.md")`.
3. Find information on breaking changes to the standard libraries by reading the changelogs up to the latest breaking version.
4. Apply the required source-level migrations to the project’s Dyad code and make sure there are no compilation errors.
5. Report what you changed, and list any breaking change you were unable to migrate automatically so the user can address it manually.

Dyad distribution

Based on Julia 1.12.6 (was 1.11.9).

New component library versions

ComponentVersion
BlockComponents4.0.4
DyadExampleComponents1.3.0
DyadModelOptimizer15.0.0
ElectricalComponents2.1.2
HydraulicComponents2.0.0
RotationalComponents2.0.0
ThermalComponents2.0.2
TranslationalComponents2.0.0

Breaking changes

Julia 1.12

Downstream Julia packages that were declared compatible with 1.11.x will need their [compat] in the Project.toml updated.

Component library reorganization

Every core component library is restructured, so components now live in domain-appropriate namespaces (à la the Modelica Standard Library, “MSL”), e.g. ElectricalComponents.Analog.*, BlockComponents.Continuous.*. Imports and fully-qualified component paths in .dyad files must consequently be updated. We have also translated more components from MSL, described in the Features section of this release.

Connector and variable renames

  • The connector Dyad.Node is now called Dyad.HeatPort, its flow variable Q is now called Q_flow, and its icon assets have been renamed accordingly (to heat_port_*).

Standard Analyses

  • DyadModelOptimizer v14 → v15. Some CalibrationAnalysisSpec string options (loss_func, optimizer, calibration_alg) have been replaced with enums (LossFunc, OptimizerAlg, CalibrationAlg); update any analyses which extend from CalibrationAnalysis accordingly. OptimizationMadNLP updated to v2, and calibration-diagnostic overhead has been substantially reduced.

  • DyadInterface v6 → v7. The previous IfLifting argument has been renamed to automatic_discontinuity_detection (rename only, no behavior change, still experimental).

Language / kernel semantics

  • Variable-length array dimensions now produce a warning rather than an error.

  • input is a contextual keyword in the parser. This means that input now can be used as a variable name.

Features

Language and kernel

  • Connectors can now carry parameters.

  • SteadyStateAnalysis is now a first-class analysis type alongside TransientAnalysis. A NonlinearSolveAlg enum lets you choose the solver.

  • New respecialize parameter on SteadyStateAnalysis and TransientAnalysis opting into the respecialize functionality from ModelingToolkit when running an analysis.

  • Synthesised connection routes when edges metadata is absent — diagrams no longer break on missing metadata.

  • Newly generated libraries run Julia with --optimize=0 by default for improved latency in the development loop. For existing libraries, Dyad Studio includes a migration.

  • A variable can now carry an initial expression, and modifications can specify initial directly.

    ComponentWithInitialExpression(a = initial 0)

Analysis & optimizer

  • DyadInterface v6 → v7. Adds a get_model(analysis_spec) function, a respecialize parameter on transient analyses, and string-based dot access (analysis_result.”resistor.i”).

Libraries

MultibodyComponents (planar mechanics release)

A new standard library for multibody mechanics, available from the Import Library menu in Dyad Studio. This release contains components for 2D planar dynamics; 3D components will follow in subsequent releases:

  • Planar joints (revolute / prismatic / planar), bodies, springs and dampers, wheels, sensors and trajectory generation.

  • Automated animation of simulations via the render(solution) function.

HVACComponents

A new first-party library for Heating, Ventilation, Air Conditioning and Refrigeration cycles. This initial release provides a suite of pre-built components (Tube-Fin Heat Exchangers, Compressors, Valves, Pipes etc.) together with fast and accurate spline-based refrigerant and air models. Examples covering end-to-end assembly as well as transient and steady-state simulation of simple vapor compression cycles are provided, together with agentic workflows to demonstrate the procedure of building custom components. Available refrigerants include: R32, R1234YF, R290, R152a, R134a, R410A, R717; additional custom refrigerants can be added by request. Only available by contacting <sales@juliahub.com>.

BlockComponents

Added a Chirp block and a LimPID variant with an externally-sourced derivative and re-organized the port position of existing LimPID .

ElectricalComponents

Added components including Controlled Sources, Transformer, M_Transformer, Gyrator, Translational EMF, Potentiometer, and variable Resistor / Capacitor / Inductor / Conductor.

Dyad Studio (extension)

  • Run analyses inside submodules.

  • Performance improvements to reduce time-to-first-result.

  • Proactive Julia REPL launch on activation. Opt out by disabling the dyad-studio.warmUpRepl preference.

  • dyad-studio.codeLoadingStrategy preference (default :include) — choose between the historical include semantics and new package-style using semantics.

  • New analyses placed next to their component. If the library is writable, at the root of the primary library otherwise.

  • MultibodyComponents has been added to the Import Library list.

  • An Open Project button has been added to the Dyad actions when no Dyad workspace is active.

  • Rotation correctly accounted for when flipping components in the diagram editor.

Dyad AI Agent

The biggest change in the in-product agent is a new skills system: the agent loads small behavioral protocols on demand rather than carrying everything in every request. Each skill is a markdown file.

  • User-authored skills: place a SKILL.md in your project's .dyad/skills/ directory and the agent will discover and catalog it automatically.

  • New built-in Surrogate Modelling Skill, and a compile_tools prerequisites skill.

  • julia_background_tool: long-running Julia tasks managed by the agent so you can keep iterating while a heavy job runs.

  • dyad-agent.md config file support: agent reads project-level configuration so behavior can be tuned per project. Just like CLAUDE.md.

  • Modernised diff view and redesigned permission prompt UI - Retry button on error messages.

  • Auto-resize for images that exceed API dimension limits — drop a screenshot of any size and it just works.

FMU generation

Dyad 3.0 supports building trimmed FMUs from your models, exporting Dyad models into the broader simulation toolchain.

  • Supports FMI v2 and v3, in both Model Exchange and Co-Simulation modes.

  • Trimmed via JuliaC — the resulting FMU contains only what your model needs, not the full Julia runtime.

  • Generated metadata identifies the tool as Dyad.

  • In 3.0, the Dyad AI Agent can help you generate FMUs — point it at the FMU documentation for the recommended workflow.

Distribution and installer

  • A Windows MSI installer is now available (download) bundling the Dyad distribution, the three required VS Code extensions, and Juliaup into a single package. Especially valuable on restricted networks where direct downloads of Juliaup or the distribution can fail. Pre-flight check blocks installation when VS Code, Julia, or Juliaup processes are running so an in-place install does not get corrupted.

Bug fixes

  • Corrupted .dyad files when editing through the Web UI. Multiple bugs could cause .dyad code to get corrupted with metadata interspersed with code when visually editing components have been resolved.

  • Addressed multiple race conditions between Dyad code generation and Julia usage. Multiple bugs existed that could cause Julia code not being ready/compiled before using it.

  • Packages are reinstantiated after a Dyad project upgrade.

  • Generated code now emits Float64 literals for ::Real parameter defaults.

2.3.0 (2026-03-31)

Dependencies

Dyad Language:

2.3.0

Julia Dependencies

Dyad Distribution: 2.3.0

Compat entry:

[compat]
julia = "=1.11.9"
BlockComponents = "=3.1.8"
DyadEcosystemDependencies = "=0.11.4"
DyadExampleComponents = "=1.2.7"
DyadModelOptimizer = "=14.0.0"
DyadOrchestrator = "=0.6.2"
ElectricalComponents = "=1.1.13"
HydraulicComponents = "=1.1.4"
PlotlyBase = "=0.8.23"
PlotlyKaleido = "=2.3.1"
Plots = "=1.41.6"
RotationalComponents = "=1.2.4"
ThermalComponents = "=1.0.7"
TranslationalComponents = "=1.1.8"
  • Julia julialang.language-julia@1.189.2

  • JuliaHub Authentication juliacomputing.juliahub-vscode-auth@0.1.10

  • Jupyter Notebook Renderers ms-toolsai.jupyter-renderers@1.3.0

Breaking Changes

  • At the language level case statements in a switch no longer require an end statement. To migrate, update code such as the following

    dyad
      switch A
        case A.B
          x = y
        end
      end

    to

    dyad
      switch A
        case A.B
          x = y
      end

    We apologize for any issues this unintended breaking change may have.

Features

  • Workflow skills system — the agent loads specialized behavioral protocols on-demand instead of carrying everything in every

request. Domain experts can author custom skills as markdown files without touching agent code. (#408)

  • User-authored skills — create SKILL.md files in your project's .dyad/skills/ directory to teach the agent

domain-specific workflows. The agent discovers and catalogs them automatically. (#457)

  • Structured thinking — the agent reasons between tool calls using <thinking> tags, improving multi-step problem solving.

(#438)

  • Conversation export — export any chat session as a self-contained shareable HTML file.

(#411)

  • Back button — return from an active chat to the start/resume screen without reloading the extension.

(#410)

  • Periodic auto-save — conversations are now saved during long agentic tool loops, not just when the agent goes idle.

(#434)

  • Scoped file permissions — file operations outside the workspace are now permission-gated instead of hard-denied.

(#172)

  • Model selection dropdown — replaced the toggle with a dropdown for easier model switching.

(#464)

  • allow users to duplicate and delete analysis notebooks via context menu

(#224) (ab84812)

  • rework persistency layer using VSCode primitives to improve robustness

(#169) (1ad1f92)

Bug Fixes

  • Hallucinated tool calls no longer trigger permission prompts or show errors in the GUI.

(#432)

  • Julia streaming output no longer duplicates stderr warnings or breaks display ordering.

(#475)

  • Julia stack traces now show useful function names and line numbers instead of top-level scope @ none:1.

(#474)

  • File create command now allows overwriting existing files. (#503)

  • Tool execution status dots are smaller and only visible during execution.

(#477)

  • Tools default to auto-approve instead of prompting on every call.

(#440, #439)

  • Line count clamped to actual file length when the LLM guesses too high.

(#492)

  • clear stale Project.toml diagnostics after fixing Dyad syntax errors

(#347) (0ae8cf2)

  • update agent to 0.11.1 (#302)

(0fa1ec7)

2.2.1 (2026-03-11)

Bug Fixes

Performance Improvements

  • improve analysis run cold start time and logging noise (#228) (356a71e)

2.2.0 (2026-03-02)

Features

  • 2.2.0-rc2 and rc3 migration and trigger upgrade check on activation (#191) (2026238)

  • ai: allow agent to restart language server (#69) (d28e6df)

  • ai: fetch fresh token for each LLM request (#72) (7219d82)

  • analysis: add support for DyadInterface@6 (#178) (ff04dca)

  • deps: upgrade to @juliacomputing/dyad-ui@0.7.0 (#171) (b4a14c0)

  • enable dynamic Julia initialization and address PR #90 review comments (#96) (ca9c3d8)

  • enable running analyses from tree view with enhanced view toggling (d68034b)

  • implement automatic configuration upgrade system (#59) (a09ca32)

  • library loading status report (47f4668)

  • tree selection update on tab change (47e9052)

  • ui: sidebar consolidation for major views (36112eb)

  • unified toggle and run buttons for text and diagram view (f0db64b)

  • update agent to 0.6.0 (#154) (2cb57f3)

  • update agent to 0.7.0 (#166) (228efe4)

  • update agent to 0.9.0 (#194) (a355e6d)

Bug Fixes

  • allow underscores in component and analysis names (#86) (099297e), closes #85

  • disentangle migrations from kernel version, rc4 migration for settings.json (#206) (950dbc6)

  • display ful path as a tooltip in the tree (#83) (1921327)

  • don't throw from custom document save (#185) (09e74c6)

  • fixing deadlock during compilation, and entity path resolution (ece859f)

  • keep initialization settings when restarting language server (#149) (d8c0103)

  • make upgrade dialog a modal and update wording (#192) (ce2308c)

  • pick up settings changes when restarting language server (#150) (41b0c2d)

  • prevent tab listener deadlock and URI double-decoding (5d0b322)

  • remove Julia installation step from Dyad setup (#201) (682a740), closes #127

  • resolve document-not-found errors and enhance compilation feedback (#163) (0bbae8e)

  • reuse language server output panel on restarts (#94) (3ca54e6)

  • set isReady when isWorkspace changes (#172) (93a32e2)

  • use modal dialog for upgrade apply prompt (ce2308c)

Documentation

2.1.0 (2026-02-06)

Features

  • add run analysis toolbar button with REPL execution

  • ai: allow *.juliahub.dev hostnames for agent LLM

  • ai: configurable Julia version

  • bump dyad-lang dependencies to 2.1.0

  • component tree enhancement

  • kernel: added primitives for synchronous systems

  • kernel: improved support for comments (now round trip if placed in the correct places)

  • kernel: more efficient and robust code generation

  • kernel: upgraded to DyadEcosystemDependencies v0.10.8

  • pass posthog id to the agent to track LLM calls

  • prevent Julia operations in invalid workspaces

  • read context keys for walkthrough completion

  • update agent to 0.4.0

  • update dyad-agent to 0.3.0

Bug Fixes

  • add transitive dependencies to the Project.toml

  • compilation pipeline race conditions and error handling

  • compile path to module file fix

  • compile path to module file fix

  • deps: upgrade the "run analysis" button to DyadOrchestrator@0.5.3

  • hardcode hide TransientAnalysis from DyadInterface

  • hardcode remove transient from DyadInterface

  • kernel: code generation for arrays of undetermined size

  • kernel: proper initialization for discrete equations

  • module resolution for 'flatten component'

  • only watch the correct Project.toml

  • prevent running analyses in modules

  • ui: update dyad-ui to 0.6.12

  • update agent to 0.3.1

2.0.0 (2025-12-20)

Features

  • Introducing the Dyad Agent; a companion engineer agent specialized on Dyad modeling. Start the agent using the Dyad: Start AI Agent command in the VSCode command palette (Ctrl + Shift + P)

  • Allow editing parameters through the parameter panel in the GUI. View this by double-clicking on a component

  • Search component tree

  • Search installed libraries

  • Automatic Julia version management and installation

  • Dyad Analysis Notebooks for analyzing Dyad components

  • Updated examples and component libraries

1.3.1 2025-11-26)

Bug Fixes

  • Fix to connection creation between input and output connectors

1.3.0 (2025-11-25)

Features

  • Support for Julia style doc strings (now the default)

  • Improved handling of empty definitions

  • New "linked" meta-data syntax to allow for cleaner file structure (especially when diffing changes). Instead of having volatile meta-data inline after a definition it can be referenced with a static tag - the actual metadata is stored in a _links section of the component level metadata. This behavior is controlled by a new extension setting Dyad-studio: Inline Metadata

  • Users can now inject Julia code into the generated code. If the files types.jl, precompilation.jl, definition.jl, experiments.jl or tests.jl exist for any module in the dyad folder, they will automatically be included at the top of generated versions of those files for their corresponding modules in the generated folder

  • Ability to color model regions using tags

Bug Fixes

  • Fix to enum code generation

  • Fix to code generation for component arrays

1.2.0 (2025-10-23)

Features

  • include statements in genenerated Julia code are sorted so they are stable between compiles - previously they could vary randomly and show as a git change

  • precompile.jl includes are moved to after any module imports in generated code - prevents errors about unknown symbols

  • Component documentation generation is now aware of sub-module structure - previously only components at the top level had documentation generated

  • Labels in components/connectors can now reference the doc_string by using the substitution $(doc_string). This will display the contents of the doc_string in the label

  • Updated to use DyadEcosystemDependencies v0.10.5

  • CodeLens render diagram for readonly components (dependencies and built-in components and connectors)

  • Separate Diagram view for each component, toggle switch between text and diagram

  • Compilation output is now displayed in terminal tasks for better visibility and control

1.1.0 (2025-09-30)

Features

  • Now possible to reference struct contents (even on scalar connections)

  • Autolayout and access to component tree from diagram builder UI

  • Native vscode tree view "DYAD COMPONENTS" displaying libraries, components and connectors (uses dyad svg icons)

  • Enable autolayout for all diagrams with reasonable defaults

  • The /generated directory is kept in sync with the /dyad directory, accounting for modules and ensuring renamed files/directories are removed as required

  • Updated to use DyadEcosystemDependencies v0.10.3

  • Added editor commands to fold/unfold metadata (kbd shortcuts are alt+M / alt+shift+M)

1.0.0 (2025-08-14)

Features

  • Updated to use DyadEcosystemDependencies v0.10.1

  • New integrated MCP server

  • Change in ternary operator (if <cond> then <expr1> else <expr2> should now be represented with ifelse(<cond1>, <expr1>, <expr2>))

  • Module support

  • Support for ModelingToolkit v10

  • Properly handle arrays of parameters and variables

  • New guess relation type

  • Support for absolute and relative tolerances in tests

  • Improvements to documentation generation

0.5.1 (2025-06-16)

Features

  • Initial release