Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
v0.3.1 (2025-10-24)
Fixed
- Fix type violation warnings on Elixir 1.19
v0.3.0 (2025-10-13)
Added
- Add
:affected_byoption for explicit project dependenciesEnables projects to declare dependencies on files outside their directory structure, addressing common monorepo scenarios where projects depend on shared resources that cannot be detected through mix dependencies.In order to explicitly declare dependencies, you can now add in your:workspaceconfig in the project'smix.exs:
Use cases includedef project do [ app: :web, # ... other config workspace: [ affected_by: [ "../shared/config.ex", "../docs/**/*.md", "../rust/foo/" ] ] ] end- Cross-language dependencies (e.g., Rust NIFs depending on Rust crates)
- Shared configuration files across multiple projects
- Documentation changes that affect project builds
Deprecated
Add
--formatoption toworkspace.listwith support forjsonandprettyoutput formatsThe new
--formatoption provides a more flexible way to control output format:--format jsonoutputs JSON data (replaces the deprecated--jsonflag)--format prettyoutputs human-readable format (default)
The
--jsonoption is now deprecated and will be removed in version 0.4.0. Use--format jsonwith--outputinstead for the same functionality.
v0.2.2 (2025-07-10)
Added
workspace.run: store task output in the exportedjson.workspace.run: include the task duration in milliseconds in the exportedjson.workspace.list: support--base,--head,--affectedand---modifiedoptions.workspace.test.coverage: allow filtering by package path.
v0.2.1 (2025-03-14)
- Allow having multiple workspaces under the same git repo.
v0.2.0 (2025-02-07)
This version requires at least elixir v1.16
Added
workspace.run: support specifying execution order through the--optionflag.Till now
workspace.runwas executing the tasks in alphabetical order. A new--ordercli option is added that support setting it topreorder. This will perform a depth first search on the project graph and return the projects in post-order, e.g. outer leaves are returned first respecting the topology of your workspace.workspace.run: support filtering by root paths through the--pathflag.workspace.run: support filtering by--dependencyand--dependentsimilarly toworkspace.list.Support passing most repeated CLI arguments as a comma separated list, for example you can now do:
$ mix workspace.run -t format -p p1,p2,p3workspace.check: support running specific checks through the--checkoptionworkspace.check: support grouping checks.You can now configure the group of each check in your workspace config, with the
groupoption. Checks with the same group will be printed together on the CLI output, under a group header.Additionally you can specify
groups_for_checkswith which you can modify the default look and feel of each check group, for example:groups_for_checks: [ package: [ style: [:light_blue_background, :black], title: " 📦 Package checks" ], documentation: [ style: [:yellow_background, :black], title: " 📚 Documentation checks" ] ]workspace.list: support filtering by root paths through the--pathflag.Promoted helper testing utilities to a
Workspace.Testmodule.
Deprecated
- Check definitions without an
idis deprecated. ids can be used for filtering the checks that will be executed.
Removed
Workspace.Utils.Path.relative_to/2has been removed. After requiring at least elixir 1.16 you can now usePath.relative_to/3instead with theforce: trueoption.
Fixed
Escape base and head references in git commands.
workspace.test.coverage: respectignore_modulesfrom coverage report
v0.1.2 (2024-09-30)
Added
workspace.list: support filtering by dependents through the--dependentflag. You can now list all projects that are direct dependencies of a given project:mix workspace.list --dependent my_projectworkspace.list: support filtering by dependencies through the--dependency. Using this flag you can list only those projects that have the given direct dependency:mix workspace.list --dependency a_projectworkspace.list: add--maintainerfor filtering projects with the given maintainer
v0.1.1 (2024-07-04)
Added
workspace.run: add--exportoption for exporting execution results as ajsonfileworkspace.run: log execution time per projectworkspace.list: add--relative-pathsoption for exporting relative paths with respect to the workspace path instead of absolute paths (the default one).
Removed
workspace.run: remove--execution-modeflag
v0.1.0 (2024-05-13)
Initial release.