gg_multi 7.3.0
gg_multi: ^7.3.0 copied to clipboard
gg_multi manages multi package workspaces and supports orchestrated editing and publishing
Changelog #
7.3.0 - 2026-08-01 #
7.2.2 - 2026-08-01 #
7.2.1 - 2026-08-01 #
Added #
- »do publish« makes sure every repo has at least one version on its registry (pub.dev / npm) before it is published. A repo that was never published is published manually by the user first — the shell commands to execute are shown, the publish continues after the package became visible on the registry
Changed #
- Make sure package is already published in registry before publishing
- Adapt first-publish gate to merge-only mode from main
- Make sure, package is already published in registry before publishing
7.2.0 - 2026-08-01 #
7.1.4 - 2026-08-01 #
Changed #
- Auto merge CHANGELOG.md
- Tidy CHANGELOG entry
- #gg: changed references to git
Fixed #
- Fix gg do rm repo does not work only work in ticket root but not when in one of the subfolders
- Fix »gg do merge« conflicting with a leftover remote feature branch of an already merged ticket
- Fix error while executing gg do merge
7.0.0 - 2026-07-31 #
Changed #
- Do not publish unchanged packages: skip repos without manual changes when no dependency outgrew its published constraint
- Prefix all gg-generated commit messages with "#gg: "; the unchanged-repo check treats such commits as not user generated
- Treat gg-labeled commits touching non-gg files as manual changes so force-committed user work blocks the skip
- Do not update unchanged packages
6.0.4 - 2026-07-31 #
Changed #
- Print »waiting until ... appears on pub.dev only one time
- Don't hide files in .gg folder
5.12.6 - 2026-07-30 #
Fixed #
- Stale
.gg/.gg-publish.jsonpublish progress is no longer carried from the master workspace into ticket copies:copyDirectoryskips the file anddo adddeletes a leftover from the master repo before copying. Such a leftover made a freshgg do publishin the new ticket abort with »An unfinished publish left progress …«. - Fix publishing error
5.12.4 - 2026-07-30 #
5.12.2 - 2026-07-29 #
Changed #
- Support projects without manifest: ProjectType.none, checks skipped, version tracked as git tag only
- do publish: the wait for published dependencies now announces the registry status url, reports progress while polling (via gg_lang's RegistryWaiter logging) and no longer hangs — every registry lookup is bounded by a request timeout; the overall timeout was raised to 15 min (pub.dev, which itself can take up to ~10 min) / 5 min (npm)
- do publish: registry waits show status url and progress, never hang
- Raise pub.dev wait timeout to 15 min (pub.dev can take ~10 min)
- Reuse the ticket message as default
Fixed #
- bin test no longer expects a Windows line ending in the "Missing target parameter." message
- Fix hanging publishing process
5.12.0 - 2026-07-29 #
5.11.0 - 2026-07-29 #
5.10.1 - 2026-07-29 #
5.10.0 - 2026-07-22 #
Changed #
- Forward --pr and --no-pr to gg_one so ticket publishes merge via auto-merge pull requests by default
- Update publish docs: the final merge goes through an auto-merge squash pull request by default
- Run npm registry lookups in the package directory so the project-level .npmrc with private feeds is honored
- gg_multi: changed references to git
5.9.0 - 2026-07-20 #
5.8.0 - 2026-07-20 #
5.7.1 - 2026-07-16 #
Added #
- The delete-ticket and merge-message default prompts fail fast with an
actionable error when stdin is not a terminal (via gg_one's
throwWhenNotATerminal), instead of hanging forever in CI or piped
shells. Set delete_ticket in
.gg/.gg-publish.json(or pass-m/--config) for headless runs.
Changed #
- Tidy CHANGELOG Unreleased sections
- gg_multi: changed references to git
5.7.0 - 2026-07-15 #
Added #
do configure-publish: new command that interactively writes<ticket>/.gg/.gg-publish.json(per-repo version increment + merge message, plus onedelete_ticketchoice).do publishruns it automatically when started without a config, so every interactive decision is made up front before the unattended publish.do publish --continue: records per-repo progress in.gg/.gg-publish.json, skips already-published repos and resumes the rest after a failure; the file is deleted on full success. Review /can publishare re-run unless at least one repo already published. Within a repo, resume: true is forwarded to gg_one'sdo publish, which resumes at the first open step of its repo-level<repo>/.gg/.gg-publish.json(done_steps) — including the version tag. The full-restore rollback deletes that repo-level file (its markers would be stale); the keep-commits rollback keeps it, and--reconfigurediscards ticket and repo-level files. Each repo's.gitignoregets the.gg/.gg-publish.jsonentry automatically before the pre-publish commit.do publish --reconfigure: discards an existing.gg/.gg-publish.jsonand reconfigures interactively.- Code-review hardening:
--continuealso skips review/can-publish when a failed repo's own step file proves irreversible progress (first-repo failure after registry publish/merge no longer blocks the resume);--configanddo configure-publishrefuse to clobber a runtime file that still holds progress markers.
Changed #
do publish --message/-mis kept, with refined meaning: it is the default merge message used only when the.gg/.gg-publish.jsonis written interactively (a fresh run or--reconfigure). It seeds every repo's merge-message prompt and takes precedence over the ticket description. It is ignored once a config exists or is supplied via--config.do configure-publishaccepts the same-m.- Tidy CHANGELOGs: single Unreleased section and chronological order
- gg_multi: changed references to git
Fixed #
- Code-review fixes: resume-safe branch handling, progress guards for configure/--config, did-commit check and idempotent branch deletion on resume
5.6.0 - 2026-07-13 #
Changed #
do reviewanddo publishnow roll back the repository state when they fail, restoring the snapshot taken before the run.do reviewrestores every changed, not-yet-pushed repo;do publishrestores only the failed repo — fully when nothing irreversible happened, otherwise keeping all commits so a re-run resumes. The shared git runner and snapshot capture live inbackend/git_snapshot.dart.
5.5.0 - 2026-07-06 #
Added #
- Org-prefixed repo folders: repos newly added to the master workspace
are cloned into
<org>_<repo>(Dart) /<org>-<repo>(TypeScript) folders, so same-named repos from different organizations can coexist. Existing unprefixed folders keep working:do add,do rm, ticket copies and transitive-dep cloning now resolve repos by folder name, manifest package name or git remote URL (RepoFolderResolver). do add <name>now tries the known organizations from.organizationsfirst and uses the bare<name>/<name>guess only as a last resort, so a plain add clones straight from the right org without a failed attempt.can publishnow runsgg can publishfor every repo in the ticket (feature branch, CHANGELOG, pana, npm authentication), so publish blockers — like a missing npm login for an npm-published package — surface up front instead of as a cryptic 404 mid-publish.
Changed #
- feat: clone whole GitHub org via gg do add - recognize /orgs/
Fixed #
- fix(org-add): handle missing GitHub CLI gracefully and fall back to https clone url when sshUrl is empty (code-review)
do review(and thereforedo publish) now disables pnpm 11'sblockExoticSubdepswhile refreshing dependencies, so the transitive git-referenced dependency chain that localizing to git feature branches creates installs instead of failing withERR_PNPM_EXOTIC_SUBDEP. This matches the fixdo publishalready applied to its own refresh step.do reviewnow surfaces a failed install's output from stdout when stderr is empty (pnpm writes its errors to stdout), instead of throwing the cause-less... (pnpm install failed: ).
Reverted #
- Revert parallelization of
gg can commitandgg do push(commit c97a31a). Restores the previous sequential implementation.
5.3.2 - 2026-06-26 #
Changed #
- Preserve dependency constraint operator (^^/~/exact) through publish
- gg_multi: changed references to git
5.3.1 - 2026-06-25 #
5.3.0 - 2026-06-19 #
Changed #
- Build dependency graph across Dart and TypeScript bridge repos
- Treat dart-typescript bridge repos as TypeScript for can/do review (npm install, skip dart pub get); export isBridgeProject from gg_one
- Introduce checkProjectType() as single source of truth for bridge->TypeScript check rule; add .example() real-instance factories & P:\programs\flutter/bin/internal/exit_with_errorlevel.bat
- Treat bridge repos as both Dart and TypeScript in do add-deps: getManifestDependenciesFromWorkspace now unions both manifests, tagging each dependency with its registry (pub.dev vs npm) so a bridge's deps are cloned from the correct source
- Publish bridges as TypeScript: pnpm-aware publish, dual-manifest version bump, non-swallowed publish errors, idempotent resume, review skips merged repos, link: for local TS deps, package.json scripts check
- gg_multi: changed references to git
Fixed #
- Fix bridge handling: cancel_review now runs npm install for bridges (symmetric to do/review); repo_folder_resolver names bridge clone folders TypeScript-style (hyphen) via checkProjectType
- Fix non-destructive sorted processing order (no longer mutates live Node.dependencies); make do/publish dependency refresh treat bridges as TypeScript via checkProjectType, symmetric with do/review and do/cancel_review
- Review fixes: keep full npm-scoped names in the dependency graph so different scopes stay distinct (no false duplicate-drop / misrouted edges); surface bridges in gg ls (dart+nodejs label, list package.json deps as typescript)
5.1.0 - 2026-06-09 #
Changed #
- feat(ts): version-pinned git deps via #semver: + tag-push for npm/pnpm
- gg_multi: changed references to git
- refactor(ts): trim comments to grace-cloud style limits + do_maintain layout
- style: apply grace-cloud comment + 80-char limits across ticket
- gg_multi: changed references to git
5.0.0 - 2026-06-08 #
Changed #
- feat(do review): integrate the remote feature branch before pushing to avoid non-fast-forward rejections; on a real rebase conflict it aborts cleanly and fails with an actionable message (never force-pushes)
- feat(do review): after merging origin/main, re-run 'gg can commit' for any repo whose HEAD moved, to catch merges that silently corrupt a manifest (e.g. duplicate keys) before localizing/committing/pushing; aborts early with a clear message
- feat(do add): auto-clone transitive deps into master before graph build & P:\programs\flutter/bin/internal/exit_with_errorlevel.bat
- gg_multi: changed references to git
- feat(do_publish): default askBeforePublishing=false in multi-publish for non-interactive runs
- gg_multi: changed references to git
- gg_multi: changed references to git
Fixed #
- feat: language-aware add/publish via gg_lang (NpmRegistryChecker + RegistryWaiter, manifest-name resolution for scoped packages); exclude fixture sub-packages from analysis and load them via relative imports
- fix(do review): surface the exact failing step and underlying cause instead of only 'Failed to review in:
- fix(filesystem_utils): skip node_modules during recursive copy to preserve pnpm symlink graph in TS ticket repos
4.5.2 - 2026-05-31 #
Changed #
- can review fuehrt vor dem Uncommitted-Check dart pub get --offline aus (analog gg_one can commit, mit Status-Printer)
4.5.1 - 2026-05-31 #
Changed #
- Revertiere die Parallelisierung von 'gg can commit' und 'gg do push' (Commit c97a31a). Die vorherige sequentielle Implementierung wird wiederhergestellt.
- Update gg metadata files for revert branch
4.5.0 - 2026-05-20 #
4.2.0 - 2026-05-12 #
4.0.1 - 2026-05-11 #
Changed #
- gg_multi: changed references to git
- Gg Multi: changed references to pub.dev
- BREAKING: Renamed package from
kidney_coretogg_multi. Repository moved to https://github.com/ggsuite/gg_multi. Updatedependencies:entries andimport 'package:kidney_core/...'statements toimport 'package:gg_multi/...'. The executable is nowgg_multi(previouslykidney_core). - BREAKING: Replaced dependency
gg ^7.0.5withgg_one ^8.0.0(theggpackage itself was renamed togg_oneupstream). - Renamed status marker file
.kidney_statusto.gg_multi_status. Existing checked-out workspaces must rename the file or run the localization commands again. - Upgrade gg_localize_refs version
Removed #
- remove unlocalize step from do review command and tests
3.0.4 - 2026-04-29 #
3.0.3 - 2026-04-28 #
Fixed #
- Refactor _prepareMasterRepositoryForCopy and fix git tag deletion on macOS
3.0.2 - 2026-04-28 #
Changed #
- check in kidney_core can review, dass kein repo im main branch ist
- Execute dart pub get after changing of pubspec.yaml in kidney_core do publish
3.0.1 - 2026-04-24 #
3.0.0 - 2026-04-23 #
2.8.1 - 2026-04-15 #
2.7.2 - 2026-04-13 #
2.7.0 - 2026-04-08 #
2.5.0 - 2026-04-01 #
2.4.2 - 2026-03-31 #
2.4.1 - 2026-03-30 #
2.4.0 - 2026-03-30 #
2.3.1 - 2026-03-30 #
2.3.0 - 2026-03-30 #
2.2.9 - 2026-03-30 #
2.2.8 - 2026-03-30 #
2.2.7 - 2026-03-30 #
2.2.6 - 2026-03-29 #
2.2.5 - 2026-03-29 #
2.2.4 - 2026-03-29 #
2.2.3 - 2026-03-29 #
2.2.0 - 2026-03-27 #
2.1.0 - 2026-03-27 #
2.0.1 - 2026-03-26 #
1.1.0 - 2026-03-26 #
Removed #
- Move add, remove, code, create, init, add_deps to do/ directory and update imports
1.0.0 - 2026-03-24 #
Added #
- Initial boilerplate.
- Add readme
- Add tests
- Add --force parameter to add
- Add console colors
- Add console colors in remove command
- Add init command
- Add tests for create ticket
- Add function defaultKidneyWorkspacePath
- Add force flag correctly to AddCommand
- Add command kidney_core list tickets
- add support in add command for multiple repos
- Add constants.dart and change master folder to .master
- Add tests for creation of .organizations
- Add test: logs error when primary and all fallback organization clones fail
- Add tests for command add organization
- add tests for url parser
- Add tests for azure urls
- Add tests for can publish
- Add do execute command
- add tests for kidney add
- add tests for do publish
- Add VS Code workspace file generation to kidney add command
- Add test for kidney_core can review command failure handling
- add tests for quiet taskLog behavior when verbose is false
Changed #
- Ignore dart dependencies in add-deps
- Log messages start with upper case
- Update Readme
- execute list repos, list organizations and create ticket always in kidney workspace
- Error if ticket already exists
- Successfully open VSCode on Windows
- Rename GitCloner to GitHandler
- restructure code in review command
- code command does not require argument if executed in ticket directory
- change to relative path outputs in log
- suggest cd command to user when new ticket created
- change parameter projectName to project_name in .organizations json file
- extractOrganizationFromUrl works with azure dev ops urls
- extract repo name of azure dev ops urls correctly
- Write kidney_status file
- Abort directly if a command fails in do review
- Execute gg do commit after localizing in kidney add
- Pass gitRef param to _localizeRefs.get in DoReviewCommand and tests
- open ticket as VSCode workspace file instead of individual repos
- Switch gg_localize_refs dependency to use GitHub repo
- Update integration test and add sample folder metadata files
- Update .gg.json with new canCommit success hash value
- Refactor install_git_hooks to simplify error handling logic
- Enforce pre-push commit checks only on main/master branches
- log git and pub commands with darkGray instead of green
- Refactor Node to use manifest field instead of pubspec in tests
- Switch gg_localize_refs dependency from path to git URL
- Update gg_publish to version 3.2.0 in pubspec.yaml
- Update gg and related deps to latest pub versions in pubspec.yaml
- Update version and repository URL in pubspec.yaml
- Update canCheckout hash in .gg.json to match other actions
Removed #
- remove trailing # and / in organization urls
- remove command works also for tickets
- Remove redundant code in appendOrganization
- Remove prints
- Remove gh pr create from review