Repository navigation
Release 2.5.4: login access to the display, Flatpak permission request, legacy fixes, GPL - #48
Merged
Merged
Conversation
add nix support for tryx panorama manager
qmllint in Qt 6.12 reports an id that has the same name as a property of the object it is assigned to (id-shadows-member). quick-check runs qmllint with -W 0, so the Arch package build, which now gets Qt 6.12, failed on five test doubles such as `controller: controller`. Name them with the Mock suffix the other QML tests already use.
Build the flake added in #33 with a pinned install-nix-action and check that its output has both binaries at the release version, the runtime, the udev rules, the user unit pointing at the store path with KillMode=mixed, and an ffmpeg with libx264 on the runtime's PATH. Tagged releases skip the job, so a change in nixpkgs cannot block a release build.
Add the flake input and the NixOS configuration that enables the package, its udev rules and the user service, based on the configuration the flake contributor tested with a display.
The Panorama layout test has the same shadowing ids. Qt 6.12 qmllint did not print its warnings when it linted all files together and only exited with 255, so the first fix missed it. All QML files now lint clean with Qt 6.12 qmllint -W 0, and the QML tests pass under Qt 6.12.
Build the Nix flake in CI, document NixOS, fix qmllint on Qt 6.12
… code Releases up to and including 2.5.3 stay under MIT. LICENSES/MIT.txt keeps that notice verbatim and every package installs it next to the GPL text.
The runtime closed the USB portal request after two minutes and then had no device access until it was restarted. After boot the dialog is easily missed: the runtime has no window, so the dialog is not attached to the app and can open behind it. A user who found it later could not allow access any more (#37). The request now stays open until the user allows or denies access, while the status keeps saying that a request is waiting in the portal. After two minutes the runtime only logs acquire_still_pending once.
… v2.0.6 With a carousel of still images the display stops answering after half an hour to several hours, and only a power-off recovers it; one still image ran for more than 10 hours on the same setup (#37).
A Loop of two videos ran for more than 10 hours on the same Panorama SE firmware v2.0.6 where a still-image carousel stalled after 34 minutes (#37).
logind grants the seat ACL on the usbfs node a moment after login and emits no udev event for it. A runtime that started first saw permission-denied and waited for the next USB event, so the display stayed on "Waiting for Device" until a system update replayed udev events (#41). While the only TRYX node is denied, the monitor watches its /dev/bus/usb directory, which reports attribute changes of its entries, and rechecks with a backoff from 1 to 30 s for up to 5 minutes.
The access rules matched only add and change events. The kernel sends a bind event right after add, so the device's current tags lost uaccess, and logind, which grants the seat ACL at login only to devices that still carry the tag, skipped the display. Users outside the lp group then stayed in permission-denied after every boot until some later change event, such as a package update that reloads udev, granted the ACL. Match every event except remove in both rule files, and make the package check reject rules that narrow the action again.
The legacy ADB and media helpers built shell command strings for popen() and system(). escape_shell_arg() left a line feed unquoted, so an argument such as a file name could start another local command, and quote_for_shell() put a literal backslash before '!' (#44). Start adb and ffmpeg with posix_spawnp() and an argument vector instead. Commands for the device shell behind `adb shell` are passed as one argument with every word single-quoted. Device media names must be plain names inside the media directory, and the reboot no longer goes through a shell pipeline; it only runs when a TRYX serial is found. A legacy cm01 handshake that got no usable reply was never retried, so the display stayed disconnected until something reconnected it (#45). Retry it up to three times, 300 ms apart, in Auto discovery and in the session, and after a success that needed a retry wait for late replies and discard them so the next command does not read one as its own.
Keep the Flatpak USB permission request open; document the Loop/Shuffle stall
Pick up USB access granted after the runtime started
Relicense under GPL-3.0-or-later
The release keeps the uaccess tag on every udev event so logind grants the seat ACL at login, notices access granted after the runtime started, keeps the Flatpak USB permission request open, runs adb and ffmpeg without a shell and retries the cm01 handshake, and moves the project to GPL-3.0-or-later. Add the 2.5.4 entries to every changelog and the AppStream metadata, point the README install commands at the new package names, and describe how to apply the new udev rule without a reboot.
Keep the uaccess tag on every udev event
Run adb and ffmpeg without a shell; retry the legacy handshake
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 2.5.4.
uaccesstag on every event exceptremove, so logind grants the seat ACL at login and users outside thelpgroup no longer stay on "Waiting for Device" after every boot (Stuck on "Waiting for Device" #41, Waiting for Device #32).cm01helpers runadbandffmpegwithout a shell (Adb::escape_shell_arg omits LF quoting; Media::quote_for_shell adds a literal backslash before ! #44) and retry a handshake that gets no reply (Legacy cm01: handshake attempts are not retried; late replies and coalesced frames can be attributed to the wrong command #45).LICENSES/MIT.txt; GitHub Sponsors button.