gg_one 14.4.2
gg_one: ^14.4.2 copied to clipboard
The convenient dart & flutter developer command line, bundling the gg_one tool family into one CLI.
Changelog #
14.4.2 - 2026-09-14 #
14.4.1 - 2026-09-11 #
14.3.0 - 2026-08-14 #
14.1.3 - 2026-08-10 #
Changed #
- Make sure »dart pub upgrade --tighten --major-versions« is called before publishing
14.1.2 - 2026-08-10 #
14.1.0 - 2026-08-09 #
Changed #
- Move gg commit conventions from gg_git to gg_one_core
- Improve commit behavior
14.0.0 - 2026-08-09 #
13.1.0 - 2026-08-08 #
13.0.0 - 2026-08-08 #
12.9.3 - 2026-08-07 #
12.9.2 - 2026-08-05 #
Changed #
- Extract the state kernel, the check commands and the publish configuration into the new gg_one_core package
- Extract the commit, push, upgrade and ticket flows into the new gg_one_commit package
- Extract MergeFlow, CreatePullRequest, lock files helper and CanMerge into the new gg_one_merge package
- Extract DoPublish, CanPublish, DidPublish and the version tag tools into the new gg_one_do_publish package
- Reduce gg_one to the umbrella CLI; distribute behavior docs into the sub-packages
- Split gg_one into gg_one_core, gg_one_commit, gg_one_merge and gg_one_do_publish
- Port the .gg/gg.json ignore guard from gg_one main into gg_one_core
Removed #
- Decouple internals from the gg_one barrel; remove dead code and unused dependencies
12.9.1 - 2026-08-04 #
Added #
- ».gg/gg.json« must not be git-ignored: every command now heals simple .gitignore rules (».gg«, ».gg/«, ».gg/«, a literal ».gg/gg.json«) into the canonical ».gg/« + »!.gg/gg.json« pair and commits the fix — or fails with the manual fix when the rule cannot be rewritten safely
Changed #
- Changes to .gg/gg.json are only amended into gg's own »#gg: …« bookkeeping commits. User commits are never rewritten silently; the state lands in a separate »#gg:« commit instead
Fixed #
- The first »do publish« in a repository whose .gitignore ignored the whole ».gg/« folder no longer crashes with »git add .gitignore .gg/gg.json failed«
12.9.0 - 2026-08-04 #
Changed #
- Show ticket deletion dialog at the beginning of publish. Recolorize.
- Use overrides in package.json
12.7.2 - 2026-08-04 #
12.7.0 - 2026-08-04 #
Changed #
- Improve push and publish workflow
- Rename »gg one do upgrade dependencies« into Rename
12.6.1 - 2026-08-04 #
Added #
- Add cached repo test helpers (initCachedRepo, initCachedRepoPair, initCachedGit, initCachedLocalAndRemoteGit); move pushLocalChangesUpstream from gg_one to gg_git; fix stale emoji expectations from gg_status_printer 1.4.2
Changed #
- Merge origin/main and tighten dependency constraints (dart pub upgrade --tighten)
Fixed #
- Migrate slow git-fixture suites to gg_git cached repo helpers (do_publish -43%, full run -36%)
12.6.0 - 2026-08-04 #
Changed #
- Rename .master to .ocean with automatic migration at next start
- Rename ocean workspace -> ocean
12.5.4 - 2026-08-03 #
12.5.1 - 2026-08-03 #
Changed #
- dart pub upgrade --major-versions --tighten
- shorten the long CLI messages and share the duplicated ones: one unfinishedPublishMessage, one continueConflictMessage, one editMessage
- use the semantic colors of gg_console_colors: cAction for instructions, cWarn for warnings, cDetail for progress, cCmd/cPath inside a message
- wrap every exception text in cError
- assert the plain text in the tests, not the escape codes (rmC)
- replace the ✓/✗ emoji by the plain marks ✓/✗ — gg_status_printer 1.2.0 colors them via cSuccess/cError
- replace do cancel-review with do review --abort
- refactor: rename publish --reconfigure to --restart
- refactor: shorten all CLI help texts to 60 chars
- Rework CLI texts
- refactor(gg_one): move do upgrade to do upgrade dependencies
- refactor(gg_one): move did upgrade to did upgrade dependencies
- reword all command descriptions to the same terse imperative gg do and gg can already use
- Rework console colors
- Improve cli log and colors
Removed #
- refactor(gg_one): remove do maintain command
- refactor(gg_one): remove can checkout from the CLI
- refactor(gg_one): remove can merge from the CLI
- refactor(gg_one): remove can upgrade from the CLI
- refactor(gg_one): remove the check command group from the CLI
- refactor(gg_one): remove do configure-publish from the CLI
- remove do checkout — gg do import ticket covers reproducing a ticket
- Remove unused CLI commands
12.5.0 - 2026-08-02 #
Added #
CreatePullRequest(lib/src/tools/create_pull_request.dart): opens — or reuses — the pull request of the current feature branch on GitHub/Azure DevOps and returns its url. It is created without auto-merge, sogg_multi do reviewcan open a pull request while the ticket is still being worked on; onlydo publishadds the auto-merge flag.
Changed #
- Create pull request as part of the review
12.4.1 - 2026-08-02 #
Changed #
- Merge main into 71
Fixed #
- »gg do create ticket« no longer applies a stash it did not create: »git stash create« probes the worktree first, so a clean worktree skips stashing entirely and a foreign stash entry is never restored into the fresh ticket branch. The own entry is pushed with a »gg:
- Fix git errors: own stash in create ticket, locale-independent push state
12.4.0 - 2026-08-02 #
Changed #
- Throw an error on unknown gg one sub commands, also if option -h is given
- Throw an error when gg on do publish is called within a ticket repo
- Use gg_args 2.1.0 which reports unknown sub commands itself
Removed #
- Remove gg do merge, use gg do publish --merge-only which asks for no version increment
12.3.0 - 2026-08-01 #
Changed #
- Do not upload ticket.json. Share it manually and import it using "gg do checkout"
12.2.1 - 2026-08-01 #
Changed #
- Merge gg one do merge to gg one do publish --merge-only
Removed #
- The »gg do merge« command — use »gg do publish --merge-only«, which runs the same flow without version bump, changelog heading, registry upload and tag
- The »DoMerge« class — its merge implementation is now the plain tool »MergeFlow« (lib/src/tools/merge_flow.dart), driven by »DoPublish«
12.1.2 - 2026-08-01 #
12.1.1 - 2026-08-01 #
Changed #
- Make sure package is already published in registry before publishing
12.1.0 - 2026-08-01 #
12.0.1 - 2026-07-31 #
12.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
11.2.5 - 2026-07-30 #
Fixed #
do publishnow discards publish progress recorded on a different feature branch instead of refusing to run (or, on--continue, silently skipping the version bump and registry upload and merging without publishing). Such progress is a stale leftover that arrived with a copy of the repository — e.g. a ticket copy of the master workspace.- Fix publishing error
11.2.4 - 2026-07-30 #
Removed #
- Don't delete branches twice. Remove pubspec_override.yaml before publishing
11.2.2 - 2026-07-29 #
Changed #
- Support projects without manifest: ProjectType.none, checks skipped, version tracked as git tag only
- do publish removes an already existing tag of the version to be published - locally as well as on the remote - before it tags the release. A publish that failed after tagging left the tag on a commit the retry replaces, which made the tag step refuse to tag ("must be greater ...") or tag an abandoned commit.
- Recreate tags on publishing
11.2.0 - 2026-07-29 #
11.1.0 - 2026-07-29 #
Removed #
- Remove git hooks functionality completely because merging is done via merge requests
11.0.1 - 2026-07-29 #
Added #
- do publish now waits after the registry publish until the version is actually visible on pub.dev/npm (via gg_publish's WaitUntilPublished): a message announces the wait incl. a status url, progress is reported and the wait is bounded by a timeout instead of hanging
Changed #
- do publish: wait visibly until the version appears on pub.dev/npm
- do publish: keep merge and pull-request wait messages visible
- do merge: sync main fast-forward-only, reset gg-bookkeeping divergence
- Refuse to publish ticket repos with a suppressed publish target
- do publish waits until version is published and pull request is merged
Fixed #
- do publish refuses to publish a repo whose publish target is suppressed by the ticket tooling (
gg multi do addwritespublish_to: none). Before, it silently skipped the registry upload and mergedpublish_to: noneinto the main branch — publish the ticket withgg multi do publishinstead - do publish announces a skipped registry upload instead of skipping silently
- do merge passes the pull request's source branch to the wait, so a moved HEAD no longer causes "No pull request found for branch main"
- do merge: updating the local main branch no longer aborts with "You have divergent branches": the pull is fast-forward-only, and when main diverged from origin/main with gg bookkeeping or lock-file drift only, it is reset to origin/main (real local commits still abort with a clear message)
11.0.0 - 2026-07-22 #
Added #
- Add --pr flag (default on): merge via auto-merge pull request and wait, fall back to local merge on unsupported providers, --no-pr restores local merge
Changed #
- Forward the merge message into the pull-request flow, drop the doMerge and doPublish states and prune legacy keys from .gg/.gg.json
- Absorb pre-push-hook worktree drift in the pull-request merge flow so the final checkout of main does not fail
- Skip pull request and wait when a resumed run finds the release content already merged into main
- Use the shared origin-url lookup and gg_lang lock-file names and memoize the legacy-key pruning
- gg_multi: changed references to git
10.3.0 - 2026-07-20 #
Changed #
- Accept
testin a TypeScript package'sprebuildscript as fulfilling the build-must-run-test rule - gg_multi: changed references to git
Fixed #
- Ignore
.gg/*instead of the whole.ggdirectory, so.gg/.gg.jsonand.gg/.ticket.jsonstay trackable
Removed #
- Remove stale root .ticket marker from main - do merge only drops .gg/.ticket.json, so the old marker leaked through squash merges and preset wrong merge messages
10.2.2 - 2026-07-20 #
Fixed #
- Re-release combining the rc prerelease channel (10.2.0) with the do-merge dirty-worktree fix - pub.dev 10.2.1 was published without the rc channel
10.2.1 - 2026-07-20 #
Changed #
- fix(do-merge): commit pending tracked worktree changes before switching branches, so a publish-time formatter (prettier --write reformatting pubspec.yaml) or a gg .gg/.gg.json state write no longer aborts the merge's git checkout
10.2.0 - 2026-07-20 #
10.1.1 - 2026-07-20 #
Fixed #
- Fix broken GitHub pipelines: doPush state was not written on the release commit during publish
10.1.0 - 2026-07-16 #
Added #
- delete_feature_branch (bool, optional) in
.gg-publish.json: replaces the interactive delete-feature-branch prompt, so a config-driven publish is fully headless.do configure-publishnow asks the question up front (presettable via--delete-feature-branch) anddo publishpersists the decision in the runtime file — a resumed run never re-asks, and no prompt sits between the irreversible publish steps anymore. - All default prompts (version increment, merge message, branch/ticket
deletion) fail fast with an actionable error when stdin is not a
terminal (new throwWhenNotATerminal in
tools/terminal_guard.dart), instead of hanging forever in CI or piped shells.
Changed #
- Tidy CHANGELOG Unreleased sections
10.0.0 - 2026-07-15 #
Added #
do configure-publish: new command that interactively writes<repo>/.gg/.gg-publish.json(version increment + merge message;-mpresets the message).do publishruns it automatically when started without a resolved configuration, so all interactive decisions happen before the unattended publish. The command also makes sure.gg/.gg-publish.jsonis listed in.gitignore(appending and committing the entry once per repo).do publish --continue/--reconfigure: per-step publish progress (done_steps: prepare_version, publish_registry, merge, tag) is recorded in.gg/.gg-publish.jsonand a failed publish resumes at the first open step — including the version tag, which the old hash-based state could silently skip. A leftover progress file makes a plain re-run refuse until--continueor--reconfigureis chosen. The file stores the feature branch (trusted only when resuming) and is deleted after a fully successful publish. On resume, the hash-keyeddid commitcheck still runs, so raw commits added after the failure are never published unvalidated; the feature-branch deletion is idempotent and re-runs; when the merge is already done, the default branch is checked out before the first push.do configure-publishrefuses to overwrite a file that carriesdone_steps(code review).DoPublish.execacceptsresume:sogg_multi do publish --continueresumes each repo at its open step.PublishConfig: done_steps + branch runtime fields with withStepDone/isStepDone/hasStepProgress; newEnsurePublishConfigIgnoredtool;GgState.ignoreFilesnow excludes.gg/.gg-publish.jsonfrom content hashes.
Changed #
- Breaking:
DoPublishno longer takes versionSelector / editMessage — both prompts live in the injectableDoConfigurePublishnow. The publish-step resume no longer uses the hash-keyed doPrepareVersion/doPublishPubDev/doMerge GgState keys; doPublish/doCommit are still written fordid publishand the pre-push hook. - Tidy CHANGELOGs: single Unreleased section and chronological order
Fixed #
- Code-review fixes: resume-safe branch handling, progress guards for configure/--config, did-commit check and idempotent branch deletion on resume
9.5.0 - 2026-07-06 #
Changed #
- feat: merge via auto-complete pull request on protected main (Azure) and wait until merged
- docs(gg_one): document protected-main pull-request publish flow
- gg_multi: changed references to git
9.4.0 - 2026-07-01 #
Changed #
- npm-logged-in: resolve the package's actual publish registry
(
publishConfig.registry→@scope:registry→ defaultregistry) and runwhoamiagainst that registry, instead of always checking npmjs.org. This makes the check work for Azure DevOps, GitHub Packages and other private registries. Registries without reliablewhoamisupport (e.g. Azure DevOps) are skipped gracefully instead of failing the check — the auth is verified for real at publish time.
9.3.0 - 2026-07-01 #
Changed #
- feat(gg): interactive npm publish + npm-logged-in precheck; package.json prepublishOnly->build->test rules (bridges exempt from build->test); do review pnpm blockExoticSubdeps + stdout; can publish runs per-repo can-publish; do merge/publish write doCommit; pana skip label
- gg_multi: changed references to git
9.2.2 - 2026-06-26 #
Changed #
- Preserve dependency constraint operator (^^/~/exact) through publish
- gg_multi: changed references to git
9.2.0 - 2026-06-19 #
Added #
- Add 'package-json-scripts' check to can commit: TypeScript projects (incl. bridges) must declare test/build/lint/prepublish in package.json, and prepublish must run test and build; Dart projects are skipped
Changed #
- Treat dart-typescript bridge repos as TypeScript for can/do commit, running package.json scripts (test/lint/format:check)
- 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
- 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
- Pana check: skip stdout preamble before JSON (robust parse of cold-run pana output)
9.1.0 - 2026-06-09 #
Changed #
- feat(ts): version-pinned git deps via #semver: + tag-push for npm/pnpm
- refactor(ts): trim comments to grace-cloud style limits + do_maintain layout
- style: apply grace-cloud comment + 80-char limits across ticket
9.0.0 - 2026-06-08 #
Changed #
- feat: language-universal commit/publish via gg_lang (isDartFamily gating, lockFileFor, registry-aware dispatch)
- test: real PublishConfig tests + dart format tidy; bypass known TOCTOU flake in gg_state.readSuccess under parallel coverage
- gg_multi: changed references to git
- gg_multi: changed references to git
- gg_multi: changed references to git
8.2.1 - 2026-05-19 #
Changed #
CanCommit:dart pub get --offline(or the Flutter equivalent) now runs as a regular check below theCan commit?header and is logged asRunning "dart pub get --offline", matching the style of the other checks (was framed with»«and printed above the header).- Renamed package from
ggtogg_oneand moved the repository to https://github.com/ggsuite/gg_one. The previous history (versions up to and including7.0.5) lives at https://github.com/ggsuite/gg at commit9141ef54f5edac470d119a39285813299143898f.
8.1.1 - 2026-05-19 #
Changed #
- gg_multi: changed references to git
- Gg Multi: changed references to pub.dev
7.0.5 - 2026-05-04 #
7.0.4 - 2026-04-28 #
Changed #
- Execute git fetch and git pull on the main branch before merging in gg do merge
7.0.3 - 2026-04-23 #
Changed #
- Refactor: resolve delete-feature-branch only when needed
- Create ticket for lazy-resolve-delete-feature-branch
7.0.2 - 2026-04-23 #
7.0.1 - 2026-04-22 #
7.0.0 - 2026-04-20 #
6.3.1 - 2026-04-15 #
6.3.0 - 2026-04-13 #
6.1.4 - 2026-04-10 #
6.1.2 - 2026-03-30 #
6.0.3 - 2026-03-27 #
6.0.0 - 2026-03-26 #
Changed #
- Refactor do_publish to use gitPush with pushTags and update tests
- Wrap checkout logic in status printer for progress output
5.0.0 - 2026-03-16 #
4.0.7 - 2026-03-08 #
Added #
- Add VersionSelector with interact support and related tests
- Add IsFeatureBranch to CanPublish and update dependencies
Changed #
- move .gg.json to .gg/.gg.json and update related code/tests
- Refactor do_publish to add version selector and local merge step
Fixed #
- Fix copy right header in auto created Test files
4.0.5 - 2026-01-20 #
Changed #
- Ignore missing version in CHANGELOG when running pana because version is managed by gg
4.0.4 - 2025-08-16 #
Added #
- Add --ignoreUnstaged option to gg can commit and gg can push
- Update gg_merge to version 1.0.2
- BREAKING CHANGE: V.5.0.0: Git must be set to EOF LF
- Add message parameter to exec and get in do merge
4.0.2 - 2025-08-11 #
Added #
- Add .gitattributes file
- Add pubspeck.lock and .kidney_status to ignored files
4.0.1 - 2025-08-11 #
4.0.0 - 2025-08-11 #
3.1.1 - 2025-08-11 #
3.1.0 - 2025-08-02 #
3.0.23 - 2025-06-19 #
3.0.18 - 2025-06-05 #
3.0.15 - 2024-10-03 #
3.0.12 - 2024-08-30 #
Changed #
- Change launch.json
- Test change
- Prevent updating the hash for CanUpgrade.
3.0.11 - 2024-08-30 #
Changed #
- Pretty print .gg.json
- Hashes wil be calculated independent of line feeds
3.0.10 - 2024-08-30 #
Changed #
- Update dependencies to latest versions
- Make pana work on windows
- Run tests on MacOS
3.0.8 - 2024-08-24 #
Changed #
- Update gg_test to 1.0.19. Only failing error lines are shown, but not details.
3.0.2 - 2024-04-13 #
3.0.1 - 2024-04-13 #
Added #
- mocks for DidPush, DidPublish
- DidUpgrade
- CanUpgrade, Improve mocks
- upgrade dependencies and make tests work again
- Tests for DoUpgrade
- did upgrade only checks if changes are available on pub.dev
- DoMaintain to check if everything is upgraded and published from time to time
Changed #
- Parentheses are not necessary anymore
- improved comments of DidCommit, DidPublish and DidPush
- Improved help for CanCommit, CanPush, CanPublish
- DidUpgrade checks also if everything is upgraded
Removed #
- Upgrade check before pushing
- dependency to gg_install_gg, remove ./check script
- Upgrading does not trigger a commit and a publish
2.0.5 - 2024-04-10 #
Fixed #
- DoPublish: Don't confirm package not published to pub.dev, small fixes
- Pipeline: Disable cache
2.0.4 - 2024-04-09 #
2.0.3 - 2024-04-09 #
2.0.1 - 2024-04-06 #
2.0.0 - 2024-04-06 #
Added #
- New sub command »gg info modified-files and »gg info »last-changes-hash«
- DoCommit: When everything is committed, no message an log type are needed.
- Option --no-log to allow committing without change CHANGELOG.md
- Pipeline: Print modified files + changes hash
Changed #
- Pipeline: Use globally installed version of gg
- Kidney: Auto check all repos
- Breaking change: Renamed log type values into add | change | deprecate | fix | remove | secure
Fixed #
- Wrong option in command line output
- An error which can lead to sporadic test fails
1.0.16 - 2024-04-05 #
1.0.15 - 2024-04-05 #
Added #
- --save-state option for commands like gg can commit\n\nThis is needed to make GitHub pipelines work
- Setup pipeline git username and email
- pubspec.lock to .gitignore
- Add various outputs to test pipeline issues
Removed #
- Removed unused sample project
- logStatus is replaced by GgStatusPrinter
- isGitHub is replaced by gg_is_github
- Pipeline: remove --no-save-state flag
1.0.14 - 2024-04-05 #
1.0.12 - 2024-04-04 #
- Initial version