Repository navigation
Add Linux X11 runtime and Studio Standalone preview - #160
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d08cd3a1e8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| #elseif os(Linux) | ||
| UIClipboard.setString(value) | ||
| return UIClipboard.getString() == value |
There was a problem hiding this comment.
Use the desktop clipboard on Linux
On Linux, UIClipboard falls through to its process-local fallbackString implementation (Sources/AdaUI/CoreUI/UIClipboard.swift:70-71,96-97). Consequently, this set/get round trip always reports success without updating the X11/Wayland clipboard, so actions such as Copy Path cannot be pasted into another application and external clipboard contents cannot be read by Studio. Implement a real Linux clipboard bridge or return false rather than claiming success.
Useful? React with 👍 / 👎.
| #elseif os(Linux) | ||
| self.selectedRunDestination = selectedRunDestination.flatMap { EditorRunDestination.availableCases.contains($0) ? $0 : nil } ?? .linux |
There was a problem hiding this comment.
Enable project watching for the Linux editor
When this new Linux Studio path is used, EditorView calls startProjectFileWatching(), but that method's entire implementation remains compiled only under #if os(macOS) in EditorProjectFileWatcher.swift:112-138. Linux therefore never installs the newly added inotify watcher, so externally created or renamed files do not refresh the navigator, source-control state, open documents, or AdaScript hot reload. Include Linux in that platform gate.
Useful? React with 👍 / 👎.
| if event.mask & UInt32(IN_ISDIR) != 0, event.mask & UInt32(IN_CREATE | IN_MOVED_TO) != 0 { | ||
| try? add(path, options: .defaultDirectoryWatchOptions, fd: fd, watched: &state.watched) |
There was a problem hiding this comment.
Watch descendants of directories moved into the tree
When an existing directory tree is moved atomically into a watched root, this handler adds a watch only for the top-level moved directory; inotify watches are not recursive. Subsequent edits inside descendants that already existed at move time therefore emit no callbacks, violating FSWatch's recursive-directory contract and leaving hot reload or project refresh stale after common directory-swap operations. Enumerate and add watches for the moved directory's descendants as start() does.
Useful? React with 👍 / 👎.
Linux still uses a placeholder application/window backend, and Studio has no Linux run destination or native file picker. This adds an initial X11/XWayland runtime and a relocatable Linux Studio Standalone preview.
Validation
--testing-library swift-testing --no-parallel(distribution, Linux SDK/destination, UTF-8, localization, scene scripts, hot reload and input). The initial SwiftPM post-build test invocation stalled under WSL and was stopped; the direct serial run completed successfully. This is not a claim that the parallel or complete editor suite passes.Preview boundaries
X11/XWayland only, primary display scale 1. Hardware Vulkan is unverified. UnfoldTheWorld's inline viewport Play stays static; the top-level Run window executes its scripts. Skeletal Garden crashes in a Mesa llvmpipe worker. Native Wayland, desktop service/export parity and Linux MCP HTTP listening remain incomplete. The full engine test suite has not been run.
Current main already contains the compiler UTF-8/CRLF fixes, bundled Gravity source and navigation enum portability fix; this change preserves those implementations. Unrelated local work is excluded.