Restore application access for third-party menus - #10671
Conversation
|
Independent verification on current Environment: Omarchy 4.0.3-1, Quickshell 0.3.1 (Arch), Qt 6.11.2. Method (live session untouched):
So the fix is still valid on current As noted in #11241, this PR and that one share the same delegate/registry-manifest approach. This one is older and additionally ships the real |
|
Follow-up: regression check on the patched tree. With the three production hunks applied to No regressions in the plugin/panel/menu area. (Did not run the full |
Summary
Restore the app list for third-party menu plugins such as Omalaunch after the scoped plugin API change.
iconIndexChangedthrough the app-library facade so menus can finish their icon-refresh cycle. This exposes a signal, not the private icon index.Cause
Reproduced with Omalaunch 0.3.0 and
omarchy-dev 4.0.0.r2071.ga703092-1. The currentquattrobranch has the same affected shell code.computePanelEntries()accepts the menu manifest, then passes it through anInstantiator. Qt converts its nestedkindsarray to a sequence: it still serializes as["menu","bar-widget"]and supportsindexOf("menu"), butArray.isArray(modelData.manifest.kinds)returnsfalse.manifestHasKind()then rejects the menu grant, and the injectedPluginShellApi.appLibraryisnull. The launcher shows an empty Apps menu even though desktop entries remain installed.The fix keeps the existing capability checks and uses the registry's original validated object. It does not restore the full shell object or widen non-menu access.
Once the app library attaches, Omalaunch also needs its existing
iconIndexChangedcompletion signal; without it, an icon refresh can stay pending indefinitely.Validation
Passed:
bash test/shell.d/panel-menu-capability-test.sh— real Qt model conversion, actual facade components, and the production binding/grant/signal code; works without a compositor.bash test/shell.d/plugin-auth-boundary-test.sh— static checks and QML runtime fixture.bash test/shell.d/plugin-registry-contract-test.sh— QML runtime fixture.bash test/shell.d/app-search-test.sh.git diff --check.The new test first failed on the missing menu grant, then on missing icon completion after applying only the manifest fix. It passes with both changes. Existing authentication and ordinary-panel restrictions still pass.
The patched full desktop has not been visually verified. The installed, package-owned shell was left unchanged; no development link, permission change, migration, or release is included.
Companion fix
Omalaunch separately relies on the now-private
manifest.__sourceDirfor its helper paths. Its companion PR resolves the plugin directory from its own QML file: DanielLemky/omalaunch#58Both fixes are needed to restore that launcher on the affected host.