feat(versioning): add semantic versioning and changesets to all apps

Assign version numbers based on app maturity: Calendar/Contacts/Todo (1.0.0),
Chat/Picture (0.3.0), 11 beta apps (0.2.0), Context/Planta/Questions (0.1.0),
Traces (0.0.1). Set up @changesets/cli for future version management.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Till JS 2026-03-19 16:20:18 +01:00
parent bd7129abd1
commit 97d5b13a38
83 changed files with 267 additions and 78 deletions

103
docs/VERSIONING.md Normal file
View file

@ -0,0 +1,103 @@
# Versioning Strategy
## Overview
This monorepo uses **independent semantic versioning** per app, managed by [Changesets](https://github.com/changesets/changesets).
## Semantic Versioning (SemVer)
All apps follow `MAJOR.MINOR.PATCH`:
- **MAJOR** (1.x.x): Breaking changes, major rewrites
- **MINOR** (x.1.x): New features, significant improvements
- **PATCH** (x.x.1): Bug fixes, minor improvements
## Version Tiers
| Tier | Range | Criteria |
|------|-------|----------|
| **Production** | 1.0.0+ | Audit >=85, Tests >=80%, deployed 2+ months |
| **Stable Beta** | 0.3.0+ | Deployed, audit >=75, has tests |
| **Beta** | 0.2.0+ | Functional, deployed or ready to deploy |
| **Early Beta** | 0.1.0+ | Core features working, architecture solid |
| **Alpha** | 0.0.x | Early development, experimental |
## Current Versions
### Apps
| App | Version | Status |
|-----|---------|--------|
| Calendar | 1.0.0 | Production |
| Contacts | 1.0.0 | Production |
| Todo | 1.0.0 | Production |
| Chat | 0.3.0 | Stable Beta |
| Picture | 0.3.0 | Stable Beta |
| Mukke | 0.2.0 | Beta |
| Zitare | 0.2.0 | Beta |
| Clock | 0.2.0 | Beta |
| Nutriphi | 0.2.0 | Beta |
| ManaDeck | 0.2.0 | Beta |
| ManaCore | 0.2.0 | Beta |
| Matrix | 0.2.0 | Beta |
| Photos | 0.2.0 | Beta |
| Skilltree | 0.2.0 | Beta |
| Presi | 0.2.0 | Beta |
| Storage | 0.2.0 | Beta |
| Context | 0.1.0 | Early Beta |
| Planta | 0.1.0 | Early Beta |
| Questions | 0.1.0 | Early Beta |
| Traces | 0.0.1 | Alpha |
### Services
| Service | Version | Status |
|---------|---------|--------|
| mana-core-auth | 1.0.0 | Production |
| mana-search | 0.1.0 | Early Beta |
| mana-crawler | 0.1.0 | Early Beta |
| mana-llm | 0.0.1 | Alpha |
| mana-notify | 0.0.1 | Alpha |
## How to Use
### Creating a Changeset
After making changes, run:
```bash
pnpm changeset
```
This prompts you to:
1. Select which packages changed
2. Choose bump type (major/minor/patch)
3. Write a summary of changes
### Applying Version Bumps
```bash
pnpm version:bump
```
This reads pending changesets, bumps versions, and updates CHANGELOGs.
### Checking Status
```bash
pnpm version:status
```
Shows pending changesets and which packages will be bumped.
## Mobile App Versioning
Mobile apps (Expo) use EAS Build with `appVersionSource: "remote"` and `autoIncrement: true` for production builds. The `version` in app.json matches the package.json version, while buildNumber/versionCode are managed by EAS.
## Graduation Criteria
To move up a version tier:
- **Alpha -> Early Beta (0.1.0)**: Core features implemented, good architecture
- **Early Beta -> Beta (0.2.0)**: Deployed or ready, audit >55
- **Beta -> Stable Beta (0.3.0)**: Deployed, audit >=75, has tests
- **Stable Beta -> Production (1.0.0)**: Audit >=85, tests >=80%, deployed 2+ months, zero critical bugs for 1 month