The Windows and Linux runners now answer the window channel. They turn
the window into a frameless 360x140 panel that stays above other
windows, open it where it last sat (first at the top right of the work
area), move it when the panel is dragged, and restore the frame, size,
place and maximized state when it closes. On Wayland the compositor
decides the position and stacking, so there it only shrinks.
The mini player drag area now moves a framed window too, and the
shortcut is Ctrl+Shift+M on Windows and Linux, since Ctrl+Alt is AltGr
on many keyboard layouts. macOS keeps Opt+Cmd+M.
Only the Windows installer and the deb registered the scheme, so after
extension verification the browser could not return to a portable zip
or AppImage copy and the link had to be pasted. On launch the runners
now point the per-user handler at the running copy when it does not
already start it (HKCU\Software\Classes\mornye on Windows, a GIO
x-scheme-handler default on Linux, using $APPIMAGE for AppImages).
- mornye:// URLs arrive through app_links and go to the backend callback
inbox (queueExtensionCallbackUrl); extension auth opens the system
browser on desktop.
- Single instance: a named mutex plus app_links WM_COPYDATA forwarding on
Windows (with the installer's AppUserModelID), a unique GApplication
forwarding its command line on Linux; macOS handles reopen itself.
- The download queue holds a sleep inhibitor from start until it stops.
- Discord Rich Presence runs on desktop through a channel adapter over the
backend IPC methods, without an account link.
- Library folder changes trigger a debounced incremental source scan.
- Desktop rotating log files, a session marker that turns an unclean exit
into the existing crash report, and runtime errors recorded for it.
Name the app Mornye with the com.zarz.mornye identifier on all three
runners and generate macOS and Windows icons from the brand badge; the
Linux bundle installs the badge PNG as the window icon. Open at
1280 x 800 with a minimum of 800 x 600. Register the mornye:// scheme on
macOS and run outside the App Sandbox.