mirror of
https://github.com/NeuralNomadsAI/CodeNomad.git
synced 2026-11-08 23:18:27 +00:00
The Tauri AppImage showed a black window on up-to-date Linux systems (#1136: Arch, sway, AMD, Mesa 26.2). WebKit aborted with "Could not create surfaceless EGL display: EGL_BAD_ALLOC", and no WebKit or GDK variable helped. Tauri CLI 2.11.5's linuxdeploy copied the build runner's display stack into the image: Ubuntu 24.04's libwayland-client, -cursor, -egl and -server, libxkbcommon, libxcb-render and -shm, libXau and libXdmcp. AppRun puts usr/lib first on the library path, so the host's Mesa EGL loaded the stale libwayland-client and failed even on the surfaceless platform. This is tauri-apps/tauri#15976, fixed upstream in CLI 2.12.1. On a current Arch userland (Mesa 26.2.5, wayland 1.26), `eglinfo -p surfaceless` initializes with the host libraries and fails with the 1.0.0 image's bundled ones, or with its libwayland-client alone. Packaging: - The Tauri CLI moves to ^2.12.4. - The Linux job defines APPIMAGE_HOST_LIBRARIES once (wayland, xkbcommon, xcb, X11, Xau, Xdmcp, EGL, GL, gbm, drm). It is passed to linuxdeploy as LINUXDEPLOY_EXCLUDED_LIBRARIES, because 2.12.4's own excludelist still deploys GDK's display libraries. - The AppImage verification step rejects an image that bundles any of them. Runtime, because the 2.12 GTK hook leaves GDK_BACKEND unset and exports mount-scoped module paths: - main() sets GDK_BACKEND=x11,wayland unless the session sets it. This keeps the XWayland windowing that the F11 X11 key grab needs, with a Wayland fallback. - appimage_environment.rs drops variables inside the mount (byte-wise, plus the lossy spelling of the Node-serialized shell snapshot) and the mount's path-list entries. GIO_MODULE_DIR, unlike GIO_EXTRA_MODULES, replaces the host's module directory. It applies to children that outlive the mount: the backend (and through it the shared OpenCode service), the editors CodeNomad opens, and link handlers. - Links open through external_open.rs. On Linux it uses the opener plugin's launchers with the host environment, detached; elsewhere it delegates to the plugin. The renderer reaches it through a new open_external_url command (http, https, mailto). The windows hold that command instead of opener:allow-open-url. - The plugin's injected click handler is off. Its replacement, lib/native/external-link-clicks.ts, takes the same decisions in the application and Preferences windows and in trusted same-origin SideCar documents. Opaque previews and panel extensions stay fenced. - The unused @tauri-apps/plugin-opener npm dependency is dropped. Validation: - Ubuntu 24.04: the Linux crate compiles, and the appimage_* tests (path lists, non-UTF-8 entries and mounts, lossy snapshot) and the capability test pass. - The inventory check accepts GTK, WebKit and GLib, and rejects flat, multiarch, dangling-symlink and GLES copies. - Browser tests drive the real link handler (target="_blank", Ctrl, Shift, nested, mailto; plain, Alt, tel and custom schemes untouched) and the real SideCarView and preview frames in a stubbed Tauri window. Each fails without its fix. - The UI own-tsconfig and root typechecks pass. |
||
|---|---|---|
| .. | ||
| architecture.md | ||
| BROWSER_AUTOMATION.md | ||
| BROWSER_DEVICE_EMULATION.md | ||
| CACHE_REFRESH_CONVENTIONS.md | ||
| COMPOSER.md | ||
| DESKTOP_DATA_PROFILES.md | ||
| FILES_PANEL.md | ||
| HOTKEYS.md | ||
| INDEX.md | ||
| MISSIONS.md | ||
| MISSIONS_AUTONOMY.md | ||
| MISSIONS_RECURRING.md | ||
| MISSIONS_RECURRING_QUALIFICATION.md | ||
| NATIVE_INTERRUPTION_UX.md | ||
| OPENCODE_COMPATIBILITY.md | ||
| OPENCODE_RUNTIME_SETUP.md | ||
| PALETTE_SOURCES.md | ||
| PANEL_EXTENSIONS.md | ||
| PLUGIN_CONTROLS.md | ||
| PROJECTS.md | ||
| PROVIDER_ACCOUNTS.md | ||
| REMOTE_CONTROL.md | ||
| RUNTIME_MAINTENANCE.md | ||
| SESSION_ENVIRONMENT.md | ||
| SESSION_HISTORY_NAVIGATION.md | ||
| SESSION_HISTORY_QUERIES.md | ||
| SESSION_PRUNING_RPC.md | ||
| SESSION_PRUNING_SAFETY.md | ||
| SESSION_RECOVERY.md | ||
| SETTINGS.md | ||
| solidjs-llms.txt | ||
| TAURI_UPDATER.md | ||
| TEXT_DISPLAY_BOUNDS.md | ||
| TRANSCRIPT.md | ||
| UI_CONVENTIONS.md | ||
| UI_SHELL.md | ||
| USER_HELP.md | ||
| WORKTREE_SESSION_PLACEMENT.md | ||