From 4be96ce465747958c5bb367bfec1f51f608772c5 Mon Sep 17 00:00:00 2001 From: James Maes Date: Tue, 10 Nov 2026 17:17:29 -0600 Subject: [PATCH 1/2] chore(links): point the project's links at its Gitea home The project's home is https://git.kof22.com/KofTwentyTwo/gclo, which is public and carries the releases with all their assets. - Help menu: 'View the project page', 'Submit an issue', and 'Community support' (Gitea has no discussions, so it opens the issue list) go there, and so do the links in the Share invitation. - About dialog, splash screen, and the CLI's 'please report it at' line. - README: project page, latest release, the Scoop bucket address, the clone address; CONTRIBUTING and SECURITY: issues and releases. Left as they are: the in-app updater's release feed, and links that are about GitHub itself (creating a token, attestation verification, private vulnerability reports, the OpenSSF Scorecard). Closes #165 Co-Authored-By: Claude Fable 5.2 Signed-off-by: James Maes --- CONTRIBUTING.md | 2 +- README.md | 10 +++++----- SECURITY.md | 2 +- gclo.Cli/Program.cs | 2 +- gclo.Engine.Tests/ShareInvitationTests.cs | 2 +- gclo.UiTests/SmokeTests.cs | 2 +- gclo/AboutDialog.xaml | 4 ++-- gclo/MainWindow.xaml | 6 +++--- gclo/MainWindow.xaml.cs | 9 +++++---- gclo/SplashOverlay.xaml | 2 +- 10 files changed, 21 insertions(+), 20 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 73a7987..197b23e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ Check the [development roadmap (#11)](https://github.com/KofTwentyTwo/gclo/issue it may already be planned, or deliberately out of scope. For anything beyond a small fix, open an issue first so the approach can be agreed before you invest time. Questions and proposals are welcome in -[Issues](https://github.com/KofTwentyTwo/gclo/issues). +[Issues](https://git.kof22.com/KofTwentyTwo/gclo/issues). ## Setup diff --git a/README.md b/README.md index 71ea5f9..50e7403 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@

OpenSSF Scorecard License: MIT - Platform: Windows 11 + Platform: Windows 11 .NET 10

