Repository navigation
v0.119.0
The post-campaign rulings batch: the release file becomes the only way to state release intent (--bump/--description/--preid deleted), monorepo release init --packages becomes --releasables, monorepo add creates the releasable it names, unpublished-refs checks GitHub Release presence, Flutter joins import analysis, releasable state-dir commits attribute to their releasable, and unreadable Gradle dependency lines fail closed in CI filter derivation with a workable depends_on remedy.
Context
After the conversion/ownership/ledger campaign shipped, its closing review
put the remaining open design questions to the operator one by one; this
release implements the accepted rulings as one batch. The two breaking
changes both enforce the file-driven-over-flag-driven design rule; the
rest close coverage the campaign left open (Release presence had no
standing check, Flutter was pinned out of import analysis as migration
caution, a releasable's own release machinery fell outside its changelog
scope, and an unrecognized Gradle dependency line could silently narrow a
member's CI filter).
Breaking
monorepo release init --packagesis now--releasables. The flag has selected releasable names ever since implicit mode was removed; it now spells what it selects. The old spelling is gone outright ----packagesis an unknown flag, with no alias.release runno longer takes--bump,--descriptionor--preid. The three flags skipped.rlsbl/releases/unreleased.tomlentirely, which contradicts the file-driven design the rest of the release flow enforces -- the release file is what makes you state a release's intent in a reviewable committed artifact before executing it. The release file is now the only intent source; its ownpreidkey still selects the pre-release channel.
Features
- Flutter projects are now in scope for import analysis.
deps-unused,deps-undeclared,deps-runtime-test-only,deps-dev-in-lib,dead-modules,dead-modules-staleandcircular-depsnow run for Flutter targets, using the same Dart source scanners thedarttarget uses. unpublished-refsnow checks GitHub Release presence. A released version whose tag is on origin but which has no GitHub Release is reported as an error namingrlsbl release reconcileas the remedy, over every archived version, from one listing.monorepo addcreates the releasable it names. An--releasablenaming a group[[releasables]]does not declare yet is created as a singleton entry, with itstag_formatwritten out explicitly and derived from the member's primary target scheme -- the same derivationmonorepo absorbuses, including its refusal when a member's targets span both schemes. The new--tag-formatstates the format directly.
Fixes
- Corrected two monorepo help texts that described behavior the commands do not have.
monorepo extractsaid it refuses a mirrored releasable; it extracts one by promotion instead, cloning the mirror so the destination adopts the standalone history consumers already resolve.monorepo release initdescribed[packages.<name>]sections; the batch release file it scaffolds carries[releasables.<name>], which is also the only shape the reader accepts. - Releasable state-dir commits are no longer orphaned. A commit touching only a releasable's own release state (its archived release file, its finalized changelog) now counts as inside that releasable's changelog scope, instead of falling outside every scope and making its changelog entry report as out of range and stale.
- A Gradle dependency line the scanner cannot read no longer narrows a member's CI filter. A
build.gradledeclaring a dependency through a variable, a helper function, or a catalog alias with no catalog behind it used to warn on stderr and carry on, costing the dependent an edge -- so its router paths filter stopped covering a dependency it really has, and the freshness check agreed the narrowed router was fresh. Router derivation (monorepo sync, therouter-filters-freshcheck, the release-time window simulation) now refuses, naming the file, the line, and declaring the edge independs_onas the remedy.monorepo graphandmonorepo impactstill warn and carry on.