Skip to content

Releases: onaiaku/ArtMoon

v1.5.1

Choose a tag to compare

@onaiaku onaiaku released this 28 Sep 19:33

Version 1.5.1 (28/09/2026)

The Android app follows the device now instead of holding portrait on phones.

Fixed — 1

Android

  • Phones were held in portrait, so turning the device sideways did nothing and the system's own rotate button never appeared. The app now follows the device on every screen, and the wide layouts that until now had only ever been used on TVs and large screens are used on phones as well. Foldables pick the right layout for whichever screen they are on as they open and close.

v1.5.0

Choose a tag to compare

@onaiaku onaiaku released this 28 Sep 13:29

Version 1.5.0 (28/09/2026)

The last session is back on the home card, the card can stop a stream as well as start one, and the AppImage in this release is the one that starts on older systems.

New — 2

  • Home shows how the last session on that host went, under the host's link speed: when it ran, how long for, the grade the host gave it, and the RTT, host latency and drop rate it measured. The RTT caption carries the session's peak beside the average. This was on the card before the home screen was redesigned and it is back by request, so it describes the last session on the host — which may have been another device's. Anything the host never measured is drawn as a dash rather than a zero it did not report.
  • Stop a stream from the home card. When a session is running on that host, the card now offers Stop under Resume — so a stream can be ended from here and not only started or rejoined. It asks before it does it. A session the host says was started by another device cannot be stopped this way; the host refuses it and its message explains that.

Fixed — 2

  • The AppImage now starts on older systems. It had been built on a base new enough that it needed a newer C library than Ubuntu 22.04 and Debian 12 ship, so on those machines it would not start at all. It is now built against the oldest still-supported Ubuntu release, so it runs there and on everything newer — which is what a portable build is for.
  • The host metrics heading in the stream overlay did not match the same heading in Settings. The two are built in separate places and had drifted apart; they agree again.

v1.4.0

Choose a tag to compare

@onaiaku onaiaku released this 27 Sep 20:56

Version 1.4.0 (27/09/2026)

The 25 September library merge, plus everything shipped since. A line is the desktop app unless it says Android.

New — 30

Library

  • The host page splits into Games, Apps and All. All opens first, so desktop, Big Picture and the host's own apps are one list rather than a tab away.
  • Move an entry between Games and Apps with the right stick click (M on the keyboard). The choice is kept per host.
  • Pinned games: Start on the pad or P pins the selected game, which then sits under Last played in alphabetical order.
  • Resume from Home: a host that is streaming shows the game in progress, with Resume in place of Play again.
  • The host page reopens on the tab you last chose, per host. A Remote Monitor still in use still opens on Apps.
  • Apps show Open, with no hours and no session count. The badge on Home reads "Last played 2 h ago · 18 h total" instead of "Last played for 18 h", which read as though that were the last session.

Power

  • A row per machine — the host and this device — each offering only what it really supports: Keep on, Sleep, Restart or Shut down.
  • Windows updates are offered on the row that restarts or shuts down, and only when that machine has updates waiting.
  • A host put to sleep stays asleep until Wake is chosen, so switching this device back on no longer wakes the host with it. Its card reads "Asleep" meanwhile.
  • Sleeping a host that could not be woken again warns first — away from home over Tailscale, or with its adapter not set to wake it.
  • X is "Power" in the status bar, not "Shutdown".

Settings

  • Host profiles and per-game settings live on the tabs of Settings, one section at a time, switched with LB / RB, each tab showing how many values it changes.
  • An inherited value says where it comes from (Global: 4K, Docked 4K: 120). Y gives one row back; Reset all gives the whole set back.
  • Profiles switch with LT / RT from anywhere in the dialog. Per-game settings open with the game's cover and name the profile they inherit from.
  • A profile can be named with the pad: X offers eight ready-made names such as Docked, Portable, Handheld and TV, with a field of your own when a keyboard is at hand.

Interface

  • Card opacity per host — 70% to 100%, starting at 90%, in the host's Background.
  • The moving background: waves in the accent colour over the lower three quarters of Home, Settings and the PIN pad, twice as fast while a host is streaming or a launch is starting. Off with Reduce animations, paused over a dialog or a window move.
  • An opening animation, about three seconds and skippable with any button: the waves rise, the mark fades in, a band of light writes the name. Settings → Session turns it off.
  • The splash wordmark and the window mark are ArtMoon's own, and wording is hosts and this device, not PCs.

