Repository navigation
feat(linux): run inside the Flatpak sandbox and update Avalonia to 12.1.4 - #481
Merged
Merged
Conversation
The override command is shown in its own selectable block next to a Copy command button, in both the error dialog and the recent-folder dialog. Terminal, CLI and MCP messages keep the inline command.
Builds with project-load timing append the measured durations to the window title after the load completes, which made the unavailable-folder test race with that update.
A standard-mode registration is flatpak run <app-id> mcp --root <path>, five arguments, but the parser required six, so an existing Claude Code or Codex entry in standard mode was never recognized as DevProjex.
The sandbox PATH never contains ~/.local/bin, so every launch reported the command as missing from PATH. Inside Flatpak the profile line DevProjex writes now counts as evidence, and the MCP connection no longer offers PATH setup because clients start the server through flatpak run.
The Flatpak access message ran before the reparse-root rule, so a symbolic link root suggested a flatpak override instead of opening the target, and the failure was not recorded.
Both tests wrote sessions dated 2026-09-20 under a 30-day age limit and read the system clock, so after 2026-10-20 every session expired by age and the count-limit test saw none. The assertions are unchanged.
When a client CLI could not run in the sandbox, the dialog asked the user to run the registration command while the clipboard held the plain client launch command, so pasting started the client without DevProjex registered.
An editor installed from Flathub sets FLATPAK_ID and /.flatpak-info for every process it starts, so DevProjex run from npm or a release archive in its terminal wrote flatpak run <editor-id> into client configurations and the terminal shim. Detection now also requires the executable to run from the application prefix, and the result is computed once per process.
The cd path used double quotes while the arguments used single quotes; interactive bash expands '!' inside double quotes, so a pasted command broke for folder names containing it. The GUI smoke check now expects the registration command the manual setup dialog shows.
Closing a new window before the launching open command reached it failed that command at random, so the check now waits for the printed project. Terminal setup accepts both a first setup and a reinstall confirmation, because a configured command now reports as set up inside the sandbox.
The MCP server is still running and appends to its journal; File.ReadLines denies concurrent writers, so on Windows the read failed whenever it met an append. The journal reader in the product already opens the file with read-write sharing.
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.
DevProjex runs inside a Flatpak sandbox the same way it runs everywhere else. Every Flatpak-specific path is behind one detector (
Kernel/FlatpakEnvironment.cs: Linux,FLATPAK_IDand/.flatpak-info). Windows, Store, WinGet, macOS, AppImage, tar.gz, npm, NuGet and container builds behave exactly as before, and byte-level snapshot tests pin that. This PR also updates Avalonia from 12.1.3 to 12.1.4.Runtime behavior inside Flatpak
~/.local/bin/devprojexshim and every copyable command useflatpak run io.github.Avazbek22.DevProjex …instead of the internal/app/...path. Relaunches inside the sandbox keep using the internal path.claude mcp add …/codex mcp add …command, and the status says it could not be verified. DevProjex never writes~/.claude.jsondirectly.--filesystem=home, nothost.flatpak override --user --filesystem=…command in the GUI, TUI, CLI and MCP. The desktop dialogs show the command in its own selectable block with a Copy command button.Documents.GetHostPaths. A command for an agent is never built from a/run/user/<uid>/doc/...path.flatpak-spawn --hostand noorg.freedesktop.Flatpakaccess.flatpak runlaunches: registry records get a unique id because each launch has its own PID namespace. The desktop control socket lives in$XDG_RUNTIME_DIR/app/<app-id>.WM_CLASSset to the app id. Native Wayland stays off: it is still experimental in Avalonia 12.1.doctorshow one environment line: Flatpak, file access, bundled git version, data folder, client launch command.Docs/Git-Safety.md) is unchanged. A private clone that cannot authenticate from the sandbox fails quickly with a hint to open an already cloned folder.Packaging
Packaging/Linux/flatpak/io.github.Avazbek22.DevProjex.yml:dotnet10SDK extension, fully offline build;vendored-grammars.lock.json.nuget-sources.jsonregeneration with the officialflatpak-dotnet-generator(x86_64 and aarch64), offline publish, and asmoke.shthat exercises the installed app.flatpak-build.yml:release-candidate.ymland follows the packaging tier policy;Docs/Installation.md,Docs/McpServer.md,Docs/Release-Channels.mdandPackaging/Linux/README.md.Verified locally on a real Flatpak (x86_64, WSL Ubuntu 24.04)
flatpak-builder-lintreports onlyfinish-args-home-filesystem-access, which needs a Flathub exception at submission time.flatpak run: clean stdout,get_tree/search_project/get_filefrom a real client;flatpak override;Not verified yet
GetHostPathsagainst portal v5, and the native folder picker. Both need a full desktop session.Tests
New unit, UI and process tests cover:
shfor every generated command;