Managing Installed Extensions
The Extensions view shows all installed extensions across two tabs: Installed and Remote Packages.
Installed Tab
The left panel lists all installed extensions with:
| Column | Description |
|---|---|
| Icon | Extension icon or default blue placeholder |
| Name | Extension display name |
| Version | Installed version number |
| Summary | Brief description |
| Badges | Package source (Extension / Local API Import), pre-release, update available, error |
Badges
| Badge | Color | Description |
|---|---|---|
| Extension | Green | Installed from a repository or .pkg file; can be updated |
| Local API Import | Gray | Generated from a spec import within the workspace; no update path |
| Update Available | Blue | A newer version exists in the configured repository |
| Restart to apply | Gray | A version installed during this session; it takes effect after a restart |
| Pre-release | Orange | The installed version is a pre-release |
| Error | Red | The extension failed to load (e.g., missing protocol dependency) |
Protocol Dependencies
Extensions can declare required protocol IDs via RequiredProtocolIds. If a required protocol extension is not installed:
- The extension appears in the list with an Error badge
- Its assemblies are not loaded and its services are not registered
- The error message indicates which protocol extension is missing
Install the corresponding protocol extension to resolve the error.
Viewing Details
Click an extension in the list to see its details in the right panel:
- Full description
- Package ID and type
- Developer information
- Package source and version
Deleting an Extension
- Select the extension in the list
- Click Delete in the toolbar
- The extension is removed immediately — its services disappear from the service tree
The same delete is available from the Remote Packages tab: select the package and click Delete in its detail toolbar — the confirmation prompt and the removal are identical.
Assemblies from deleted extensions remain in memory until Aethrix Studio is restarted. The extension's services are immediately hidden, but a restart is recommended to fully unload the code.
Embedded Extensions
When viewing extensions from within a Test Automation project, the tab shows Embedded Extensions — extensions bundled with that specific project. Each .aprj project can bundle its own extensions in an extensions/ subfolder using the naming convention svc-Name-vX.Y.Z.
Version Resolution Policy
The EmbeddedExtensionBehavior setting controls how the project resolves conflicts between embedded and globally installed extensions:
| Policy | Behavior |
|---|---|
| SameVersion (default) | The project always uses the exact version of the extension that was originally embedded. Project behavior is deterministic regardless of what global extensions are installed. |
| MostRecent | If a newer version of the same extension is installed globally, the project automatically upgrades to use it. A log message is generated during project load. |
Use SameVersion for reproducible CI/CD builds. Use MostRecent during development to automatically pick up updated extensions.
Orphaned Folder Cleanup
When you save a project, Aethrix automatically scans the extensions/ folder and deletes any subfolder that is no longer referenced by the project. This catches stale folders left by version bumps, crashed saves, or manual copies.
Extension References Manifest
The project manifest maintains an ExtensionReferences list tracking each extension by ID, name, minimum version, and source. When opening a project on a different machine, repository-sourced extensions are verified — a warning is shown if required extensions are not installed.
Deleting an Embedded Extension
- Open the project and go to its Extensions view
- Select the embedded extension in the list
- Click Delete in the toolbar
The extension is removed from the project only:
- The embedded
extensions/svc-Name-vX.Y.Zfolder is deleted - The manifest entry and the
ExtensionReferencesentry are removed, so the extension is no longer required and will not be auto-restored from its repository on the next open - Its services disappear from the project's service tree immediately
- A globally installed extension with the same ID is not affected
This is also the way to clean up a broken embedded extension — one that fails to load with an Error badge (for example, built against an incompatible framework version). The delete works even when the extension could not be loaded.
As with globally installed extensions, the assemblies of a deleted embedded extension remain in memory until the project (or Aethrix Studio) is closed and reopened.
Update Checks
When the Extensions view opens, it silently queries the repository for newer versions of installed extensions (excluding Local API Imports). An Update Available badge appears next to extensions with available updates.
Updating
- Select the extension on the Installed tab
- Click Update in the toolbar
The same door exists on the Remote Packages tab: select the package, choose the release in its version picker, and click Update. Installing an older release from the picker switches the machine to that version. Both doors install the picked version to disk; while Studio is running, a replacement of an already-loaded package is marked Restart to apply and takes effect on the next start.