invertase/melos
51.0
Adequate · 19 September 2026
16k
lines of production code
Dart
primary language
1
measurement over time
What this system is
Melos is a Dart monorepo management tool that orchestrates package discovery, dependency bootstrapping, and versioning within Dart Pub workspaces. It provides a CLI for executing workspace-wide commands such as testing, linting, and changelog generation, while supporting configurable lifecycle hooks and script execution. The system also includes utilities for parsing conventional commit messages and generating IDE project templates to streamline developer workflows.
How it got here
2020 — Dart workspace migration and API expansion
9 changes.
The project migrated its monorepo configuration from Melos-specific files to native Dart Pub workspaces, raising the minimum SDK version and streamlining build processes. This period also introduced a public Dart API for programmatic usage, added structured changelog generation with multi-platform support, and extracted a new library for parsing Conventional Commits.
2021–2024 — Pub workspace migration and CLI restructuring
8 changes.
This period focused on rewriting core Melos commands to support Dart Pub workspaces, replacing the legacy melos.yaml configuration with the root pubspec.yaml workspace field. The work included restructuring the CLI with dedicated command runners, adding configurable options and lifecycle hooks, and significantly expanding test coverage across commands and utilities.
Features
Configurable command options and lifecycle hooks
Melos now allows you to configure command-line options and run scripts before or after commands via the workspace configuration. You can set specific arguments for \melos analyze\, \exec\, \format\, \list\, \run\, \test\, and \bootstrap\ (including \pubGetArgs\), and define \pre\ and \post\ lifecycle hooks for \bootstrap\, \clean\, \publish\, and \version\ commands to automate pre- and post-processing tasks.
_packages/melos/lib/src/command\configs · high confidence
Introduce dedicated command runners for Melos CLI commands
The \packages/melos/lib/src/command\_runner\ directory now contains explicit command runner classes (e.g., \AnalyzeCommand\, \BootstrapCommand\, \ExecCommand\, \FormatCommand\, \InitCommand\, \ListCommand\, \PublishCommand\, \RunCommand\, \ScriptCommand\, \TestCommand\, \VersionCommand\) that define the CLI interface for each Melos command. These files establish the available flags, options, and argument parsing logic for commands such as \melos analyze\ (with \--fatal-infos\ and \--no-pub\), \melos exec\ (with \--group-logs\ and \--order-dependents\), \melos format\ (with \--line-length\), \melos list\ (with \--cycles\ and various output formats), and \melos version\ (with \--manual-version\ and \--dependent-preid\), among others. This structure centralizes the command-line argument definitions and invocation handling for the workspace tool.
_packages/melos/lib/src/command\runner · high confidence
Introduce structured changelog generation and repository support
This change introduces the core logic for generating structured changelogs for Melos workspaces. It adds \AggregateChangelog\ and \Changelog\ classes to produce Markdown output that categorizes package updates into breaking changes, other changes, dependency-only updates, lockstep bumps, and pre-release graduations. It also adds support for GitLab and Azure DevOps repository hosts alongside GitHub, enabling proper linking to commits and issues in the generated changelogs. Additionally, it implements retry logic with backoff for HTTP requests to improve resilience against transient network errors.
packages/melos/lib/src/common · high confidence
Melos 8.8.0 release with public Dart API
This release publishes Melos version 8.8.0 and introduces a public Dart API via the main \melos.dart\ library file. The new exports expose core configuration classes (such as \CommandConfigs\ and \GlobalOptions\), command runner exceptions, changelog utilities, package and workspace models, and script execution options, enabling programmatic usage of Melos features directly from Dart code.
packages/melos/lib · high confidence
New conventional\_commit package for parsing commit messages
A new \conventional\_commit\ library has been introduced to parse Conventional Commits 1.0.0 messages. It provides a \ConventionalCommit\ class that extracts the type, scopes, description, body, footers, and breaking change details from commit strings. The parser supports standard headers, merge commits, and breaking change indicators (both \!\ suffix and \BREAKING CHANGE:\ footers). An example file demonstrates usage, showing how to access parsed components like \type\, \scopes\, \body\, and \isBreakingChange\.
_packages/conventional\commit/lib · high confidence
Behavioural changes
Automated version generation replaces manual init script
The repository now includes a new \scripts/generate\_version.dart\ utility that automatically reads the Melos package version from \pubspec.yaml\ and writes it to \packages/melos/lib/version.g.dart\, ensuring the internal version constant stays in sync. This change accompanies the removal of the legacy \scripts/init.dart\ script, which previously handled plugin detection and dependency injection for the FlutterFire sidecar setup, streamlining the build process by removing that manual initialization step.
scripts · high confidence
Development wrapper displays local environment warning
A new \bin/melos\_dev.dart\ entry point has been added to support local development workflows. When invoked with the \-h\ or \--help\ flag, this wrapper prints a specific warning message indicating that the user is running a local development version of Melos, before delegating to the main application logic.
bin · high confidence
Melos 8.0: Configuration migration to pubspec.yaml and breaking script changes
Melos has migrated its configuration source from a dedicated \melos.yaml\ file to the root \pubspec.yaml\, requiring users to move their workspace settings into the new location. This release also introduces breaking changes to the \scripts\ configuration: the \run\ and \exec\ keys are now mutually exclusive within a single script definition, and the \exec\ block now requires an explicit \command\ key to specify the command to run. Additionally, the tool now supports \x-\ prefixed extension fields in YAML to allow reusable anchors without validation errors, and provides improved error messages for common configuration mistakes such as unquoted colons in script steps.
packages/melos/lib/src · high confidence
Melos CLI entry point now uses cli\_launcher
The main entry point for the Melos CLI (packages/melos/bin/melos.dart) has been updated to use the cli\_launcher package. This change replaces the previous direct invocation of the command runner with a structured launch configuration, which may affect how the executable is launched and managed by the Dart runtime.
packages/melos/bin · high confidence
Rewrite of core Melos commands to support Pub workspaces
The command implementations in \packages/melos/lib/src/commands\ have been rewritten to leverage the Dart Pub workspaces feature. This change replaces the legacy \melos.yaml\ configuration with the root \pubspec.yaml\'s \workspace\ field for package discovery and dependency management. The rewrite introduces new built-in commands (\melos analyze\, \melos format\, \melos test\, \melos init\) and significantly enhances existing ones: \bootstrap\ now supports \pubspec\_overrides.yaml\ with rollback on failure, \exec\ adds topological ordering and grouped logging, and \run\ supports script grouping and JSON output. Lifecycle hooks are now scoped to specific command sections, and the \list\ command gains multiple output formats including JSON, Mermaid, and Graphviz.
packages/melos/lib/src/commands · high confidence
Updated IntelliJ project templates for better IDE integration
The IntelliJ project templates have been refactored to provide more granular and accurate module definitions for Flutter and Dart projects. This includes new templates for Android Java modules, pure Dart packages, and workspace roots, ensuring correct SDK and library references. Additionally, run configuration templates now support additional arguments for Flutter runs, shell script execution in the terminal, and specific Dart/Flutter test configurations, improving the developer experience when running and debugging code within IntelliJ.
packages/melos/templates · high confidence
Fixes
Fix dependency serialization to match pubspec.yaml format
The dependency serialization logic in \melos\ has been corrected to properly format Git, Hosted, Path, and SDK dependencies when writing to \pubspec.yaml\. Specifically, simple hosted dependencies (those without a custom URL) are now inlined as a version string rather than a map, and Git dependencies with no \ref\ or \path\ have their URL inlined. This change also renames the internal \toJson\ extension to \toYaml\ to avoid conflicts with \pubspec\_parse\ 1.6.0, ensuring that the generated pubspec files are valid and concise.
packages/melos/lib/src/common/extensions · high confidence
Test coverage
Added test coverage for Melos commands; Added tests for Melos common utilities; Added tests for conventional commit parsing logic; Expanded test coverage for Melos core features.
Dependencies
Migrate to Dart Pub workspaces and update minimum SDK to 3.9.0
The monorepo has migrated from a legacy \melos.yaml\ configuration to the native Dart Pub workspaces feature, moving dependency and environment constraints into the root \pubspec.yaml\ and individual package manifests. This change raises the minimum supported Dart SDK version to 3.9.0 across all packages, including the newly extracted \conventional\_commit\ package and the main \melos\ CLI tool. The root workspace now explicitly lists \packages/conventional\_commit\ and \packages/melos\, replacing the previous \flutterfire\_monorepo\ structure and \settings.gradle\ file, while \melos\ itself is configured to bootstrap dependencies and manage versioning using the new workspace-native conventions.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 51.
Lenses
- Code Health 86
- Architecture 97
- Maturity 53
- Readiness 36
- Security 56
- Domain Modelling 100
Changes since last survey
- 300 commits — 218 feature/other, 82 fixes
By area
- packages/melos — 225 commits
- docs/index.mdx — 21 commits
- (root) — 19 commits
- .github/workflows — 10 commits
- docs/commands — 8 commits
- docs/getting-started.mdx — 6 commits
- docs/guides — 3 commits
- .github/ISSUE_TEMPLATE — 2 commits
- docs/assets — 2 commits
- docs/configuration — 2 commits
- (repo) — 1 commit
- bin/melos_dev.dart — 1 commit
Notable commits
- fix: chore: Fix linting (#849)
- fix: ci: Fix workflow
- fix: fix!: Make melos analyze always use dart analyze (#695)
- fix: fix!: retain and increment build numbers when versioning (#1018)
- fix: fix(analyze): restore melos analyze command (#1037)
- fix: fix(bootstrap): apply dependencyOverridePaths to workspace pubspec_overrides.yaml (#1008)
- fix: fix(deps): Support cli_util 0.6 and pub_updater 0.6 (#1075)
- fix: fix(deps): allow xml 7 via widened constraint (#1016)
- fix: fix(deps): require cli_launcher ^0.3.3+2 for Flutter workspace relaunch fix (#1047)
- fix: fix(intellij): honor PUB_CACHE when generating IDE files (#1059)
- fix: fix(publish): only report success when dart pub exits 0 (#1061)
- fix: fix(scripts): expand env variables regardless of the platform shell (#1050)
- fix: fix(scripts): expand env variables inherited from a parent melos process on Windows (#1054)
- fix: fix(scripts): run nested melos commands without a global installation (#1031)
- fix: fix(version): handle quoted range constraints in dependent rewrites (#1041)
- fix: fix(version): honour --yes for manual versioning prompts (#1058)
- fix: fix(windows): strip leading blank lines from first CMD output chunk (#1012)
- fix: fix: Align path dependency constraints to ^1.9.0 (#997)
- fix: fix: Allow underscore as packagename (#936)
- fix: fix: Avoid duplicated "Change Log" file header on Windows due to CRLF (closes #710) (#915)
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
invertase/melos was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 8f939ee2b0f67a5131c2bdc90503393fc65c57ec — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-13a154b7f5d1.