feat(Store): Add Git Branch Selection for Plugins in Store UI by designgears · Pull Request #540 · StreamController/StreamController · GitHub
Skip to content

feat(Store): Add Git Branch Selection for Plugins in Store UI#540

Open
designgears wants to merge 2 commits into
StreamController:mainfrom
designgears:store-git-settings
Open

feat(Store): Add Git Branch Selection for Plugins in Store UI#540
designgears wants to merge 2 commits into
StreamController:mainfrom
designgears:store-git-settings

Conversation

@designgears

@designgears designgears commented Jan 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds the ability to select a git branch for any plugin directly in the store UI, instead of being limited to the store's pinned version. Users can switch between the store version and any available git branch, with the selection persisting across app restarts.

Changes

Backend (src/backend/Store/StoreBackend.py)

  • Added get_plugin_git_override() - Retrieves stored git override settings for a plugin
  • Added set_plugin_git_override() - Saves/removes git override settings
  • Added remove_plugin_git_override() - Removes override to revert to store version
  • Added get_repo_branches() - Fetches available branches from GitHub API
  • Modified prepare_plugin() - Checks for git overrides and uses specified branch instead of store version when set

Data Model (src/windows/Store/StoreData.py)

  • Added using_git_override field to StoreData to track when a plugin is using a custom branch

UI Components (src/windows/Store/InfoPage.py)

  • Added SourceGroup class - New UI component with:
    • Dropdown to select "Store Version (Recommended)" or any available git branch
    • Refresh button to fetch branches from GitHub
    • Status row showing current source (store version or git branch)
    • "Apply Now" button to immediately reinstall plugin with selected source
  • Added set_plugin_data() method to configure source group for a plugin
  • Added clear_plugin_data() method to hide source group for non-plugin content

Integration

  • Updated PluginPage.py - Passes plugin data to info page when viewing plugin details
  • Updated IconPage.py, WallpaperPage.py, SDPlusBarWallpaperPage.py - Hide source selection for non-plugin content

Localization (locales/locales.csv)

  • Added localization strings for new UI elements in German, English, French, Spanish, and Portuguese

Features

  1. Branch selection: Select any git branch from a dropdown in the plugin info page
  2. Branch fetching: Refresh button fetches available branches from GitHub
  3. Immediate application: "Apply Now" button reinstalls plugin with selected source
  4. Settings persistence: Selection persists across app restarts
  5. Per-plugin caching: Branches are cached per plugin for faster loading
  6. Visual feedback: Status row shows whether using store version or git branch

Technical Details

  • Git overrides are stored in settings.json under store.plugin-git-overrides
  • Override format: {plugin_id: {"branch": "branch_name"}}
  • When an override exists, prepare_plugin() uses the specified branch instead of the store's pinned commit
  • Signal handlers are properly blocked during UI updates to prevent race conditions
  • Branch fetching happens asynchronously in background threads

User Flow

  1. Open store and click on a plugin to view details
  2. In the "Source" section, click refresh to load available branches
  3. Select a branch from dropdown (or keep "Store Version")
  4. Click "Apply Now" to immediately reinstall plugin with selected source
  5. Selection persists - reopening store shows the saved branch selection

Testing

  • Settings persist across app restarts
  • Branch selection works for all plugins
  • "Apply Now" correctly reinstalls with selected source
  • Switching back to store version removes override
  • Source group only shows for plugins (hidden for icons/wallpapers)
image

- Implement methods to get, set, and remove Git branch overrides for plugins in StoreBackend.
- Enhance InfoPage and SourceGroup to allow users to select between store version and specific Git branches.
- Update localization files to support new UI elements related to Git branch selection.
- Ensure proper handling of plugin data and UI updates when switching between sources.
@ImDevinC

Copy link
Copy Markdown
Contributor

@designgears

designgears commented Jan 23, 2026

Copy link
Copy Markdown
Contributor Author

We already support "custom" plugins that allows this, I don't know if adding this to the main plugin source is the right call IMO.

It currently clashes with the store and makes it a huge pain when developing existing plugins, this gives you simple "beta" access, and retains the ability to add custom plugins not on the store.

@ImDevinC

Copy link
Copy Markdown
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants