Skip to content

plugins: use plugin ids for management actions - #3284

Merged
bbedward merged 1 commit into
duxlabs-dev:masterfrom
FengYing1314:fix/plugins-use-ids
Sep 4, 2026
Merged

bbedward merged 1 commit into
duxlabs-dev:masterfrom
FengYing1314:fix/plugins-use-ids

Conversation

@FengYing1314

@FengYing1314 FengYing1314 commented Sep 4, 2026 •

Copy link
Copy Markdown
Contributor

Description

Plugin registry entries expose a stable ID and a human-readable name. The UI was passing the display name to management operations and then using it to index ID-keyed plugin state, which fails when the name and ID differ.

This change uses the ID for install, update, uninstall, enablement, registry lookup, desktop defaults, and widget instance creation, while retaining the display name for user-facing notifications. The existing DMS RPC method and payload shape remain unchanged.

Type of change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that changes existing behavior)
  • Refactor / internal cleanup
  • Documentation
  • Other

Related issues

N/A

Screenshots / video

N/A — no visual change.

Checklist

  • My code follows the conventions in CONTRIBUTING.md
  • I have tested my changes locally
  • New user-facing strings are wrapped in I18n.tr() with translator context, reusing existing terms where possible (not applicable: no new strings)
  • Go changes: ran make fmt, added/updated tests, make test passes, and go mod tidy is clean (not applicable: no Go changes)
  • QML changes: ran make lint-qml with no new warnings
  • I have opened a corresponding pull request in dlx-docs to document any new behaviors: https://github.com/AvengeMedia/DankLinux-Docs (not applicable: no new behavior)

Local verification

  • uvx prek run --files ...: all configured hooks passed for the five changed files
  • qmldom --dump-ast: all five changed QML files parse successfully
  • git diff --check: passed
  • Full make lint-qml could not be completed locally because the packaged Quickshell 0.3.1 installation does not provide the QML module type metadata required by qmllint; CI is left to perform the repository-native lint check

@FengYing1314 FengYing1314 changed the title fix(plugins): use plugin ids for management actions plugins: use plugin ids for management actions Sep 4, 2026
@bbedward

bbedward commented Sep 4, 2026

Copy link
Copy Markdown
Member

/claude review

@claude

claude Bot commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Claude review

No issues found.

Verified the ID switch is correct end to end: availablePlugins, DesktopWidgetRegistry (registerWidget({id: pluginId, ...})), SettingsData.createDesktopWidgetInstance(widgetType, ...), and SettingsData.setPluginSetting/runStartupGate are all keyed by manifest ID, so the old name-keyed lookups in installFromRegistry were genuinely broken. Core accepts either form — plugins.install falls back from ID to name, and plugins.uninstall/plugins.update go through FindByIDOrName / findInstalledPathByIDOrName — so the RPC payloads stay valid. id is populated on every model feeding these call sites (PluginInfo.ID from plugins.list and plugins.listInstalled, availablePluginsList from manifest.id). All three installFromRegistry callers were updated to the new 4-arg signature (no other callers repo-wide), and displayName keeps toasts human-readable.

Checked: signature/caller consistency, ID-vs-name keying in QML and Go, model fields, no new strings or catalog edits. Model: claude-opus-5.

@bbedward
bbedward merged commit 433b13c into duxlabs-dev:master Sep 4, 2026
1 check passed
bbedward pushed a commit that referenced this pull request Sep 4, 2026
@FengYing1314
FengYing1314 deleted the fix/plugins-use-ids branch September 5, 2026 12:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants