#hangar-dev
1 messages ยท Page 14 of 1
but that's not what it sounds like, it would be "put back into queue" then
not remove from queue
idk, I would still save to nuke it
remove from queue sounds like "its unreviewed, and no one has to review it, so hide it from the reviewers"
BACKLOG isn't the right name for that tho
idk how thats different to approve partial, its also a "hey, this is prolly fine, but use at your own risk cause smth is meh"
I dont think we ever should postpone a review like that
ok, then we can get rid of it
user action log has a modal to view page content, however, its not rendered, we wanna render that, right?
yeah, why not
so was ur mum
yeah, the Markdown component is nice
Hey mini, you are in the vuetify discord right? You wanna take a look at this issue? #340215499398840331 message
vuetify's text-end class isn't working
sure, lemme finish this
cool cool
on a kinda related note, do we need to worry about RTL languages ever?
cause the solution to the problem is to add dir="ltr" to the root html element
we have something that changes
text-align: end
to
[dir="ltr"] .blah {
text-align: right;
}
[dir="rtl"] .blah {
text-align: left;
}
so the text-end class wasn't working, cause [dir="ltr"] doesnt match anything
there is a flag for pinning when you install right?
I need to remember to use that
--exact
dw, ill never rememver that
is there a yarn configuration where we can set that per-directory?
thats why we have bots ๐
looks like there might be
user action log still uses old stuff in backend, because I wrote it before you merged the branch, and its missing UI stuff for filtering
I dont know how to best do the filtering, do we wanna do the same like ore?
the color stuff here, you can click to filter
the marker look so ugley, I really wanna find a better way
thats npmrc, does yarn respect that?
nice
speaking of markdown... we need to include the admonition css/js on pages I think
yeah, I mean cant we just create a css file, and import in the Markdown component
idk about js
same
not sure about executing time for the events tho and if it likes running on server
maybe can just throw it in created() or smth
but yeah, I agree, we should just copy it this time
the markdown rendering isn't done on the server anyways
not do the weird serving via the backend
actually is it? on first page load, is the markdown rendering done on the server?
I hope it is
yeah, it is ok. its in the fetch hook
which is blocking on first page load
isn't blocking on route changing
imma go scroll back in this channel to where we spoke about swagger for accepted filters and stuff and look at that stuff
oh yeah, to get those things documented
that was easier than I thought
oh sweet
lemme try adding it as a param
I was thinking... we could make the sorters an enum that implement an interface
could then grab more info from the enums that way, idk
but like a Description annotation for the filters would be nice, since those are a tad more complicated than the sorters
params are harder https://i.imgur.com/sUdTuL7.png
idk how this example stuff works, lol
yeah I can't get the example stuff to work
ya, not worth that for sure
Oh that's the reason for the nexus as well. ๐
HA!
got a dropdown
.query(q -> q.style(ParameterStyle.SIMPLE).model(m -> m.scalarModel(ScalarType.STRING)).enumerationFacet(e -> e.allowedValues(Arrays.asList(sorters.get().value())))).build());
isnt that obvious?
time to never look at any that shit again
Looks ๐
layout wise, only admin approvals projects and admin activities user is missing
oh and discuss
103 todos to solve overall, that doesnt sound too bad anymore ๐
@deft drift you now happy with the footer?! https://i.imgur.com/iS0hArP.png
no
heh, remembered this was a thing and ran the thingy again
what was wrong with the footer (besides it being WAY to big imo)
simple complained about the alignment the other day
oh yeah, the labels above the buttons
and it doesnt really matter if its big or not since its hidden most of the time anyways
I think I had it sticky before which was worse
Sitemap is Sitemap in german?
we just dont have a word for it
u did a bad job
Many Internet words don't have a german counterpart which is why english words are used
does the LoggedActionViewModel need to be redone?
I think it accomplishes its job well
(except that a bunch of userId needs to be changed to the nullable long)
not sure it does, I just copied the old one and wasn't sure if it still meets our standards
also, the footer gets really bad on mobile https://i.imgur.com/43N1YGd.png
you got any other log actions to add other than these?
https://github.com/PaperMC/Hangar/issues/383
lemme see what exists
theres PROJECT_MEMBER_REMOVED but not addition?
oooh you added that already
yeah, I just noticed that
its because addition was covered by settings change before
but now its not
only thing I could think of is invites
like we have member added and removed, is that called when an invite is created?
well right now, they aren't
even the org member actions are being logged atm
it looks like the org members are logged on invite
that could probably be split up, invite, accept, decline
dont need one for marking notifications as read right?
nah thats overkill
why did you reopen this?
cause its missing again
does clicking on the Paper tab go back to the main version screen?
clicking paper gets you back to the version page
oh it does, ok
then should be all good I guess
https://github.com/PaperMC/Hangar/issues/383
k, I updated it with member actions
coommits
that was a thiccc commit
Oml
Looks good
Only thing I saw was that since you moved the descriptions to i18n, we shouldn't need them in the backend anymore, right?
Why does actions always fail now?
Miniโs domain
Ahh
The action fails because it can't deploy
I have like 30 emails about failed to deploy
Also, updated https://github.com/PaperMC/Hangar/issues/383
I have long disabled actions emails
Since you get a github notifications anyways
One thing I thought about in bed yesterday: since we have this fantastic audit log, is it worth exposing that to org owners?
So that they can see the changes to org stuff and org projects by org members?
I'd imagine so
Like, leaders of the org may wanna know wtf people are doing
who flipped some thing
Seems beter than us having to run around and look if something happens
Yeah
Heh, apperently I missed the start of a vuex training/qualification
A apprentice of mine called me half an hour ago but my phone was still in sleep ๐
Ah apparently it's about the composition api, so not as boring
Thanks for the issues
So for nuxt rewrite to be merged, the nuxt issue just needs to have everything checked off? It looks to be getting closer.
I donโt think Iโve updated the nuxt issue ever. So idk
We could just merge it now tbh, and move master to something else, idk whatโs preferable
Itโs almost a feature complete rewrite
I mean, considering staging is broken anyways ๐
I keep the nuxt issue updated i guess
Aha. I got a local instance setup finally.
K, I updated the issue a bunch
Awesome!
Whelp, now I can at least stay up-to-date locally and try to pitch in where I can.
Has any work been done on https://github.com/PaperMC/Hangar/issues/382? Are we planning to use what is built in with nuxt, use a nuxt addon, etc?
Nuxt uses vue meta, right?
If so that's fine
We already set the title for some things I think
But yeah, bunch of seo stuff that should be straight forward to do
Also like structured data for a bunch of stuff
Like breadcrumbs
breadcrumbs?
Hmm. HangarAuth is failing to install with docker. https://paste.gg/p/anonymous/b58e049fb7964cd99d1f0cadc496a8e3
Do you have HangarAuth on your machine?
What, docker?
Or just don't use hangar auth locally ๐
I have Hangar and HangarAuth as siblings and then I went into Hangar/docker and did docker-compose up -d
Hmm
How do I do a fake user then?
Breadcrumbs structured data are a way to format links in google nicely
I wanted to test creating a project in my local instance.
hmmm when I startup my local instance, it def installs from that requirements file
but I dont get that error
Oh wait weird. I just restarted the docker container for regular Hangar and it says I'm signed in now.
I mean, is auth running? check :8000
Nope
I'm guessing you are signed in as the fake user then
which if you started it via docker, shouldnt be possible
Wait till it becomes actually cool and scans for force OP and stuff ^^
What is preventing me from clicking the create button when I'm trying to upload the jar?
Oh nvm it works when I use a valid plugin. I tried a Jobs jar and Hangar didn't like that ๐
so I get that error if I docker-compose build --no-cache
I dont recall ever changing any requirements file tho
so idk when that started
Well, if python packages aren't locked or smth
Still wanna just throw all of that shit away
What's the diff between delete and hard delete?
delete is available to the author
but doesn't actually delete it
just sorta hides it
Ahh. I guess that functionality isn't implemented yet.
(soft)delete is just a visibility
Hard delete is removing properly, but that's mod only
Lol, I logged into the postgresql system via command line and the hangar database doesn't even exist. Let me keep digging.
Referring to the docker information, it's just localhost on 5432 with user and pass as hangar, right?
ok, fixed that conflicting dependency
Aha. Found the database.
I can recommend IJs database tools
I forgot those existed. Let me read more on those.
Is there an efficient way to test meta tags locally? I've always heard that's a bitch because it's easier to test that in a debug prod.
view page source?
Ooo, what's that?
A tool to test structured data? :P
https://search.google.com/structured-data/testing-tool
Main menu. Google apps. Structured Data Testing Tool. Structured Data Testing Tool. Sign in. public. NEW TEST. settings. View Search Gallery; Help; Send
HangarAuth can't really be all that complicated right?
That's the kinda stuff we wanna do with strcutred data
No i don't think so jake
I wasn't even sure if that's worth to do in nuxt, but prolly is so that styles match
yeah, I think it'd be good for the UI to match
well, maybe could use some "material" framework
ik materialize.css exists
Damn. Looking at the page source, 24K lines is just the styling.
that's the entirety of the vuetify css styling
That's debug mode tho
Ahh
Staging will come back tomorrow or Wednesday or smth
Then you can see the real page size and speed
It's sooooooo fast
ok Glare, you could be able to build the whole thing w/docker now
pull that latest commit from HangarAuth
then do docker-compose up -d
Trying now.
Got further at least.
The docker_auth container won't start because it's saying no such file or directory on something.
does it say where its looking for a file or directory?
should be
Projects/
Hangar/
docker/docker-compose.yml
HangarAuth/
Dockerfile
Interesting. So when you add in hangar auth, it changes the port that the database is running on it seems because it's not on 5432 anymore but it's on 2345
yes
Gotta update that locally then so that it starts up.
wdym?
Well I couldn't start my local instance anymore because it was looking for a postgresql server on 5432 but it got changed to 2345
oh wait, when you are using hangar auth, everything is supposed to be in docker
not just auth and database
the main app as well
Makes sense
when running Hangar via docker, it uses a different configuration file located at Hangar/docker/hangar/application.yml
and the db url is jdbc:postgresql://db:5432/hangar in that one
Yeah... sorry
its fine I saw it already this morning
You canโt really edit types with migrations
Like, I wanted to redo that logged_action_type, but you canโt delete existing ones
And you canโt drop the type w/o dropping all the tables that use it
reeeeee
urg, I see what you mean
ERROR: invalid input value for enum logged_action_type: "version_platform_dependency_changed"
#cyclic-dependency
uff
now I need to try to understand all the securty stuff jake did ๐
ayyy
works
heh
down too 100 todos!
and like, many of them are "delete this"
mmmh, not sure storing the icon in the log was a good idea tbh, apperently its 200kb
meh we can worry about it later, and its a really nice feature
Are we saving older icons?
also, didnt we just do a breaking changes update to husky?
smh
I just saved older icons, yes
Into the user action log
As seen by the image above (it's properly scaled now)
isn't that gonna make those logs HUGE?
As I said, that one image is 200kb ^^
Maybe we should give them some uuid and store them on disk instead
Yeah I like that, some folder where we have a bunch of images, subdivided into folders with the first two chars, so that file systems don't get angry, and then in the log we just save the random uuid
does this log action make sense? version_platform_dependency_changed?
you only really ever add, or remove one
I guess if you were thinking there should just be one "changed" log type
where it lists before, and after
Okay so after this commit https://github.com/PaperMC/Hangar/commit/c127c55ce87e94533cde575a34b3f369695f2fb2
I tried recreating a new project and uploading a project icon and it's throwing 404s on it not.
http://localhost:3000/api/internal/projects/project/paper/PlaceholderAPI/icon
You did restart the backend, right?
That url looks fine
Can check when am at my pc later
Yeah I'm fairly sure I did another yarn install
Backend, the spring thing, restart that so the new api is there after you pull
how do i get this thing to start properly for development
cant get the auth thingy going
so I use the auth when I dev, but @pallid yoke doesn't
Mini, you start the database w/docker, and then start the spring backend with intellij?
Yep
ok i must be doing something really stupid
how do i not use the auth
oh nvm i did something
ok @wise temple so what isn't working, or doesn't make sense about https://github.com/PaperMC/Hangar#setting-up
I think its just some weirdness when using the builtin user
mainly the sign-up button still redirects
oh ya dont think that was ever changed
Hi is chance to add max health for mobs ?
you already asked this in #paper-help , this channel is not for support
maybee dev have a method
as stated, this could easily be done with a plugin. However #hangar-dev isn't about paper development.
rip hangar?
rip domain.
oh that is indeed a rip
Domain Status: pendingDelete https://icann.org/epp#pendingDelete
Domain Status: serverHold https://icann.org/epp#serverHold
Domain Status: redemptionPeriod https://icann.org/epp#redemptionPeriod

Yeah he wants to get that domain for a small amount of money.
"small"
usually it's cheaper to renew it cus there's a fee if you wait
Yes, and mini got cited like 150$ for the expired domain and decided to let it go back into the pool and buy it again.
lol
ok, so what is the purpose of the user locking/unlocking?
way back when, I thought it was something admins could do to a user, but that doesn't seem to be the way it was setup
Also, https://www.baeldung.com/spring-boot-jdbi#using_daos suggests there is a way of using a BeanFactory for tons of DAOs. Might be better than the system we have.
Oh yeah hardcoded beans like that will get rid of all the errors and we don't need the generic I guess
Isn't user locking like banning?
This should use refs, not document get element by id
The way locking was setup, is that only the user can lock themselves.
So idk what that is
Closing your account?
Idk
Fun fact that button doesn't work on ore
Like, sponge ore prod
Pssssst
Since you here, do you know what the usecase for that button is?
Is it like a, I wanna archive my account?
รhm the thing is i don't know either ๐ that button is there since the first version I was not even a part of
Let me check something
I think you basically lock out yourself from uploading and creating stuff (don't ask me why you would do this)
Do we wanna turn it into a thing mods can do?
The way Iโve been using the @Unlocked annotation, is on requests that change something
So the user can only view stuff, no changing?
Yeah so like, "your account has been (temporary) locked by staff, in response to recent actions. You can not modify your account or any projects while your account is locked" or smth
Yes, I like that
If the locking is for a longer duration, might make sense to include a link to whatever the appeal process is or at least the rules
ok, so what is the purpose of a sitemap? and do we need to have one?
indexing, basically
for search engines?
it's mostly there for search engines but can be human readable
Site map is very very important
ok, can just proxy it from frontend to the existing routes in spring?
It's how you tell google what pages you have
Doesn't backend have code to generate the sitemap already?
yes, that's what I was saying
Same with stuff like the robots.txt
Robots.txt is for telling google where the sitemap is and what not to index
what about this statusz thing that ore had?
also... what are we gonna do about someone with the username login? would match multiple routes
or api, or various other places where there could be conflicts
We should prolly reserve those?
And statusz was some kind of play framework thingy, right?
Oh I see it's git infos and stuff
No need for that, we can just use the spring boot actuator instead, it has a way to disable git infos
I used chartist for the stats page
that's what I meant to say https://www.npmjs.com/package/vue-chartist
does it do anything different to my chart.vue?
well I had to add smth to watch the data prop to update the chart when that data changed
lemme look at the code
so maybe vue-chartist does that since the data is a prop itself
mmkay
the guy is MIA since last summer and not very active generally
so lets just take from his code what we need ๐
he just adds a watch on the data and calls this.chart.update(this.data, this.options)
yeah, that's what I did
wat
I think docker hub is broken
Get registry-1.docker.io/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
ah yes
they have no clue whats wrong
great
but in theory deploy should work again now
hmm, for some reason one of the numbers doesn't have the white color
k, fixed that by just applying a color. weird
so I threw the stats sql query in its own file. idk if you had looked at doing that before, but it might make some of the DAOs a little cleaner? but then you have to navigate to the sql file if you want to view the query at the same time... idk what's best
IJ is able to understand the line breaks in the annotations nicely for me and syntax highlighting works good
Sadly it breaks with string templates
the line breaks don't seem to work for me in IJ, like the next line's quotations start before the top line's
this is what happens
Ah, never noticed that
You can also control enter edit language fragment or smth and IJ gives you a nice editor
yeah, I always forget that exists, and then remember, and then use it once and forget again
Generally I don't care too much where the queries are, the cool thing about having them in code is that you can quickly find them
But if we move a few complex queries out to files to make our life easier that's fine too
I don't expect us to touch most of the query anyways
what is hangar? Im new lol
So is it like Sponge's Ore? What is the relationship between Sponge and Hangar btw.
Hangar was originally gonna be a fork of Ore, but, was basically rewritten with java
well, was rewritten twice essentially
once was literally just trying to copy it in java exactly, but now its pretty much being re-written all over again
Is Hangar out?
nah, still in dev
oh ok
The health no platform thing most likely just lists all projects without a platform, which would be a bad error
Can that even happen on hangar?
it shouldn't
have to select at least one when uploading a version
and you can't remove all from it after
We might not need that report then
But I think that kinda stuff we will expand on when people actually use and break hangar
oh yes, waiting for the big annoying breaks to happen
hrm... getting an issue where HangarAuth doesn't seem to save the uploaded organization avatar
๐ก really wish a better project would just poof into existence for that.
Updating service hangar_new_mail (id: fn3fgrcmwpm8ocdrbh1509kzp)
Updating service hangar_new_auth (id: yyva13y3wcgidhhwgwqxa9fhe)
Updating service hangar_new_redis (id: ed6449og9jt89ub5k5wzgxmna)
Updating service hangar_new_frontend (id: na4bfurxw9uudpqsh0hmvys1m)
Updating service hangar_new_backend (id: qa6re6tw2r5zmf9x05fdm35hx)
Updating service hangar_new_db (id: fibnjz43p5k4urly8fh53moof)
figured out why deployment wasn't going thru
https://hangar.benndorf.dev/ works properly now
properly
care to send me a browser console log screenshot?
cause it does look right for me ๐
No, but activating Javascript does help xD
yeah we havent done any design work, so its obviously not optimized for mobile
honestly it looks pretty good on desktop. its basic, but I like it, it looks clean
still looking for desginers btw, lol
its literally just the default dark theme of vuetify
I get the same thing with no scripts
yeah you should, its all server rendered
no I mean this https://shx.gg/cmZQPZ
Thats how it looks without scripts for me
huh, its just uBlock Origins JS blocking feature
sulu also blocks fonts
NoScript probably blocks everything script ๐
and yes, it will not be perfect, part of the css is loaded with the JS
only blocking fonts at least gives me the images back
But idk, I doubt too many people have JS blocked anyways
btw, is it that narrow on purpose?
its not even using 50% of the screen
thats part of design and thus not done ๐
Tbh there is nothing wrong with that default theme, looks great. Especially because it is dark xD
I know you'll want customizations, but you don't need to be that completely far from that default, a clean simplistic look that is easy to understand is definitely fitting for this from my opinion (I'm just a user ultimately)
yeah, its not like the vuetify default is bad or anything
it looks horrible, the contrast is all over the place, stuff isn't consistent, etc
yeah idk what kind of design lessons you two took 
making dark themes is especially hard
I really like the design sketches bastian did for bstats, I want smth like that ๐
I somehow managed to get hangar (nuxt-frontend) running in 10 minutes btw, compared to the last 5 times it took me at least an hour each 
programmers 
but idk, looks better than spigot, even tho thats not hard
spigot just looks dated, but their theme isn't bad
Don't they have paid dark mode?
Yep
for paper its the blue for some reason
it is, but it makes the entire website look like a warning cone
but we will stick to the plan of first making the software usable, let others use it (and promise not to nuke DB every day), gather feedback on the functionality, while we work on design and policies
I meant more like the general "clean" look, but yeah, I get it
None, and I did not say I did XD
Just tryna give some user perspective ๐ญ
that was more of a dev perspective, as it looks ""fine""
but definitely not "nice" for the "normal" user
that's my contribution for the week, time for CS now
... didn't see the readme branch btw, sorreh; just merge that over if you pull the branch it, tho plz add info on the actual fake-user setting/location (setting up hangar as well was something also throwing over some people afaik, also given it's not necessarily needed) and that the detach -d parameter for the docker-compose command(s) isn't necessary
am I going crazy or was the profile image not always square?
OH, you changed it from using a v-avatar
ok, so the problem with changing organization's avatars... is that its not stored in a docker volume so each restart... it goes away
that's great
Then extend the path volume mapping to include organization avatars.
yeah, I just did, I just didn't realize what was happening before
I thought it wasn't saving at all, not realizing it was saving, but then getting "deleted" when I rebuilt
@pallid yoke maybe we wanna throw https://vuetifyjs.com/en/components/breadcrumbs/ this for the project header?
can be on pages as well
so, I'm curious why you went the route of wrapping all the handlermethodargumentresolvers with the pagination resolver instead of writing your own resolver for it?
Sounds good, maybe that already generates the necessary google structured data
I think stuff was a bit weird, at first I only wrapped one
Yeah to fix the absolutely broken error handling that I did on there, and to have the error handling all in one place
And well, it's an user avatar essentially, it just doesn't have a link
so I changed the way the Pagination object is resolved a bit, so far, everything still works as expected
just w/o needing the initializingbean to change the adapters after-the-fact
I see
just hijacked where the adapter is created, and added our own resolvers up top in it's own afterPropertiesSet https://github.com/PaperMC/Hangar/blob/nuxt-frontend/src/main/java/io/papermc/hangar/config/WebConfig.java#L157
we are getting so close... I can feel it
big thing-wise, we have all the download stuff, the user activity page, the user admin backend functionality, and api authentication
And a bunch of small random stuff everywhere ^^
But yeah, everything is coming together nicely
Ah yes, got api key authentication working. Soooo nice to have 1 auth system instead of having two completely separate ones.
Oh, and one other big thing we need to figure out, is the api for creating versions.
Creating versions is probably the most complex thing users can do.
Yeeeaah
Did ore handle that nicely?
Maybe I can look at stuff tomorrow
First day of the week is always a mess for me (yesterday was holiday)
well ore had a solution... but we added a TON more stuff
all the dependency/platform version stuff
like, I had earlier thrown around the idea of having people put this stuff in their respective .yml/.json files so it could be read on a file upload
cause with api, you need someway to convey all that information so you create the file with one request
there been a couple times now... where I swear one of the perm voters isn't working correctly, I add some debugging statements, and then it works suddenly.. as if just having it reload the file was enough to fix it.
that's happened many times with the custom HangarAnnotationIntrospector to perm-lock jackson serializing certain fields
๐ค I'm either imagining this... or it is only smth that happens in the dev environment
itt: Machine is a crazy person
Oh yeah, I remember that, that might be the best solution really
Can also use that data to expand the current scanning then
mmmmh, why are the settings in two cards?
I mean, it makes sense splitting up stuff a bit
lemme see if I can make it use tabs
You talking about project settings?
yeah, I used vertical tabs now, really liking that
categorization obviously up for debate
I can see the page changing size each time you choose a different tab being pretty annoying... maybe a fixed height would be nice?
hmm, what would be the way to accomplish that?
setting a min high or smth
ufff
I think am done with the settings refactor and donation stuff now
that was more work than expected
but hey, two todos removed
mini, what about tying the settings tabs to a #id ?
so you can link directly to a tab, and refreshing the page keeps you on the same tab?
Oh yeah I thought about that and then got distracted
I mean, could go all out can do it per setting and highlight it, for hot linking
But that might be overkill
I think the tabs would be enough tbh
Yeah
Getting really annoyed again with this hot reloading making the page error...
Is there a way to force it to do a full page refresh every time?
That might just be better
Well not just on that page.
I think the issue arises from the fact that the field is undefined on hot reloads before asyncData is run.
But that would never happen otherwise because asyncData would always run before the field is referenced in the template
Another error check thingy we should do, is on all the Promise.all, check if the result is undefined and return so the error page actually gets shown instead of a data.whatever is undefined error
Yeah
We do that in some places
I also had a really fun issue where translations weren't resolving, and it got worse with refreshing, only restarting nuxt helped, that was strange
ive had a couple crashes while reloading translations where it runs out of memory ๐คทโโ๏ธ
in all likelihood, its just due to the environment, and nuxt build && nuxt start will work just fine
so.. if we just give them default values no error happens
I thought that I tried that before...
I was pretty sure I got errors saying the return value of asyncData couldn't be applied to the component because they already existed
๐คทโโ๏ธ
I made bad experience with default values because they didn't were applied when I thought they would be
But that was for props I think
I was overriding my props with that
oh, that might be what I was thinking of as well...
well it seems to work, refreshing, hot reloading, navigating to the page.
so I guess we do that now where we see it
I'll keep it in mind for when I encounter obscure issues ^^
But yeah seems fine for now
ok, another issue with the dev is that asyncData is run after the created/mounted hooks. which might throw off the logic there
that cant be right, right?
Does the staging branch contain any working API so that I can do some testing on a 3rd party project?
as a matter of fact, it does. Now, nothing is finalized ofc.
What's the new staging URL? It's not updated on the README.
I don't need to do any auth. I am simply going for read-only stuff.
Doesn't look like there's any projects on this staging.
hmm, idk what database mini is using, the one I have for it shows a bunch
yeah, last commit should fix that
Ahh okay, looks like it's in the process of deploying.
Is it pretty much the same as Ore's?
Okay awesome, I see a project now.
yeah, so the db I have is clearly not the right one ๐
you can see all the models at the bottom of the api docs page
Yeah, okay, awesome. I think I can work with most of this.
Getting ready to start on the Hangar addition branch for MCBanners.
cool! let us know if you think it's missing something
cause im sure it is
like, nothing on organizations atm
Oooo, I didn't even think about that.
Is there going to be a reliable way in the API to get the icon of an author / organization / resource?
yeah, it was in the public api, then I think I added a todo to move it back... but then I forget why I did in the first place.
currently the route is like /api/internal/projects/project/:author/:slug/icon or smth
which is technically public even though internal is in the route
but yes, long story short, there will be
Okay, awesome, because that will be essential for these banners.
Looks like ore's is the same way but with Hangar, when you go to the URL, it's actually redirecting to another URL, or at least it is with Mini's.
Okay let me do some testing.
the users avatar is technically on another host tho. like https://hangar-auth.benndorf.dev/avatar/MiniDigger?size=120x120
which itself redirects to papermc.io forums
to take advantage of its generating letter avatars for those who dont have them
otherwise it wont redirect away from hangar-auth
So what should I do on my end to make sure that I can always obtain an icon for a project whether it's the default generated or uploaded?
Just wait for something to be officially in the API?
itll be the same url for both, just one will redirect more than the other
Ahh
like, there could be 2 redirects: a project with no icon uses the author icon and if the author has no icon, itll redirect again to the default generated one
or it could be 0 redirects if the project has an icon
Ahh so Ore's old system used to use IDs. So it looks like I'm going to have to have them put in their user and their project name to turn it into the author / slug.
Aha. Awesome.
WIP. I still need to figure out how I can log all the likes / downloads.
well, hangar has stars which is kinda similar to likes
so if you are talking about all the likes that user has received on their projects, then you can just query the projects they own
I just had tacos like 2 minutes ago actually ๐
machine living the good life
so good
do you think its fine if the donation settings are included in the public api model for a project? It's not private info... I mean you see the email if you try to donate, you see the preset amounts, etc.
well it's not really a solution either as I've just discovered. Instead of throwing an error, it just doesn't update the fields from their default state on a hot reload.
I cannot seem to replicate in another project the asyncData hook being called after created/mounted
so idk what's up
I can probably make it say stars if it's hangar.
btw, saw your question in the nuxt discord... I think i've gotten like 1 answer there for the 30 questions asked ๐
Tbh, I didn't realize Ore removed V1 so those are just totally broken right now. I think the way to make it work for resources is to have them enter their username and then the resource name because it's not valid by ID anymore.
Yeah...
It's unfortunate.
The main page for mcbanners takes way too long to load and it's the webpack client but idk how to improve that.
I haven't tried stack overflow recently, maybe more luck there?
Oh I think the webpack was from running it as dev.
I did make some changes that I was able to push to prod to take it down from 1.7 seconds to like 588 after the first load cause of the cache.
But initial load without cache is like 2.21 seconds. Network just says the type is document so Idek what that is.
Oh actually it's whatever workbox-core.prod is
Ohh it's the PWA I think.
ok... the plot thickens. the lifecycle looks like this when a user is logged in.
but you don't get that error saying testArr is undefined if you aren't logged in, and asyncData finishes before created is called
so something that only happens when the user is logged in is causing this issue
Hmm
ok, narrowed it down to $auth.updateUser(token)
I think bootstrap-vue in general is hard to load. I've seen Vuetify have a much better load time.
I mean, I dont know anything about seo stuff like Mini does, but he seems to think hangar loads crazy fast
5.52 seconds to load the current staging branch (https://hangar.benndorf.dev/)
like I said, idk, might be the host or smth, #hangar-dev message
The concern will be that you guys get this done and the load time is still what it is, it's going to be hard to navigate this thing
If it's a full 4 - 5 seconds for each page change, that will get a tad annoying.
is it 4-5 seconds for you?
Yeah
... that is certainly not what I'm seeing
I can get you a recording.
Looks to be better after the content has already loaded on that visit.
that doesnt look like 4-5 seconds?
I'm going off of whatever the network tab says finish is
its maybe > 1 second sometimes for me going off that tab
ya idk
huh, so if I don't make an axios request there, it's all fine
can't make any http request there?
ok, new theory, cause some http requests work
its only ones over the nuxt proxy
or not, well, was excited for a second
ok, actually found it now... its committing the user (during the user refresh on each route change) to the vuex store
so...
if I delay updating the user by some time for client processes, the issue is resolved, but I don't think that's really a solution
and it's only that commit, not just any commit
so I'm guessing it has to do with the number of things watching that for changes since there are a bunch
finally able to reproduce it in a separate project
reproducible here now https://codesandbox.io/s/nuxt-dev-reload-issue-mk16j
ahha. well I wasn't dreaming about the voter issue. I made a stupid mistake re-using MethodBasedEvaluationContext objects for every voter call which is stupid because they are called for a ton of different methods
It feels weird
Prolly should have a way to define which settings are public and which are not
We might be adding even more stuff in the future where this is more clear cut
Only thing that is really slow right now is avatars, but those will be heavily edge side cached by CloudFlare anyways. The website itself will get faster when we start caching DB stuff too, but considering there is zero caching right now, and the giant queries a single page visit triggers, it's hella fast, lol
Ahh
Mini, here's the wack solution to what I think, is the whole reloading problem https://github.com/PaperMC/Hangar/blob/nuxt-frontend/frontend/plugins/auth.ts#L44
Why the heck does plex come up as an option for that link
??
Yeah I saw that MM
.ts is the extension used for some audio/video streams
yeah, it can't be too small
or the error still happens
which is what makes it extra stupid
So, Mini, how do you begin to debug and see what parts are taking the longest? Is there some kind of profiler for nuxt?
Idk
In spa mode you can see the requests in the browser dev tools I guess?
We haven't done any performance optimizations yet
Most can be done by throwing @cachable annoations on stuff
So it's the backend that's causing the problems and not the component loading of the front-end?
I would doubt that
But generally I haven't seen any slow downs anyways, so I never looked
In dev mode stuff is slow, but that's just webpack being webpack
Yeah I noticed dev was a lot slower to load than actually deployed.
Heh I was wanting to say that am not sure I would tell the user he only soft deleted, but you changed wording in the next commit ^^
I am also not sure if we should move all settings into the project creation screen, it doesn't really make much sense to flood the user like that I think?
Especially since we might have settings we lock behind roles, so only "validated" users can use them or smth
Just write the soft deletion into the AGB or how it is called. Only few will read them.
If you request an account deletion it will be a deactivation only.
Was talking about project
Ah ok, would do the same for projects.
Yeah ok, donโt have to put them there. I did have to add the donation field to the form object to fix an error there tho.
Ah ok
Hmm?
the hint to change the avatar
Ore had it. I think itโd be kinda nice to have a few of them.
Like when you create a project for the first time, it points out where important buttons are
Like editing channels, settings, dependencies, pages, idk
the hash navigation for the settings is more manual than I would like
but we kinda fighting vue router here, so its fine
@pallid yoke I would do the redirect to the general hash in something that fires on the server instead of mounted
so like if there isnt a hash, add one to general
can maybe do it in asyncData before the api requests, then return after so it doesnt do the api requests twice
Hash isn't there on the server iirc
oh, ok, totally didnt know that
It never gets send to the server
I guess that makes sense
Only query gets send to the server
well... what if we just made the settings tab url point to # general
Which is why early SPAs used the # for navigation, before the web history api was a thing
I did that, that was kinda funky because it was a router navigation
so we didnt have to do any re-routing. can still keep mounted() as backup
So it did reload the page
I also considered to just make it proper and use the router again
Would also split up the file a bit
did you know about the ::v-deep sass thing?
totally didn't know about it until just now. can style child components (aka vuetify components) inside scoped css that way
anyone a good dev
literally 0 good devs here
apparently we spell licenses wrong like all over the place
we have it as licences which is apparently wrong
Oh is it really spelled differently in the UK?
Oh man, I see how bad I am with jdbi
I knew the list<pair> was dum, but I couldn't find on how to let jdbi do the mapping to map
Idk if we need to enforce channel color, I mean, it would be confusing to the user I guess? But like, it doesn't hurt anything so maybe just display a warning? Hey, you use that color for release already, you sure?
But just banning for now, since we have the code for that is fine too and if somebody complains we can adjust
Tbh, I hate scoped css, it's rather confusing if you wanna style vuetify stuff and once we actually write css to make stuff look nice, I think i just wanna use css classes properly
the way you to the settings page switch is still a full reload of the route now, its slow :/
it does 3 requests to the server even
can you make sure login still works for you MM? https://github.com/PaperMC/Hangar/commit/5b6116e2c9c7db03842a402b835f9e3943c2cc5c
my brain is mushy but that logic should be fine
Oh you know... it probably messes with the saving too. Since itโs one save button for all the settings, you canโt change settings on one page, and go to another page.
So yeah... your way was probably better. Iโm not sure itโs needed to add an entry to the history tho.
replace shouldn't add one
Oh was yours replace? I forget, I just know there was something history api related
90% sure itโs en_gb but ok
The ISO code is GB yes, UK is a common mistake. I saw some software with it just recently even, apparently it has infected me too ๐
thats hanger
hangar is
lemme grab the pic
now thats a hangar
just toss your plugins in there
I totally did that
Not
Thanks MM
๐
lol
guess what day it is
Renovate isn't on a schedule I don't think so
renovate made me instantly unsub from the repo 
Just ignore the bot on gh
how? I only see block, and I dont want to block renovate ๐
can I ask question for plugin development here ?
so I'm not sure it's really needed to be able to download either the whole file uploaded, or just the jar
(like if a project author wants to upload a whole zip with some extra readmes or whatever)
it should just download the whole thing every time I think
Yooo new API stuff. Nice.
Idrk how to do downloads for the api...
Wdym?
Well like thereโs this whole โconfirmationโ thing. So youโd need to make 2 requests for some versions that arenโt reviewed
Idk if we should keep that whole thing or not.
Well, that could be an option. This bit is really modeled off of ore.
Ahh
hi
Whelp, those are my 2 cents. Do what you think is best MM.
someone could explain what is the goal of hangar ?
is it like top.gg but for minecraft plugins ?
itโs a plugin repository as stated by the pinned messages/channel description
Mmh
This I would say yes, download exactly what was uploaded
Not sure if we need confirmations for api, but I can see that being nice
A hangar plugin updater thingy would interactively ask for confirmation
i don't see why there'd be need for api confirmations
stuff like that can just be done UI side, otherwise auto publishing just becomes weird as people will dismiss it anyways, or it would just impede auto publishing?
Not publishing, downloading
And only reason I see for having it there for downloading is stats I guess?
(download api)
yea, I clicked on there, but, I don't see what that solves
all you do is require a few extra lines in the bot
most sites just count unique downloads per IP
Whiiich does get weird as CGNAT deployments grow
Ore tracks unsafe downloads separately
why am I doing this to myself?
the discourse api is strange
to create a post
you POST /posts.json
why the extension?
O.o
I am questioning the need for this whole job system
why can't we just push shit out to the forums directly?
well, at least that works
lmfao
oh I think the jobs stuff is because of rate limits
I can see 429 status codes in the code
fuck you discourse, lmao
422 Unprocessable Entity: [{"action":"create_post","errors":["Title seems unclear, most of the words contain the same letters over and over?"]}]
directus api poc
not discourse
man, work is getting to me
I have been working on directus all day ๐
anyways, not as much progress as I would like, but that at least works
maybe I can port the template stuff tomorrow: https://github.com/SpongePowered/Ore/blob/staging/jobs/src/main/scala/ore/discourse/OreDiscourseApiEnabled.scala
and figure out the jobs shit
oh btw, I have off work the whole next week
so looking to do a hangar sprint then
You are getting to the fun parts of discourse
saw #315 and figured i could contribute, just a quick sketch of an idea for a hangar logo
another idea
Out of those, I prefer the first one. Idk if we want it to kinda follow the color scheme of the paper logo, or it to be completely separate
ideally the logo should work in two tone first before figuring out colors
part of the hope was for some level of consistency on the site rather than you go to everywhere else bar one section of the site and it's 10 miles different
then the 2nd one on top of the normal paper stack may work?
not sure whats up with the chimney though, although it kinda gives off the "h"
๐ค
@Astrash#063 can you post them into the github thread please? So that they don't get lost
@cyan totem ^
sure
Thanks!
I like the idea
In theory you could say that that logo is made out of two sheets of paper?
thats the idea
Woo, I got it, even tho I just woke up ๐
I think I saw 12 hour waits, I don't even wanna know right now
Even worse is that you can't bypass all the rules set by discourse (like topic title length etc)
Yeah I noticed that while playing around
That's so fun
At least I now know why it's handled via jobs
Those designs look awesome
1 is very hot
Really nice!
Change from Java to PHP? 
yea please
โค๏ธ
@sour condor You get permission to rewrite hangar auth in laravel (it's django/python rn) ๐
Friend of mine
Wait I did ping a random, lmao

Ment to ping @devout nacelle
Discord doesn't prioritize last active users ๐คทโโ๏ธ
๐ค
i didnt see this message, i was confused for quite a bit
Am sorry ^^
So i heard rewrite in php?
Hey, beer is food too!
I actually do wanna look at hangar auth next week
And get discourse to work
Idk why but my brain went to the whole, "that's german engineers for you, machines which convert beer into code"
then it reminded me of the soviet machine joke from Chernobyl
Whatโs as big as a house, burns 20 liters of fuel every hour, puts out a shit-load of smoke and noise, and cuts an apple into three pieces?
||A Soviet machine made to cut apples into four pieces!||
ah yes, love that joke (and show)
Will hangar allow freemium plugins? (Software that is open source but can be purchased to avoid the process of compiling)
almost certainly not
Huh, I heard that somewhere. Must have been incorrect. Apologies!
Nothing is decided, but ppl have ideas and preferences
All we know for certain is that money invites cancer and we don't wanna end like spigotmc pty ltd
@random badger objections to merging nuxt into master?
these outdated dependabot thingies are getting annoying
and it basically is master
I mean, are you working on master?
no we working on nuxt-frontend
Like, i never saw the point to a seperate branch if it's taking up like 100% of the work time
Like, maybe you wanna consider having like a dev/prod branches down the line, but, master == dev, rn imho