@hasna/terminal 2.0.5 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +52 -21
- package/package.json +1 -1
- package/src/ai.ts +77 -130
- package/src/cli.tsx +51 -21
- package/src/command-validator.ts +11 -0
- package/src/context-hints.ts +291 -0
- package/src/discover.ts +238 -0
- package/src/economy.ts +53 -0
- package/src/output-processor.ts +7 -18
- package/src/output-store.ts +65 -0
- package/src/providers/base.ts +3 -1
- package/src/providers/groq.ts +108 -0
- package/src/providers/index.ts +26 -2
- package/src/providers/providers.test.ts +4 -2
- package/src/providers/xai.ts +108 -0
- package/src/sessions-db.ts +81 -0
- package/temp/rtk/.claude/agents/code-reviewer.md +221 -0
- package/temp/rtk/.claude/agents/debugger.md +519 -0
- package/temp/rtk/.claude/agents/rtk-testing-specialist.md +461 -0
- package/temp/rtk/.claude/agents/rust-rtk.md +511 -0
- package/temp/rtk/.claude/agents/technical-writer.md +355 -0
- package/temp/rtk/.claude/commands/diagnose.md +352 -0
- package/temp/rtk/.claude/commands/test-routing.md +362 -0
- package/temp/rtk/.claude/hooks/bash/pre-commit-format.sh +16 -0
- package/temp/rtk/.claude/hooks/rtk-rewrite.sh +70 -0
- package/temp/rtk/.claude/hooks/rtk-suggest.sh +152 -0
- package/temp/rtk/.claude/rules/cli-testing.md +526 -0
- package/temp/rtk/.claude/skills/issue-triage/SKILL.md +348 -0
- package/temp/rtk/.claude/skills/issue-triage/templates/issue-comment.md +134 -0
- package/temp/rtk/.claude/skills/performance.md +435 -0
- package/temp/rtk/.claude/skills/pr-triage/SKILL.md +315 -0
- package/temp/rtk/.claude/skills/pr-triage/templates/review-comment.md +71 -0
- package/temp/rtk/.claude/skills/repo-recap.md +206 -0
- package/temp/rtk/.claude/skills/rtk-tdd/SKILL.md +78 -0
- package/temp/rtk/.claude/skills/rtk-tdd/references/testing-patterns.md +124 -0
- package/temp/rtk/.claude/skills/security-guardian.md +503 -0
- package/temp/rtk/.claude/skills/ship.md +404 -0
- package/temp/rtk/.github/workflows/benchmark.yml +34 -0
- package/temp/rtk/.github/workflows/dco-check.yaml +12 -0
- package/temp/rtk/.github/workflows/release-please.yml +51 -0
- package/temp/rtk/.github/workflows/release.yml +343 -0
- package/temp/rtk/.github/workflows/security-check.yml +135 -0
- package/temp/rtk/.github/workflows/validate-docs.yml +78 -0
- package/temp/rtk/.release-please-manifest.json +3 -0
- package/temp/rtk/ARCHITECTURE.md +1491 -0
- package/temp/rtk/CHANGELOG.md +640 -0
- package/temp/rtk/CLAUDE.md +605 -0
- package/temp/rtk/CONTRIBUTING.md +199 -0
- package/temp/rtk/Cargo.lock +1668 -0
- package/temp/rtk/Cargo.toml +64 -0
- package/temp/rtk/Formula/rtk.rb +43 -0
- package/temp/rtk/INSTALL.md +390 -0
- package/temp/rtk/LICENSE +21 -0
- package/temp/rtk/README.md +386 -0
- package/temp/rtk/README_es.md +159 -0
- package/temp/rtk/README_fr.md +197 -0
- package/temp/rtk/README_ja.md +159 -0
- package/temp/rtk/README_ko.md +159 -0
- package/temp/rtk/README_zh.md +167 -0
- package/temp/rtk/ROADMAP.md +15 -0
- package/temp/rtk/SECURITY.md +217 -0
- package/temp/rtk/TEST_EXEC_TIME.md +102 -0
- package/temp/rtk/build.rs +57 -0
- package/temp/rtk/docs/AUDIT_GUIDE.md +432 -0
- package/temp/rtk/docs/FEATURES.md +1410 -0
- package/temp/rtk/docs/TROUBLESHOOTING.md +309 -0
- package/temp/rtk/docs/filter-workflow.md +102 -0
- package/temp/rtk/docs/images/gain-dashboard.jpg +0 -0
- package/temp/rtk/docs/tracking.md +583 -0
- package/temp/rtk/hooks/opencode-rtk.ts +39 -0
- package/temp/rtk/hooks/rtk-awareness.md +29 -0
- package/temp/rtk/hooks/rtk-rewrite.sh +61 -0
- package/temp/rtk/hooks/test-rtk-rewrite.sh +442 -0
- package/temp/rtk/install.sh +124 -0
- package/temp/rtk/release-please-config.json +10 -0
- package/temp/rtk/scripts/benchmark.sh +592 -0
- package/temp/rtk/scripts/check-installation.sh +162 -0
- package/temp/rtk/scripts/install-local.sh +37 -0
- package/temp/rtk/scripts/rtk-economics.sh +137 -0
- package/temp/rtk/scripts/test-all.sh +561 -0
- package/temp/rtk/scripts/test-aristote.sh +227 -0
- package/temp/rtk/scripts/test-tracking.sh +79 -0
- package/temp/rtk/scripts/update-readme-metrics.sh +32 -0
- package/temp/rtk/scripts/validate-docs.sh +73 -0
- package/temp/rtk/src/aws_cmd.rs +880 -0
- package/temp/rtk/src/binlog.rs +1645 -0
- package/temp/rtk/src/cargo_cmd.rs +1727 -0
- package/temp/rtk/src/cc_economics.rs +1157 -0
- package/temp/rtk/src/ccusage.rs +340 -0
- package/temp/rtk/src/config.rs +187 -0
- package/temp/rtk/src/container.rs +855 -0
- package/temp/rtk/src/curl_cmd.rs +134 -0
- package/temp/rtk/src/deps.rs +268 -0
- package/temp/rtk/src/diff_cmd.rs +367 -0
- package/temp/rtk/src/discover/mod.rs +274 -0
- package/temp/rtk/src/discover/provider.rs +388 -0
- package/temp/rtk/src/discover/registry.rs +2022 -0
- package/temp/rtk/src/discover/report.rs +202 -0
- package/temp/rtk/src/discover/rules.rs +667 -0
- package/temp/rtk/src/display_helpers.rs +402 -0
- package/temp/rtk/src/dotnet_cmd.rs +1771 -0
- package/temp/rtk/src/dotnet_format_report.rs +133 -0
- package/temp/rtk/src/dotnet_trx.rs +593 -0
- package/temp/rtk/src/env_cmd.rs +204 -0
- package/temp/rtk/src/filter.rs +462 -0
- package/temp/rtk/src/filters/README.md +52 -0
- package/temp/rtk/src/filters/ansible-playbook.toml +34 -0
- package/temp/rtk/src/filters/basedpyright.toml +47 -0
- package/temp/rtk/src/filters/biome.toml +45 -0
- package/temp/rtk/src/filters/brew-install.toml +37 -0
- package/temp/rtk/src/filters/composer-install.toml +40 -0
- package/temp/rtk/src/filters/df.toml +16 -0
- package/temp/rtk/src/filters/dotnet-build.toml +64 -0
- package/temp/rtk/src/filters/du.toml +16 -0
- package/temp/rtk/src/filters/fail2ban-client.toml +15 -0
- package/temp/rtk/src/filters/gcc.toml +49 -0
- package/temp/rtk/src/filters/gcloud.toml +22 -0
- package/temp/rtk/src/filters/hadolint.toml +24 -0
- package/temp/rtk/src/filters/helm.toml +29 -0
- package/temp/rtk/src/filters/iptables.toml +27 -0
- package/temp/rtk/src/filters/jj.toml +28 -0
- package/temp/rtk/src/filters/jq.toml +24 -0
- package/temp/rtk/src/filters/make.toml +41 -0
- package/temp/rtk/src/filters/markdownlint.toml +24 -0
- package/temp/rtk/src/filters/mix-compile.toml +27 -0
- package/temp/rtk/src/filters/mix-format.toml +15 -0
- package/temp/rtk/src/filters/mvn-build.toml +44 -0
- package/temp/rtk/src/filters/oxlint.toml +43 -0
- package/temp/rtk/src/filters/ping.toml +63 -0
- package/temp/rtk/src/filters/pio-run.toml +40 -0
- package/temp/rtk/src/filters/poetry-install.toml +50 -0
- package/temp/rtk/src/filters/pre-commit.toml +35 -0
- package/temp/rtk/src/filters/ps.toml +16 -0
- package/temp/rtk/src/filters/quarto-render.toml +41 -0
- package/temp/rtk/src/filters/rsync.toml +48 -0
- package/temp/rtk/src/filters/shellcheck.toml +27 -0
- package/temp/rtk/src/filters/shopify-theme.toml +29 -0
- package/temp/rtk/src/filters/skopeo.toml +45 -0
- package/temp/rtk/src/filters/sops.toml +16 -0
- package/temp/rtk/src/filters/ssh.toml +44 -0
- package/temp/rtk/src/filters/stat.toml +34 -0
- package/temp/rtk/src/filters/swift-build.toml +41 -0
- package/temp/rtk/src/filters/systemctl-status.toml +33 -0
- package/temp/rtk/src/filters/terraform-plan.toml +35 -0
- package/temp/rtk/src/filters/tofu-fmt.toml +16 -0
- package/temp/rtk/src/filters/tofu-init.toml +38 -0
- package/temp/rtk/src/filters/tofu-plan.toml +35 -0
- package/temp/rtk/src/filters/tofu-validate.toml +17 -0
- package/temp/rtk/src/filters/trunk-build.toml +39 -0
- package/temp/rtk/src/filters/ty.toml +50 -0
- package/temp/rtk/src/filters/uv-sync.toml +37 -0
- package/temp/rtk/src/filters/xcodebuild.toml +99 -0
- package/temp/rtk/src/filters/yamllint.toml +25 -0
- package/temp/rtk/src/find_cmd.rs +598 -0
- package/temp/rtk/src/format_cmd.rs +386 -0
- package/temp/rtk/src/gain.rs +723 -0
- package/temp/rtk/src/gh_cmd.rs +1651 -0
- package/temp/rtk/src/git.rs +2012 -0
- package/temp/rtk/src/go_cmd.rs +592 -0
- package/temp/rtk/src/golangci_cmd.rs +254 -0
- package/temp/rtk/src/grep_cmd.rs +288 -0
- package/temp/rtk/src/gt_cmd.rs +810 -0
- package/temp/rtk/src/hook_audit_cmd.rs +283 -0
- package/temp/rtk/src/hook_check.rs +171 -0
- package/temp/rtk/src/init.rs +1859 -0
- package/temp/rtk/src/integrity.rs +537 -0
- package/temp/rtk/src/json_cmd.rs +231 -0
- package/temp/rtk/src/learn/detector.rs +628 -0
- package/temp/rtk/src/learn/mod.rs +119 -0
- package/temp/rtk/src/learn/report.rs +184 -0
- package/temp/rtk/src/lint_cmd.rs +694 -0
- package/temp/rtk/src/local_llm.rs +316 -0
- package/temp/rtk/src/log_cmd.rs +248 -0
- package/temp/rtk/src/ls.rs +324 -0
- package/temp/rtk/src/main.rs +2482 -0
- package/temp/rtk/src/mypy_cmd.rs +389 -0
- package/temp/rtk/src/next_cmd.rs +241 -0
- package/temp/rtk/src/npm_cmd.rs +236 -0
- package/temp/rtk/src/parser/README.md +267 -0
- package/temp/rtk/src/parser/error.rs +46 -0
- package/temp/rtk/src/parser/formatter.rs +336 -0
- package/temp/rtk/src/parser/mod.rs +311 -0
- package/temp/rtk/src/parser/types.rs +119 -0
- package/temp/rtk/src/pip_cmd.rs +302 -0
- package/temp/rtk/src/playwright_cmd.rs +479 -0
- package/temp/rtk/src/pnpm_cmd.rs +573 -0
- package/temp/rtk/src/prettier_cmd.rs +221 -0
- package/temp/rtk/src/prisma_cmd.rs +482 -0
- package/temp/rtk/src/psql_cmd.rs +382 -0
- package/temp/rtk/src/pytest_cmd.rs +384 -0
- package/temp/rtk/src/read.rs +217 -0
- package/temp/rtk/src/rewrite_cmd.rs +50 -0
- package/temp/rtk/src/ruff_cmd.rs +402 -0
- package/temp/rtk/src/runner.rs +271 -0
- package/temp/rtk/src/summary.rs +297 -0
- package/temp/rtk/src/tee.rs +405 -0
- package/temp/rtk/src/telemetry.rs +248 -0
- package/temp/rtk/src/toml_filter.rs +1655 -0
- package/temp/rtk/src/tracking.rs +1416 -0
- package/temp/rtk/src/tree.rs +209 -0
- package/temp/rtk/src/tsc_cmd.rs +259 -0
- package/temp/rtk/src/utils.rs +432 -0
- package/temp/rtk/src/verify_cmd.rs +47 -0
- package/temp/rtk/src/vitest_cmd.rs +385 -0
- package/temp/rtk/src/wc_cmd.rs +401 -0
- package/temp/rtk/src/wget_cmd.rs +260 -0
- package/temp/rtk/tests/fixtures/dotnet/build_failed.txt +11 -0
- package/temp/rtk/tests/fixtures/dotnet/format_changes.json +31 -0
- package/temp/rtk/tests/fixtures/dotnet/format_empty.json +1 -0
- package/temp/rtk/tests/fixtures/dotnet/format_success.json +12 -0
- package/temp/rtk/tests/fixtures/dotnet/test_failed.txt +18 -0
- package/dist/App.js +0 -404
- package/dist/Browse.js +0 -79
- package/dist/FuzzyPicker.js +0 -47
- package/dist/Onboarding.js +0 -51
- package/dist/Spinner.js +0 -12
- package/dist/StatusBar.js +0 -49
- package/dist/ai.js +0 -368
- package/dist/cache.js +0 -41
- package/dist/command-rewriter.js +0 -64
- package/dist/command-validator.js +0 -77
- package/dist/compression.js +0 -107
- package/dist/diff-cache.js +0 -107
- package/dist/economy.js +0 -79
- package/dist/expand-store.js +0 -38
- package/dist/file-cache.js +0 -72
- package/dist/file-index.js +0 -62
- package/dist/history.js +0 -62
- package/dist/lazy-executor.js +0 -54
- package/dist/line-dedup.js +0 -59
- package/dist/loop-detector.js +0 -75
- package/dist/mcp/install.js +0 -98
- package/dist/mcp/server.js +0 -569
- package/dist/noise-filter.js +0 -86
- package/dist/output-processor.js +0 -136
- package/dist/output-router.js +0 -41
- package/dist/parsers/base.js +0 -2
- package/dist/parsers/build.js +0 -64
- package/dist/parsers/errors.js +0 -101
- package/dist/parsers/files.js +0 -78
- package/dist/parsers/git.js +0 -99
- package/dist/parsers/index.js +0 -48
- package/dist/parsers/tests.js +0 -89
- package/dist/providers/anthropic.js +0 -39
- package/dist/providers/base.js +0 -4
- package/dist/providers/cerebras.js +0 -95
- package/dist/providers/index.js +0 -49
- package/dist/recipes/model.js +0 -20
- package/dist/recipes/storage.js +0 -136
- package/dist/search/content-search.js +0 -68
- package/dist/search/file-search.js +0 -61
- package/dist/search/filters.js +0 -34
- package/dist/search/index.js +0 -5
- package/dist/search/semantic.js +0 -320
- package/dist/session-boot.js +0 -59
- package/dist/session-context.js +0 -55
- package/dist/sessions-db.js +0 -120
- package/dist/smart-display.js +0 -286
- package/dist/snapshots.js +0 -51
- package/dist/supervisor.js +0 -112
- package/dist/test-watchlist.js +0 -131
- package/dist/tree.js +0 -94
- package/dist/usage-cache.js +0 -65
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Build, commit, push & version bump workflow - automates the complete release cycle
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Ship Release
|
|
6
|
+
|
|
7
|
+
Systematic release workflow for RTK: build verification, version bump, changelog update, git tag, and push to trigger CI/CD.
|
|
8
|
+
|
|
9
|
+
## When to Use
|
|
10
|
+
|
|
11
|
+
- **Manual invocation**: When ready to release a new version
|
|
12
|
+
- **After feature completion**: Before tagging and publishing
|
|
13
|
+
- **Before version bump**: To automate the release checklist
|
|
14
|
+
|
|
15
|
+
## Pre-Release Checklist (Auto-Verified)
|
|
16
|
+
|
|
17
|
+
Before running `/ship`, verify:
|
|
18
|
+
|
|
19
|
+
### 1. Quality Checks Pass
|
|
20
|
+
```bash
|
|
21
|
+
cargo fmt --all --check # Code formatted
|
|
22
|
+
cargo clippy --all-targets # Zero warnings
|
|
23
|
+
cargo test --all # All tests pass
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 2. Performance Benchmarks Pass
|
|
27
|
+
```bash
|
|
28
|
+
hyperfine 'target/release/rtk git status' --warmup 3
|
|
29
|
+
# Should show <10ms mean time
|
|
30
|
+
|
|
31
|
+
/usr/bin/time -l target/release/rtk git status
|
|
32
|
+
# Should show <5MB maximum resident set size
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 3. Integration Tests Pass
|
|
36
|
+
```bash
|
|
37
|
+
cargo install --path . --force # Install locally
|
|
38
|
+
cargo test --ignored # Run integration tests
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 4. Git Clean State
|
|
42
|
+
```bash
|
|
43
|
+
git status # Should show "nothing to commit, working tree clean"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Release Workflow
|
|
47
|
+
|
|
48
|
+
### Step 1: Determine Version Bump
|
|
49
|
+
|
|
50
|
+
**Semantic Versioning** (MAJOR.MINOR.PATCH):
|
|
51
|
+
- **MAJOR** (v1.0.0): Breaking changes (rare for RTK)
|
|
52
|
+
- **MINOR** (v0.X.0): New features, new filters, new commands
|
|
53
|
+
- **PATCH** (v0.0.X): Bug fixes, performance improvements
|
|
54
|
+
|
|
55
|
+
**Examples**:
|
|
56
|
+
- New filter added (`rtk pytest`) → **MINOR** bump (v0.16.0 → v0.17.0)
|
|
57
|
+
- Bug fix in `git log` filter → **PATCH** bump (v0.16.0 → v0.16.1)
|
|
58
|
+
- Breaking CLI arg change → **MAJOR** bump (v0.16.0 → v1.0.0)
|
|
59
|
+
|
|
60
|
+
### Step 2: Update Version
|
|
61
|
+
|
|
62
|
+
**Files to update**:
|
|
63
|
+
1. `Cargo.toml` (line 3): `version = "X.Y.Z"`
|
|
64
|
+
2. `CHANGELOG.md` (add new section)
|
|
65
|
+
3. `README.md` (if version mentioned)
|
|
66
|
+
|
|
67
|
+
**Example**:
|
|
68
|
+
```toml
|
|
69
|
+
# Cargo.toml (before)
|
|
70
|
+
[package]
|
|
71
|
+
name = "rtk"
|
|
72
|
+
version = "0.16.0" # Current version
|
|
73
|
+
|
|
74
|
+
# Cargo.toml (after - MINOR bump)
|
|
75
|
+
[package]
|
|
76
|
+
name = "rtk"
|
|
77
|
+
version = "0.17.0" # New version
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**CHANGELOG.md template**:
|
|
81
|
+
```markdown
|
|
82
|
+
## [0.17.0] - 2026-02-15
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
- `rtk pytest` command for Python test filtering (90% token reduction)
|
|
86
|
+
- Support for `pytest` JSON output parsing
|
|
87
|
+
- Integration with `uv` package manager auto-detection
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
- Shell escaping for PowerShell on Windows
|
|
91
|
+
- Memory leak in regex pattern caching
|
|
92
|
+
|
|
93
|
+
### Changed
|
|
94
|
+
- Updated `cargo test` filter to show test names in failures
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Step 3: Build and Verify
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
# Clean build
|
|
101
|
+
cargo clean
|
|
102
|
+
cargo build --release
|
|
103
|
+
|
|
104
|
+
# Verify binary
|
|
105
|
+
target/release/rtk --version
|
|
106
|
+
# Should show new version
|
|
107
|
+
|
|
108
|
+
# Run full quality checks
|
|
109
|
+
cargo fmt --all --check
|
|
110
|
+
cargo clippy --all-targets
|
|
111
|
+
cargo test --all
|
|
112
|
+
|
|
113
|
+
# Benchmark performance
|
|
114
|
+
hyperfine 'target/release/rtk git status' --warmup 3
|
|
115
|
+
# Should still be <10ms
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Step 4: Commit Version Bump
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
# Stage version files
|
|
122
|
+
git add Cargo.toml Cargo.lock CHANGELOG.md README.md
|
|
123
|
+
|
|
124
|
+
# Commit with version tag
|
|
125
|
+
git commit -m "chore(release): bump version to v0.17.0
|
|
126
|
+
|
|
127
|
+
- Updated Cargo.toml version
|
|
128
|
+
- Updated CHANGELOG.md with release notes
|
|
129
|
+
- Verified all quality checks pass
|
|
130
|
+
- Benchmarked performance (<10ms startup)
|
|
131
|
+
|
|
132
|
+
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Step 5: Create Git Tag
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
# Create annotated tag with changelog excerpt
|
|
139
|
+
git tag -a v0.17.0 -m "Release v0.17.0
|
|
140
|
+
|
|
141
|
+
Added:
|
|
142
|
+
- rtk pytest command (90% token reduction)
|
|
143
|
+
- Support for uv package manager
|
|
144
|
+
|
|
145
|
+
Fixed:
|
|
146
|
+
- Shell escaping for PowerShell
|
|
147
|
+
- Memory leak in regex caching
|
|
148
|
+
|
|
149
|
+
Performance: <10ms startup, <5MB memory"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Step 6: Push to Remote
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Push commit and tags
|
|
156
|
+
git push origin main
|
|
157
|
+
git push origin v0.17.0
|
|
158
|
+
|
|
159
|
+
# Trigger GitHub Actions release workflow
|
|
160
|
+
# (CI/CD will build binaries, create GitHub release, publish to crates.io if configured)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
## Post-Release Verification
|
|
164
|
+
|
|
165
|
+
After pushing, verify:
|
|
166
|
+
|
|
167
|
+
### 1. GitHub Actions CI/CD Pass
|
|
168
|
+
```bash
|
|
169
|
+
# Check GitHub Actions workflow status
|
|
170
|
+
gh run list --limit 1
|
|
171
|
+
|
|
172
|
+
# Watch latest run
|
|
173
|
+
gh run watch
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 2. GitHub Release Created
|
|
177
|
+
```bash
|
|
178
|
+
# Check if release created
|
|
179
|
+
gh release view v0.17.0
|
|
180
|
+
|
|
181
|
+
# Should show:
|
|
182
|
+
# - Release notes from git tag
|
|
183
|
+
# - Binaries attached (macOS, Linux x86_64/ARM64, Windows)
|
|
184
|
+
# - Checksums for verification
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### 3. Installation Verification
|
|
188
|
+
```bash
|
|
189
|
+
# Test installation from release
|
|
190
|
+
curl -sSL https://github.com/rtk-ai/rtk/releases/download/v0.17.0/rtk-macos-latest -o rtk
|
|
191
|
+
chmod +x rtk
|
|
192
|
+
./rtk --version
|
|
193
|
+
# Should show v0.17.0
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## Rollback Plan
|
|
197
|
+
|
|
198
|
+
If release has critical issues:
|
|
199
|
+
|
|
200
|
+
### Option 1: Patch Release (Preferred)
|
|
201
|
+
```bash
|
|
202
|
+
# Fix issue in new branch
|
|
203
|
+
git checkout -b hotfix/v0.17.1
|
|
204
|
+
# Apply fix
|
|
205
|
+
cargo test --all
|
|
206
|
+
git commit -m "fix: critical issue in pytest filter"
|
|
207
|
+
|
|
208
|
+
# Release v0.17.1 (PATCH bump)
|
|
209
|
+
# Follow release workflow above
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Option 2: Yank Release (crates.io only)
|
|
213
|
+
```bash
|
|
214
|
+
# Yank broken version from crates.io
|
|
215
|
+
cargo yank --vers 0.17.0
|
|
216
|
+
|
|
217
|
+
# Users can't download yanked version, but existing installs work
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Option 3: Revert Tag (Last Resort)
|
|
221
|
+
```bash
|
|
222
|
+
# Delete tag locally
|
|
223
|
+
git tag -d v0.17.0
|
|
224
|
+
|
|
225
|
+
# Delete tag on remote
|
|
226
|
+
git push origin :refs/tags/v0.17.0
|
|
227
|
+
|
|
228
|
+
# Delete GitHub release
|
|
229
|
+
gh release delete v0.17.0 --yes
|
|
230
|
+
|
|
231
|
+
# Revert commit
|
|
232
|
+
git revert HEAD
|
|
233
|
+
git push origin main
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## Automated Release Script (Optional)
|
|
237
|
+
|
|
238
|
+
Save as `scripts/ship.sh`:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
#!/bin/bash
|
|
242
|
+
set -euo pipefail
|
|
243
|
+
|
|
244
|
+
# Parse version argument
|
|
245
|
+
if [ $# -ne 1 ]; then
|
|
246
|
+
echo "Usage: $0 <version>"
|
|
247
|
+
echo "Example: $0 0.17.0"
|
|
248
|
+
exit 1
|
|
249
|
+
fi
|
|
250
|
+
|
|
251
|
+
NEW_VERSION=$1
|
|
252
|
+
|
|
253
|
+
echo "🚀 Starting release workflow for v$NEW_VERSION"
|
|
254
|
+
|
|
255
|
+
# 1. Quality checks
|
|
256
|
+
echo "📦 Running quality checks..."
|
|
257
|
+
cargo fmt --all --check
|
|
258
|
+
cargo clippy --all-targets
|
|
259
|
+
cargo test --all
|
|
260
|
+
|
|
261
|
+
# 2. Update version
|
|
262
|
+
echo "🔢 Updating version to $NEW_VERSION..."
|
|
263
|
+
sed -i '' "s/^version = .*/version = \"$NEW_VERSION\"/" Cargo.toml
|
|
264
|
+
|
|
265
|
+
# 3. Build
|
|
266
|
+
echo "🔨 Building release binary..."
|
|
267
|
+
cargo build --release
|
|
268
|
+
|
|
269
|
+
# 4. Verify version
|
|
270
|
+
echo "✅ Verifying version..."
|
|
271
|
+
target/release/rtk --version | grep "$NEW_VERSION"
|
|
272
|
+
|
|
273
|
+
# 5. Commit
|
|
274
|
+
echo "💾 Committing version bump..."
|
|
275
|
+
git add Cargo.toml Cargo.lock
|
|
276
|
+
git commit -m "chore(release): bump version to v$NEW_VERSION
|
|
277
|
+
|
|
278
|
+
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>"
|
|
279
|
+
|
|
280
|
+
# 6. Tag
|
|
281
|
+
echo "🏷️ Creating git tag..."
|
|
282
|
+
git tag -a "v$NEW_VERSION" -m "Release v$NEW_VERSION"
|
|
283
|
+
|
|
284
|
+
# 7. Push
|
|
285
|
+
echo "🚢 Pushing to remote..."
|
|
286
|
+
git push origin main
|
|
287
|
+
git push origin "v$NEW_VERSION"
|
|
288
|
+
|
|
289
|
+
echo "✅ Release v$NEW_VERSION shipped!"
|
|
290
|
+
echo "Monitor CI/CD: gh run watch"
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
**Usage**:
|
|
294
|
+
```bash
|
|
295
|
+
chmod +x scripts/ship.sh
|
|
296
|
+
./scripts/ship.sh 0.17.0
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Release Frequency
|
|
300
|
+
|
|
301
|
+
**Recommended cadence**:
|
|
302
|
+
- **PATCH releases**: As needed for critical bugs (24h turnaround)
|
|
303
|
+
- **MINOR releases**: Weekly or bi-weekly for new features
|
|
304
|
+
- **MAJOR releases**: Quarterly or when breaking changes necessary
|
|
305
|
+
|
|
306
|
+
## Version History Reference
|
|
307
|
+
|
|
308
|
+
Check version history:
|
|
309
|
+
```bash
|
|
310
|
+
git tag -l "v*" # List all version tags
|
|
311
|
+
git log --oneline --tags # Show commits with tags
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
Example output:
|
|
315
|
+
```
|
|
316
|
+
v0.17.0 (HEAD -> main, tag: v0.17.0, origin/main)
|
|
317
|
+
v0.16.0
|
|
318
|
+
v0.15.1
|
|
319
|
+
v0.15.0
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
## Common Issues
|
|
323
|
+
|
|
324
|
+
### Issue: CI/CD Fails After Tag Push
|
|
325
|
+
|
|
326
|
+
**Symptom**: GitHub Actions workflow fails on release build
|
|
327
|
+
|
|
328
|
+
**Solution**:
|
|
329
|
+
```bash
|
|
330
|
+
# Fix issue locally
|
|
331
|
+
git checkout main
|
|
332
|
+
# Apply fix
|
|
333
|
+
cargo test --all
|
|
334
|
+
git commit -m "fix: CI/CD build issue"
|
|
335
|
+
git push origin main
|
|
336
|
+
|
|
337
|
+
# Delete old tag
|
|
338
|
+
git tag -d v0.17.0
|
|
339
|
+
git push origin :refs/tags/v0.17.0
|
|
340
|
+
|
|
341
|
+
# Create new tag
|
|
342
|
+
git tag -a v0.17.0 -m "Release v0.17.0 (rebuild)"
|
|
343
|
+
git push origin v0.17.0
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### Issue: Version Mismatch
|
|
347
|
+
|
|
348
|
+
**Symptom**: `rtk --version` shows old version after bump
|
|
349
|
+
|
|
350
|
+
**Solution**:
|
|
351
|
+
```bash
|
|
352
|
+
# Cargo.lock might be out of sync
|
|
353
|
+
cargo update -p rtk
|
|
354
|
+
cargo build --release
|
|
355
|
+
|
|
356
|
+
# Verify
|
|
357
|
+
target/release/rtk --version
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Issue: Changelog Merge Conflict
|
|
361
|
+
|
|
362
|
+
**Symptom**: CHANGELOG.md has conflicts after rebase
|
|
363
|
+
|
|
364
|
+
**Solution**:
|
|
365
|
+
```bash
|
|
366
|
+
# Always add new entries at top
|
|
367
|
+
# Manual merge:
|
|
368
|
+
# 1. Keep all entries from both branches
|
|
369
|
+
# 2. Sort by version (newest first)
|
|
370
|
+
# 3. Ensure date format consistency
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Security Considerations
|
|
374
|
+
|
|
375
|
+
**Before releasing**:
|
|
376
|
+
- [ ] No secrets in code (API keys, tokens)
|
|
377
|
+
- [ ] No `.env` files committed
|
|
378
|
+
- [ ] Dependencies scanned (`cargo audit`)
|
|
379
|
+
- [ ] Shell injection vulnerabilities reviewed
|
|
380
|
+
- [ ] Cross-platform shell escaping tested
|
|
381
|
+
|
|
382
|
+
**Dependency audit**:
|
|
383
|
+
```bash
|
|
384
|
+
cargo install cargo-audit
|
|
385
|
+
cargo audit
|
|
386
|
+
|
|
387
|
+
# Example output:
|
|
388
|
+
# Crate: some-crate
|
|
389
|
+
# Version: 0.1.0
|
|
390
|
+
# Warning: vulnerability found
|
|
391
|
+
# Advisory: CVE-2024-XXXXX
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
If vulnerabilities found:
|
|
395
|
+
```bash
|
|
396
|
+
# Update vulnerable dependency
|
|
397
|
+
cargo update some-crate
|
|
398
|
+
|
|
399
|
+
# Verify fix
|
|
400
|
+
cargo audit
|
|
401
|
+
|
|
402
|
+
# Re-run quality checks
|
|
403
|
+
cargo test --all
|
|
404
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Benchmark Token Savings
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master, main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
benchmark:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
|
|
14
|
+
- name: Install Rust
|
|
15
|
+
uses: dtolnay/rust-toolchain@stable
|
|
16
|
+
|
|
17
|
+
- name: Build rtk
|
|
18
|
+
run: cargo build --release
|
|
19
|
+
|
|
20
|
+
- name: Install Python tools
|
|
21
|
+
run: |
|
|
22
|
+
pip install ruff pytest
|
|
23
|
+
|
|
24
|
+
- name: Install Go
|
|
25
|
+
uses: actions/setup-go@v5
|
|
26
|
+
with:
|
|
27
|
+
go-version: 'stable'
|
|
28
|
+
|
|
29
|
+
- name: Install Go tools
|
|
30
|
+
run: |
|
|
31
|
+
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
|
32
|
+
|
|
33
|
+
- name: Run benchmark
|
|
34
|
+
run: ./scripts/benchmark.sh
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Release Please
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
pull-requests: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
release-please:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
outputs:
|
|
16
|
+
release_created: ${{ steps.release.outputs.release_created }}
|
|
17
|
+
tag_name: ${{ steps.release.outputs.tag_name }}
|
|
18
|
+
steps:
|
|
19
|
+
- uses: googleapis/release-please-action@v4
|
|
20
|
+
id: release
|
|
21
|
+
with:
|
|
22
|
+
release-type: rust
|
|
23
|
+
package-name: rtk
|
|
24
|
+
|
|
25
|
+
build-release:
|
|
26
|
+
name: Build and upload release assets
|
|
27
|
+
needs: release-please
|
|
28
|
+
if: ${{ needs.release-please.outputs.release_created == 'true' }}
|
|
29
|
+
uses: ./.github/workflows/release.yml
|
|
30
|
+
with:
|
|
31
|
+
tag: ${{ needs.release-please.outputs.tag_name }}
|
|
32
|
+
permissions:
|
|
33
|
+
contents: write
|
|
34
|
+
secrets: inherit
|
|
35
|
+
|
|
36
|
+
update-latest-tag:
|
|
37
|
+
name: Update 'latest' tag
|
|
38
|
+
needs: [release-please, build-release]
|
|
39
|
+
if: ${{ needs.release-please.outputs.release_created == 'true' }}
|
|
40
|
+
runs-on: ubuntu-latest
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@v4
|
|
43
|
+
with:
|
|
44
|
+
fetch-depth: 0
|
|
45
|
+
|
|
46
|
+
- name: Update latest tag
|
|
47
|
+
run: |
|
|
48
|
+
git config user.name "github-actions[bot]"
|
|
49
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
50
|
+
git tag -fa latest -m "Latest stable release (${{ needs.release-please.outputs.tag_name }})"
|
|
51
|
+
git push origin latest --force
|