- Python 95%
- Makefile 1.5%
- PowerShell 1.3%
- Shell 1.2%
- Batchfile 1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Dialogs (Options, Add Remote, Clone, New Repo, Credentials) now explicitly call close() alongside accept()/reject(), so OK/Cancel reliably close the window. Extend the SSH-key-first auth (already added for Fetch) to Pull and Push as well. For http(s) remotes, silently try the equivalent SSH URL with BatchMode (no prompt) before falling back to the normal HTTPS + GUI askpass flow. SSH auth happens before any data transfer, so a failed silent attempt is safe — nothing gets left half-done. Pull reuses the SSH-first fetch logic, then does a local merge. Push gets its own SSH-first attempt with the same fallback pattern. SSH remotes (git@host:...) are untouched — they already try keys automatically at the OS level. |
||
| .github/workflows | ||
| assets | ||
| core | ||
| git_manager | ||
| panels | ||
| ui | ||
| .gitignore | ||
| build.bat | ||
| build.ps1 | ||
| build.sh | ||
| LICENSE | ||
| main.py | ||
| Makefile | ||
| pyproject.toml | ||
| README.md | ||
| requirements.txt | ||
| run.bat | ||
| run.ps1 | ||
| run.sh | ||
gh-forge
GitHub Actions Cleanup & Management GUI — part of the Forge Suite
Built with PyQt6 · 100% local · No telemetry
Overview
gh-forge bundles two tools, both for the dev-boffin-io organization:
- Git Remote Manager — a local, multi-remote git GUI (opens first, since it's local-only).
- GitHub Actions Manager — the org-wide GitHub Actions cleanup/artifacts/
workflows tool (opened from Git Remote Manager's Tools → Open gh-forge
menu,
Ctrl+G).
It wraps the gh CLI for the Actions side to give
you a fast, visual way to clean up storage, manage workflows, browse source
code, and more — without touching the terminal.
Features
- 💻 Code — browse repo info, file tree, rendered README (with images), clone URLs (HTTPS/SSH/CLI) with one-click copy, and source code download (ZIP / tar.gz) with progress + cancel.
- 📦 Artifacts — view, download, and delete workflow run artifacts per repo, with live download progress, destination path, and cancel.
- 🧹 Caches — view and bulk-delete GitHub Actions caches per repo.
- ⚡ Workflows — list workflows, trigger
workflow_dispatchruns, re-run (including failed-jobs-only), and stream build logs live. - 💾 Storage — scan every repo in the org for artifact + cache storage usage, with live progress and a sortable breakdown table.
- 🚀 Full Cleanup — one-click cleanup across all repos (artifacts + caches), with a live log and stop button.
- ☰ Account menu — check
gh auth status, login, logout, and a built-in GH CLI Manager:- Install / update / upgrade
gh(auto-detects apt/dnf/pacman/brew) - Auto-detect or manually set the
ghbinary path - Version check
- Password prompt dialog for
sudo-requiring install/update commands
- Install / update / upgrade
- 🌿 Git Remote Manager — a separate GitHub-Desktop-style local git GUI (launched from the account menu), for managing multiple remotes on a single local repo: stage/commit, branch switching, commit history with diffs, add/remove remotes, and Push/Pull/Fetch against whichever remote you pick. Includes a GUI credential prompt (no terminal hangs on username/password) and per-host saved credentials.
Requirements
- Python 3.9+
- GitHub CLI (
gh) — authenticated viagh auth login(or use the built-in GH CLI Manager to install it) - PyQt6 (auto-installed by the launcher scripts below)
Running
The launcher scripts automatically create a .venv, install/repair
requirements.txt if needed, and run the app — no manual setup required.
Linux / macOS:
./run.sh
Windows (cmd):
run.bat
Windows (PowerShell):
.\run.ps1
Or via Makefile:
make run
If
.venvis missing, broken, or has incomplete dependencies, the launcher will (re)create it and reinstallrequirements.txtautomatically before launchingmain.py.
Building a standalone binary
Builds run in a fully isolated virtual environment and produce a single
executable in bin/, with all build artifacts cleaned up afterwards.
Linux (AMD64 / ARM64):
chmod +x build.sh
./build.sh
Windows (cmd):
build.bat
Windows (PowerShell):
.\build.ps1
Installation (Linux)
make install # builds, installs binary, creates desktop entry, sets up PATH
make uninstall # removes binary + desktop entry
make help # show all available targets
CI/CD
Three GitHub Actions workflows build platform binaries automatically
(.github/workflows/):
| Workflow | Target |
|---|---|
build-linux-amd64.yml |
Linux x86_64 |
build-linux-arm64.yml |
Linux ARM64 (Termux/proot-Debian compatible) |
build-windows.yml |
Windows x64 (.exe) |
Each can be triggered manually via Actions → Run workflow, or automatically
on push to main when relevant files change.
Project Structure
gh-forge/
├── main.py # thin entry point — launches Git Remote Manager first
├── core/ # gh CLI wrapper, settings, background workers
├── panels/ # Code, Artifacts, Caches, Workflows, Storage, Cleanup
├── ui/
│ ├── style.py # gh-forge stylesheet
│ ├── gh_manager.py # GH CLI install/update dialog
│ └── actions_window.py # GitHub Actions Manager window (opened via Tools menu)
├── git_manager/ # standalone multi-remote git GUI (launched from account menu)
│ ├── core/ # git_worker, credentials/askpass, diff renderer
│ ├── dialogs/ # clone, new repo, add remote, credentials, options
│ ├── ui/ # stylesheet
│ └── main_window.py # GitRemoteManager + launch()
├── ui/ # stylesheet + GH CLI manager dialog
├── assets/ # app icon
├── requirements.txt
├── run.sh / .bat / .ps1 # auto-venv launchers
├── build.sh / .bat / .ps1 # isolated binary builds
├── Makefile
├── .gitignore
└── .github/workflows/
License
MIT — see LICENSE.