diff --git a/PureMac/es.lproj/Localizable.strings b/PureMac/es.lproj/Localizable.strings
new file mode 100644
index 0000000..03b7a56
--- /dev/null
+++ b/PureMac/es.lproj/Localizable.strings
@@ -0,0 +1,125 @@
+/* Full Disk Access Banner */
+"Full Disk Access Required" = "Se requiere acceso total al disco";
+"PureMac needs Full Disk Access to scan Trash, Mail, Desktop, Documents, and Homebrew cache." = "PureMac necesita acceso total al disco para analizar la Papelera, Mail, Escritorio, Documentos y la caché de Homebrew.";
+"Open Settings" = "Abrir Ajustes";
+
+/* Top Bar */
+"Macintosh HD" = "Macintosh HD";
+"%@ free" = "%@ libres";
+"Auto-clean: " = "Limpieza automática: ";
+
+/* Sidebar */
+"CLEANING" = "LIMPIEZA";
+"Last cleaned: %@" = "Última limpieza: %@";
+
+/* Smart Scan */
+"Smart Scan" = "Análisis inteligente";
+"Click Scan to start" = "Haz clic en Analizar para empezar";
+"Total" = "Total";
+"Used" = "Usado";
+"Free" = "Libre";
+"Purgeable" = "Purgable";
+"junk found" = "archivos basura encontrados";
+"Your Mac is clean!" = "¡Tu Mac está limpio!";
+"freed up" = "liberados";
+"Cleaning..." = "Limpiando...";
+"Scanning..." = "Analizando...";
+"%lld/%lld items" = "%lld/%lld elementos";
+
+/* Category Detail */
+"All Clean!" = "¡Todo limpio!";
+"No junk files found in this category." = "No se encontraron archivos basura en esta categoría.";
+"Not scanned yet" = "Aún no analizado";
+"Click Scan to analyze this category" = "Haz clic en Analizar para revisar esta categoría";
+"%lld of %lld selected" = "%lld de %lld seleccionados";
+"Select All" = "Seleccionar todo";
+"Deselect All" = "Deseleccionar todo";
+"%lld items" = "%lld elementos";
+
+/* Buttons */
+"Scan" = "Analizar";
+"Re-scan" = "Volver a analizar";
+"Scan Again" = "Analizar de nuevo";
+"Done" = "Listo";
+"Clean (%@)" = "Limpiar (%@)";
+"Clean %lld items (%@)" = "Limpiar %lld elementos (%@)";
+
+/* Settings - Schedule */
+"Schedule" = "Programación";
+"Automatic Cleaning" = "Limpieza automática";
+"Automatically scan and clean your Mac on a schedule" = "Analiza y limpia tu Mac automáticamente según una programación";
+"Scan Interval" = "Intervalo de análisis";
+"Automation" = "Automatización";
+"Auto-clean after scan" = "Limpiar automáticamente tras el análisis";
+"Minimum junk size to trigger clean:" = "Tamaño mínimo de basura para iniciar la limpieza:";
+"50 MB" = "50 MB";
+"100 MB" = "100 MB";
+"250 MB" = "250 MB";
+"500 MB" = "500 MB";
+"1 GB" = "1 GB";
+"Auto-purge purgeable space" = "Purgar automáticamente el espacio purgable";
+"Show notification on completion" = "Mostrar notificación al finalizar";
+"Status" = "Estado";
+"Last run" = "Última ejecución";
+"Next run" = "Próxima ejecución";
+"Never" = "Nunca";
+"Not scheduled" = "Sin programar";
+
+/* Settings - General */
+"General" = "General";
+"App Behavior" = "Comportamiento de la app";
+"Launch at login" = "Abrir al iniciar sesión";
+"Show in Dock" = "Mostrar en el Dock";
+"Show menu bar icon" = "Mostrar ícono en la barra de menús";
+"Safety" = "Seguridad";
+"PureMac will never delete system-critical files. Only caches, logs, temporary files, and user-selected items are removed." = "PureMac nunca eliminará archivos críticos del sistema. Solo se eliminan cachés, registros, archivos temporales y elementos seleccionados por el usuario.";
+
+/* Settings - About */
+"About" = "Acerca de";
+"Version 1.0.0" = "Versión 1.0.0";
+"A free, open-source Mac cleaning utility.\nKeep your Mac fast, clean, and optimized." = "Una utilidad de limpieza para Mac, gratuita y de código abierto.\nMantén tu Mac rápido, limpio y optimizado.";
+"GitHub Repository" = "Repositorio de GitHub";
+"MIT License" = "Licencia MIT";
+
+/* Cleaning Categories */
+"System Junk" = "Basura del sistema";
+"User Cache" = "Caché de usuario";
+"AI Apps" = "Apps de IA";
+"Mail Files" = "Archivos de Mail";
+"Trash Bins" = "Papeleras";
+"Large & Old Files" = "Archivos grandes y antiguos";
+"Purgeable Space" = "Espacio purgable";
+"Xcode Junk" = "Basura de Xcode";
+"Brew Cache" = "Caché de Brew";
+
+/* Category Descriptions */
+"Scan everything at once" = "Analiza todo a la vez";
+"System caches, logs, and temporary files" = "Cachés del sistema, registros y archivos temporales";
+"Application caches and browser data" = "Cachés de aplicaciones y datos del navegador";
+"Logs, caches, and temporary files from local AI apps" = "Registros, cachés y archivos temporales de apps de IA locales";
+"Downloaded mail attachments" = "Adjuntos de correo descargados";
+"Files in your Trash" = "Archivos en tu Papelera";
+"Files over 100 MB or older than 1 year" = "Archivos de más de 100 MB o con más de 1 año";
+"APFS purgeable disk space" = "Espacio purgable de disco APFS";
+"Derived data, archives, and simulators" = "Datos derivados, archivos y simuladores";
+"Homebrew download cache" = "Caché de descargas de Homebrew";
+
+/* Schedule Intervals */
+"Every Hour" = "Cada hora";
+"Every 3 Hours" = "Cada 3 horas";
+"Every 6 Hours" = "Cada 6 horas";
+"Every 12 Hours" = "Cada 12 horas";
+"Daily" = "Diariamente";
+"Weekly" = "Semanalmente";
+"Every 2 Weeks" = "Cada 2 semanas";
+"Monthly" = "Mensualmente";
+
+/* Notifications */
+"Found %@ of junk files." = "Se encontraron %@ de archivos basura.";
+
+/* Node Cache */
+"Node Cache" = "Caché de Node";
+"npm, yarn, and pnpm download caches" = "Cachés de descarga de npm, yarn y pnpm";
+"npm cache" = "caché de npm";
+"yarn classic cache" = "caché de yarn classic";
+"pnpm content-addressable store" = "almacén de contenido direccionable de pnpm";
diff --git a/README.md b/README.md
index c2ee780..eb9089e 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,14 @@
+ English | + Español | + 日本語 | + 简体中文 | + 繁體中文 +
+diff --git a/docs/README.es.md b/docs/README.es.md new file mode 100644 index 0000000..64bf643 --- /dev/null +++ b/docs/README.es.md @@ -0,0 +1,157 @@ +
+
+
+ English | + Español | + 日本語 | + 简体中文 | + 繁體中文 +
+ +
+ Gestor de aplicaciones y limpiador de sistema para macOS, gratuito y de código abierto.
+ Desinstala apps por completo. Encuentra archivos huérfanos. Limpia la basura del sistema.
+ Sin suscripciones. Sin telemetría. Sin recolección de datos.
+
+ Instalación - + Características - + Capturas - + Contribuir +
+ +--- + +## Instalación + +### Homebrew (recomendado) + +```bash +brew update +brew install --cask puremac +``` + +### Descarga directa + +Descarga el `.dmg` más reciente desde [Releases](https://github.com/momenbasel/PureMac/releases/latest), ábrelo y arrastra PureMac a `/Applications`. + +> Firmado y notarizado con Apple Developer ID — se instala sin advertencias de Gatekeeper. + +### Compilar desde el código fuente + +```bash +brew install xcodegen +git clone https://github.com/momenbasel/PureMac.git +cd PureMac +xcodegen generate +xcodebuild -project PureMac.xcodeproj -scheme PureMac -configuration Release -derivedDataPath build build +open build/Build/Products/Release/PureMac.app +``` + +## Características + +### Desinstalador de apps +- Descubre todas las apps instaladas desde `/Applications` y `~/Applications` +- Motor heurístico de búsqueda de archivos con **10 niveles de coincidencia** (bundle ID, nombre de la empresa, entitlements, team identifier, metadatos de Spotlight, descubrimiento de contenedores) +- **3 niveles de sensibilidad**: Estricto (seguro), Mejorado (equilibrado), Profundo (exhaustivo) +- Muestra todos los archivos relacionados: cachés, preferencias, contenedores, registros, archivos de soporte, launch agents +- Protección de apps del sistema: 27 apps de Apple están excluidas de la lista +- Vista maestro-detalle: tabla de apps a la izquierda, archivos descubiertos a la derecha + +### Buscador de archivos huérfanos +- Detecta archivos sobrantes en `~/Library` de apps ya desinstaladas +- Compara el contenido de la Biblioteca con los identificadores de todas las apps instaladas +- Limpieza de archivos huérfanos con un clic + +### Limpiador del sistema +- **Análisis inteligente** — análisis de un clic en todas las categorías +- **Basura del sistema** — cachés del sistema, registros y archivos temporales +- **Caché de usuario** — descubre dinámicamente todos los cachés de apps (sin lista predefinida) +- **Adjuntos de correo** — adjuntos de correo descargados +- **Papeleras** — vacía todas las papeleras +- **Archivos grandes y antiguos** — archivos de más de 100 MB o con más de 1 año +- **Espacio purgable** — detección de espacio purgable APFS +- **Basura de Xcode** — DerivedData, Archives, cachés de simuladores +- **Caché de Brew** — caché de descargas de Homebrew (detecta HOMEBREW_CACHE personalizado) +- **Limpieza programada** — análisis automático en intervalos configurables + +### Experiencia nativa de macOS +- Desarrollado con SwiftUI usando componentes nativos de macOS +- `NavigationSplitView`, `Toggle`, `ProgressView`, `Form`, `GroupBox`, `Table` +- Respeta el modo claro/oscuro del sistema automáticamente +- Sin gradientes personalizados, resplandores ni estilos de app web +- Onboarding de primer arranque con configuración de acceso total al disco + +### Seguridad +- Diálogos de confirmación antes de cualquier operación destructiva +- Prevención de ataques por enlaces simbólicos — resuelve y valida rutas antes de eliminar +- Protección de apps del sistema — las apps de Apple no se pueden desinstalar +- Los archivos grandes y antiguos nunca se seleccionan automáticamente +- Registro estructurado con `os.log` (visible en Consola.app) + +## Capturas + +| Onboarding | Desinstalador de apps | +|---|---| +|  |  | + +| Basura del sistema | Basura de Xcode | +|---|---| +|  |  | + +| Caché de usuario | +|---| +|  | + +## Arquitectura + +``` +PureMac/ + Logic/Scanning/ - Motor heurístico de escaneo, base de ubicaciones, condiciones + Logic/Utilities/ - Registro estructurado + Models/ - Modelos de datos, errores tipados + Services/ - Motor de escaneo, motor de limpieza, programador + ViewModels/ - Estado centralizado de la app + Views/ - Vistas nativas de SwiftUI + Apps/ - Vistas del desinstalador + Cleaning/ - Análisis inteligente y vistas de categorías + Orphans/ - Buscador de huérfanos + Settings/ - Ajustes basados en Form nativo + Components/ - Componentes compartidos +``` + +Componentes clave: +- **AppPathFinder** — motor de coincidencia heurística de 10 niveles para descubrir archivos de apps +- **Locations** — más de 120 rutas de búsqueda del sistema de archivos macOS +- **Conditions** — 25 reglas de coincidencia por app para casos especiales (Xcode, Chrome, VS Code, etc.) +- **AppInfoFetcher** — metadatos de Spotlight + respaldo de Info.plist para descubrir apps +- **Logger** — registro unificado con `os.log` de Apple + +## Contribuir + +Las contribuciones son bienvenidas. Consulta [CONTRIBUTING.md](../CONTRIBUTING.md) para las pautas. + +Áreas donde la ayuda es especialmente bienvenida: +- Filtros predefinidos por tamaño y fecha en las vistas de categoría +- Cobertura de XCTest para AppState y el motor de escaneo +- Localización (es, pt-BR y otros idiomas) +- Diseño del ícono de la app + +## Licencia + +Licencia MIT. Consulta [LICENSE](../LICENSE) para más detalles. diff --git a/docs/README.ja.md b/docs/README.ja.md new file mode 100644 index 0000000..954a5c1 --- /dev/null +++ b/docs/README.ja.md @@ -0,0 +1,157 @@ +
+
+
+ English | + Español | + 日本語 | + 简体中文 | + 繁體中文 +
+ +
+ 無料・オープンソースの macOS アプリマネージャー兼システムクリーナー。
+ アプリを完全にアンインストール。孤立ファイルを検出。システムのゴミを一掃。
+ サブスクリプション、テレメトリ、データ収集は一切なし。
+
+ インストール - + 機能 - + スクリーンショット - + コントリビューション +
+ +--- + +## インストール + +### Homebrew(推奨) + +```bash +brew update +brew install --cask puremac +``` + +### 直接ダウンロード + +[Releases](https://github.com/momenbasel/PureMac/releases/latest) から最新の `.dmg` をダウンロードし、開いて PureMac を `/Applications` にドラッグします。 + +> Apple Developer ID で署名・公証済み — Gatekeeper の警告なしでインストールできます。 + +### ソースからビルド + +```bash +brew install xcodegen +git clone https://github.com/momenbasel/PureMac.git +cd PureMac +xcodegen generate +xcodebuild -project PureMac.xcodeproj -scheme PureMac -configuration Release -derivedDataPath build build +open build/Build/Products/Release/PureMac.app +``` + +## 機能 + +### アプリアンインストーラー +- `/Applications` と `~/Applications` からすべてのインストール済みアプリを検出 +- **10 段階のマッチング**を行うヒューリスティックなファイル検出エンジン(バンドル ID、企業名、エンタイトルメント、チーム識別子、Spotlight メタデータ、コンテナ検出) +- **3 段階の感度**: Strict(安全)、Enhanced(バランス重視)、Deep(徹底) +- 関連するすべてのファイルを表示: キャッシュ、設定、コンテナ、ログ、サポートファイル、ランチエージェント +- システムアプリ保護 — 27 個の Apple 製アプリがアンインストール対象から除外されます +- マスター/ディテールビュー: 左にアプリ一覧、右に検出されたファイル + +### 孤立ファイル検出 +- アンインストール済みアプリが `~/Library` に残した残骸を検出 +- Library の内容を、インストール済みアプリの識別子と照合 +- ワンクリックで孤立ファイルをクリーンアップ + +### システムクリーナー +- **スマートスキャン** — すべてのカテゴリをワンクリックでスキャン +- **システムジャンク** — システムキャッシュ、ログ、一時ファイル +- **ユーザーキャッシュ** — すべてのアプリキャッシュを動的に検出(ハードコーディングされたリストなし) +- **メール添付ファイル** — ダウンロード済みのメール添付 +- **ゴミ箱** — すべてのゴミ箱を空に +- **大容量・古いファイル** — 100 MB を超える、または 1 年以上経過したファイル +- **消去可能領域** — APFS の消去可能ディスク領域を検出 +- **Xcode ジャンク** — DerivedData、Archives、シミュレータキャッシュ +- **Brew キャッシュ** — Homebrew ダウンロードキャッシュ(カスタム HOMEBREW_CACHE も検出) +- **スケジュールクリーニング** — 設定可能な間隔での自動スキャン + +### ネイティブな macOS 体験 +- ネイティブ macOS コンポーネントを使った SwiftUI で実装 +- `NavigationSplitView`、`Toggle`、`ProgressView`、`Form`、`GroupBox`、`Table` +- システムのライト/ダークモードを自動で尊重 +- カスタムグラデーション、グロー、Web アプリ風のスタイリングなし +- 初回起動時にフルディスクアクセスのオンボーディング + +### 安全性 +- 破壊的な操作の前に必ず確認ダイアログを表示 +- シンボリックリンク攻撃の防止 — 削除前にパスを解決・検証 +- システムアプリ保護 — Apple 製アプリはアンインストール不可 +- 大容量・古いファイルは自動選択されません +- `os.log` による構造化ログ(Console.app で閲覧可能) + +## スクリーンショット + +| オンボーディング | アプリアンインストーラー | +|---|---| +|  |  | + +| システムジャンク | Xcode ジャンク | +|---|---| +|  |  | + +| ユーザーキャッシュ | +|---| +|  | + +## アーキテクチャ + +``` +PureMac/ + Logic/Scanning/ - ヒューリスティックなスキャンエンジン、ロケーションデータベース、条件 + Logic/Utilities/ - 構造化ログ + Models/ - データモデル、型付きエラー + Services/ - スキャンエンジン、クリーニングエンジン、スケジューラ + ViewModels/ - アプリ全体の状態管理 + Views/ - ネイティブな SwiftUI ビュー + Apps/ - アプリアンインストーラーのビュー + Cleaning/ - スマートスキャンとカテゴリビュー + Orphans/ - 孤立ファイル検出 + Settings/ - ネイティブ Form ベースの設定画面 + Components/ - 共有コンポーネント +``` + +主要なコンポーネント: +- **AppPathFinder** — アプリ関連ファイルを検出するための 10 段階ヒューリスティックマッチングエンジン +- **Locations** — macOS の 120 以上のファイルシステム検索パス +- **Conditions** — 特殊ケース用の 25 個のアプリ別マッチングルール(Xcode、Chrome、VS Code など) +- **AppInfoFetcher** — アプリ検出のための Spotlight メタデータ + Info.plist フォールバック +- **Logger** — Apple の `os.log` による統合ロギング + +## コントリビューション + +コントリビューションを歓迎します。ガイドラインは [CONTRIBUTING.md](../CONTRIBUTING.md) を参照してください。 + +特に歓迎する分野: +- カテゴリビューでのサイズ/日付フィルターのプリセット +- AppState やスキャンエンジンに対する XCTest のカバレッジ +- ローカライゼーション(その他の言語) +- アプリアイコンのデザイン + +## ライセンス + +MIT ライセンス。詳細は [LICENSE](../LICENSE) を参照してください。 diff --git a/docs/README.zh-Hans.md b/docs/README.zh-Hans.md new file mode 100644 index 0000000..109fde1 --- /dev/null +++ b/docs/README.zh-Hans.md @@ -0,0 +1,157 @@ +
+
+
+ English | + Español | + 日本語 | + 简体中文 | + 繁體中文 +
+ +
+ 免费、开源的 macOS 应用管理器与系统清理工具。
+ 彻底卸载应用。查找孤立文件。清理系统垃圾。
+ 无订阅。无遥测。无数据收集。
+
+
+
+ English | + Español | + 日本語 | + 简体中文 | + 繁體中文 +
+ +
+ 免費、開源的 macOS 應用程式管理與系統清理工具。
+ 徹底解除安裝應用程式。尋找孤立檔案。清理系統垃圾。
+ 無訂閱。無遙測。無資料收集。
+