Repository navigation
Conversation
Phase 1 scaffold: Platform trait implementation, filesystem cleanup rules, project-artifact rules activation, and Tauri Linux configuration. Platform implementation (mangodisk-platform): - Linux module with Platform trait: volumes (/proc/mounts + statvfs), directories (XDG base dirs), inventory (/proc/[pid]/comm + /etc/os-release), process control (libc::kill), application directories - Dependencies: libc 0.2, walkdir 2 - Removed compile_error! gate in current.rs Core adaptations (mangodisk-core): - Added Linux variant to PlatformConstraint, SourcePlatform, SystemMaintenancePlatform, SystemSettingsPlatform enums - Added Linux branches to all match expressions across 12+ files - Added CONTROLLED_ENV_ALLOWLIST for Linux (HOME, TMPDIR, XDG_*) - MAX_PARALLEL_DELETE_WORKERS set to 4 for Linux - project_artifact_schema: SUPPORTED_PLATFORMS now includes "linux" - Tests adapted for empty DEFINITIONS on Linux with early returns Filesystem cleanup rules (28 new TOML files): - 6 system rules: temp, crash-dumps, thumbnails, dns-cache, font-cache, gtk-icon-cache - 22 application rules: Chrome, Firefox, VS Code, Slack, Discord, Spotify, Electron, JetBrains, Docker, pip, npm, Yarn, Cargo, Gradle, Maven, GTK-doc, Zoom, Blender, Minecraft, GIMP, Wine Project-artifact rules: - Added "linux" to platforms for all 30 cross-platform rules (cocoapods remains macOS-only) Configuration: - tauri.linux.conf.json: custom decorations, deb + appimage bundles All 31 project-artifact rules validated at build time by build.rs. Validation: cargo check OK, 619 Rust tests pass, 0 failures
Phase 2 - Platform trait native implementations: - file_has_allocated_content: lseek(SEEK_DATA) for sparse file detection - directory_entry_identities: stat() for inode/device identity batch - fast_direct_physical_directories: d_type from getdents64 Phase 3 - PrivacyPlatform: - discover_privacy_sources: 6 Chromium browsers + Firefox with profile enumeration (history, cookies, cache, sessions, storage databases) - clear_system_privacy_trace: shell history (.bash_history, .zsh_history, fish_history) and recent documents (XDG recently-used.xbel) Phase 3 - StartupPlatform: - scan_startup_sources: XDG autostart desktop files + systemd user services - Parses .desktop Exec/Name/Hidden fields and systemd Description/WantedBy Phase 5 - Frontend: - OperatingSystemService.isLinux() method - SystemSettingsPlatform and SystemMaintenancePlatform types: added 'linux' - AiContext.platform: added 'linux' - ApplicationUninstallPlatform: added 'linuxPackage' - system-settings-mode.ts: added empty linux entries for SMART_EXTRAS and FOCUSED_EXTRAS - Fixed 3 binary ternaries (isWindows ? 'windows' : 'macos') to include Linux in cleanup, privacy, and startup pages - Added Linux test case to operating-system-service.test.ts Validation: cargo check OK, 619 Rust tests pass, frontend builds clean
…nd Ollama model discovery
…3#46) - clippy --workspace --all-targets -- -D warnings and rustfmt are green on Linux using narrow positive cfg gates; macOS/Windows paths are unchanged - run cross-platform-check on ubuntu-24.04 and install the WebKitGTK 4.1, tray indicator, rsvg, and patchelf system dependencies - bundle Linux releases as AppImage so the tauri updater self-update works - prune large-file and duplicate discovery below snap, flatpak, and unwritable system trees (user scope, no elevation); unwritable detection ignores nonexistent synthetic roots used by storage tests - report the Linux package platform in uninstall records - document Linux filesystem-rule constraints in rules/README.md Closes harry0703#46
|
Thanks a lot for the contribution and for all the work you’ve put into bringing Linux support to MangoDisk. I really appreciate the effort behind this PR. I’m still doing a detailed review and testing the implementation on Ubuntu. I’ve already found quite a few issues and areas that need further adjustment, and I’m working through them one by one. At the same time, I’m also evaluating the overall feasibility of Linux support in MangoDisk, including how well it fits with the current architecture, cleanup safety, packaging and distribution, and the long-term maintenance cost. Since this is a fairly large change, I’d like to spend more time testing and refining it before deciding on the next steps. Thanks again for the contribution and for helping improve MangoDisk. |
|
@harry0703 Ok, j'attends tes analyses. Les correctifs, tu pourras me les lister, je les implémenterai. |
|
Merci beaucoup pour votre contribution et pour tout le travail réalisé afin d’apporter la prise en charge de Linux à MangoDisk. Votre contribution a été intégrée à la PR #64, qui a été fusionnée dans |
|
Cette PR a été remplacée par la PR #64, qui a été fusionnée dans main. |
Add Linux support — résolution de #46
Bilan
MangoDisk dispose désormais d'un support Linux complet, ciblé et qualifié.
Cible choisie (explicite) : Ubuntu 24.04 LTS — architecture x86_64. Distribution : AppImage (l'issue demandait « AppImage or Flatpak » ; l'AppImage rend aussi opérationnelle la mise à jour automatique via l'updater Tauri, seul format supporté côté Linux). Le support arm64 n'est pas prévu à ce stade ; les autres distributions glibc-compatibles restent « compatibles par accident », sans engagement.
Ce qui est inclus
large-fileetduplicatesopérationnels (88 tests verts dédiés).filesystemLinux — toutessafe,lifecycle = verified, exécutiondeleteMatchingContentsuniquement (aucunedeleteWholeRoot), racines limitées à$HOMEet au/tmpde l'utilisateur, aucune racine système. La suppression reste assujettie aux vérifications propriétaire/snapshot du moteur. README des règles mis à jour (ciblelinux+ contraintes)./snap,/var/lib/snapd) et flatpak (/var/lib/flatpak) — fichiers dupliqués en lecture seule non proposés comme récupérables — ainsi que les arborescences non inscriptibles par l'utilisateur courant (principe sans élévation).cross-platform-checkétendu à ubuntu-24.04 (WebKitGTK 4.1, libayatana/libappindicator, rsvg, ssl, patchelf) ; packaging AppImage (createUpdaterArtifactsactif).clippy --workspace --all-targets -- -D warningsetrustfmtverts sur Linux, uniquement via des gatescfgpositifs étroits → les chemins macOS/Windows sont compilatoirement et sémantiquement inchangés.Plan d'implémentation
Limites volontaires (choix assumés, fail-closed)
UnsupportedCommandHost). Implémenter cela nécessite une frontière privilégiée (pkexec/polkit) et des commandes par gestionnaire — à traiter dans un PR dédié..debni Flatpak à ce stade).Limites involontaires (environnement de validation)
cfgpositifs stricts et une revue de diff ; à confirmer par la CI.cross-platform-checkétendue mais non encore exécutée sur GitHub Actions (compilations macOS/Windows + build AppImage à valider par les checks du PR).MANGODISK_ANALYSIS_ROOT/MANGODISK_DUPLICATE_BENCHMARK_ROOT) non exécutés — tests paramétrés, non mesurés.md-status-display-componentnotamment) : pré-existant et externe à ce changement ; la suite passe en réexécution et en exécution isolée.Validation exécutée (Linux, rdv local Ubuntu 24.04)
clippy --workspace --all-targets -- -D warnings: vertcargo fmt --check: propremangodisk-core617 passed (610+7) ·mangodisk-platform55 passed ·mangodisk-cli15 passed · aucune régression/ 15 tests de schémavalidésMaintenance
Je propose d'assurer la maintenance du support Linux : nouvelles versions d'Ubuntu LTS, évolution des gestionnaires de paquets, dérive des règles de nettoyage, régressions remontées en issues, suivi de la CI. Périmètre proposé : domaine
platformLinux, règlesfilesystem, inventaire de paquets, contrôles cross-plateforme. Décisions d'architecture globale : mainteneur.Closes #46