Desktop Material

Tag lifecycle management

Desktop Material's Repository tools → Tag lifecycle surface manages local and remote Git tags without an editable command line. It provides a bounded inventory, creation and recreation, signing, push, fetch/prune, and reviewed deletion in one workflow.

Behavior

All mutation controls are disabled in a temporary submodule workspace. The application store repeats its temporary-workspace safety check at the final asynchronous boundary.

Configuration

The manager uses the repository's default remote. A repository without a remote can still inventory, create, move, and delete local tags; remote controls stay unavailable. Signing follows normal Git configuration, including user.signingkey and gpg.format; no key material is stored by Desktop Material.

Failure modes

Security considerations

The renderer submits typed operations, not executable names, argv arrays, shell text, or arbitrary refspecs. Tag names are length-bounded and checked with git check-ref-format; targets resolve to full object IDs before mutation. Remote names come from the repository store and are validated against option confusion. Network commands receive credentials only through the existing remote-operation environment and never render remote URLs or secrets.

Destructive operations use typed confirmation phrases. Remote deletion and local recreation carry exact reviewed object IDs so a stale screen cannot silently act on a replacement tag.

Verification

Focused Git tests cover lightweight and annotated inventory, messages, create, stale-safe move, single/all push, fetch/prune, and stale-safe remote deletion against local fixture remotes. UI tests cover local-first loading, signing and creation fields, filtered inventory status, move review, typed confirmations, push-all review, remote-only deletion, and read-only temporary-workspace controls.

This feature adds no HTTP endpoint, so a Postman collection is not applicable.