@@ -15,7 +15,7 @@ | --- | --- | | **Tier** | Product (see the [KofTwentyTwo standards scope](https://github.com/KofTwentyTwo/standards/blob/main/policies/README.md#scope)) | | **Standards** | Conforms to [KofTwentyTwo standards](https://github.com/KofTwentyTwo/standards) `main@855cf44` (pre-1.0 draft); conformance tracked in [#62](https://github.com/KofTwentyTwo/gclo/issues/62) | -| **Latest release** | [Releases](https://github.com/KofTwentyTwo/gclo/releases/latest) | +| **Latest release** | [Releases](https://git.kof22.com/KofTwentyTwo/gclo/releases/latest) | **gclo** (**G**it **C**lone **L**arge **O**rganizations) mirrors every repository of a GitHub organization or user account into a local folder in one pass: it clones the repositories that are missing and fast-forwards the ones that already exist, with live per-repo progress and bounded parallelism. It ships as a Windows 11 desktop app (WinUI 3) and a scriptable CLI built on the same engine. @@ -25,7 +25,7 @@ ## Download & install -All builds are published on the [**GitHub Releases** page](https://github.com/KofTwentyTwo/gclo/releases). +All builds are published on the project's [**Releases** page](https://git.kof22.com/KofTwentyTwo/gclo/releases). **Desktop app (GUI)** — download and run `gclo-stable-Setup.exe`. It installs per-user (no admin rights needed) and updates itself in-app via **Help > Check for updates**. A portable build (`gclo-stable-Portable.zip`) is also attached to each release; portable builds do not self-update. @@ -39,7 +39,7 @@ Plain version tags (`v1.2.3`) are **stable** releases; pre-release tags (`v1.2.3 ```powershell # Scoop: this repository is its own bucket -scoop bucket add gclo https://github.com/KofTwentyTwo/gclo +scoop bucket add gclo https://git.kof22.com/KofTwentyTwo/gclo scoop install gclo ``` @@ -198,7 +198,7 @@ The engine lists every repository through the GitHub REST API (Octokit, paginate Requirements: Windows 11 (or Windows 10 1809+), the [.NET 10 SDK](https://dotnet.microsoft.com/), and — for the desktop app — Visual Studio 2026 with the Windows App SDK / WinUI workload. ```powershell -git clone https://github.com/KofTwentyTwo/gclo.git +git clone https://git.kof22.com/KofTwentyTwo/gclo.git cd gclo # Desktop app (packaged build) diff --git a/SECURITY.md b/SECURITY.md index c2e7137..c7f8ef9 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -53,7 +53,7 @@ branches beyond that. Installed desktop builds update in place via **Help → Check for updates**; the CLI is updated by downloading the latest `gclo-cli-win-x64-.zip` from the -[releases page](https://github.com/KofTwentyTwo/gclo/releases) or through Scoop. +[releases page](https://git.kof22.com/KofTwentyTwo/gclo/releases) or through Scoop. ## Published vulnerabilities diff --git a/gclo.Cli/Program.cs b/gclo.Cli/Program.cs index 77a3f28..e5f7858 100644 --- a/gclo.Cli/Program.cs +++ b/gclo.Cli/Program.cs @@ -144,7 +144,7 @@ internal static class Program { Terminal.Error($"Details: {details}"); } - Terminal.Error("This looks like a bug in gclo; please report it at https://github.com/KofTwentyTwo/gclo/issues."); + Terminal.Error("This looks like a bug in gclo; please report it at https://git.kof22.com/KofTwentyTwo/gclo/issues."); return ExitCodes.Unexpected; } diff --git a/gclo.Engine.Tests/ShareInvitationTests.cs b/gclo.Engine.Tests/ShareInvitationTests.cs index c69d800..39ce220 100644 --- a/gclo.Engine.Tests/ShareInvitationTests.cs +++ b/gclo.Engine.Tests/ShareInvitationTests.cs @@ -16,7 +16,7 @@ namespace gclo.Engine.Tests; /// public sealed class ShareInvitationTests { - private const string Repository = "https://github.com/KofTwentyTwo/gclo"; + private const string Repository = "https://git.kof22.com/KofTwentyTwo/gclo"; private static ShareInvitation Invitation() => ShareInvitation.Create(Repository, "1.2.3 (abc1234)"); diff --git a/gclo.UiTests/SmokeTests.cs b/gclo.UiTests/SmokeTests.cs index 6eff845..f85f2a6 100644 --- a/gclo.UiTests/SmokeTests.cs +++ b/gclo.UiTests/SmokeTests.cs @@ -108,7 +108,7 @@ public sealed partial class SmokeTests : UiTestBase string invitation = text.Patterns.Value.Pattern.Value.Value; Assert.StartsWith("Subject: Try gclo", invitation, StringComparison.Ordinal); - Assert.Contains("https://github.com/KofTwentyTwo/gclo/releases/latest", invitation, StringComparison.Ordinal); + Assert.Contains("https://git.kof22.com/KofTwentyTwo/gclo/releases/latest", invitation, StringComparison.Ordinal); Assert.False(Session.App.HasExited); Session.ClickButton("Close"); diff --git a/gclo/AboutDialog.xaml b/gclo/AboutDialog.xaml index 82dffdb..d01315e 100644 --- a/gclo/AboutDialog.xaml +++ b/gclo/AboutDialog.xaml @@ -61,8 +61,8 @@ + Content="https://git.kof22.com/KofTwentyTwo/gclo" + NavigateUri="https://git.kof22.com/KofTwentyTwo/gclo" /> diff --git a/gclo/MainWindow.xaml b/gclo/MainWindow.xaml index df6af48..8e7d773 100644 --- a/gclo/MainWindow.xaml +++ b/gclo/MainWindow.xaml @@ -30,9 +30,9 @@ - - - + + + diff --git a/gclo/MainWindow.xaml.cs b/gclo/MainWindow.xaml.cs index e5f6e77..a084239 100644 --- a/gclo/MainWindow.xaml.cs +++ b/gclo/MainWindow.xaml.cs @@ -33,7 +33,8 @@ namespace gclo; /// public sealed partial class MainWindow : Window { - private const string RepoUrl = "https://github.com/KofTwentyTwo/gclo"; + /// The project's public home: where its page, its releases, and its issue tracker are. + private const string RepoUrl = "https://git.kof22.com/KofTwentyTwo/gclo"; // Smallest logical (DPI-independent) size at which the workspace toolbar, // connect card, and repo table remain usable WITH the navigation pane open: @@ -1152,15 +1153,15 @@ public sealed partial class MainWindow : Window - /// Help > Submit an issue: GitHub's new-issue chooser (bug report / feature request templates). + /// Help > Submit an issue: the project's new-issue chooser (bug report / feature request templates). private async void SubmitIssueMenuItem_Click(object sender, RoutedEventArgs e) => await OpenRepositoryPageAsync("/issues/new/choose"); - /// Help > Community support: the repository's GitHub Discussions. + /// Help > Community support: the project's issue list, where questions are asked and answered. private async void CommunitySupportMenuItem_Click(object sender, RoutedEventArgs e) - => await OpenRepositoryPageAsync("/discussions"); + => await OpenRepositoryPageAsync("/issues"); diff --git a/gclo/SplashOverlay.xaml b/gclo/SplashOverlay.xaml index 274eb2c..62245d0 100644 --- a/gclo/SplashOverlay.xaml +++ b/gclo/SplashOverlay.xaml @@ -87,7 +87,7 @@ Opacity="0.85" HorizontalAlignment="Center" /> Date: Tue, 10 Nov 2026 19:35:33 -0600 Subject: [PATCH 2/2] chore(links): the tracker links, package metadata and release notes follow to Gitea; Help links cannot end the process From the independent review: the roadmap and checklist links, TODO.md, the issue templates, the engine package's metadata, the Chocolatey package's project links and RELEASING.md still named GitHub. The Help item and its handler are named for what they open. Opening a page in the browser is wrapped, because an exception that escapes an event handler ends the process. The threat model records the move and the Share handoff. Refs #165 Co-Authored-By: Claude Fable 5.2 Signed-off-by: James Maes --- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/ISSUE_TEMPLATE/feature_request.yml | 2 +- CONTRIBUTING.md | 2 +- README.md | 4 ++-- TODO.md | 8 ++++---- docs/RELEASING.md | 8 ++++---- docs/plans/accounts-mode.md | 4 ++-- docs/plans/default-token-ux.md | 2 +- docs/security/threat-model.md | 1 + gclo.Engine/PACKAGE.md | 2 +- gclo.Engine/gclo.Engine.csproj | 4 ++-- gclo/MainWindow.xaml | 2 +- gclo/MainWindow.xaml.cs | 19 +++++++++++++++---- packaging/chocolatey/gclo.nuspec | 10 +++++----- 14 files changed, 41 insertions(+), 29 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index dcc2c84..0b59497 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -4,5 +4,5 @@ contact_links: url: https://github.com/KofTwentyTwo/gclo/security/advisories/new about: Please report security issues privately, never as a public issue. - name: Development roadmap - url: https://github.com/KofTwentyTwo/gclo/issues/11 + url: https://git.kof22.com/KofTwentyTwo/gclo/issues/11 about: Check the roadmap before filing a feature request; it may already be planned. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 0f22047..6e43b86 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -6,7 +6,7 @@ body: attributes: value: >- Before filing, please check the - [development roadmap (#11)](https://github.com/KofTwentyTwo/gclo/issues/11) — + [development roadmap (#11)](https://git.kof22.com/KofTwentyTwo/gclo/issues/11) — your idea may already be planned, or deliberately out of scope. - type: textarea diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 197b23e..d51504e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,7 +6,7 @@ short version of what they ask of a contribution. ## Before you start -Check the [development roadmap (#11)](https://github.com/KofTwentyTwo/gclo/issues/11): +Check the [development roadmap (#11)](https://git.kof22.com/KofTwentyTwo/gclo/issues/11): it may already be planned, or deliberately out of scope. For anything beyond a small fix, open an issue first so the approach can be agreed before you invest time. Questions and proposals are welcome in diff --git a/README.md b/README.md index 50e7403..4ba76be 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ | | | | --- | --- | | **Tier** | Product (see the [KofTwentyTwo standards scope](https://github.com/KofTwentyTwo/standards/blob/main/policies/README.md#scope)) | -| **Standards** | Conforms to [KofTwentyTwo standards](https://github.com/KofTwentyTwo/standards) `main@855cf44` (pre-1.0 draft); conformance tracked in [#62](https://github.com/KofTwentyTwo/gclo/issues/62) | +| **Standards** | Conforms to [KofTwentyTwo standards](https://github.com/KofTwentyTwo/standards) `main@855cf44` (pre-1.0 draft); conformance tracked in [#62](https://git.kof22.com/KofTwentyTwo/gclo/issues/62) | | **Latest release** | [Releases](https://git.kof22.com/KofTwentyTwo/gclo/releases/latest) | **gclo** (**G**it **C**lone **L**arge **O**rganizations) mirrors every repository of a GitHub organization or user account into a local folder in one pass: it clones the repositories that are missing and fast-forwards the ones that already exist, with live per-repo progress and bounded parallelism. It ships as a Windows 11 desktop app (WinUI 3) and a scriptable CLI built on the same engine. @@ -44,7 +44,7 @@ scoop install gclo ``` -**Chocolatey is not available yet.** The only version submitted, 1.0.1, is still in community moderation with the status "Waiting for Maintainer to take corrective action", so `choco install gclo` does not find it. 1.1.0 has not been submitted. `winget` support for the desktop app is not available either. Both are tracked in [#7](https://github.com/KofTwentyTwo/gclo/issues/7), and this section will be updated when a package is approved. +**Chocolatey is not available yet.** The only version submitted, 1.0.1, is still in community moderation with the status "Waiting for Maintainer to take corrective action", so `choco install gclo` does not find it. 1.1.0 has not been submitted. `winget` support for the desktop app is not available either. Both are tracked in [#7](https://git.kof22.com/KofTwentyTwo/gclo/issues/7), and this section will be updated when a package is approved. The channels available today (GitHub Releases, the in-app updater and Scoop) are all served over HTTPS. diff --git a/TODO.md b/TODO.md index 34e3297..2ae28b7 100644 --- a/TODO.md +++ b/TODO.md @@ -1,10 +1,10 @@ # gclo — development tracking -**Development is tracked in [GitHub Issues](https://github.com/KofTwentyTwo/gclo/issues).** +**Development is tracked in [the project's issues](https://git.kof22.com/KofTwentyTwo/gclo/issues).** -- Roadmap / current status: [#11 — Development roadmap](https://github.com/KofTwentyTwo/gclo/issues/11) (v1.0.0 shipped; post-1.0 backlog there) -- Owner action items: [#7 — Owner setup checklist](https://github.com/KofTwentyTwo/gclo/issues/7) -- Standards compliance: [#62 — epic](https://github.com/KofTwentyTwo/gclo/issues/62) and the maintainer checklist [#66](https://github.com/KofTwentyTwo/gclo/issues/66) +- Roadmap / current status: [#11 — Development roadmap](https://git.kof22.com/KofTwentyTwo/gclo/issues/11) (v1.0.0 shipped; post-1.0 backlog there) +- Owner action items: [#7 — Owner setup checklist](https://git.kof22.com/KofTwentyTwo/gclo/issues/7) +- Standards compliance: [#62 — epic](https://git.kof22.com/KofTwentyTwo/gclo/issues/62) and the maintainer checklist [#66](https://git.kof22.com/KofTwentyTwo/gclo/issues/66) Labels: `priority` (work first), `needs-owner` (blocked on the owner), `deferred` (agreed follow-up, unscheduled), `quality`, `release`, `refactor`. diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 489c44f..8d18683 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -170,7 +170,7 @@ Invoke-WebRequest https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe # Interactive: prompts for package id (use KofTwentyTwo.gclo), publisher, # license, description, etc., then opens a PR against microsoft/winget-pkgs. -.\wingetcreate.exe new https://github.com/KofTwentyTwo/gclo/releases/download/v1.2.3/gclo-stable-Setup.exe --token +.\wingetcreate.exe new https://git.kof22.com/KofTwentyTwo/gclo/releases/download/v1.2.3/gclo-stable-Setup.exe --token ``` Once that first PR is merged and the package is live, set the repository variable @@ -183,7 +183,7 @@ every later stable release updates the manifest automatically. Both install the same asset, `gclo-cli-win-x64-.zip`, by URL and SHA-256. - **Scoop** needs no account: this repository is its own bucket. Users run - `scoop bucket add gclo https://github.com/KofTwentyTwo/gclo` once, then + `scoop bucket add gclo https://git.kof22.com/KofTwentyTwo/gclo` once, then `scoop install gclo`. The manifest (`bucket/gclo.json`) carries `checkver` and `autoupdate` entries keyed on `SHA256SUMS`, so `scoop update` works as soon as the manifest on `main` names the new version — which is why the @@ -254,7 +254,7 @@ Both install the same asset, `gclo-cli-win-x64-.zip`, by URL and SHA-25 - **Scoop and Chocolatey**, **winget**, **NuGet** — the publishers described above; each fails loudly when it cannot publish. -7. **Verify.** On the [releases page](https://github.com/KofTwentyTwo/gclo/releases) +7. **Verify.** On the [releases page](https://git.kof22.com/KofTwentyTwo/gclo/releases) every asset listed above is attached and `gh attestation verify --repo KofTwentyTwo/gclo --signer-repo KofTwentyTwo/standards` passes. Merge the packaging PR. Check the winget PR on microsoft/winget-pkgs. @@ -280,7 +280,7 @@ Both install the same asset, `gclo-cli-win-x64-.zip`, by URL and SHA-25 choco push artifacts\gclo.1.2.3.nupkg --source https://push.chocolatey.org/ --api-key # winget manifest update (stable releases only) - .\wingetcreate.exe update KofTwentyTwo.gclo --urls https://github.com/KofTwentyTwo/gclo/releases/download/v1.2.3/gclo-stable-Setup.exe --version 1.2.3 --submit --token + .\wingetcreate.exe update KofTwentyTwo.gclo --urls https://git.kof22.com/KofTwentyTwo/gclo/releases/download/v1.2.3/gclo-stable-Setup.exe --version 1.2.3 --submit --token ``` - **The published release itself is broken**: do not fix it in place and do diff --git a/docs/plans/accounts-mode.md b/docs/plans/accounts-mode.md index f4ef30a..205b117 100644 --- a/docs/plans/accounts-mode.md +++ b/docs/plans/accounts-mode.md @@ -2,11 +2,11 @@ > **Status: shipped.** Delivered across the v0.1.0 betas and released in > **v1.0.0** (issues #16 and #22 closed). This document is kept as the historical -> execution plan; the tracker of record is GitHub Issues. +> execution plan; the tracker of record is the project's issue tracker. Delivers issue #16 (Accounts mode) built directly into the layout redesign direction recorded on that issue, with issue #22's findings reconciled along the -way. Tracker of record: GitHub Issues; this document is the executable plan. +way. Tracker of record: the project's issue tracker; this document is the executable plan. **Decisions already made (owner-confirmed on #16):** Windows Credential Manager for tokens · one account = one org · Sync All · CLI parity (`--account`). diff --git a/docs/plans/default-token-ux.md b/docs/plans/default-token-ux.md index b443bfb..565e5b1 100644 --- a/docs/plans/default-token-ux.md +++ b/docs/plans/default-token-ux.md @@ -2,7 +2,7 @@ > **Status: approved** by the owner on 2026-10-10; step 1 is #104. Delivers #101 > (Settings shows a saved default token as a masked value) and #102 (Add account -> uses the default token by reference). Tracker of record: GitHub Issues; this +> uses the default token by reference). Tracker of record: the project's issue tracker; this > document is the design. ## The problem, as the owner sees it diff --git a/docs/security/threat-model.md b/docs/security/threat-model.md index 78e4f9f..49be21e 100644 --- a/docs/security/threat-model.md +++ b/docs/security/threat-model.md @@ -120,3 +120,4 @@ flowchart LR | 2026-11-10 | v1.1.1 | James Maes (@KofTwentyTwo) | T14 added, T4/T8/T9 updated: an existing folder is fetched only when its origin names the listed repository, through the listed URL, and the folder's own `url.*.insteadOf` and (for a non-HTTPS fetch) `core.sshCommand` are refused; the git credential callback and the WSL credential helper answer only for the listed host over HTTPS; WSL organization and repository names validated as single names (#139) | | 2026-11-10 | v1.1.1 | James Maes (@KofTwentyTwo) | T3/T4 updated: path recovery writes and deletes only through `WorkingTree` (inside the working directory, never in `.git`, never through a link); `.git` and its Windows aliases are invalid path segments; the stored recovery file's paths are validated on load; cleanup of a failed clone does not follow links (#141) | | 2026-11-10 | v1.1.1 | James Maes (@KofTwentyTwo) | T15 added: text from repositories and servers is shown with control, separator and format characters made visible, in the activity log and in everything the CLI prints as text, including characters a legacy console code page would turn into control bytes; the desktop app's surfaces are named as not covered (#143) | +| 2026-11-10 | v1.1.1 | James Maes (@KofTwentyTwo) | The project's home moved to `git.kof22.com`: the Help menu, the About dialog, the CLI's error text and the documentation link there, and the Scoop bucket is added from there (the manifest that pins the download URL and its hash now comes from that server over HTTPS; T2 is unchanged in kind). Help > Share hands a fixed text (what gclo is, where to download it, the sender's gclo version) to the system's mail handler as a `mailto:` link with no recipient, or shows it and copies it to the clipboard; nothing about the user, their accounts, or their repositories is in it, and the address it is built from must be a plain http(s) host and path (#163, #165). The update feed and the release downloads named in package manifests are still GitHub Releases at this revision. | diff --git a/gclo.Engine/PACKAGE.md b/gclo.Engine/PACKAGE.md index 1387cbc..7ac0ff9 100644 --- a/gclo.Engine/PACKAGE.md +++ b/gclo.Engine/PACKAGE.md @@ -1,6 +1,6 @@ # gclo.Engine -The core engine of [gclo](https://github.com/KofTwentyTwo/gclo) (Git Clone Large +The core engine of [gclo](https://git.kof22.com/KofTwentyTwo/gclo) (Git Clone Large Organizations). It lists every repository in a GitHub organization or user account and clones or fast-forward-pulls all of them in parallel, using LibGit2Sharp for git transport and Octokit for the GitHub API. On Windows it validates every tree diff --git a/gclo.Engine/gclo.Engine.csproj b/gclo.Engine/gclo.Engine.csproj index 7bb4d37..253301a 100644 --- a/gclo.Engine/gclo.Engine.csproj +++ b/gclo.Engine/gclo.Engine.csproj @@ -16,8 +16,8 @@ Core engine for gclo (Git Clone Large Organizations): lists every repository in a GitHub organization or user account and clones or fast-forward-pulls them all in parallel, with Windows path validation and rename/skip recovery. James Maes MIT - https://github.com/KofTwentyTwo/gclo - https://github.com/KofTwentyTwo/gclo + https://git.kof22.com/KofTwentyTwo/gclo + https://git.kof22.com/KofTwentyTwo/gclo github;git;clone;mirror;organization;libgit2sharp;octokit PACKAGE.md - https://github.com/KofTwentyTwo/gclo#readme - https://github.com/KofTwentyTwo/gclo - https://github.com/KofTwentyTwo/gclo/tree/main/packaging/chocolatey - https://github.com/KofTwentyTwo/gclo/blob/main/docs/CLI.md - https://github.com/KofTwentyTwo/gclo/issues + https://git.kof22.com/KofTwentyTwo/gclo#readme + https://git.kof22.com/KofTwentyTwo/gclo + https://git.kof22.com/KofTwentyTwo/gclo/src/branch/main/packaging/chocolatey + https://git.kof22.com/KofTwentyTwo/gclo/src/branch/main/docs/CLI.md + https://git.kof22.com/KofTwentyTwo/gclo/issues https://raw.githubusercontent.com/KofTwentyTwo/gclo/main/LICENSE false https://raw.githubusercontent.com/KofTwentyTwo/gclo/main/gclo/Assets/Brand/gclo-icon.svg -- 2.54.0