Streaming

  • Shared clipboard: text copied on the host pastes here, and the other way round, up to 32 KB, over a key that lasts one stream. Off until it is turned on, and the host can refuse from its own switch.
  • Text marked by a password manager stays out of the other side's Win+V history and is cleared when the original is, within 60 seconds.
  • Button prompts: Auto, Controller or Keyboard & mouse, in Settings → Session. Pinning them to the controller suits pads that send clicks and keys from one device, such as Steam Input or a Steam Deck.
  • Remote Input and Remote Monitor open beside a running game without asking to quit it, and skip the wait for a game window.
  • Host actions report what they did rather than an error — Disconnect Monitor, Disconnect Input, Terminate — and a host asking for confirmation gets Yes or No.
  • Less GPU work on 4K: where one device decodes and renders, frames are shown directly instead of being copied first. 1080p and 1440p are unchanged.
  • Engine and protocol brought level: faster recovery from lost video packets, the decoder chosen by GPU vendor and driver, audio latency held to 50 ms whatever the packet size, and the latest host discovery library. The client sends its own ID to hosts instead of a placeholder shared by every client.
  • Home no longer offers the Internet Hosting Tool.
  • Updates come from ArtMoon's own releases, and a waiting update is offered on startup instead of only being found in Settings.

Android

  • The hero card's LAST SESSION panel matches the desktop: the RTT peak caption ("11 peak"), the grade pill in the host's own colour, and the covers of the games the session credited — a name tile where a host has no cover, "+N" when more games were played than the card shows.
  • The app picker sits on the focused app's cover art, blurred and veiled behind the whole list, crossfading as the selection moves. The list and detail panel are translucent over it, and the art runs full-bleed from behind the header, with the main-screen buttons at their original size.

Fixed — 6

  • Prompts return to the controller's icons as soon as the stick or a trigger is used, not only on a button press, and show them from the first screen when a controller is connected.
  • Resume no longer waits behind the launch screen. With "Wait for the game to appear" on, rejoining a game the host was already running could hold the launch screen over a picture that was ready.
  • Pointing at a game with the mouse updates the cover and details beside the list, not only the highlight on the row.
  • A host running Tailscale could be recorded with its Tailscale address as its local one, and the log then reported it moving back to the LAN every few seconds.
  • The software renderer drew full-range video at the wrong levels, a display larger than 8K could crash the display list, and a game with an empty name stopped the whole library from loading.
  • Android: lost video packets are reported again, so a stream recovers from a bad moment instead of carrying it.

v1.3.0

Choose a tag to compare

@onaiaku onaiaku released this 21 Sep 13:47

ArtMoon 1.3.0 — library shelves, the favourites star, and the native-resolution fix.

New:

  • Recently played and Favourites shelves on the way into the library, each with its own caption; every app still appears exactly once.
  • A star on every tile: D-pad Right moves onto it, A pins or unpins, Left returns to the row. Pinned games lift into the Favourites shelf and the cursor stays on the same game through the move.

Fixed:

  • Settings: the Native resolution option multiplied the panel by the desktop's UI scale (a 1920x1200 display at 160% scaling was offered as 3072x1920). It is now read from SDL, the same source the streamer uses — correct on Linux and Windows.
  • Library: the ALL APPS caption floated above the shelves instead of labelling the library.
  • Library: closing the per-game settings dialog could leave the cursor on a different game after a pin/unpin.

v1.2.4

Choose a tag to compare

@onaiaku onaiaku released this 14 Sep 16:10

v1.2.4 (Android)

  • Centered PgUp/PgDn text (used am_picker_pill, missed by the earlier gravity pass)
  • Also centered + 48dp'd the host pill and Add PC button on the hosts screen

v1.2.3

Choose a tag to compare

@onaiaku onaiaku released this 14 Sep 15:59

v1.2.3 (Android)

  • Fixed double-tap-to-activate: pills and page controls no longer eat the first tap to move the focus ring (touch now clicks on first press; D-pad navigation preserved)
  • Pill/keycap labels re-centered inside the raised 48dp touch targets; header icons squared 48x48

v1.2.2

Choose a tag to compare

@onaiaku onaiaku released this 14 Sep 15:44

v1.2.2 (Android)

  • Touch targets: every pill/button/keycap/page control now meets Android's 48dp minimum; pill padding raised on compact rows
  • App picker: small-icon mode now has the landscape master-detail pane (preview section no longer vanishes when smallIconMode is on)

v1.2.1

Choose a tag to compare

@onaiaku onaiaku released this 14 Sep 15:12

v1.2.1 (Android)

  • Foldable support: orientation policy is now re-evaluated on every screen change — a portrait lock acquired on the cover display no longer survives unfolding; the large display rotates freely (phones stay portrait-locked as before)
  • All in-app help links now point to the ArtMoon repository instead of upstream Moonlight docs
  • Native resolution warning now tells ArtLight virtual-display users that any resolution/refresh rate works automatically

ArtMoon 1.2.0

Choose a tag to compare

@onaiaku onaiaku released this 04 Sep 19:38

ArtMoon 1.2.0

