Repository navigation
feat: add Linux desktop support - #64
Merged
Merged
Conversation
harry0703
force-pushed
the
codex/linux-distro-telemetry
branch
from
September 24, 2026 11:17
cc8269a to
e532496
Compare
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
- 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 #46
harry0703
force-pushed
the
codex/linux-distro-telemetry
branch
from
September 24, 2026 12:15
e532496 to
07368ff
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Validation
pnpm check, Core tests, and all workspace Rust tests passed..deband AppImage bundles and GLIBC compatibility check passed..debinstalled as version 1.1.3 with no missing dynamic libraries; the app reachedmain_window_shownunder Xvfb. Extracted AppImageAppRunalso reachedmain_window_shown. Both packaged binaries require at mostGLIBC_2.34.Release constraints
This PR does not bump the app version, replace existing 1.1.3 assets, or publish an updater release. Signed Linux packages and end-to-end upgrade acceptance require a new patch release. Keep this PR in draft until Harry explicitly approves merging.
PR #62 remains open. Preserving its author's commits here does not itself mark that PR as merged.