AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Informational 21 Bitcoin

feat: Add Update button to disabled plugins section (#7260)

Public commit record

What the developer wrote

Authored by rollforsats

100/100 · Strong
feat: Add Update button to disabled plugins section (#7260)

* Add Update button to disabled plugins section

When a disabled plugin has a newer version available in the plugin repository, show an Update button in the Disabled Plugins row. This lets users update directly without scrolling to the Available Plugins section.

- Add Update button with pending state ("Marked for update") matching existing Enable/Uninstall patterns
- Fetch all plugins unfiltered once to support update lookups regardless of search filter, with in-memory search filtering
- Extract update-finding logic into testable static method (ListPluginsViewModel.GetDisabledPluginUpdates)
- Add 7 unit tests covering version matching, dependency preference, fallback behavior, null safety, and case-insensitive matching

* Address PR feedback

- Make the disabled-row command lookup case-insensitive
- Optimize available update lookup for disabled plugin, dependencies met check removed in lookup since handled in the UI
- Leaving DependenciesMet check alone in UI for now since the logic is handled the same in other places of the manage plugins page

* Address feedback: Use case-insensitive matching and prioritize newer versions when building the available plugins map.

- availablePluginsByIdentifier will now prefer the newest version when setting the available plugin value in the map
- use case insensitive identifier matching
- tests for changes,
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
The short version

What changed, and why it matters

This commit adds an 'Update' button for disabled plugins in BTCPay Server's plugin management page. It lets users update a disabled plugin directly from the disabled-plugins list instead of scrolling to the available-plugins section. The change also fetches all plugins unfiltered once and does search filtering in memory, and adds unit tests. There is no clear security bug in the diff, but the change touches plugin installation commands and identifier matching, which are security-sensitive areas.

Recommended action

Review the plugin install/update flow for identifier normalization consistency across the entire plugin lifecycle (install, enable, disable, uninstall), and ensure that case-insensitive plugin identifier handling cannot be abused to confuse one plugin for another or bypass allow/deny lists. Verify that the unfiltered remote plugin fetch does not expose internal data or increase attack surface.

Security signals we found

01

Plugin installation/update command path modified

02

Case-insensitive identifier matching introduced for plugin commands and available-plugin map lookups

03

New static helper for resolving available updates to disabled plugins

04

DependenciesMet check retained in UI before update scheduling

05

No input validation/sanitization changes visible in diff

Risk score

Why this scored 21/100

Our methodology →
Potential impact 2/30
Exploitability 3/25
Stealth signal 2/15
Affected reach 4/15
Confidence 7/10
Evidence quality 3/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.