- Cleaned all files for a more reusable cicd
- Added pre-release on develop
- Added jobs dependencies to gain time (avoid running all if mandatory fail)
- Add CICD.md documentation
* feat: add anonymous telemetry ping (1/day, opt-out)
Fire-and-forget daily ping to track active installs for BPI metrics.
- SHA-256 device hash (hostname:user), no PII
- Opt-out: RTK_TELEMETRY_DISABLED=1 or config.toml [telemetry] enabled=false
- Token injected at compile time via option_env!, not in source
- 23h throttle via marker file, 2s timeout, non-blocking thread
* ci: inject RTK_TELEMETRY_TOKEN at build time in release workflow
All 3 build jobs (binary, DEB, RPM) now receive the token from
GitHub secrets so option_env!() compiles it into release binaries.
* refactor: externalize telemetry URL via option_env!(RTK_TELEMETRY_URL)
URL and token are both injected at compile time — no hardcoded
server address in source code. Builds without the env var simply
skip telemetry silently.
The current x86_64-unknown-linux-gnu release binary dynamically links against glibc, which causes failures on systems with an older glibc version:
rtk: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.39' not found (required by rtk)
Replace the x86_64-unknown-linux-gnu build target with x86_64-unknown-linux-musl, producing a fully statically-linked binary with no libc dependency.
Fixesrtk-ai/rtk#265 - binary fails on systems with old glibc.
- Cargo.toml: add homepage field
- README.md: add website/github/install links
- Formula/rtk.rb: update homepage to website
- release.yml: update homepage and docs link in formula template
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Replaces the commented-out TODO homebrew section with a working
automation modeled on rtk-ai/vox's release pipeline.
On each release, the new homebrew job:
1. Downloads checksums.txt from the just-published release
2. Parses sha256 for all 4 platforms (macOS/Linux × Intel/ARM)
3. Generates the formula with correct version and hashes
4. Pushes to rtk-ai/homebrew-tap via GitHub API
Requires HOMEBREW_TAP_TOKEN org secret (already used by vox).
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Closes#73
Three issues prevented release-please from uploading build artifacts:
1. Upload steps had `if: github.event_name == 'workflow_call'` conditions
that evaluated to false when called from release-please (event_name
reflects the caller's `push` event, not `workflow_call`)
2. Missing `secrets: inherit` in release-please.yml workflow_call
3. Dead `on: release: published` trigger (GITHUB_TOKEN actions can't
trigger other workflows)
Fix aligned with working rtk-ai/vox pipeline:
- Remove conditional `if` on upload step (always upload)
- Simplify version detection with `inputs.tag` fallback
- Remove dead `release: published` trigger
- Add `secrets: inherit` to workflow_call
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fixes#27
Tags created by GITHUB_TOKEN don't trigger other workflows. This change
makes release-please call release.yml directly via workflow_call after
creating a release.
Changes:
- release.yml: Add workflow_call trigger with tag input
- release.yml: Handle workflow_call in version detection
- release.yml: Upload assets for workflow_call events
- release-please.yml: Add build-release job that calls release.yml
- release-please.yml: update-latest-tag now waits for build to complete
This approach:
- Requires no PAT/secrets
- Keeps workflows separate and maintainable
- Uses workflow_call (cleaner than workflow_dispatch)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1. CRITICAL: Fix 'latest' tag creation after releases
- Move update-latest-tag job from release.yml to release-please.yml
- release-please creates tags via API (no push event) → must run in same workflow
- Job now conditional on release_created output
2. IMPORTANT: Add npx fallback for ccusage + improve message
- Check binary in PATH first, fallback to 'npx ccusage'
- Updated message: "npm i -g ccusage (or use npx ccusage)"
- Consistent with other JS tooling (next_cmd, tsc_cmd, prettier_cmd)
3. PROCESS: Slow down version bumps with release-please config
- Add release-please-config.json with bump-patch-for-minor-pre-major
- In 0.x versions: feat: → patch bump instead of minor
- Prevents rapid version inflation (0.3.1 → 0.5.0 in 21h)
Fixes issues raised by Patrick after PR #21 merge.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add automated workflow step to update the 'latest' tag after each
successful release. This ensures 'latest' always points to the most
recent stable version without manual intervention.
The new job:
- Runs after successful release completion
- Updates 'latest' tag to point to the new semver tag
- Uses force push to move the tag reference
- Includes version info in tag annotation message
Benefits:
- Install scripts can reliably use /releases/latest/download/
- No manual tag management needed
- Consistent reference for "current stable" across platforms
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
## Release automation
- Add release-please workflow for automatic semantic versioning
- Configure release.yml to only trigger on tags (avoid double-release)
## Benchmark automation
- Extend benchmark.yml with README auto-update
- Add permissions for contents and pull-requests writes
- Auto-create PR with updated metrics via peter-evans/create-pull-request
- Add scripts/update-readme-metrics.sh for CI integration
## Verification
- ✅ Workflows ready for CI/CD pipeline
- ✅ No breaking changes to existing functionality
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add SQLite tracking for all commands (90-day history)
- Add rtk gain command with ASCII graph visualization
- Add config.rs for TOML configuration support
- Integrate tracking in all command modules
- Add CI/CD workflow for multi-platform releases (deb, rpm, win, mac)
- Add LICENSE file and improve .gitignore