hangarmc / hangar Goto Github PK
View Code? Open in Web Editor NEWA plugin repository used for paper plugins
Home Page: https://hangar.papermc.io/
License: MIT License
A plugin repository used for paper plugins
Home Page: https://hangar.papermc.io/
License: MIT License
Shove everything into one format, then into a website like maybe POEditor, then export for both frontend and backend formats (maybe automate via maven the conversion of formats?)
Add null and safety checks for user/version/org/... getting to either return a default "not found" 404, or a specific redirect with an informative alert whenever it may seem more fitting.
Remove the plugin id from the creation page and its API usages, since (author and) slug already are the proper, case-insensitive identification used everywhere except for the API, and will only cause confusion for both people uploading plugins and people using the API.
Currently, a 404 in an api method returns the html error page. It should return its own json error with a consistent error format.
The infrastructure exists to support logging organization actions, yet there are no logged actions for organizations.
Probably should add a few for:
EDIT: expanding this to other loggable stuff
or something along those lines. Edit/comment with more loggable actions.
With plugin ids being removed (#141), project dependencies need to be updated as well, also with multi-platform support in mind.
This could mean:
In order to remove the need to get the route url for a view by a string, the routes should be some constant.
Unsure of what the final form should look like
routeHelper.getRouteUrl(Routes.ROUTE_NAME, pathArgs..., queryArgs...)
or
Routes.ROUTE_NAME.path(pathArgs...).query(queryArgs...)
These enums should be converted into db tables that can be modified by an admin on the frontend.
this means it was decided NOT to convert from an enum.
On the version reviews page, there isn't a link back to the version or project page. There probably should be for ease of use.
Instead of having the copy url button in a drop down menu, put it next to the download button with the usual copy to clipboard icon.
Setup the email service and send emails to the user when needed.
Only spot I could remember off the top of my head. Edit or comment with others
Improve file blob storage (IchBinJoe wanted to take a shot at working out a concept) and otherwise add file size limits and a limit of builds in a specific time window for normal users (?)
v2 is the external public api
Admin
Application
Projects
Organizations
Users
End Users
Pages
Channels
Versions
Reviews
remove vendor chunk, make everything depend on main chunk, stuff like chart.js should only be used in its own file
http://127.0.0.1:8888/ to debug
see configureWebpack.optimization.splitChunks.cacheGroups for info
Simply add an additional "Save Changes" button to the top of the settings page for projects. Bit of an small annoyance to scroll all the way to the bottom when you just changed something small at the top.
On the version creation screen, the channel creation is borked.
Since the full range of supported versions can't be detected automatically and so that people don't have to put it into their docs manually, add checkboxes for version support in project settings and have a small display on the project's sidebar
Describe this feature briefly
Hangar should support webhooks from GitHub for releases, such that when I release 1 place, it copies the description and links to the GH release/file on Hangar.
Alternatives considered
A self-hostable program to handle this for us, i.e. one that simply uses webhooks + Hangar API to release automatically. This could also be community provided.
Currently, the user action log for projects changing their icons, only lets admins know that the icon was not changed, there are TODOs in the methods for uploading new icons (POST /{author}/{slug}/icon
) and resetting a project icons (POST /{author}/{slug}/icon/reset
) to include additional info (a newState and oldState) in the logs. Not 100% sure what should go there, I thought maybe uploading the old images to somewhere else and putting the url in there. Or maybe storing an encoding of the image, but that could be big.
Should update to bootstrap v4 (and eventually 5).
There aren't many breaking changes in v5 so it shouldn't be an issue if we upgrade to v4 before v5 is released.
migration guide
v5 blog post
Instead of catching errors that should show up as alerts, we should add a custom exception resolver to automatically add the alert information to what is passed to freemarker. That was we dont have to go to each route and add the errors to the MaV manually. This should be possible.
Options basically are:
--
Project owners, or well anyone who can edit pages/version pages on a project should have access to an edit history for that page. Currently that info is visible in the user action log, but that is only for Moderators/Admins. Along with this would come page rollbacks. This shouldn't be a big issue since that information is already stored in the logs table.
Add caching annotations on the required service methods.
Can probably look at ore to see what exactly they cached.
More?
If a project in on a repo, there should be a standard button to view/copy the dependency info for maven or gradle.
Sometimes you might just not want people to know (but always visible to staff). Should hide membership on projectpages (except for the primary owner in non-org projects) and org membership on the user- and orgpage.
I think the download, individual download, views, and individual view stats all need to be implemented
individual version downloads
individual project views
background task
This issue should also probably cover that background task that I think is supposed to exist to auto update those other two databases.
An ongoing list of bits and pieces that should be converted to Vue components.
Ownership transfers for Projects/Organizations
Organization Owner and Project Owners should be able to transfer ownership to another user.
v1 is the internal api used only by the frontend for dynamic content.
When an admin, or someone with perms goes to change a user's position in an organization or project, the dropdown to select the role should default to the users current role, rather than just the top one in the list.
Before beta, we need to consolidate v1 and v2 APIs. it really makes no sense to start with two api versions. There are a bunch of v1 api routes that aren't even used in the frontend.
/v1/projects - listProjects - v2 has has equivalent
/v1/projects/{author}/{slug} - showProject - v2 already has equivalent
/v1/projects/{author}/{slug}/pages - listPages - was used the the project page card, but was restructured to not need this anymore
/v1/projects/{author}/{slug}/versions - listVersions - v2 has equivalent
/v1/projects/{author}/{slug}/versions/{name:.*} - showVersion - v2 has equivalent
/v1/projects/{author}/{slug}/versions/{name:.*} - deployVersion - v2 has equivalent
/v1/projects/{author}/{slug}/tags/{name:.*} - listTags - included in v2 version of above
/v1/tags/{tagId} - not needed
/v1/users - dont see this used anywhere? does v2 need to have something to just get all users?
/v1/users/{user} - showUser - v2 has equivalent
/v1/projects/{author}/{slug}/keys/new - (atm, its used for deployment key creation in project settings, will be replaced)
/v1/projects/{author}/{slug}/keys/revoke - (same as above)
/v1/platforms - maybe can just be replaced by putting info on window global object? currently used in DependencySelection.vue
Yeah, so things that have to happen here...
Make the jump to Hangar ever so slightly nicer by adding a button/field on project creation to import a ReadMe's contents, or to convert a Spigot resource page's description from BBCode to Markdown.
prolly wanna finish vue migration first I guess, also compare to PaperMC/papermc.io#50
Add a system to handle database changes
Migrate JQuery to Axios/ES6+Babel
Is this planned?
Should create a system for sending global announcements. There is already a bit of one with the Prompt system, but its limited at the moment. It uses an enum that only has one object, one to tell users to change their avatars when they first log in. This could be expanded to include custom ones that uses with a specific permission can create and send out.
MiniDigger suggested using the staging notification system and making that configurable, so there are a few options for this.
Allow resources to be auto updated using github releases, and copy version + description from the release.
This would need some limitations (1 file releases only etc)
Now implemented on the backend, just needs a frontend display with a way to add, remove, and sort them.
Each route needs to be checked to make sure only users with the proper permissions will be able to access it.
Support external download link when creating a new version instead of uploading a jar/zip file.
Mainly for projects that would require multiple jar uploads with the same version strings (plugins that support multiple platforms).
also use babel to make it actually nice
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.