Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: allow opening hidden plugins #736

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

alvaro-cuesta
Copy link
Contributor

@alvaro-cuesta alvaro-cuesta commented Dec 28, 2024

Please tick as appropriate:

  • I have tested this code on a steam deck or on a PC
  • My changes generate no new errors/warnings
  • This is a bugfix/hotfix
  • This is a new feature

Description

This fixes issue: #734 (see issue for alternatives considered)

This solves the use case where plugins are hidden from the quick access list because access to their panels is not used very often. For example, plugin "ProtonDB Badges" is fire-configure-once-and-forget, so it makes sense to hide it so it doesn't waste space and attention during quick access.

But this doesn't mean the user will never want to access hidden plugin panels to e.g. briefly change configuration. Currently the only way to access the plugin content panel is to unhide the plugin, access it in the quick access list, and then hide it again.

This allows opening plugins from the "Plugins" panel in Decky's settings, even if the plugin is hidden in the quick access list. Clicking the open button opens the plugin in the quick access sidebar, regardless of its hidden status.

Additionally:

  • Since the "open" action is expected to be more common than the current "Reinstall" button (which seems to be there because it turns into "Update" when an update is available for the plugin):

    • Add "Open" action as the primary icon button
    • Move "Reinstall" option inside context menu so plugin can always be reinstalled (regardless of available updates)
    • Keep "Update" button in main interactables, but only show it when an update is available

    (See my comment below for some thoughts around this.)

  • Add notification badge if plugin has updates

    Makes it more consistent with the rest of the app, which already has badges on available updates. It also makes it more obvious now that the "Update" button is only shown conditionally, calling attention to the updatable entries.

This is how the changes look in the "Plugins" settings tab:

Screenshot

@alvaro-cuesta
Copy link
Contributor Author

alvaro-cuesta commented Dec 28, 2024

Posted this PR because I'm running it on my fork and I figured having an actual runnable build would make sense to better discuss the ergonomics (see #734 for alternatives considered).

In particular, I'm not entirely sure if the "Open" action should be relegated to the context menu anyways, instead of having its own icon button.

I want to work on #350 soon-ish (which might deserve a toggle per row for conciseness, see screenshot in first comment) so it might make sense to not even add the "Open" as a main action in this PR to leave some space for the toggle.

This discussion is not really specific to this PR, but I'd rather leave a smooth path forward without too many UI changes across PRs.

  • I expect 99% of the time users will just use the quick access menu, and for the very few cases that they really want to open a hidden plugin they can still reach through the context menu which is one click away.
  • Seems like the toggle might be a useful action to have ready at hand, especially after updates that might break multiple plugins at once...
  • ...but "open" seems useful as a main action too, so I can't make up my mind on which of the actions should stay (or both?). Currently "hide" and "freeze" are inside the context menu and it feels fine... plus a toggle might be a bit unspecific.

I still think it makes sense to keep the "Reinstall" button tucked inside the context menu though (for the same space-saving reasons).

Some actual screenshots on how it could look like IF the plugins are disabled via toggle:

  • This would be the "Plugins" tab with "Open" button AND disable toggle, which admittedly looks a bit busy and makes overflows more likely:

    With open button

  • And this would be only the disable toggle, no "Open" button:

    No open button

  • If the open action is tucked inside the context menu it could look like this (note that this uses my branch of feat: add MenuSeparator component decky-frontend-lib#115 which exposes MenuSeparator):

    Context menu

Thoughts?

@TrainDoctor TrainDoctor requested a review from AAGaming00 January 2, 2025 20:29
@TrainDoctor TrainDoctor added enhancement New feature or request javascript Pull requests that update Javascript code python Pull requests that update Python code labels Jan 2, 2025
@TrainDoctor TrainDoctor requested review from a team January 2, 2025 20:29
This allows opening plugins even if they are hidden in the quick access
list.

This solves the use case where plugins are hidden from the quick access
list because access to their panels is not used very often. For example,
plugin "ProtonDB Badges" is fire-configure-once-and-forget, so it makes
sense to hide it so it doesn't waste space and attention.

But this doesn't mean the user will never want to access hidden plugin
panels to e.g. briefly change configuration. Currently the only way to
access the plugin content panel is to unhide the plugin, access it in
the quick access list, and then hide it again.

Resolves SteamDeckHomebrew#734
The action is expected to be more common than the current "Reinstall"
button (which seems to be there because it turns into "Update" when an
update is available for the plugin).

Instead:

- Remove "Open" action from context menu and add it as an icon button
- Move "Reinstall" option to context menu (regardless of available
  updates) so plugin can always be reinstalled
- Keep "Update" button in main interactables, but only show it when an
  update is available
Makes it more consistent with the rest of the app, which already has
badges on available updates. It also makes it more obvious now that the
"Update" button is only shown conditionally, calling attention to the
updatable entries.
@alvaro-cuesta alvaro-cuesta force-pushed the feat/open-hidden-plugins branch from d169a3f to 91c9d11 Compare January 2, 2025 23:13
@TrainDoctor
Copy link
Member

@alvaro-cuesta, hey sorry for the long time between when we last discussed this on discord and now.
@EMERALD0874 is our most versed UI/UX person on the team. I'll ask them to give this a review. Personally I love the toggle and open button in combination but I want Emerald's opinion if that's too much visually. I'm aware that a large portion of our users don't even know to open the settings menu until a plugin starts misbehaving so adding more interface might not be helpful.
Is it possible to make the open button only appear on plugins that have been hidden? If so I think that would be ideal imo.

@alvaro-cuesta
Copy link
Contributor Author

@TrainDoctor no worries, holidays are always a tough time, thanks for coming back to this.

Is it possible to make the open button only appear on plugins that have been hidden?

The UX person at my job has this motto of better being consistent with what you show. E.g. in this case it might not be immediately obvious why some plugins have the buttons while others don't, which might puzzle some users.

But of course there are always exceptions and although I like dabbling in UX I'm not an expert either, let's see what @EMERALD0874 thinks!

Splits it in two sections:

- Install actions (reload, reinstall, uninstall)
- Status actions (hide, freeze)

Makes a bit less overwhelming and more structured, now that there is an
additional "Reinstall" menu item.
@alvaro-cuesta
Copy link
Contributor Author

alvaro-cuesta commented Jan 17, 2025

Now that SteamDeckHomebrew/decky-frontend-lib#115 is merged I added the menu separator to the plugin's menu (tested in both SteamOS Stable and Beta), splitting it in two sections:

  • Install actions (reload, reinstall, uninstall)
  • Status actions (hide, freeze)

Change is VERY small but IMO it makes the context menu a bit less overwhelming and more structured, since this PR adds an additional menu item with the "Reinstall" action, making the plugin list a bit more crowded.

I've been running this locally in my fork and I feel it makes a difference.

  • Normal mode:

    Normal mode screenshot

  • Developer mode:

    Developer mode screenshot

Even though the "normal" mode only has one status item I still think it's a good idea to guide the user through both sets of actions, plus SteamOS itself has multiple instances of guiding like this, e.g. see how "Switch to Desktop" is standing alone here to highlight it's its own kinda thing:

Power menu screenshot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request javascript Pull requests that update Javascript code python Pull requests that update Python code
Projects
Status: 🔖 Ready for review
Development

Successfully merging this pull request may close these issues.

2 participants