The mystery-killer. Weeks of AV1 "brick" artifacts are dead, hardware decoding on NVIDIA hosts is restored, and your settings survive a rename. Users on 1.1.1 or earlier: hit Update Now in Settings → ArtLight tab.

Fixed: AV1 Vulkan brick artifacts — root cause found

The recurring AV1 corruption on RTX 50-series hosts wasn't the codec, the driver, HDR, or the FFmpeg version — it was link-time optimization. CI compiled FFmpeg with LTO, which miscompiled the Vulkan hardware decode path. After days of A/B testing (grafting individual libraries between builds until the culprit had nowhere left to hide), LTO is gone from the build recipe and the fixed decoder streams AV1 10-bit HDR with zero artifacts. CI now bakes FFmpeg with the exact proven-clean flag set, and the workflow carries a warning so LTO can never sneak back in.

Fixed: hardware decoding on NVIDIA hosts

The 1.1.1 AppImage bundled its own glib family, and the bundled copy was missing the g_string_copy symbol — so libva's NVIDIA driver plugin failed to load inside the AppImage and SDL reported "no functioning hardware accelerated video decoder" on every NVIDIA host. The bundle now always uses the host's glib. A CI hard-check fails the build if any glib library is ever bundled again.

New: CI verifies the shipped artifact itself

The final packed AppImage is now extracted and inspected before release — for the glib family and a bundled libvulkan — so neither class of silent regression can ever reach a release again. Previously the checks passed on the staging directory while the packed image kept the poisoned library.

Changed

  • FFmpeg 9.0.1 (previously 9.0), pinned to the exact decoder build verified clean on the RTX 5060 mini PC at up to 138 FPS in 4K 10-bit HDR.
  • Settings store renamed to ArtMoon (previously FoggyBytes/StreamLight — the fork's original working title). On first launch, 1.2.0 migrates every existing setting automatically: nothing is lost, no re-pairing, no reset notice. The old store is left untouched, so downgrading to 1.1.x still works.

New: the family grows — ArtMoon for Android

The Android client is now part of ArtMoon proper: our rebranded fork of Moonlight Android, consolidated into this repo under android/ and shipping signed with every release. Grab ArtMoon-1.2.0-android.apk below (Android 5.0+), sideload it, and pair it with ArtLight like any other client. Built by CI on every v* tag with the same release keystore as the desktop builds.

Updating

  • Linux: Settings → ArtLight tab → Update Now (or grab the AppImage below).
  • Windows: Settings → ArtLight tab → Update Now — the installer runs silently and ArtMoon comes back on its own.
  • Android: grab the APK below and sideload it (one settings toggle, then it installs like any app) — the Android client doesn't use the in-app updater.

Full changelog: changelog.txt in the repo, or the in-app Changelogs link.


Note: ArtMoon-1.2.0-android.apk was rebuilt from main (commit 0501fb92) to drop the legacy .unofficial applicationId — the package ID is now clean io.github.onaiaku.artmoon. Desktop assets are unchanged from the original 1.2.0 build.

ArtMoon 1.1.1

Choose a tag to compare

@onaiaku onaiaku released this 03 Sep 13:27

ArtMoon 1.1.1

A big one — this release carries the whole native-Wayland rebuild plus a built-in updater. Users on 1.1.0 or earlier should see the Update Now button in Settings → ArtLight tab.

New: built-in updates

  • ArtMoon now checks GitHub for the latest release on its own. Settings → ArtLight tab shows Installed vs Latest, with a Changelogs link and an Update Now button whenever a newer version is out.
  • Linux: Update Now runs the one-line install script in a visible terminal window (you can watch it work), then relaunches ArtMoon when it finishes. If no supported terminal is found, it falls back to opening the releases page.
  • Windows: Update Now downloads the official installer, quits the app, and runs it silently (/VERYSILENT /SUPPRESSMSGBOXES /RESTARTAPPLICATIONS) — one UAC prompt, ArtMoon comes back on its own.
  • Works fully offline-safe: if GitHub can't be reached, the card shows a checking/error state instead of pretending.

Fixed: native Wayland end-to-end

  • No more black window. The Wayland platform plugin, shell integrations (xdg-shell), and the wayland-egl client-buffer integration are now all bundled correctly — ArtMoon starts native on Wayland instead of silently falling back to XWayland (which breaks hardware decoding).
  • Vulkan Video / AV1 fix: the AppImage no longer ships a stale libvulkan loader that hijacked the system one and broke AV1 hardware decode.
  • Titlebar icon is back: the app_id / SDL WMCLASS is now io.github.onaiaku.ArtMoon (upstream overrode it with a Flatpak ID matching nothing), so KWin and friends show the ArtMoon moon again.
  • X11/Xorg sessions remain fully supported — the correct Qt platform plugin is picked automatically.

Full changelog: v1.1.0...v1.1.1