1a77043a71
- src/main.rs: split VISUAL/EDITOR into prog+args, drop expect panic in reap_timer, propagate write_timer errors, check stop during actions, record history on partial failure, use const for stop msg - Cargo.toml: add authors/homepage, bump noyalib 0.0.12->0.0.13 - release.yaml: tighten tag glob, fix curl 404 fallback, URI-encode asset name, upgrade upload-artifact v3->v4 - ci.yaml: add cargo cache step - README.md: sync feature list, fix push to two-step - RELEASING.md: clarify Cargo.lock regeneration
2.7 KiB
2.7 KiB
Releasing
This repository uses semantic versioning and Gitea tag-based releases.
Repository Description
Use this short description in Gitea:
Rust TUI sleep timer for Linux desktop actions.
Optional longer description:
A single-binary Linux sleep timer with YAML config, command preview, progress display, and post-countdown desktop actions for niri, Hyprland, KDE, media, brightness, audio, lock, power, process kill, and custom shell commands.
Upstream
git remote add origin ssh://git@gitssh.forust.xyz:2221/forust/gosleep.git
git remote set-url --push origin ssh://git@gitssh.forust.xyz:2221/forust/gosleep.git
HTTPS remote URL:
https://gitea.forust.xyz/forust/gosleep.git
Gitea Actions Setup
- Enable Actions for
forust/gosleep. - Register or select a Linux runner with labels used by the workflows:
self-hosted,linux,arch,homelab. - Ensure the runner has:
- Rust stable toolchain
rustfmtclippycurljqsha256sum- Docker, if using the YAML lint job as written
- Confirm Actions job token permissions allow
contents: write. The release workflow uses Gitea Actions' built-inGITEA_TOKEN, exposed in the workflow as${{ secrets.GITEA_TOKEN }}; no extra repository secret is required.
Version Bump Checklist
For a patch bump, for example 1.1.3 to 1.1.4:
version=1.1.4
Update:
Cargo.toml:package.versionCargo.lock: runcargo build --release(without--locked) to regenerateVERSIONCHANGELOG.md
Then verify:
cargo fmt --check
cargo test --locked
cargo clippy --locked -- -D warnings
cargo build --release --locked
Create Release
git status --short
git commit -am "chore: release v${version}"
git tag -a "v${version}" -m "gosleep-timer v${version}"
git push origin main
git push origin "v${version}"
The .gitea/workflows/release.yaml workflow will:
- Re-run release gates:
cargo fmt --check,cargo test --locked,cargo clippy --locked -- -D warnings, and YAML lint. - Build
target/release/gosleep-timer. - Copy binary as
gosleep-timer-<version>-linux-amd64. - Generate a SHA-256 checksum.
- Create a Gitea release.
- Upload the binary and checksum as release assets.
The workflow is idempotent: if the release already exists, it reuses it and replaces assets with matching names. If any lint or test step fails, the build and release job will not run.
Manual Asset Build
If Actions are unavailable:
version="$(cat VERSION)"
cargo build --release --locked
mkdir -p dist
binary="gosleep-timer-${version}-linux-amd64"
cp target/release/gosleep-timer "dist/${binary}"
cd dist
sha256sum "${binary}" > "${binary}.sha256"