Repository navigation
[release] Ryoku 1.0.6 - #642
Merged
Merged
Conversation
Orpheus, Shima and most visualizers paused whenever playback detection missed a stream. Note: Fixed: Music-reactive bars and visualizers always react in Performance mode.
With Easy Effects or another filter sink, the analyser heard only the silent default output. Note: Fixed: Orpheus, Shima and visualizers react to music played through Easy Effects.
niri parses proportion and window/layer-rule opacity as float scalars and
rejects an integer literal, failing the whole config. kdlNum printed a stored
1 as "1", so a default column width of 1 produced
"default-column-width { proportion 1; }" and an invalid settings.kdl.
Format those values with kdlFloat, as the spring damping-ratio already is.
Change-Id: I17aaffdae2fa9fbce56b047e7938e8e1b8172984
Update now always ran plain `ryoku update --gui`, so taking the distribution packages meant a terminal and `ryoku update --system`. Add an INCLUDE SYSTEM switch beside Update now, saved as `update_system` in the Hub config and off by default. When on, Update now runs `ryoku update --gui --system`. Note: New: Update now can include the system packages with one switch in Updates.
Ryostore had no way to install ordinary applications. A new flatpak provider lists the 300 most popular Flathub desktop applications from the Flathub collection API, joined with `flatpak list` so an installed application outside that ranking stays listed and removable. Flathub is a third-party source that does not pass through the ryostore registry or its screening, so each item carries Flathub's own verified or unverified state and a link to its Flathub page, and the category description says the store does not review it. Install adds the user flathub remote when missing and installs into the user installation, so no privileged prompt is needed. Installing an application that is already installed updates it in the installation that holds it, which is what the UPDATE button runs. Remove targets whichever installation holds the application, keeps its data, and for the user installation also uninstalls the runtimes nothing uses any more. Update state comes from `flatpak remote-ls --updates` per installation, best effort and bounded. `ryostore search <category> <query>` is new: a provider whose source is larger than its catalogue implements it, and flatpak searches all of Flathub live. A search started from the Apps category asks it after a short debounce, so an application outside the ranking is found. The ranking is cached on disk and served flagged offline when Flathub is unreachable; icons load lazily like the Omarchy marketplace's media. Note: New: Ryostore has an Apps section for installing, updating and removing Flathub applications, with search across all of Flathub.
deviceOfType returned the first NetworkManager device of a type in GetAllDevices order. On a machine with two ethernet ports, an unplugged onboard port listed ahead of the connected one made the network topic report wired as Disconnected, and the bar showed the offline icon. Setting the idle port unmanaged does not help, since GetAllDevices still returns it. A second Wi-Fi adapter hit the same path for the status frame and the scan, connect and disconnect intents. deviceOfType now ranks every device of the type: Connected, then Connecting, then disconnected but usable, keeping service order on a tie, so a single-device machine is unchanged. Note: Fixed: the bar shows your wired or Wi-Fi connection on machines with more than one network adapter
[ryoku] niri: write whole proportions and opacities as floats
[ryoku] shell daemon: report the live network device
[ryoku] ryostore: add an Apps category for Flathub applications
Reject option-shaped ids, keep unrelated runtimes, and install only through a verified Flathub remote, preferring the system one the doctor sets up. Note: New: RyoStore lists Flathub apps in a new Apps category.
[ryoku] hub: add an include-system switch to Update now
Keep Update now available independently of the Ryoku update count. Open the correct RyoStore sections and offer installation for missing bundle parts. Refresh stale catalogue snapshots so new bundles appear on first open. Note: Fixed: Updates, add-on installation and new bundles work from the Hub.
Voice apps adjust input gain while typing, and every bar treated it as input. Only deliberate mic level edits now raise the popup; mute keys still show. Keep speaker controls visible regardless of which client changed them. Note: Fixed: Microphone gain no longer interrupts typing with popups.
The wallpaper preview only painted the background, leaving the shell on its old palette. Share the cached candidate palette with shell surfaces in a session-only file. Cancel restores committed colours; apply keeps the normal theme update. Note: Fixed: The shell follows the wallpaper being previewed without changing application themes.
The Controls overview grew beyond the panel on shorter displays. Keep its header fixed and let the content scroll to the bottom. Note: Fixed: All Controls options remain reachable on smaller screens.
A separate bottom-layer window could sit behind the wallpaper after re-add. Paint the plain look in the desktop and keep audio capture independent of the optional overlay window. Note: Fixed: Removed visualizers show again when added back.
The spectrum painter was clipped to a rectangle while Shima drew a rounded card. Loud peaks could show beyond its lower corners, especially at small sizes. Follow the card radius in the painter without reducing normal playback levels. Note: Fixed: Shima's visualizer bars stay inside the widget card.
The smooth ring containers fell behind the password pill when the clock stopped positioning every number as a direct child of the clock scene. Restore the old depth order without changing ring motion or the 12-hour setting. Note: Fixed: Orbital's dial and numbers cross the password pill again.
An imported shell setting hid the desktop editor's own placement settings. Restore the right setting, resolve apps and let folder renaming take focus. Translate the desktop menu in every language and fix Spanish notifications. Note: Fixed: Apps and folders work on the desktop, with a readable Spanish menu.
Visualizer instances were addressed by list position: new ones returned their index, the active pointer was an index, and the Stage grips, outlines and labels keyed on "visualizer:" + index. Adding or removing one renumbered the rest, so selection, settings and drags landed on the wrong instance and one could hide another. Each instance now carries a persisted id, the active pointer names that id, and existing configs are migrated on load. Note: Fixed: Adding a third visualizer no longer replaces the first; each keeps its own place, settings and selection
Follow-up to the send-to-phone action: drop the stray lines that broke Icon.qml and ShortcutSheet.qml, keep the capture in a private 0700 runtime dir with a 0600 file instead of a predictable /tmp name, pass the path and device to kdeconnect-cli as plain arguments, clean up on every path, probe devices only when the toolbar opens, let the user pick a device when several are paired, and list kdeconnect as an optional dependency. Note: New: Send an annotated screenshot to a paired phone with KDE Connect from the ryoshot toolbar (Ctrl+K), contributed by Ronin-CK
Materialize copies each packaged Quickshell config into ~/.config one file at a time, and every instance kept Quickshell's file watching on, so a change landing while shell.qml was briefly absent reloaded a half laid tree and left "File not found" on screen. Configs running from ~/.config/quickshell no longer hot reload from that churn; ryoku reload and source-path runs still reload as before. Note: Fixed: Updates no longer leave a "Failed to load configuration" error on the desktop or in Ryoku Settings
The desktop's folder dialogs and app picker went through the Stage's own translator, which read a private catalogue directory Ryoku never ships, so they stayed in English in every language. It now forwards to the shared Ryoku catalogue. The desktop menu also gains New application, which reuses the installed-app picker and shortcut store, and desktop icons can open on a single or a double click. Note: Fixed: Desktop folder menus and dialogs follow the system language Note: New: Right-click the desktop and pick New application to place an app icon there, opening on one or two clicks
Completes the Global page switch from #619, which only hid the Hub rail glosses. The preference is now a typed daemon setting, read live by a shared Ryoku.Ui singleton, so the kana beside setting cards, Marginalia, page watermarks, the 力 brand mark, workspace numerals and decorative text in the shell, Hub, Ryogami, RyoStore and RyoVM all follow it, and the generated Fastfetch config drops the kanji from its greeting. Default stays on, so the existing look is unchanged. Note: New: A Japanese glosses switch in Ryoku Settings > Global hides the Japanese characters across the desktop and in the terminal greeting
An image notification grows when its thumbnail finishes loading. The card eased that growth like an expand, and the popup list kept its first delegate measurement, so the layer often stayed at the pre-image height and cut the toast off under its title. Non-user height changes now snap to the measured height, the surface sizes from the card's target height and relays out when a delegate grows; expand and collapse still ease. Note: Fixed: Notifications with an image show their full text and buttons instead of being cut off under the title
The Python bar kept its own Do Not Disturb and sound keys and played its own file with pw-play, so its controls and Ryoku Settings disagreed and the sound skipped Ryoku's volume, critical cue and suppress-sound policy. Its visualizers also ignored the main colour and gain. The controls now drive Flags.dnd and the shell's sound settings, cues go through ryoku-shell sound, sound state is read from the shell's Config service, and the visualizers follow the active colour and gain. Note: Fixed: Notification style, sound and visualizer settings take effect in the Python bar style
niri repeats a bind while its key is held, so a press that lasted a little too long on the mic-mute key muted and unmuted the microphone (or the speaker mute and play keys flipped back). Toggle media keys now emit repeat=false, matching Hyprland and Wayfire. Note: Fixed: On niri, holding the mic-mute, mute or play key no longer flips it back
Arch's xdg-desktop-portal-hyprland 1.4.1 drops its frame callback during DMA-BUF renegotiation, so hardware-encoded shares die within a second, and Start then waits forever on an invalid PipeWire node until the portal is restarted. The -git package needs the -git Hyprland stack. [ryoku] now builds upstream 167adef (both fixes) against the stable libraries as 1.4.1.r10.g167adef, which sorts above Arch's build and gives way once Arch ships a newer release. [ryoku] sits after the official and CachyOS repos, so a same-named package resolves from them on a fresh install. The ISO installer (online and offline closure) and the script installer now align every installed package that [ryoku] serves at a newer version, the same rule ryoku update already applies to existing boxes. Note: Fixed: Screen sharing from Discord, Vesktop and browsers on Hyprland no longer drops right after it starts or stops working until the portal restarts
The alignment test exec'd pacman's vercmp, which CI runners do not have, and the install guard flagged the two in-chroot pacman queries for lacking --noconfirm. The comparator is now a seam the test replaces, and both queries pass --noconfirm.
The SDDM host never received the clock format, so a skin that defaults to 24-hour (the stock Orbital one) showed 17:00 at the sign-in screen whatever the user picked, and skins that read the clock from their own config missed it in the session lock too. The installed greeter config now records the choice, the host hands it and the locale to every skin, and the session lock exposes it the same way. The sign-in screen picks up a change when the skin is applied or Ryoku updates, so toggling the format never asks for a password. Note: Fixed: The lock and sign-in screen clocks follow the 12-hour or 24-hour setting in every language
The launcher's Audio Visualizer action ran the overlay mode, which puts the visualizer on its own layer above windows and the dock, so a bar style visualizer started from the launcher covered the dock icons. It now starts the ordinary desktop visualizer; the overlay keeps its own explicitly named shortcut. Note: Fixed: The visualizer started from the launcher stays behind apps and the dock
Shima paints its dock body into a full-output chassis on the Top layer, and the icon surfaces of the Shima and Python docks sat on the same layer, so whichever loaded last won: after a restart, a relogin or a dock switch the icons often hid behind the body, which looked like an empty or unsaved dock. Both now sit above the chassis. The Python dock also read its pinned app from roles the delegate never received, so a click under the Shima bar launched nothing; it now uses the bound entry and the shared launcher. Note: Fixed: With the Shima bar, the Shima and Python docks keep their icons visible after a relogin and the icons open their apps
Any selected desktop icon held the desktop layer's exclusive keyboard grab, and creating a folder or an app shortcut leaves the new icon selected, so after the flow no window got keys (and on Hyprland, where that grab also takes the pointer, no clicks either): the desktop looked frozen. The folder dialog also lost its field's focus to the layer, and on niri a bottom-layer exclusive request is ignored, so with a window focused the typed name went into that window. Dialogs now lift the desktop above windows for exactly as long as they need keys; a selection takes the keyboard only while the pointer is over the icons, Enter releases it before launching, and the app picker returns focus when it closes. Note: Fixed: Creating a desktop folder or app shortcut no longer leaves the desktop unresponsive, and the name field takes typing
New application, Open folder and Shima's Sleep stayed English in Spanish: the first is new, the other two only ever held an English value, and the translation workflow cannot run while its provider is out of credit. They are now human overrides, and the catalogue is re-extracted with the overrides applied, so they show in Spanish; the remaining new strings keep English until the workflow runs again. Note: Fixed: The desktop New application and Open folder entries and Shima's Sleep option appear in Spanish
Shima's clock control set the global 12/24-hour preference but also kept its own copy, so a box could carry both: Shima's bar showed the old 12-hour choice while the lock followed the global 24-hour one. The control now writes only the global preference, and a leftover Shima copy is migrated into it once and removed. Note: Fixed: With the Shima bar, the lock screen clock uses the same 12-hour or 24-hour format as the bar
The 50-ryoku-dns.rules grant matched the program with a basename regex, so any executable a local wheel user placed at a path ending in /ryoku-dns ran as root through pkexec with no password: a local privilege escalation (GHSA-683q-8wvh-7m89). Pin the exact installed helper like every other ryoku-* rule; dev boxes keep working because deploy.sh installs the helper to /usr/bin. Note: Fixed: a local privilege escalation where any program named ryoku-dns could run as root without a password; the DNS grant now matches only the installed /usr/bin/ryoku-dns helper.
The auto-generated index stats drifted from the current tree: 6773 files, 539735 symbols, 31135 edges.
Stable cut for the 1.0.6 release line: the passwordless DNS polkit grant is pinned to the installed helper (closes the local privilege escalation in GHSA-683q-8wvh-7m89), plus the full unstable-dev line: shell and Hub fixes, Shima and iRiS bar work, installer and doctor improvements, and edition parity across Arch, CachyOS, Fedora, and Void.
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.
Release cut for Ryoku 1.0.6 (Amaterasu). Main fast-forwards onto the full
unstable-dev line; VERSION is pinned to 1.0.6 for the tag.
Security
50-ryoku-dns.rulesmatched any pathending in
ryoku-dnswith a basename regex, so a local user inwheelcouldrun an arbitrary program as root through
pkexecwith no password. The grantnow pins the installed helper exactly, like every other
ryoku-*rule.Confirmed exploitable on this box before and after: the loose rule executed a
pkexec-spawned program as uid 0; the fixed rule denies the same path while/usr/bin/ryoku-dnsstill applies without a prompt.Also in this line
Shell and Hub fixes, Shima and iRiS bar work, Ryogami wallpaper and picker
work, installer and doctor improvements, keybind and input coverage, and
edition parity across Arch, CachyOS, Fedora, and Void. The release-notes bot
harvests the
Note:trailers from the commits in this range.