Repository navigation
Conversation
One shell on the major three, the system web view on each, macOS plugins in Swift called from Rust. Linux steps down where WebKitGTK cannot carry a feature; closing the window follows each platform; signed direct downloads. Step 1 is a shell-neutral bridge, so every shell answers the same contract.
It was a wrapper nobody used: nothing in the client read its bridge, and the desktop app is Tauri now (docs/projects/desktop-shells.md). Nothing is carried over. The docs that named it say app shell, or Tauri, instead; E.4a is open again until the Tauri shell ships.
Connect reads its query once, as it is set up, so a warm link (a PWA launch, a shell's appUrlOpen) arriving while the form was open changed the route and left the form as it was, and Cancel on a link back to the plain form stayed the link dialog. The Connect route is keyed on its full path: a new query is a new form. Every other route keeps its component. link-approval.mjs took the #seance sidebar row as proof of a dial, but an autojoin channel is a placeholder before the socket opens; it waits for the socket itself.
helpers/capacitor.ts becomes helpers/shell.ts: window.seanceShell
({platform, version, call, listen}) for a desktop shell, window.Capacitor
adapted to the same contract on the phones, and isShell / isMobileShell /
isDesktopShell beside isIOSShell / isAndroidShell. Haptics, the status bar,
the splash, the system text size and the back button are the phones'; links
and the badge are every shell's. A desktop shell sets data-shell=desktop and
its platform, never native (the phones' safe-area and keyboard CSS), follows
the system's appearance by default but not its text size, and registers no
service worker (pwa.ts, and the early registration in
loading-error-handlers.js).
shells/tauri, Tauri v2: the built public/ compiled in and served as the app's own origin, a strict CSP, navigation kept inside the app, window state, one instance, and web+irc: links through deep-link and a second launch's argv. window.seanceShell comes from a frozen init script and one seance_call command answers App (getLaunchUrl, appUrlOpen) and Badge; no Tauri plugin API is exposed to the page. Closing the window follows the platform: the Dock on macOS, the notification area on Windows, quit on Linux. A debug build's --smoke checks the bridge and a warm link from inside the page; tools/shots-macos.sh (WKWebView snapshots) and tools/shots-linux.sh (Docker, Xvfb, WebKitGTK) walk through connect, join, send, Settings and a second launch's link against the dev ircd. Both pass on macOS and Linux; a release .app is 10 MB.
Contributor
|
Doh I just submitted spell check fix for electron, LOL. And I'm adding scripting support to add context menus, but I can fix both I suppose if this is adopted. |
`tauri dev` serves public/ from the CLI's dev server, which the window's navigation guard did not count as the app: the start page was handed to the default browser and the window stayed blank. Under `tauri dev` the dev server's origin (build.devUrl, which the CLI fills in) is the app's too; a release build still knows only tauri://localhost.
Only the phone shells have a system text size to follow. On a desktop the toggle did nothing, said to look in Android's settings, and while it was on hid the font-size slider.
Collaborator
Author
|
Closing for now: the desktop shell work has moved well past this branch and will come back as a fresh PR once it's further along. (The Electron spellcheck menu from #144 has been ported to the Tauri shell there.) |
This branch was previously deployed
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.
Adds a Tauri v2 desktop shell for Windows, macOS and Linux, and removes the unused Electron wrapper. The plan is
docs/projects/desktop-shells.md.What's in it
docs/projects/desktop-shells.md): Tauri v2 on all three, each OS's own web view (WebView2, WKWebView, WebKitGTK), macOS-only plugins in Swift. Linux steps down where WebKitGTK can't carry a feature. Closing the window follows each platform. Signed direct downloads, no app stores.initial_conversion.mdE.4a is open again.link-approval.mjsraced (it treated the autojoin placeholder row as proof the socket was open) and now waits for the socket itself.helpers/capacitor.tsbecomeshelpers/shell.ts:window.seanceShell({platform, version, call, listen});window.Capacitoris adapted to the same contract.isShell/isMobileShell/isDesktopShellsit beside the iOS and Android checks.data-shell="desktop"(nevernative) and registers no service worker.shells/tauri):public/is compiled in and served as the app's own origin, with a strict CSP; the page can't navigate outside the app.web+irc:links arrive through deep-link or a second launch's argv, with no reload.seance_callcommand answersAppandBadge; no Tauri plugin API is exposed to the page.shells/entry naming the bridge.Testing
tscand mocha (3,556 passing) ondevelopc1f633f, plus 12 new tests for the bridge and platform defaults (test/helpers/shell.ts).corepack yarn smokechecks the bridge, a missing plugin answeringunimplemented,data-shell, no service worker, and a warmweb+irc:link with no reload.tools/shots-macos.sh/tools/shots-linux.shwalk through, against the dev ircd: connect, join, send, Settings, and a second launch's link. Both pass.tauri://localhoston both. A release.appis 10 MB.link-approval.mjspasses 4/4, at desktop and phone size.Not done
LocalNotificationsplugin (gate 4).localStoragein different places, so they don't share data.