15 Commits
Author SHA1 Message Date
zarzet 6ab91b4599 feat(desktop): add fullscreen and borderless window modes 2026-10-23 03:53:18 +07:00
zarzet 104b8a8491 chore(license): adopt LGPL-3.0-only for Mornye 2026-10-22 23:11:09 +07:00
zarzet 7bbdf03e9a feat(desktop): open the mini player on Windows and Linux
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.
2026-10-22 19:27:34 +07:00
zarzet 9bf4c000a0 fix(linux): declare desktop entry spec 1.4 for the release validator
desktop-file-validate 0.26 on the Ubuntu 22.04 release runners rejects
Version=1.5 as unknown, which failed both Linux release builds. The
entry uses no key newer than 1.4.
2026-10-22 15:53:30 +07:00
zarzet 11a9b9a4ec chore: remove redundant comments across the codebase 2026-10-22 01:41:09 +07:00
zarzet daaafbc72d fix(desktop): register mornye:// from portable and AppImage copies
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).
2026-10-21 15:11:12 +07:00
zarzet 3c7edf6f24 chore(branding): point links and packaging at mornyeapp/Mornye
The repository moved to mornyeapp/Mornye, so the GitHub links in the
app, README, contributing guide, issue templates, changelog config,
AltStore source and Linux and Windows packaging now use it. The remote
config endpoint keeps its old server name.
2026-10-21 11:34:39 +07:00
zarzet 382e3856e3 feat(desktop): add dropped music folders to the Library
Dropping music files or folders onto the window adds them as Library folders through the existing add-folder and scan path; a dropped file adds the folder that holds it. Uses desktop_drop 0.8.4. Tests cover the folder selection, the hover play button and the source-sorted table.
2026-10-20 17:38:54 +07:00
zarzet bcb1ee8b90 feat(desktop): play through media_kit with MPRIS and SMTC sessions
Windows and Linux now create a libmpv deck through media_kit; macOS,
Android and iOS keep audioplayers. Without libmpv the runtime falls back
to audioplayers.

- The equalizer becomes one libavfilter graph behind mpv's lavfi filter
  (input gain, peaking bands, balance, compressor, -0.5 dBFS limiter)
  after a planar float conversion. Changes set the af property again.
  Filters a libmpv build lacks are probed once and left out; the input
  gain then moves to mpv's volume. Filter failures are reported per player.
- Deck volume is scaled by the in-app output volume on mpv's cubic curve,
  position updates run on a timer, DSD sources throw when libmpv cannot
  open them, and exclusive output has a hook for a later setting.
- The in-app output volume persists across launches on every desktop OS.
- Previews go through the runtime's preview deck, so desktop previews
  follow the in-app volume.
- Linux publishes MPRIS over D-Bus and Windows uses SMTC through
  smtc_windows, both driven by the audio handler.
- The Linux CI job installs libmpv-dev.
2026-10-20 16:55:01 +07:00
zarzet 490e529203 feat(desktop): wire deep links, single instance, keep-awake, Discord, watcher and crash logs
- 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.
2026-10-20 16:14:40 +07:00
zarzet dbb59e7ae5 build(desktop): bundle the staged ffmpeg and ffprobe in desktop apps
An Xcode "Embed FFmpeg" phase copies build/ffmpeg/macos-universal (or
the host architecture) into Contents/Resources/ffmpeg and signs the
tools; MORNYE_REQUIRE_FFMPEG=1 turns a missing stage into an error.
Linux installs them into lib/ffmpeg and Windows into ffmpeg\, warning
when nothing is staged. A macOS integration test converts and probes
with the bundled tools.
2026-10-20 16:13:08 +07:00
zarzet 767edb376a build(packaging): add dmg, AppImage, deb and Inno Setup packaging
- scripts/package_macos_dmg.sh: ad hoc signs the release app inside out
  (keeping its entitlements), builds a compressed dmg with an Applications
  symlink, then mounts it read-only and checks the signature and the
  universal slices.
- scripts/package_linux.sh: AppImage (pinned appimagetool 1.9.1 and type2
  runtime, checked by SHA-256) and deb (dpkg-shlibdeps Depends with a fixed
  fallback) from the Flutter bundle, installed under usr/lib/mornye.
- linux/packaging: desktop entry registering x-scheme-handler/mornye,
  AppStream metainfo and 128/256 px icons.
- windows/installer/mornye.iss and scripts/package_windows.ps1: per-user
  Inno Setup installer in %LOCALAPPDATA%\Programs\Mornye with Start Menu
  and optional desktop shortcuts (AppUserModelID com.zarz.mornye), the
  HKCU mornye:// protocol, closing a running app on upgrade and a
  /RELAUNCH=1 switch for silent updates, plus a portable zip.
2026-10-20 15:07:31 +07:00
zarzet 5d369a2628 build(desktop): install the Rust library in the Linux and Windows bundles
Linux installs libmornye_desktop.so into the bundle's lib/ directory and
Windows installs mornye_desktop.dll next to mornye.exe. Both fail at
configure time with a clear message when the library was not built.
Add scripts/build_rust_backend_windows.ps1 as the Windows counterpart of
`build_rust_backend.sh desktop`, replacing the commented commands.
2026-10-20 14:27:17 +07:00
zarzet f10c9d88b0 feat(desktop): set Mornye identity, icons, window size and entitlements
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.
2026-10-20 13:33:45 +07:00
zarzet f70bc95595 feat(desktop): add generated macOS, Windows and Linux runners
Output of flutter create --platforms=macos,linux,windows --org com.zarz
with Flutter 3.47.7. Identity, window and entitlement changes follow.
2026-10-20 13:25:29 +07:00