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.
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
| Component | Version |
|---|---|
| BlockComponents | 4.0.4 |
| DyadExampleComponents | 1.3.0 |
| DyadModelOptimizer | 15.0.0 |
| ElectricalComponents | 2.1.2 |
| HydraulicComponents | 2.0.0 |
| RotationalComponents | 2.0.0 |
| ThermalComponents | 2.0.2 |
| TranslationalComponents | 2.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.Nodeis now calledDyad.HeatPort, its flow variableQis now calledQ_flow, and its icon assets have been renamed accordingly (toheat_port_*).
Standard Analyses
DyadModelOptimizerv14 → v15. SomeCalibrationAnalysisSpecstring options (loss_func,optimizer,calibration_alg) have been replaced with enums (LossFunc,OptimizerAlg,CalibrationAlg); update any analyses which extend fromCalibrationAnalysisaccordingly.OptimizationMadNLPupdated to v2, and calibration-diagnostic overhead has been substantially reduced.DyadInterfacev6 → v7. The previousIfLiftingargument has been renamed toautomatic_discontinuity_detection(rename only, no behavior change, still experimental).
Language / kernel semantics
Variable-length array dimensions now produce a warning rather than an error.
inputis a contextual keyword in the parser. This means thatinputnow can be used as a variable name.
Features
Language and kernel
Connectors can now carry parameters.
SteadyStateAnalysisis now a first-class analysis type alongsideTransientAnalysis. ANonlinearSolveAlgenum lets you choose the solver.New
respecializeparameter onSteadyStateAnalysisandTransientAnalysisopting into therespecializefunctionality fromModelingToolkitwhen running an analysis.Synthesised connection routes when
edgesmetadata is absent — diagrams no longer break on missing metadata.Newly generated libraries run Julia with
--optimize=0by default for improved latency in the development loop. For existing libraries, Dyad Studio includes a migration.A
variablecan now carry aninitialexpression, and modifications can specifyinitialdirectly.ComponentWithInitialExpression(a = initial 0)
Analysis & optimizer
DyadInterfacev6 → v7. Adds aget_model(analysis_spec)function, arespecializeparameter 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.warmUpReplpreference.dyad-studio.codeLoadingStrategypreference (default:include) — choose between the historicalincludesemantics and new package-styleusingsemantics.New analyses placed next to their component. If the library is writable, at the root of the primary library otherwise.
MultibodyComponentshas 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.mdin your project's.dyad/skills/directory and the agent will discover and catalog it automatically.New built-in Surrogate Modelling Skill, and a
compile_toolsprerequisites skill.julia_background_tool: long-running Julia tasks managed by the agent so you can keep iterating while a heavy job runs.dyad-agent.mdconfig 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
.dyadfiles when editing through the Web UI. Multiple bugs could cause.dyadcode 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
Float64literals for::Realparameter 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"Recommended Extensions
Julia
julialang.language-julia@1.189.2JuliaHub Authentication
juliacomputing.juliahub-vscode-auth@0.1.10Jupyter Notebook Renderers
ms-toolsai.jupyter-renderers@1.3.0
Breaking Changes
At the language level
casestatements in aswitchno longer require anendstatement. To migrate, update code such as the followingdyadswitch A case A.B x = y end endto
dyadswitch A case A.B x = y endWe 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.mdfiles 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
- rework persistency layer using VSCode primitives to improve robustness
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
createcommand 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.
- Line count clamped to actual file length when the LLM guesses too high.
(#492)
- clear stale Project.toml diagnostics after fixing Dyad syntax errors
- update agent to 0.11.1 (#302)
(0fa1ec7)
2.2.1 (2026-03-11)
Bug Fixes
Performance Improvements
2.2.0 (2026-03-02)
Features
2.2.0-rc2 and rc3 migration and trigger upgrade check on activation (#191) (2026238)
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)
Bug Fixes
allow underscores in component and analysis names (#86) (099297e), closes #85
disentangle migrations from kernel version,
rc4migration forsettings.json(#206) (950dbc6)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)
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.devhostnames for agent LLMai: 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.tomlcompilation 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.3hardcode 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 Agentcommand 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
inputandoutputconnectors
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
_linkssection of the component level metadata. This behavior is controlled by a new extension settingDyad-studio: Inline MetadataUsers can now inject Julia code into the generated code. If the files
types.jl,precompilation.jl,definition.jl,experiments.jlortests.jlexist for any module in thedyadfolder, they will automatically be included at the top of generated versions of those files for their corresponding modules in thegeneratedfolderAbility to color model regions using
tags
Bug Fixes
Fix to
enumcode generationFix to code generation for component arrays
1.2.0 (2025-10-23)
Features
includestatements in genenerated Julia code are sorted so they are stable between compiles - previously they could vary randomly and show as a git changeprecompile.jlincludes are moved to after any module imports in generated code - prevents errors about unknown symbolsComponent 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_stringby using the substitution$(doc_string). This will display the contents of the doc_string in the labelUpdated to use
DyadEcosystemDependenciesv0.10.5CodeLens 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
/generateddirectory is kept in sync with the/dyaddirectory, accounting for modules and ensuring renamed files/directories are removed as requiredUpdated to use
DyadEcosystemDependenciesv0.10.3Added editor commands to fold/unfold metadata (kbd shortcuts are
alt+M/alt+shift+M)
1.0.0 (2025-08-14)
Features
Updated to use
DyadEcosystemDependenciesv0.10.1New integrated MCP server
Change in ternary operator (
if <cond> then <expr1> else <expr2>should now be represented withifelse(<cond1>, <expr1>, <expr2>))Module support
Support for
ModelingToolkitv10Properly handle arrays of parameters and variables
New
guessrelation typeSupport for absolute and relative tolerances in
testsImprovements to documentation generation
0.5.1 (2025-06-16)
Features
- Initial release