Repository navigation
feat(init): discover monorepo packages from Cargo, Go and Gradle workspaces - #1309
Conversation
There was a problem hiding this comment.
One blocking finding (inline): the shared discover now feeds non-JS packages into the changesets migration, which then scaffolds package.json paths for them.
Nit: the Gradle regex only reads include arguments that sit on the same line as include, so a multi-line include(\n ":a",\n ":b"\n) silently discovers nothing. Worth a test, or a note in the docs.
Nit: discover now walks the tree up to depth 6 once per ecosystem that declares a workspace (up to four walks). Fine for now; one walk that checks every source would be cheaper on large repos.
The init flow, Cargo version.workspace collapse (the Toml reader handles [workspace.package].version at the root) and the tests look right.
There was a problem hiding this comment.
The blocking finding is fixed in f198aa1: changesets now calls discover_node, so it only scaffolds JS packages, and discover_node_ignores_other_ecosystems tests that. The multi-line Gradle include( nit is fixed too and has a test. Nothing new to block on.
## [7.30.0] - 2026-10-10 ### Features - feat(init): discover monorepo packages from Cargo, Go and Gradle workspaces (#1309)
Closes #333
ferrflow initnow lists the packages declared by the repository workspace and offers to scaffold one package per member. npm and pnpm were already read bymigrate; this moves that code toconfig/workspace_discoveryand adds:[workspace] membersandexcludeuselines and blocks ingo.workincludecalls insettings.gradle(.kts)Cargo members that inherit
version.workspace = truecollapse to a single root package, since FerrFlow cannot version them individually. Declining the prompt keeps the manual flow.The changelog entry ships in this PR; the CLI docs (EN and FR) describe the prompt.