Repository navigation
Cross-platform impl (P2 Linux-X11 + P3 macOS) + README/release-notes/docs overhaul - #15
Merged
Merged
Conversation
Engine/platform boundary is now three traits (Injector/Context/Hotkey) with per-OS *_impl modules; the service main loop stays platform-neutral and remains an embedded thread, not a daemon. - platform/mod.rs: os()/session() detection, status_json() for the GUI (wayland_degraded / no_display / ax_permission_missing notes), per-OS config+db dirs, ipc endpoints, runtime dir 0700 / socket 0600 - Linux X11: x11rb foreground context, global-hotkey worker-owned pump, arboard clipboard, enigo/XTEST injector with refocus, XDG paths - macOS: AX write + clipboard+Cmd-V fallback injector, AXIsProcessTrusted probe, NSWorkspace frontmost context, global-hotkey backend - IPC: one-line protocol preserved on both transports — named pipes on Windows, Unix domain sockets elsewhere (selector + inject endpoints) - Wayland: explicit degradation reporting instead of silent failure - Windows impls only moved behind cfg — logic unchanged (zero-regression constraint); debounce still latches only after successful sends - GUI side: ipc_listener + inject_pipe_client get unix transports; get_platform_status / request_ax_permission / launch-at-login commands; tauri-plugin-autostart (XDG desktop file / LaunchAgent / Run key) Verified locally on Linux: cargo check --workspace, clippy, service tests 9/9. Linux/macOS runtime behavior NOT machine-verified — see docs/PLATFORMS.md for the honest verification matrix. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Settings gains a Platform group driven by get_platform_status: - status line: OS + session + capability state (ok / wayland degraded / no display / ax permission missing), raw JSON on hover for bug reports - AX permission row appears only when macOS reports ax_permission_missing; Grant button re-triggers the system prompt, then re-polls - Launch-at-login switch backed by the OS registration, rolls back on failure (not a stored preference) Null-safe status handling — a missing/empty response degrades to an error state line instead of a thrown TypeError (which used to surface as a misleading global toast and break e2e mocks). All new strings bilingual. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
- scripts/make_icons.py: derives all bundle assets from the brand master — Windows .ico, real PNG-payload .icns for macOS, linux PNG set, and a monochrome template tray icon (macOS menu-bar template-image rule) - tauri.conf.json: icon list now includes icns/ico/pngs; bundle targets stay "all" so tauri build emits deb+AppImage on Linux, app+dmg on macOS - macOS tray uses icon_as_template + the template PNG so it tracks light/dark menu bar instead of rendering as a colored blob - CI: new rust-check job compiles the workspace on windows-latest, ubuntu-latest (with GTK/WebKit sys deps) and macos-latest — compile evidence for the un-verified platforms without claiming runtime tests - gen/schemas: regenerated by tauri-build incl. new linux-schema.json - scripts/screenshots.py: stubbed-__TAURI__ renderer for docs screenshots Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…nshots README rewritten against verified code facts: - platform matrix with honest verification column (Windows = only machine-verified platform; Linux/macOS compile+test green, no runtime verification — stated explicitly, not footnoted) - per-OS install paths incl. Wayland degrade + macOS AX onboarding + unsigned/notarization caveats; config/db locations per platform; IPC transports; design-doc index; real project structure - screenshots: real UI rendered headless in Chromium with stubbed __TAURI__ (same mechanism as the e2e suites), provenance labeled — no fake "looks like" imagery - un-ignore docs/ (was a blanket scratch rule; it now holds real docs) docs/PLATFORMS.md: per-platform impl table (trait → file), Wayland degrade contract, macOS permission model, IPC protocol, capability x platform x verification matrix docs/COMPONENTS.md: modules, design tokens extracted from styles.css, component inventory (btn/switch/seg/drawer/toast/recorder/wheel/hk-state), i18n mechanism, icon pipeline, e2e map CHANGELOG: fills the missing 2.0.3 entry (capabilities root cause — symptom → root cause → fix, matching house style) Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
macOS CI caught what local Linux checks can't see (all macOS code is cfg'd out here): - `extern "C"` blocks must be `unsafe extern "C"` in edition 2024 (macos_ax.rs ApplicationServices FFI + unix_impl.rs GCD dispatch FFI) - context/macos_impl.rs shares the AX helpers → macos_ax is now pub(crate) Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
macOS CI round 2 found: - WebviewWindowBuilder::transparent is gated behind tauri's macos-private-api feature (undocumented WKWebView API — acceptable: ships unsigned outside the App Store; required for the wheel overlay) - Image::from_bytes requires image-png - both added as a cfg(macos)-scoped tauri dep so Windows/Linux feature trees stay byte-identical - edition-2024 unsafe_op_in_unsafe_fn in macOS context impl wrapped Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
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
Brings the engine/GUI to Linux-X11 and macOS behind the three platform traits, rewrites the README and release notes, and adds platform/component docs — with honest verification status throughout (Windows is the only machine-verified platform).
Cross-platform (P1–P3)
service/src/platform/: OS/session detection,status_json()(wayland_degraded,no_display,ax_permission_missing), per-OS config/db dirs, IPC endpoints,0700/0600runtime-dir permsx11rbforeground context ·global-hotkey·arboard·enigo/XTEST injector · XDG autostartAXIsProcessTrustedprobe + settings-page onboarding ·NSWorkspacecontext ·.icns+ template tray iconwindows_impllogic untouched, only cfg-gatedGUI
tauri-plugin-autostart), all strings bilingualnullresponse no longer throws → misleading global toast)Docs & releases
docs/PLATFORMS.md: impl table + verification matrix;docs/COMPONENTS.md: modules/design-system/components/i18n/icons/testsrust-checkjob compiles the workspace on Windows/Linux/macOSTest plan
cargo check --workspace— Linux (local sysroot) cleancargo clippy --workspace— no errors; new code warning-freecargo test -p service— 9/9scripts/check_capabilities.mjs— OKGenerated with Devin