# Kotej Comparador de ficheros, carpetas y **artefactos** (ZIP/JAR/EAR/WAR) para macOS. Ligero, sin dependencias externas y con el motor aislado del interfaz. ## Qué lo diferencia - **Los archivos son carpetas.** Un JAR, un EAR o un WAR se abren y comparan como si fueran directorios, **incluido anidado** (EAR → JAR → clases). - **Comparación semántica.** Dos JSON o dos XML que significan lo mismo no se marcan como distintos aunque cambie el orden de claves, los atributos o el formato. Y puedes exigir byte a byte cuando lo necesites. - **Rápido por diseño.** La comparación es por niveles: el directorio central de un ZIP ya trae CRC32 y tamaño de cada entrada, así que **dos JAR idénticos se resuelven sin descomprimir nada**. Solo se lee el contenido que hace falta. ## Modos de comparación | Modo | Cuándo | |---|---| | **Byte a byte** | Exactitud total; cualquier bit distinto cuenta | | **Texto** | Tolera fin de línea, espacios finales, mayúsculas o líneas en blanco (configurable) | | **Semántica** | JSON/XML equivalentes canónicamente, aunque los bytes difieran | Por defecto cada fichero usa el modo que le corresponde según su tipo (JSON/XML → semántica, texto → texto, resto → binaria). ## Integración con Finder Con la app instalada, activa la extensión en **Ajustes del Sistema → General → Elementos de inicio y extensiones → Extensiones de Finder → Kotej**. Después, en el menú contextual del Finder: - Selecciona **dos** elementos → *Comparar los 2 elementos con Kotej* - O selecciona uno → *Seleccionar para comparar*, y en otro → *Comparar con “…”* También responde a `kotej://compare?left=/ruta/a&right=/ruta/b`, que abre la comparación en una pestaña. ## Pestañas Cada pestaña es una comparación independiente, con su propio estado y opciones. `⌘T` abre una, `⌘W` la cierra. Una comparación que llega desde el Finder reutiliza la pestaña actual si está vacía, y si no abre otra: nunca pisa lo que estabas comparando. ## Estado - ✅ **Motor** (`KotejEngine`): lector ZIP propio, escaneo de árboles, archivos anidados, comparación por niveles, comparadores binario/texto/JSON/XML y diff de líneas. - ✅ **App** SwiftUI: **pestañas** (varias comparaciones en una ventana), comparación vacía con arrastrar y soltar, árbol side-by-side, filtro "solo diferencias", diff de fichero y resumen. - ✅ **Idiomas**: sigue el del sistema, con **inglés y español** incluidos. - ✅ **Extensión de Finder**. - ⏳ Licencia por decidir; CLI para CI pendiente. ## Desarrollo ```bash swift test ```