Gitorii Logo Gitorii

Changelog

Every release, documented.

Release notes are pulled directly from GitLab and may appear in English.

v0.7.15

2026-05-25 Latest
  • feat **Sourcehut platform support** (4th platform after GitHub / GitLab /
  • feat **Issues** (todo.sr.ht): list / create / close / comment via
  • feat **Pipelines** (builds.sr.ht): list / cancel + log work. Other
  • feat retry / job_retry return an error pointing at the web UI —
  • feat delete returns an error — builds keep retention-policy-managed
  • feat job_artifacts_download and job_erase return clear errors.
  • feat "Jobs in a pipeline" is a flat concept on builds.sr.ht — a job
  • feat **PRs**: returns a clear error explaining sourcehut's email-patch
  • feat **Releases**: returns an error explaining that sourcehut has no
  • feat **Packages**: same — no package registry exists on sourcehut.
  • change **GPG signing now applies everywhere a commit is created**, not just
  • change cherry-pick (and --continue)
  • change revert
  • change merge (the merge commit itself)
  • change history reauthor (rewritten commits)
  • change history rewrite (date rewrites)
  • change history remove-file (filter-branch replacement)
  • internal New `commit_inner_split(repo, ref, author, committer, msg, tree,

v0.7.14

2026-05-25
  • fix **user.name / user.email from --local config are now actually
  • fix **GPG-signed commits actually sign now.** git.sign_commits = true
  • fix New src/gpg.rs shells out to the system gpg binary
  • fix New commit_inner helper in core.rs routes both torii save and
  • fix Other commit sites (cherry-pick, revert, merge,
  • fix Requires gpg (or gpg2) on PATH. Clear error if missing.
  • feat **user.signingkey and commit.gpgsign config aliases.** They map
  • internal **HTTP boilerplate centralised** in a new src/http.rs module with
  • internal **Dropped obsolete in-repo docs and a stray debug log** (~1000 more

v0.7.13

2026-05-24
  • feat **Gitea / Codeberg / Forgejo support** — first new platform since
  • feat **torii auth set codeberg <token>** (or gitea / forgejo) all
  • feat **Gitea Actions** (CI runs in Gitea ≥ 1.19 / Forgejo) supported by
  • notes This is the first of the planned **multi-host expansion** (0.7.13

v0.7.12

2026-05-24
  • feat **TUI: unified Platform view.** New platform entry in the sidebar
  • feat 1 Pipelines, 2 Jobs, 3 Releases, 4 Packages
  • feat **Enter on a pipeline** drills into its jobs (sub-tab auto-switches
  • feat **Enter on a job** fetches and shows its log in a scrollable panel
  • feat **r opens a centred popup** to switch the remote
  • feat **Ctrl-R reloads** the active sub-tab.
  • feat All loads happen on background threads — the TUI stays responsive
  • fix **TUI: add mirror was unreachable.** The "add mirror" entry only
  • docs README: refreshed the **Views** table (was missing worktrees /
  • docs README: cross-linked the **CI / platform management** CLI section to

v0.7.11

2026-05-20
  • feat **--remote NAME on every platform-management command.** The four CLI surfaces added in 0.7.7 and 0.7.10 (torii pipeline, torii job, torii package, torii release) all auto-detected the platform from the origin remote URL. That works when there's only one platform — most projects — but breaks the multi-platform case where a repo is mirrored across e.g. GitLab (origin) and GitHub (github-paskidev). Each backend has its own releases, its own pipeline runs, its own packages; both should be reachable from the CLI.

v0.7.10

2026-05-19
  • added — platform management surface **torii job {list, log, retry, cancel, artifacts, erase} — individual CI job control.** Sibling to torii pipeline (which manages whole pipelines / workflow runs); torii job drills into the jobs inside a pipeline.
  • added — platform management surface torii job list --pipeline <id> [--status STATUS] — enumerate jobs of one pipeline, optionally filtered. Output is a one-line-per-job table with icon, raw status, name, stage, duration. The status filter is normalized (success | failed | running | canceled | pending) and applied client-side after the fetch so the same flag means the same thing on both backends.
  • added — platform management surface torii job log <id> [--tail N] — **the killer feature.** Fetches the raw trace and prints it. With --tail N only the last N lines are printed, which is the common case during failure post-mortems. Replaces the previous "open the UI, click into the job, scroll to the bottom of the log" round-trip. During the v0.7.9 saga this would have saved ~30 minutes of curl /jobs/<id>/trace | tail -20 repetition.
  • added — platform management surface torii job retry <id> — GitLab only. Re-runs a single failed job without re-running the entire pipeline (which on a 25-minute matrix is the difference between "5 min retry" and "25 min retry"). GitHub Actions doesn't support per-job retry (only /runs/:run_id/rerun-failed-jobs at the run level); the GitHub backend returns a hint pointing at torii pipeline retry <run-id>.
  • added — platform management surface torii job cancel <id> — GitLab only, same asymmetry as retry.
  • added — platform management surface torii job artifacts <id> [-o <path>] — GitLab only. Downloads the per-job artifacts archive to disk. On GitHub artifacts are run-scoped, not job-scoped; the backend returns an error explaining this. Default output path is ./<job-id>-artifacts.zip.
  • added — platform management surface torii job erase <id> [--yes] — GitLab only. Clears a job's log + artifacts but keeps the job entry visible in the UI (useful for storage cleanup when you want history). GitHub returns unsupported.
  • added — platform management surface Trait impl in src/pipeline.rs — extends the existing PipelineClient trait rather than adding a parallel JobClient trait, since jobs are conceptually under pipelines and share the same auth + base URL. Asymmetric capabilities are handled by Err returns with self-explanatory hints (no silent fallback, no panics on unsupported ops).
  • added — platform management surface **torii package {list, files, delete} — GitLab Package Registry management.** GitLab's Generic Package Registry stores release binaries between runs (gitorii's release pipeline uploads three cross-compiled binaries per tag — linux x86_64, linux aarch64, windows x86_64). Without cleanup, this accumulates against the namespace's 5 GB free-tier storage cap.
  • added — platform management surface torii package list [--type TYPE] [--name SUBSTR] [--limit N] — enumerate packages. --type generic is the gitorii case; the surface also supports the other types GitLab exposes (npm, maven, conan, pypi, composer, nuget, helm) without code changes — the parser is type-agnostic.
  • added — platform management surface torii package files <package-id> — list files inside a package with their sizes (in MB). Useful for understanding what's stored before deleting.
  • added — platform management surface torii package delete <id> | --version vX.Y.Z | --older-than 90d --yes — three modes: single-id, by-exact-version, by-age. The filter modes are mutually exclusive with the explicit id (clap-enforced). Batch mode previews up to 10 entries before confirmation, then iterates one-by-one with per-id success/failure reporting — same pattern as torii pipeline delete.
  • added — platform management surface Implementation in src/package.rs (~280 lines, follows the pipeline.rs shape). GitLab-only on purpose: GitHub's binary-distribution model is Release Assets attached to Releases, which is torii release's scope below.
  • added — platform management surface **torii release {list, show, edit, delete} — Release page management.** Both backends.
  • added — platform management surface torii release list [--limit N] — recent releases. One-line-per-release.
  • added — platform management surface torii release show <tag> — full details (description body, web URL, created date). Useful for previewing what's published before editing or for grabbing the URL to paste somewhere.
  • added — platform management surface torii release edit <tag> [--name X] [--notes notes.md | -] — patch the release name and/or description without re-tagging or re-running CI. --notes accepts either a path to a markdown file or - for stdin (so you can pipe in dynamically-generated notes). Fixes the workflow of "oops I had a typo in the CHANGELOG section that got copied to the GitLab Release" without forcing a re-release.
  • added — platform management surface torii release delete <tag> [--yes] — removes the Release entity (the underlying tag stays — use torii tag delete <tag> if you also want the tag gone). Useful when CI auto-created a release with garbage in the description because of an interrupted run.
  • added — platform management surface Both backends supported with appropriate asymmetries: GitHub's edit API needs the numeric release id (fetched via the get-by-tag call); GitLab's API uses the tag directly in the path. CLI surface is identical from the user's POV.
  • added — platform management surface Implementation in src/release.rs (~340 lines).

v0.7.9

2026-05-19
  • changed (ci only — no source-level changes) **CI moved back to GitLab.com shared runners.** A ~4h self-hosted runner experiment (registered as void-torii with tag gitorii, shell executor, Arch host) was abandoned after rustc 1.94.0 reproducibly SIGSEGV'd on this host even in trivial crates like libc, idna, fiat-crypto, num-traits — independent of RUST_MIN_STACK (tested up to 512 MB), CARGO_BUILD_JOBS=1, or LimitSTACK=infinity via systemd. The crash also reproduced in a standalone cargo build outside gitlab-runner, confirming it's a rustc-1.94/glibc/kernel interaction on that specific Arch host — unrelated to gitorii or the YAML.
  • changed (ci only — no source-level changes) .gitlab-ci.yml: removed default: tags: [gitorii] so jobs go to saas-linux-small-amd64 shared runners. The russh / rsa-rc / sec1 generic-tree stack pressure is covered by the RUST_MIN_STACK="33554432" already in the YAML's variables: block — shared runners satisfy the request without kernel-cap issues.
  • changed (ci only — no source-level changes) Removed leftover project-level CI/CD variables (RUST_MIN_STACK=536870912, CARGO_BUILD_JOBS=1) introduced during the self-hosted debug iteration; they're no longer needed.

v0.1.16

2026-04-19
  • change Updated LICENSE to TSAL-1.0 (Torii Source-Available License)
  • change CI pipeline now only triggers on version tags, no branch pipelines

v0.1.15

2026-04-18
  • fix torii sync, torii fetch, torii push tags now authenticate with HTTPS token (gitlab_token, github_token, etc.) — previously only SSH was supported, causing auth failures on HTTPS remotes
  • fix GitLab CI pipeline no longer fails with exit code 22 when release already exists (409 treated as success)
  • fix Pipeline now only triggers on version tags (vX.Y.Z), suppressing unwanted branch pipelines

v0.1.8

2026-04-16
  • fix Corrected license metadata in Cargo.toml to reference LICENSE file instead of MIT

v0.1.7

2026-04-16
  • fix torii sync --force and torii sync --push now also sync replica mirrors automatically
  • fix Renamed remaining internal slaves variable references to replicas in mirror output
  • fix Mirror list output now shows PRIMARY instead of MASTER

v0.1.6

2026-04-16
  • feat torii sync now automatically pushes to all configured replica mirrors after syncing with origin — no need to run torii mirror sync manually
  • fix Removed unused mut on index variable in rebase loop
  • fix Removed unused repo_path variable in show command

Full history on GitLab