sevenx_engine 0.2.11

Engine de jogos 2D/3D completa com suporte Android, física, áudio, partículas, tilemap, UI, eventos e sistema 3D avançado com PBR.
Documentation
# 🔄 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! 🚀✨**