feat: sandbox-aware /commit and /push (release 0.3.0) #4

Merged
claudiomaradonna merged 3 commits from feat/sandbox-env-recovery into main 2026-04-29 16:16:05 +02:00

Summary

Two additive features make the conventional-commit plugin work cleanly inside sandboxed/jailed envs (e.g. claude-jail), plus the corresponding release bump.

  • feat(push) (57e4d46) — Step 4 of /push now resolves self-hosted providers via existing CLI logins (tea login list, glab auth status, gh auth status) or env-var bootstrap (GITEA_SERVER_URL/_TOKEN, GH_HOST+GH_TOKEN, GITLAB_HOST+GITLAB_TOKEN). Hosts like git.unitoo.it no longer fall through to the manual prompt.
  • feat(commit) (6bbc62a) — New step 1a in /commit: when commit.gpgsign=true + gpg.format=ssh and the file at user.signingkey is missing, reconstruct the pubkey from ssh-add -L (matching by signingkey basename or user.email, exactly one hit). Falls back to ~/.ssh/<basename>.pub with repo-local override if the original path isn't writable. Never silently disables signing.
  • chore(release) (fc7a2e2) — Bump marketplace + plugin manifests to 0.3.0 (semver minor for additive features).

Notes

  • Both features were dogfooded on this very branch: the env-var detection enabled tea login on git.unitoo.it, and the ssh-agent recovery unblocked signed commits in the jail.
  • No migration required.

Merge strategy

Merge with rebase (linear history).

## Summary Two additive features make the conventional-commit plugin work cleanly inside sandboxed/jailed envs (e.g. claude-jail), plus the corresponding release bump. - **`feat(push)` (57e4d46)** — Step 4 of `/push` now resolves self-hosted providers via existing CLI logins (`tea login list`, `glab auth status`, `gh auth status`) or env-var bootstrap (`GITEA_SERVER_URL`/`_TOKEN`, `GH_HOST`+`GH_TOKEN`, `GITLAB_HOST`+`GITLAB_TOKEN`). Hosts like `git.unitoo.it` no longer fall through to the manual prompt. - **`feat(commit)` (6bbc62a)** — New step 1a in `/commit`: when `commit.gpgsign=true` + `gpg.format=ssh` and the file at `user.signingkey` is missing, reconstruct the pubkey from `ssh-add -L` (matching by signingkey basename or `user.email`, exactly one hit). Falls back to `~/.ssh/<basename>.pub` with repo-local override if the original path isn't writable. Never silently disables signing. - **`chore(release)` (fc7a2e2)** — Bump marketplace + plugin manifests to 0.3.0 (semver minor for additive features). ## Notes - Both features were dogfooded on this very branch: the env-var detection enabled `tea` login on `git.unitoo.it`, and the ssh-agent recovery unblocked signed commits in the jail. - No migration required. ## Merge strategy **Merge with rebase** (linear history).
Self-hosted Forgejo/Gitea/GitLab/GHE hosts no longer fall through to
"unknown" in step 4. Resolution now tries, in order: well-known host
patterns, existing CLI logins (`tea login list`, `glab auth status`,
`gh auth status`), then provider env vars with on-the-fly login
bootstrap (GITEA_SERVER_URL/_TOKEN, GH_HOST+GH_TOKEN,
GITLAB_HOST+GITLAB_TOKEN). The manual prompt becomes a last resort.
Add pre-flight step 1a: when commit.gpgsign=true and gpg.format=ssh
and the file referenced by user.signingkey is missing, attempt to
reconstruct it from `ssh-add -L`. Match agent keys by signingkey
basename or user.email, require exactly one hit, and write the pubkey
back to the original path (or fall back to ~/.ssh and override only
the repo-local user.signingkey).

This unblocks signed commits in jails/containers where the host's
.ssh directory isn't mounted but ssh-agent is forwarded — without
silently disabling signing.
Two new sandbox-aware features land in this release:

- /push step 4 now resolves self-hosted providers via existing CLI
  logins or env-var bootstrap, so hosts like git.unitoo.it stop
  falling through to the manual prompt.
- /commit gains step 1a, recovering a missing SSH signing pubkey
  from ssh-agent so commits in jails/containers don't fail when the
  host's .ssh isn't mounted.

Both are additive behavior changes — no migration needed.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
claudiomaradonna/claude-plugins!4
No description provided.