Skip to content
This repository has been archived by the owner on Oct 7, 2024. It is now read-only.

Plugin screen enchancements #139

Open
amadare42 opened this issue Feb 5, 2021 · 4 comments
Open

Plugin screen enchancements #139

amadare42 opened this issue Feb 5, 2021 · 4 comments
Labels
Design Design improvements or fixes Enhancements New feature or request HunterPie: Core Changes related to HunterPie core

Comments

@amadare42
Copy link
Contributor

amadare42 commented Feb 5, 2021

I'll list here plugin screen enhancements. Please provide your thoughts on that before I'll start implementing them.

Search bar ✅

As a user I want to be able to quickly search in large plugins list.

  • found text should be highlighted
  • header should display both max & found plugins count (e.g. "Available Plugins (2/6)" or "Available Plugins (6) - found 2")
  • search panel should have fixed position and be visible regardless of scrolling

Possible search bar locations:

  • on top of plugins list
  • button of plugin list, displayed when user presses Ctrl+F or magnifying glass button in a bottom-left corner
  • collapsible, on bar with "Open plugins folder" and "Refresh" buttons. It can either cover then or push them to right. Could be called by clicking search button

Quick navigation between categories

As a user I want to be able to navigate between categories (Available, Installed, Waiting for reload) quickly.

Solution 1 - sticky headers

Category headers are always visible and clickable. When clicked, view will scroll to this category contents.
image

Downside of that solution is that we will spend additional space that could be occupied by plugin rows.

Ability to mark that extra user actions are required

As a user I want to easily know that additional actions in addition to download click are required.

If we add "ActionRequired" field to module.json, we could utilize standardized way to emphasize RTFM, so user won't miss require steps.

Possible ways to notify:

  • extended "plugin installed" toast with accented text
  • additional toast with accented text
  • element with text like "some installed plugins may require additional actions" that is always displayed in plugins screen until restart
  • additional accented line in plugin list item

We could implement one or multiple items from the list.

Multiple plugin channels

As a user I want to be able to participate in testing of beta plugin builds as well as rollback to master easily.

  • right click on Download button opens dropdown where user could select channel
  • if plugin is in non-master channel, specify that in plugin list item in accent color
  • display channel name on top of right panel (with readme). User can change channel by clicking on it
  • if plugin from selected channel requires greater HunterPie version than available, fallback to master

That will require module.json:Update support or enpoints.
I would suggest keeping selected channel in plugin.settings.json.

Removing unnecessary files on plugin update

As a developer I want to be able to easily remove files that were downloaded as part of previous version but aren't needed anymore.

I suggest adding support for another special value in module.json:Update object. It will contain patterns that will resolved from plugin root. For example "Delete": "some-old-lib.dll;assets/img-*.png;*.dll".

Plugin preview ✅

As a user I want to see all available information about plugin when selecting one.

I suggest adding panel on top of readme that will display enlarged plugin icon as well as additional information like plugin links, publish date, install button, selected channel, download count, author, etc.

Publish date ✅

I suggest adding publish date in module.json.

Plugin links ✅

As a user I want to be able to check plugin source code/site from HunterPie.

I suggest extending module.json with "Links" field. This field can contain links to github or other sites. For known ones (such as github, patreon, nexus), icon can be added.

This could be unnecessary, since all this info may be just included in readme, but I think "native" display will incentivize developers to add this information more often. And in case of using readme from github, you will not have to duplicate link to github itself.

Image zoom ✅

As a user I want to be able to see details in smaller images from readme.

I suggest adding ability to click on image to show it's larger version.

Plugin visual settings ✅

As a developer I want to be able to provide first-class configuration experience for user.

I suggest adding HunterPie API that allows to add configuration tabs for plugins. So it will be possible to add your own controls to options.

  • it should be possible to add simple options without reference to UI. For simple settings models there should be simple API that will create necessary controls based on plugin's settings class
  • it should be possible to add custom controls
  • I think storing resulting settings should be managed by plugin itself to not limit developer with his options

This may look like that:
image

@Haato3o
Copy link
Member

Haato3o commented Feb 5, 2021

I'm fine with all those suggestions.

Search Bar

collapsible, on bar with "Open plugins folder" and "Refresh" buttons. It can either cover then or push them to right. Could be called by clicking search button

This is the best one I think, easy to see and to use as well.

Quick navigation between categories

I like the sticky headers, can't think of anything better for quick navigation.

Ability to mark that extra user actions are required

element with text like "some installed plugins may require additional actions" that is always displayed in plugins screen until restart

I like this one.

Multiple plugin channels

This sounds pretty useful, could add a hashtable inside the Update so we can have a list of name: endpoint. And yes, the selected branch should be saved in plugin.settings.json and if the selected branch doesn't exist in the Branches dictionary, then we use the UpdateUrl as default.

"Update": {
    "Branches": {
        "beta": "https://beta-endpoint",
        "alpha": "https://another-endpoint"
    }
}

Plugin visual settings

This is probably the most complex feature imo, but I don't see why not, as it will enhance the user experience to make everything even easier.

@Haato3o Haato3o added Design Design improvements or fixes Enhancements New feature or request HunterPie: Core Changes related to HunterPie core labels Feb 5, 2021
@amadare42
Copy link
Contributor Author

@Haato3o I would also suggest adding ability to disable auto-updates. It would be also helpful if there was a way to downgrade to specific plugin version. For that we could add support for optional PreviousVersions field in plugin registry like so:

{
  "InternalName": "DecorationSearch",
  "Readme": "https://raw.githubusercontent.com/Haato3o/DecorationSearch/master/README.md",
  "ImageUrl": "https://raw.githubusercontent.com/Haato3o/DecorationSearch/master/DecorationSearch/Assets/icon.png",
  "Module": "https://github.com/Haato3o/DecorationSearcher/releases/latest/download/module.json",
  "PreviousVersions": ["https://github.com/Haato3o/DecorationSearcher/releases/1.0.0.0/download/module.json"]
}

@Haato3o
Copy link
Member

Haato3o commented Feb 12, 2021

It would be also helpful if there was a way to downgrade to specific plugin version.

I don't see any reason why someone would want to downgrade a plugin to be completely honest, the only use case for it is if someone has a pirated version of the game and wants to use plugins that don't support that game version anymore, or very specific cases that isn't worth to cover because I've only seen one person wanting to downgrade a plugin since I've added plugin support.

@amadare42
Copy link
Contributor Author

@Haato3o if plugin update introduced bug or changed functionality that user was relying on, it may be useful. Maybe it is worth to add "rollback to specific version and skip next update". I can agree that it may not be very wide-used feature, but HunterPie do have ability to disable automatic updates, I think plugins should have this too.

This was referenced Feb 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Design Design improvements or fixes Enhancements New feature or request HunterPie: Core Changes related to HunterPie core
Projects
None yet
Development

No branches or pull requests

2 participants