|
1 | 1 | # /beta - Create Beta Release |
2 | 2 |
|
3 | | -Create a new beta release for the current version with automated quality checks and tagging. |
| 3 | +Create a new beta release using the automated justfile target with quality checks and tagging. |
4 | 4 |
|
5 | 5 | ## Usage |
6 | 6 | ``` |
7 | | -/beta [version] |
| 7 | +/beta <version> |
8 | 8 | ``` |
9 | 9 |
|
10 | 10 | **Parameters:** |
11 | | -- `version` (optional): Beta version like `v0.13.0b4`. If not provided, auto-increments from latest beta tag. |
| 11 | +- `version` (required): Beta version like `v0.13.2b1` or `v0.13.2rc1` |
12 | 12 |
|
13 | 13 | ## Implementation |
14 | 14 |
|
15 | 15 | You are an expert release manager for the Basic Memory project. When the user runs `/beta`, execute the following steps: |
16 | 16 |
|
17 | | -### Step 1: Pre-flight Checks |
18 | | -1. Check current git status for uncommitted changes |
19 | | -2. Verify we're on the `main` branch |
20 | | -3. Get the latest beta tag to determine next version if not provided |
21 | | - |
22 | | -### Step 2: Quality Assurance |
23 | | -1. Run `just check` to ensure code quality |
24 | | -2. If any checks fail, report issues and stop |
25 | | -3. Run `just update-deps` to ensure latest dependencies |
26 | | -4. Commit any dependency updates with proper message |
27 | | - |
28 | | -### Step 3: Version Determination |
29 | | -If version not provided: |
30 | | -1. Get latest git tags with `git tag -l "v*b*" --sort=-version:refname | head -1` |
31 | | -2. Auto-increment beta number (e.g., `v0.13.0b2` → `v0.13.0b3`) |
32 | | -3. Confirm version with user before proceeding |
33 | | - |
34 | | -### Step 4: Release Creation |
35 | | -1. Commit any remaining changes |
36 | | -2. Push to main: `git push origin main` |
37 | | -3. Create tag: `git tag {version}` |
38 | | -4. Push tag: `git push origin {version}` |
39 | | - |
40 | | -### Step 5: Monitor Release |
| 17 | +### Step 1: Pre-flight Validation |
| 18 | +1. Verify version format matches `v\d+\.\d+\.\d+(b\d+|rc\d+)` pattern |
| 19 | +2. Check current git status for uncommitted changes |
| 20 | +3. Verify we're on the `main` branch |
| 21 | +4. Confirm no existing tag with this version |
| 22 | + |
| 23 | +### Step 2: Use Justfile Automation |
| 24 | +Execute the automated beta release process: |
| 25 | +```bash |
| 26 | +just beta <version> |
| 27 | +``` |
| 28 | + |
| 29 | +The justfile target handles: |
| 30 | +- ✅ Beta version format validation (supports b1, b2, rc1, etc.) |
| 31 | +- ✅ Git status and branch checks |
| 32 | +- ✅ Quality checks (`just check` - lint, format, type-check, tests) |
| 33 | +- ✅ Version update in `src/basic_memory/__init__.py` |
| 34 | +- ✅ Automatic commit with proper message |
| 35 | +- ✅ Tag creation and pushing to GitHub |
| 36 | +- ✅ Beta release workflow trigger |
| 37 | + |
| 38 | +### Step 3: Monitor Beta Release |
41 | 39 | 1. Check GitHub Actions workflow starts successfully |
42 | | -2. Provide installation instructions for beta |
43 | | -3. Report status and next steps |
| 40 | +2. Monitor workflow at: https://github.com/basicmachines-co/basic-memory/actions |
| 41 | +3. Verify PyPI pre-release publication |
| 42 | +4. Test beta installation: `uv tool install basic-memory --pre` |
| 43 | + |
| 44 | +### Step 4: Beta Testing Instructions |
| 45 | +Provide users with beta testing instructions: |
| 46 | + |
| 47 | +```bash |
| 48 | +# Install/upgrade to beta |
| 49 | +uv tool install basic-memory --pre |
| 50 | + |
| 51 | +# Or upgrade existing installation |
| 52 | +uv tool upgrade basic-memory --prerelease=allow |
| 53 | +``` |
| 54 | + |
| 55 | +## Version Guidelines |
| 56 | +- **First beta**: `v0.13.2b1` |
| 57 | +- **Subsequent betas**: `v0.13.2b2`, `v0.13.2b3`, etc. |
| 58 | +- **Release candidates**: `v0.13.2rc1`, `v0.13.2rc2`, etc. |
| 59 | +- **Final release**: `v0.13.2` (use `/release` command) |
44 | 60 |
|
45 | 61 | ## Error Handling |
46 | | -- If quality checks fail, provide specific fix instructions |
47 | | -- If git operations fail, provide manual recovery steps |
48 | | -- If GitHub Actions fail, provide debugging guidance |
| 62 | +- If `just beta` fails, examine the error output for specific issues |
| 63 | +- If quality checks fail, fix issues and retry |
| 64 | +- If version format is invalid, correct and retry |
| 65 | +- If tag already exists, increment version number |
49 | 66 |
|
50 | 67 | ## Success Output |
51 | 68 | ``` |
52 | | -✅ Beta Release v0.13.0b4 Created Successfully! |
| 69 | +✅ Beta Release v0.13.2b1 Created Successfully! |
53 | 70 |
|
54 | | -🏷️ Tag: v0.13.0b4 |
| 71 | +🏷️ Tag: v0.13.2b1 |
55 | 72 | 🚀 GitHub Actions: Running |
56 | | -📦 PyPI: Will be available in ~5 minutes |
| 73 | +📦 PyPI: Will be available in ~5 minutes as pre-release |
57 | 74 |
|
58 | | -Install with: |
59 | | -uv tool upgrade basic-memory --prerelease=allow |
| 75 | +Install/test with: |
| 76 | +uv tool install basic-memory --pre |
60 | 77 |
|
61 | 78 | Monitor release: https://github.com/basicmachines-co/basic-memory/actions |
62 | 79 | ``` |
63 | 80 |
|
| 81 | +## Beta Testing Workflow |
| 82 | +1. **Create beta**: Use `/beta v0.13.2b1` |
| 83 | +2. **Test features**: Install and validate new functionality |
| 84 | +3. **Fix issues**: Address bugs found during testing |
| 85 | +4. **Iterate**: Create `v0.13.2b2` if needed |
| 86 | +5. **Release candidate**: Create `v0.13.2rc1` when stable |
| 87 | +6. **Final release**: Use `/release v0.13.2` when ready |
| 88 | + |
64 | 89 | ## Context |
65 | | -- Use the existing justfile targets (`just check`, `just update-deps`) |
66 | | -- Follow semantic versioning for beta releases |
67 | | -- Maintain release notes in CHANGELOG.md |
68 | | -- Use conventional commit messages |
69 | | -- Leverage uv-dynamic-versioning for version management |
| 90 | +- Beta releases are pre-releases for testing new features |
| 91 | +- Automatically published to PyPI with pre-release flag |
| 92 | +- Uses the automated justfile target for consistency |
| 93 | +- Version is automatically updated in `__init__.py` |
| 94 | +- Ideal for validating changes before stable release |
| 95 | +- Supports both beta (b1, b2) and release candidate (rc1, rc2) versions |
0 commit comments