# Setup del Ambiente de Desarrollo (macOS)

## Prerrequisitos Detectados y Verificados

Este documento registra el estado del ambiente al momento de la instalación inicial (2026-06-14) en Apple Silicon (M1/M2/M3).

### Resultado del Setup Automático

| Herramienta | Estado | Versión | Ruta |
|---|---|---|---|
| Homebrew | Ya existía | 5.1.13 | `/opt/homebrew/bin/brew` |
| Python 3.11 | **Instalado** via brew | 3.11.15 | `/opt/homebrew/bin/python3.11` |
| Node.js | Ya existía | v25.9.0 | — |
| Git | Ya existía | 2.54.0 | — |
| Claude Code CLI | Ya existía | 2.1.158 | — |
| VS Code CLI | Ya existía | 1.123.0 | — |

> Python 3.11 se instaló porque el sistema tenía Python 3.14 pero el proyecto requiere específicamente 3.11 para reproducibilidad.

---

## Instalación Manual (si se hace desde cero)

### 1. Homebrew (Apple Silicon)

```bash
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
```

### 2. Python 3.11

```bash
brew install python@3.11
python3.11 --version  # debe mostrar Python 3.11.x
```

### 3. Node.js (si no existe)

```bash
brew install node
node --version  # debe ser v18+
```

### 4. Claude Code CLI (si no existe)

```bash
npm install -g @anthropic-ai/claude-code
claude --version
```

### 5. Git (generalmente ya viene en macOS con Xcode Tools)

```bash
brew install git
git --version
```

### 6. VS Code CLI

Abrir VS Code → `Cmd+Shift+P` → "Shell Command: Install 'code' command in PATH"

---

## Virtualenv del Proyecto

```bash
cd swift-converter
python3.11 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```

Para verificar que el entorno está activo:
```bash
which python  # debe mostrar .../venv/bin/python
python --version  # debe mostrar Python 3.11.x
```

---

## Nota sobre bcrypt

`passlib==1.7.4` es incompatible con `bcrypt>=5.0`. El proyecto fija `bcrypt==4.0.1` en `requirements.txt` para evitar el error:

```
ValueError: password cannot be longer than 72 bytes
```

Si se actualiza passlib a una versión que soporte bcrypt 5.x, se puede remover la restricción.
