# 🔄 Estratégia de Versionamento - SevenX Engine
## 📋 Problema
Usuários baixam a versão mais recente e encontram bugs que ainda não foram testados adequadamente.
## ✅ Solução
Sistema de **duas versões paralelas**:
- **Stable (Estável)** - Testada e confiável
- **Beta** - Novas features, pode ter bugs
---
## 🎯 Estrutura de Branches
### Branch `main` (Stable)
- Versões estáveis e testadas
- Apenas bug fixes críticos
- Releases: `0.2.8`, `0.2.9`, `0.2.10`
- **Recomendado para produção**
### Branch `beta` (Beta)
- Novas features em desenvolvimento
- Pode ter bugs
- Releases: `0.2.11-beta.1`, `0.2.11-beta.2`
- **Para testes e early adopters**
### Branch `dev` (Development)
- Desenvolvimento ativo
- Não publicado no crates.io
- **Apenas para contribuidores**
---
## 📦 Versionamento Semântico
### Formato: `MAJOR.MINOR.PATCH[-PRERELEASE]`
#### Stable
```
0.2.8 - Versão estável
0.2.9 - Versão estável
0.2.10 - Versão estável (atual)
```
#### Beta
```
0.2.11-beta.1 - Primeira beta
0.2.11-beta.2 - Segunda beta (bug fixes)
0.2.11-beta.3 - Terceira beta
0.2.11 - Release estável (após testes)
```
---
## 🔄 Workflow de Release
### 1. Desenvolvimento (Branch `dev`)
```bash
# Desenvolver nova feature
git checkout dev
git add .
git commit -m "feat: Nova feature X"
```
### 2. Beta Release (Branch `beta`)
```bash
# Merge dev -> beta
git checkout beta
git merge dev
# Atualizar versão para beta
# Cargo.toml: version = "0.2.11-beta.1"
# Publicar beta
cargo publish
git tag v0.2.11-beta.1
git push origin beta --tags
```
### 3. Testes Beta (1-2 semanas)
- Usuários testam a versão beta
- Reportam bugs
- Correções são feitas na branch `beta`
### 4. Stable Release (Branch `main`)
```bash
# Após testes bem-sucedidos
git checkout main
git merge beta
# Atualizar versão para stable
# Cargo.toml: version = "0.2.11"
# Publicar stable
cargo publish
git tag v0.2.11
git push origin main --tags
```
---
## 📥 Como Instalar
### Versão Stable (Recomendado)
```toml
[dependencies]
sevenx_engine = "0.2.10" # Última versão estável
```
### Versão Beta (Para Testes)
```toml
[dependencies]
sevenx_engine = "0.2.11-beta.1" # Versão beta
```
### Versão Específica
```toml
[dependencies]
sevenx_engine = "=0.2.10" # Trava na versão exata
```
---
## 🏷️ Tags e Releases
### Tags Stable
```
v0.2.8
v0.2.9
v0.2.10
```
### Tags Beta
```
v0.2.11-beta.1
v0.2.11-beta.2
v0.2.11-beta.3
```
### Criar Tag
```bash
# Tag stable
git tag -a v0.2.11 -m "Release v0.2.11 - Stable"
# Tag beta
git tag -a v0.2.11-beta.1 -m "Release v0.2.11-beta.1"
# Push tags
git push origin --tags
```
---
## 📊 Ciclo de Vida
```
┌─────────────┐
│ DEV │ ← Desenvolvimento ativo
└──────┬──────┘
│ merge
▼
┌─────────────┐
│ BETA │ ← Testes públicos (1-2 semanas)
└──────┬──────┘
│ merge (após testes)
▼
┌─────────────┐
│ MAIN │ ← Versão estável
└─────────────┘
```
---
## 🐛 Hotfix para Stable
Se um bug crítico for encontrado na versão stable:
```bash
# Criar branch de hotfix
git checkout main
git checkout -b hotfix/critical-bug
# Corrigir bug
# ...
# Merge para main
git checkout main
git merge hotfix/critical-bug
# Atualizar versão (patch)
# 0.2.10 -> 0.2.10.1
# Publicar
cargo publish
git tag v0.2.10.1
git push origin main --tags
# Também aplicar em beta e dev
git checkout beta
git cherry-pick <commit-hash>
git checkout dev
git cherry-pick <commit-hash>
```
---
## 📋 Checklist de Release
### Beta Release
- [ ] Todas as features implementadas
- [ ] Código compila sem erros
- [ ] Exemplos funcionam
- [ ] Documentação atualizada
- [ ] CHANGELOG.md atualizado
- [ ] Versão atualizada (X.Y.Z-beta.N)
- [ ] Merge dev -> beta
- [ ] Publicar no crates.io
- [ ] Criar tag
- [ ] Criar GitHub Release (marcar como pre-release)
- [ ] Anunciar no Discord/Reddit
### Stable Release
- [ ] Beta testada por 1-2 semanas
- [ ] Bugs críticos corrigidos
- [ ] Feedback da comunidade incorporado
- [ ] Testes de regressão passando
- [ ] Performance verificada
- [ ] Documentação revisada
- [ ] Versão atualizada (X.Y.Z)
- [ ] Merge beta -> main
- [ ] Publicar no crates.io
- [ ] Criar tag
- [ ] Criar GitHub Release
- [ ] Atualizar README.md
- [ ] Anunciar oficialmente
---
## 📢 Comunicação
### README.md
```markdown
## 📦 Instalação
### Versão Estável (Recomendado)
```toml
[dependencies]
sevenx_engine = "0.2.10"
```
### Versão Beta (Novas Features)
```toml
[dependencies]
sevenx_engine = "0.2.11-beta.1"
```
⚠️ **Nota**: Versões beta podem conter bugs. Use apenas para testes.
```
### GitHub Releases
**Stable Release**
```
✅ v0.2.11 - Stable Release
Esta é uma versão estável e testada.
Recomendada para produção.
## Novidades
- Feature X
- Feature Y
## Bug Fixes
- Corrigido bug Z
```
**Beta Release**
```
🧪 v0.2.11-beta.1 - Beta Release
Esta é uma versão beta para testes.
Pode conter bugs.
## Novas Features
- Feature X (experimental)
- Feature Y (em testes)
## Como Testar
cargo add sevenx_engine@0.2.11-beta.1
## Reportar Bugs
https://github.com/sevenx777-dev/SevenX-Engine/issues
```
---
## 🔍 Monitoramento
### Métricas para Promover Beta -> Stable
- ✅ 0 bugs críticos reportados
- ✅ < 3 bugs menores reportados
- ✅ Feedback positivo da comunidade
- ✅ Pelo menos 50 downloads da beta
- ✅ Testes em 3+ plataformas (Windows, Linux, Android)
- ✅ Performance igual ou melhor que versão anterior
---
## 📅 Cronograma Exemplo
### Semana 1-2: Desenvolvimento
- Implementar features na branch `dev`
- Testes internos
### Semana 3: Beta Release
- Merge dev -> beta
- Publicar 0.2.11-beta.1
- Anunciar para comunidade
### Semana 4-5: Testes Beta
- Comunidade testa
- Corrigir bugs reportados
- Publicar beta.2, beta.3 se necessário
### Semana 6: Stable Release
- Merge beta -> main
- Publicar 0.2.11 stable
- Anunciar oficialmente
---
## 🎯 Benefícios
### Para Usuários
- ✅ Versão stable sempre funcional
- ✅ Opção de testar novas features
- ✅ Menos surpresas desagradáveis
- ✅ Escolha entre estabilidade e features
### Para Desenvolvedores
- ✅ Tempo para testar antes do release
- ✅ Feedback da comunidade
- ✅ Menos pressão para releases perfeitos
- ✅ Ciclo de desenvolvimento mais saudável
---
## 🚀 Implementação Imediata
### 1. Criar Branches
```bash
# Criar branch beta
git checkout -b beta
git push origin beta
# Criar branch dev
git checkout -b dev
git push origin dev
# Voltar para main
git checkout main
```
### 2. Proteger Branches
No GitHub:
- Settings -> Branches -> Add rule
- Branch name pattern: `main`
- ✅ Require pull request reviews
- ✅ Require status checks to pass
### 3. Atualizar Documentação
- README.md com instruções de instalação
- CONTRIBUTING.md com workflow
- GitHub Release templates
### 4. Próximo Release
- Desenvolver 0.2.11 na branch `dev`
- Publicar 0.2.11-beta.1 na branch `beta`
- Após testes, publicar 0.2.11 na branch `main`
---
## 📚 Recursos
- [Semantic Versioning](https://semver.org/)
- [Git Flow](https://nvie.com/posts/a-successful-git-branching-model/)
- [Cargo Pre-releases](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-cratesio)
---
**Versionamento profissional para uma engine profissional! 🚀✨**