#hangar-dev
1 messages · Page 6 of 1
that are generated server side
the Vue templates, are for dynamic stuff
and we'll be adding more for various forms and whatnot
oh right, never heard of that lol
It looks like Mini's dev instance is down.
yeah, I saw
might've been 2 commits ago
shrug just have to wait for him to wake up
Was going to check a lighthouse report on it but even now it wouldn't be valid since there's still a ways to go
so plugin dependencies are grabbed from the plugin.yml. is having the author select valid versions of that plugin (if it exists on hangar) going too far?
ok, so lets say you've got v1.0 of Plugin A
and it depends on Plugin B
so Plugin B is in Plugin A's plugin.yml
People will usually specify that manually
yeah ok.
plugin authors will be able to link their dependencies on plugin.yml with a plugin on hangar, or an external link if they want a link to appear for it
guys be careful, dont have like all these fancy features or itll be overwhelming, i see all these fancy things that would be nice but honestly id just like a working hangar first and features second
well getting dependencies working is needed
rn, it doesn't exist
along with multi-platform support
can someone link a project with a single jar that supports multiple versions? I will need to test that out at some point. I don't know any projects off the top of my head that do that
serverlistplus?
PlaceholderAPI supports 1.7 - 1.16 in a single jar.
oh multiple versions or multiple platforms
platforms
multiple versions is handled
you select from a checkbox group what versions it supports (same as spigot)
does velocity have a plugin.yml equivalent?
yeah, a velocity-plugin.json is generated from the annotations
ah, so that'll be in the jar.
yep
there isn't an api-version equivalent tho right? nothing to specify which version of velocity the plugin uses/requires
ik atm there is only 1.0 and 1.1 is in beta or something
api-version is only paper 2.0 word enough to be in spigot
ya ik, its not the end all for required version. we only use it to pre-check that checkbox when you upload a version
(if it exists)
Pretty sure NuVotifier has all platforms in 1 jar
yeah, looks like it. got plugin.yml, bungee.yml, and velocity-plugin.json in it
theres a config.toml
there is also an mcmod.info
yeah forge
what is the toml one then
probably the plugin's itself? :p
it'll improve SEO ten-fold
@uncut juniper well, not really, it's 2020, Google's crawler execute JS
Even if hangar would be a SPA, fully rendered in browser, Google would be able to index it
We tested it at work, we have pages where Vue code sets the window title and Google has no issues with that
It's really hard to get good seo advice online, as everybody knows nothing and just prays to the Google god
A co-worker on mine calls those ppl seoterical 😂
We only follow the offical Google posts and common sense, and we are placed really good in a competitive market that is insurance
hell yes. uploaded nuvotifier jar, and it detects and shows all 3 platforms
this overhaul of multi-platform stuff w/dependencies feels good
yeah, css is easy
Am gonna look at how you broke staging once I get out of bed
yeah.. not sure what happened there?
I had to fix some stuff for local dev w/hangar auth, but I didn't think I changed any thing that would affect building on staging
it works with google but not usually with other services that query meta tags like discord, social media, etc
but regardless, its majority ssr anyways
They query head fields tho
I need to find a plugin that uses a single jar for multiple platforms and has dependencies for each of those platforms... know of any plugins that meet that description?
nuvotifier is multiple platforms, but doesn't have deps
Just add them yourself I guess
ya, I guess I could
I used Kenny's maintincance for testing, but that's multiple jars
this one has all Spigot Bungee Sponge and Velocity https://github.com/KennyTV/Maintenance/releases/download/3.0/Maintenance.jar (the newer ones only Spigot + Bungee, the other 2 separate)
Oh
k, nice. the dep map works as well
dependencies had to switch to a Map<Platform, List<Dependency>>
I've now run into this problem, apparently https://github.com/microsoft/WSL/issues/5336 wtf
switch to actual linux 🙂
>assuming a lot of likes means you found a solution
https://i.imgur.com/ftLBPHV.png
I just stick to wsl1 for now
I can't do that cuz I can only run docker with wsl2 with Win Home . _.
does it make a difference/does cf have some super black magic going on? 😂
No but it's not Google
lets not touch existing migration files 😄
the files are checksummed
also, why didn't you like my banner art?
😄
ok still doesnt work
cause you moved the hstore extention somewhere
@random badger where is init.sql executed?
ah the docker image should execute it
yes.
yeah, I was having issues with the hangar user installing it
cause hangar wasn't a super user
and the banner art was barely readable lol
I think staging didnt execute the sql init script, since the first init script failed
cause hangar was getting created twice
yeah, it won't execute those scripts if the db already exists
you'd have to delete the docker db volume
thats what I did
oh wait, what user the the deployment docker-compose use?
oh yeah... need to change the POSTGRES_USER/PASSWORD to not be hangar
look at the other docker-compose
I just have it as user/password
cause the user gets created in that script that creates multiple dbs
oh, I missed that
I let the postgres image handle it
right, but thats still gonna create the hangar user twice...
cause the create-databases.sh script creates it
oh ok. then yeah, it should work
db service is updating now
Multiple database creation requested: hangar,hangarauth
huh
yeah its still wrong
now it works
doesn't look bad at all :kappa: https://i.imgur.com/ldJifh4.png
hangar wen @barren shale
did an (almost) 1-liner fix already 😎
restarting auth right now since it needs to recreate tables
everything is running again now
yeah doesnt matter really
I noticed that too
I mean, we could add cors headers, but oh well
sooo uhh, how would we approach the conversion, just have an inbuilt converter you copy paste stuff in, or giving the Spigot resource url for example? cuz without the actual bbcode we'd need an html->md converter, right (I don't think you can scrape the bbcode)?
and does dbo even have a site api? 🤔
I think they should paste bb code into a text area
Idk if you can access the bb code via whatever api dbo has.
Ok, so you switched it to one db user. That’s probably better. You just missed changing that in the auth portion of the docker-compose
doesnt xenforo have like an api to get bbcode?
Ok, so you switched it to one db user. That’s probably better. You just missed changing that in the auth portion of the docker-compose
and ye, could be, we have so many docker stuff
You can move the create extensions back then
The issue was, that the user wasn’t guaranteed to be a super user, and only a super user can run those
But now that it’s all one user, that doesn’t matter
ideally I want to consolidate the two docker things
and just have two configs
idk about others, but am fine with running the full stack locally with hangar auth and shit
yeah, its simpler now that you can just have it pull the image from gitlab
I heard I'm getting cookies Mini
oh you porting version creation to vue?
It’s in progress.
Simply because I have to add more dependency stuff
Like linking a project on hangar to a dependency, or providing an external link.
Will probably end up creating a markdown editor component as well.
Might have to add a loading thing tho. The vue template def takes 1/4 of a second to show up.
because you do a network call in created
prolly want that async
not that I would know how that works
should just be a raw html page
scripts and frameworks and all that shit is for weaklings
Is there something to add to the script tag in the template to make it load earlier or something?
not really, dont think so
you can add a preload to the head
or prefetch or wahtever
Also, it could be webpack that makes it a bit slower
Cause in prod, it’s a static js file that’s loaded
Rather than the webpack dev server
that too
What happens if you put something inside the container you mount the vue app on? Does it get replaced?
Easy enough to throw a loading thing in there then
yes, vue will replace it once loaded
That’s nice
at work I just do a global loader that I remove with jquery
<div tabindex="0" aria-label="Loading" class="loader active" aria-busy="true" id="page-loader" style="display: none;"> <div class="loader-background"></div> <div class="loader-icon"> <svg viewBox="0 0 38 38" xmlns="http://www.w3.org/2000/svg"> <g fill="none" fill-rule="evenodd"> <g transform="translate(1 1)" stroke-width="2"> <circle stroke-opacity=".25" cx="18" cy="18" r="18"></circle> <path d="M36 18c0-9.94-8.06-18-18-18" transform="rotate(111.343 18 18)"> </path> </g> </g> </svg> </div> </div>
Window.jQuery("#page-loader").hide()
(we do weird shit at work with jquery)
thats why its window scope
Whats hangar?
An upcoming plugin repository
to help explain it in simpler terms - its a replacement for Spigots Resources section @flint stratus
randomly ran lighthouse on frontpage, thats not even bad considering we did not optimization https://i.imgur.com/dQ7ydKL.png
mobile obviously way worse
woah what site is that
oh
I ❤️ web.dev btw
you can also see tons of shit in google search console and webmaster tools and shit
nice
mfw bootstrap takes 1.8s to get
web.dev uses mobile first approach
so its throttled in bandwidth and speed
just like the new google bot btw
dat performance tho
Flushed
nice yeah, that’s about what I had in mind for that as well
need to add the form bit to version creation to link each dependency to either a hangar project or external url
I’d put the platform version in the same line as the name, still light gray (and keeping it smaller) tho
that'll be a comma separated list
or some other version of displaying multiple versions
if someone wants to write a way to take a list of x.xx versions and parse that into 1.1, 1.3-1.4, 1.6 or something that'd be nice
should be fairly easy, since we already have all possible versions anyways to check against
that’ll be a comma separated list
still, I think it’d be nicer in the same line :p like ‘Paper (1.10, 1.12-1.15)’
why in the v2 api version query, is it adding 9 to the project channel color?
lol, good question
I removed it. Cause it wasn’t gonna work with it. But ore has it. So idk
I'd guess just some compat measure to whatever they were doing before... or something?
Kek
kenny, did you ever figure out your wsl issue?
why in the v2 api version query, is it adding 9 to the project channel color?
@random badger ore is magic
well the sql queries certainly are.
some of those big ones? I just hope we don't have to change anything there
and that home_projects materialiezd view... yikes
like the home view? :p
yeah
Thats a funny one
who wrote that one
Katrix
ugh, I get headaches thinking about the headaches I would get if I tried to
yeah I set google dns for wsl and it worked again. the docker dev-db setup didn't (doesn't?) work, but I did a bit manually and got things working
I'm getting headaches when touching anything in the backend cause I don't really know scala and those queries
I didn't know any scala before starting this, but i've ended up learning some just cause I had to read it
But that's why i have a katrix on my side
i'm getting headaches because i hate when i have "unread messages" badge so i have to read this channel knowing nothing
Actually there is still magic in Ore code but if you compare it to 2 years ago, it's clean code
Katrix likely rewrote 90% of the backend
Still those 10% are interesting and we all are sometimes suprised whats in there
I mean, once you know your way around it, it's not that bad I guess, for reading at least. I wouldn't want to write much code in there, but reading most locations was fine. But then there were code snippets of like 5 lines were we sat in voice chat trying to understand wtf was going on
That was fun, lol
But I mean, we still managed to have everything running I guess, most stuff we do know is stuff ore doesn't have
ugh. kinda annoyed with the css setup here
need to switch a lot of this to use the boostrap helper classes instead of, say, changing all cards to be a thing
Have you looked at ores Vue branch before? It that's better?
Yeah
When I initially looked at ore, they said that branch isn't in a usable state, so I used the staging branch, but now that we are in a usable state and reworking frontend, there might be stuff we can learn from
start of dependencies on version creation
on the right side will be plugin dependencies
Is this like a fly out?
its a collapible secition on the version create page
Ye, nice
I would maybe move the checkbox for the platform up to the button or smth, could also collapse the versions them
I'd put the tag on the left next to the one checkbox, all of the version to its right then
see my amazing talent https://i.imgur.com/CllAK2N.png
makes it less blanky and more intuitive reading from left to right in a list
I'd love to see the version selector in kneny's style
ya, this is better
nice
they don't really have any brand color, except for the exact same tone of blue with parts of the website 😂
right, that's why Im saying someone needs some colors
so they are easily differentiable
pick a nice light blue, light green, and keep the cyan or whatever for velocity until there's others picked
I just don't want to see that yellow anymore 
yes, I don't like it either
ok, what's the prettier print width we are settling on? cause even 120 is kinda getting annoying
really long... like I think minified files have really long lines
Looking nice tho
Well I mean, how long can a line be without like scrolling and stuff
I mean, I don't really care, you can set it to 140 if you want
is there an issue with throwing a big ROUTES object on the window object globally?
so that all js can access various routes?
ngl, at first, I thought mini was dumping screenshots
huh?
idk why but the design/coloring of that had me thinking it was mini doing it
the checkboxes are still ugly af
idk how to make them better. maybe a darker background and then spacing between them?
part of me wants to say a checkbox list
does checkbox list mean something other than a group of checkboxes?
I tired brain gone, thinking like a box, with the items inside of it which is a list, where you can select the versions
Ok, bit of a conundrum here...
Is it even possible to get a client to make a sync http request and handle the redirect as it would with a response from a form submit?
Since so much more info is being provided to the publish version route, I switched it to json, but now am realizing that it won’t handle the redirect with errors appropriately now.
is there an issue with throwing a big ROUTES object on the window object globally?
@random badger no, go ahead
I mean, it's what's happening right now anyways
And if payload is too big, we can still filter it down once we indentified that as a problem
Since so much more info is being provided to the publish version route, I switched it to json, but now am realizing that it won’t handle the redirect with errors appropriately now.
@random badger so you have a post, with a json body, and that returns a 200 or a 500 or smth, but with body instead of a 302 redirect?
Not sure am really following
ok, so axios, ajax don't handle 302 responses right?
only time 301/302 is handled by the browser is when it makes the request (like a form submission)
and so that's the only time the redirect w/alerts&errors will work
but you can't submit a form with json, it has to be that form type. which won't really work here
here:
look here at how the version info is passed to server: https://github.com/PaperMC/Hangar/blob/multi-platform/src/main/frontend/src/CreateVersion.vue#L421
then look here how its handled. I had to go about it in a very odd way: https://github.com/PaperMC/Hangar/blob/multi-platform/src/main/java/io/papermc/hangar/controller/VersionsController.java#L321
I might be missing something here...
but I don't see it
I need to play with that myself
I'll soon be done with work, just finishing up a presentation for Monday
It should be almost done. Some formatting and I need to test it with an external url instead of a file.
I royally screwed up my sleep schedule yesterday cause I fell asleep at 1pm and woke up at 7pm. So I might randomly fall asleep at some point today.
Take care man
man ok, why does this pattern
Pattern.compile("(?<=\\d-)\\d+$")
not match 1.13-14? it totally matches when I throw it into regexr.
(specifically match the 14 at the end)
Try regex101 and test all the different regex engines it has
I don't remember which one java uses
doesn't work on the golang flavor. but it looks like that's just cause it doesnt have lookbehinds?
Pattern.compile("-\\d+").matcher("1.13-14")```
ok, this doesn't match either...
something is up with the hypen right? gotta be
That regex will match -14
but that should get groups right?
It should return -14 for group(0) I think
well its finding no matches. im logging the matches() method after, and its false
OH, yeah I seemed to have confused those two
I read the description of matches, and thought that populated the groups
k, thats a version in the version list
when I commit the logic to format the version numbers, i think someone should see if there is a better way
probably wont be used all that often, idk many plugins that support like 1.8, 1.9 and then 1.11-16 or something
damn plugin is 50 years old
k, and this is the dependencies view on the version page
nice!
and on version creation, you associate each dependency for each platform with either an external link or a project on hangar.
now I need to auto complete those values initally with the last versions so you don't have to do that everytime you upload a version
k, yeah. so if you had a previous version (either the recommended version or the last uploaded if no recommended), itll auto fill in all the dependency and platform compatiblity info that the previous version had so you don't have to enter re-enter a bunch of stuff
Really nice
Mmh, idk if overkill, but we could tag deps as auto generated to be able to detect if they got removed in the new version
I mean you can get a diff of dependencies by just comparing the two versions in the database
Lmao why use vue when you can create a custom system xD. A huge community and the most popular minecraft server software using vue smh.
Oh also, where do you use jquery? I'll swap that out for babel-compat es6 for you.
lol what?
Sry I hate jQuery
yeah, getting rid of it is on our eventual to-do list
And all websites that use it. It is just >500kb or uselessness.
You should also note that sanitising strings on the front end is bad practice and as bad as not sanitising strings at all.
are we doing that?
Yes.
oh yeah, that
Assuming that the frontend is in the client folder...
like 95% of the JS is taken directly from what ore had. none of us have even touched it yet*
Oh ok. BTW I'm submitting a ton of seperate PRs as my pc setup is dead rn sry for the inconvenience.
what r u doing prs on then? 😆 pls dont say a phone 🙂
Yea.
really? dang. that just seems like a massive pain
Yeah it's fine though. It's only temporary while I setup my wifi network.
It's not that painful if you do minor things like merge functions to call others rather than duping code.
why don't you like vue tho, that was more of what my lol what was referring to?
I actually don't mind Vue as much, I just personally prefer doing good old having one template and elements in seperate HTML files, that is dynamically loaded in scripts you make yourself as vue has a lot of stuff you don't need for most projects.
That's where my Nasixjs was going until I gave up on it.
we are only using vue for maybe 10% of the frontend. mainly various forms that are pretty dynamic, and a few lists
Also what CDN are you using? It matters at this stage, for example you need cf-async tags for cloudflare etc. Plus you can save time on middleware depending on your cdn as well.
OH and also 🖕Sponge Ore code. (and even more hate for spigotmc Xenforo site)
Also what CDN are you using?
for libraries? (vue, etc)
and yeah, I knew practically nothing about scala. was a pain initially to figure out how to read it. ive never used a functional language.
for libraries? (vue, etc)
and yeah, I knew practically nothing about scala. was a pain initially to figure out how to read it. ive never used a functional language.
@random badger No for the website. Like all the assets. Not like Jsdelivr or CDNJS. For the pages, for the resource downloads etc.
It's kinda sad for me that your not using a server less system as well. (cloud functions)
I also have no experience in Java except my epic spigot plugin skids. And I also know Java is extremely not Scaleable which is kinda sad for you. Imagine if the whole of Netflix was built in Java. ⭕
(updated answer of your for libraries question as well)
oh, yeah idk. you'd have to ask mini about that. he's hosting this on his vps. everything is on there atm
(which is not where itll be in the end)
@pallid yoke You ever considered using a serverless system (cloud functions, cf workers etc.)? Even for some things it would up your scale ability a sh*t ton.
he's eu, so you prob won't get a response for a bit.
Oh yea, OK.
and the choice to use Java/Spring was mainly cause everyone in here presumably knows java. and Minidigger uses Spring for his work (big insurance company in germany iirc)
geico germany of course /s
also, java is a tad easier to port to from scala
and the play template format is remarkably similar to freemarker
Also has this org ever considered making something from the ground up (no forking allowed xD)? I surpose it is your fork that makes you famous 
you mean paper breaking off from spigot? yeah, that has been discussed in detail.
one of the steps in that process, is getting hangar up and running
We have a ton of non-fork projects
Yeah ik it's just a meme from some of the anticheat communities.
ah i expect nothing better from there
Lmao.
Especially now their all skids of each other xD.
Damn I can't even read...
The function you replaced does .html(), the one you removed had .val(), these are 2 separate functions.
#760946492483043342
ok, so now im working on when you create a version with an external url
now with fancy invalid messaging
Nice.
its this where vue makes things very nice
like, the version creation form is probably the most complex one we got
Potentially restyle the drop down so it's more obvious that it's a drop down
like, the version creation form is probably the most complex one we got
@random badger oh ok.
well, if you don't select it, itll auto open when you try to publish and put that red border around the whole thing
but yeah, can put a caret or something
Yeah but it looks like a button rn that's all.
well that's how bootstrap does collapses... buttons or btn-links .
Not in Material Design Bootstrap or Bootstrap 5 (not sure about bootstrap 5 but I think...)
basically what ive been going off
this is far from material design. if we were writing all of the templates, etc from scratch, I would've prefered to use materialize
but it'd be a massive project to switch since its all written already
https://v5.getbootstrap.com/docs/5.0/components/collapse/
And with Materialise same that would have been nice. Also BS5 doesn't need JQuery.
https://mdbootstrap.com/docs/vue/ looks nice as well (and may have bootstrap syntax)
wait, did 5 get fully released?
@random badger nah it's beta but I haven't noticed many issues.
Whens your release date.
I don't think there's anything set in stone
It might be out by then...
I don't think there are many things that changed in v5 that would be annoying to fix. like a week ago, I ported it to v4 from v3, and that was certainly more of a pain
This is just the bootstrap with a material look (material design skin) https://mdbootstrap.com/docs/jquery/
Same syntax, classes etc. Not many issues in my experience.
It's based on 4 but there's a 5 beta for this as well.
yeah, im down for doing that. want to hear what the others say.
but I don't think we are yet at a point where styling is as big a concern as functionality. still a good bit on the to do section of the release gh project.
going more material design would match better with papermc.io
ok, im just realizing that the decription text input on version creation is useless? the description column in the db is filled by the markdown for that version
can you send a screenshot of the entire visible page around the platform version selector? want to comment on style :p
Is it expected to upload your code to your fork during dev or only before submitting PR?
Sry I'm planning on starting helping out with some of the styling etc once my isp has sorted my internet out.
literally doesn't matter
Thanks.
if you wanna commit/push often, you can; the PR will show the diff between the repo and your changes in one batch
looks nice 😛 maybe only background colors, but I’ll have to look at those on pc. just to the “manage..” header; it kinda looks like a clickable button
or is it one?
it is
oh okay, good
😂
still looking for that mythical plugin that has dependencies for all three platforms
I could fake it, by making a jar with just the three config files in it I guess
you can just add a depend to the Maintenance bungee.yml
but uh I think it should actually have SLP as soft?
oh.. its cause its softDepends instead of soft-depends
like plugin.yml
glad I caught that now
why did they change the format...
because md69 is big brain
https://www.spigotmc.org/resources/ac-negativity-spigot-1-7-1-16-sponge-bungeecord-velocity.48399/ it had spigot, bungee, velo and sponge.
does it have dependencies?
like ones it mentions in the various config files
wheres the documentation on bungee.yml?
Spigot, just google Bungee Tutorial and you’ll find it (because Spigots nav itself sucks)
On its github...
no it’s not?
It's file.
yeah, sure enough. its softDepend
cause you can't have a field named soft-depend I guess
well wait, its softdepend for bukkit right?
you can have a field named that
¯_(ツ)_/¯
so... ya, who knows what the thinking was there
probably... not at all
plugin.yml has a contributors section?
newly added
I would guess sharing it with another plugin
https://getbootstrap.com/docs/4.0/components/modal/#live-demo
@random badger yes
@pallid yoke You ever considered using a serverless system (cloud functions, cf workers etc.)? Even for some things it would up your scale ability a sh*t ton.
@gleaming sinew see, I do drink a bunch. But even am not drunk enough to ever consider this
This project consists of tens of thousands of lines of java code, everything is full of state
Also we have server sided logging everywhere for tons of stuff
Am not really concerned about scale at all, we can just let CloudFlare cache all assets and make spring cache DB queries where needed and we will be plenty fast and can serve tens of thousands of requests easily
@machine, hit me up when it's ready to test, I have a couple of hours today till I need to go to the next birthday, lol
its ready
I tested it with several plugins with varying platforms/dependencies
one thing that doesn't work in the channel creation, but that hasn't worked for a bit and doesn't have anything to do with this
there's another issue open for that
Was about to ask
We also broke gitlab mirroring it seems
I got a mail
Lemme look at that first, then your branch
really? its running the tests on my pr
ah its paused for auth
somebody nasty did a force push and I havent disabled protected branches 😄
ran now
Deploying 'Compose: docker'... Failed to deploy 'Compose: docker': Sorry but parent: com.intellij.execution.impl.ConsoleViewImpl[,0,0,2341x326,invalid,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=] has already been disposed (see the cause for stacktrace) so the child: com.intellij.util.Alarm@21cb7aeb will never be disposed
you what intellij?
best thing, it start started, lol
lol wat
yeah, forgot about the big bits of commented out stuff
https://github.com/PaperMC/Hangar/blob/multi-platform/src/main/java/io/papermc/hangar/util/StringUtils.java#L51 and take a look at this
you probably can come up with a better way
its for making 1.8, 1.9, 1.11, 1.13, 1.14, 1.15 into 1.8-9, 1.11, 1.13-15
yeah, thats what I meant
idk, I wanna reserve the "parser" brain capacity today to rewrite minimessage, maybe we can change that later
but its fine for now
I wrote unit tests for it 🙂
this is something that can easily be tested with unit tests
oh nice
I mean, prolly wanna precompile this pattern https://github.com/PaperMC/Hangar/blob/multi-platform/src/main/java/io/papermc/hangar/util/StringUtils.java#L96
but thats about it
I had it store the formatted string in the database as well. so it really only runs once
(per set of versions)
yeah dont bother then
makes for nice version cards
mmh, we kinda need to tell them that they can either use a file or an url
the verison creation screen doesnt do that?
its got an select file and a enter url
yeah, but its not clear that its an OR
I have an idea, lemme play with it
err
why 1.8, 1.9 goes to 1.8-9 @random badger? that is just going to cause confusion
should be 1.8-1.9
yeah kenny poinyed that out.
on github I guess? don't see him here
ah ok
That looks pretty clear and good to me
yeah that looks good
its your color 😛
you use way too much jquery in that vue component for my liking, lol
its rather hard to understand
yeah, there are probably lots of places document.getElementById will work fine
I normally control how the template renders via just variables
oh wait, this is also stuff loaded from the outside?
what stuff?
currently am trying to figure out why this isnt hiding https://i.imgur.com/3ctILJk.png
its not supposed to
you are supposed to be able to change files
at least thats how it was before
oh wait, this is also stuff loaded from the outside?
wdym by this?
nice
we still wanna give that dropdown a bit of design ferry dust, as one of my coworkers always says, but that can wait
design fairy dust?
yeah. im also not sure how the dropdown will handle like 25 projects with the same name
I think I gave it a max height
fairy, ye
@random badger basically just as you can do it in GH
obviously not from a project you own
Right, but why?
I understand the functionality, but not the reason why it needs to exist
is there a reason the DataValue class doesn't use generics?
oh I didnt realize that was a direct from ore thing
That's the thing for plugin.yml detection, right?
yeah
just seems simpler to have DataValue<T> rather than an abstract DataValue thats extended for each needed type
we have to think about how we are gonna do localization on the frontend
maybe another big object added to window that contains all messages?
Google Translate SDK?
theres a bunch that aren't even used as well
26 kb atm
But yeah, just like routes, just shove everything in for now
Can always optimize later
Welp if your manually translating how will you translate resource descriptions?
we don't
Machine Maker - you probably already know this and have an implementation that reflects it, but I just wanted to be sure: bungee plugins can use plugin.yml too, confusingly
don't worry, I personally never use plugin.yml for bungee plugins
is there any way to differentiate a bungee plugin.yml from a bukkit plugin.yml?
ya, could get the main, then to go that class and see if its bungee
or well, would that work?
ugh, not gonna think about this now
that's really annoying
i guess that would work but you'd need to read java bytecode, no?
doesn't bungee use bungee.yml?
yeah, OR a plugin.yml
so you could have a waterfall-only plugin, and its gonna think its a bukkit one
yep
ok, so there's gonna be a special button for this
its gonna think its paper, but then you can click this button and magically, itll transfer everything to waterfall
That sounds good
not possible
its one or the other?
You can't have the same main class for bungee and bukkit
you can only extend 1 class, and one API won't be on the classpath
right. and the .ymls have to be in the top directory?
Yes
ok. good yeah, so that button should cover everything
annoying, but at least its a simple fix
Be careful to also check smaller screens
its all flex
Wat
Am just not a fan of buzzword bullshit bingo
Cool
It's shit, I wrote ton of it
Lol
But it runs and it's maintainable, so who cares
Heck, we even have a hand full unit tests 😂
I do use sonarlint locally
Sonarlint doesn't make you write clean code
It is able to pick up common bugs and issues and stuff, but it can't see the big picture
We use eslint with prettier
Idk what you on about
Could use a few margins on the checkboxes and under the channel thing, but layout looks nice
I mean, it would be cool if the input labels had the same length so that the input text is aligned
who's gonna upload a version on a screen that small?
"microservices are the f u t u r e"
I personally think the center alignment of those fields is visually frustrating
actually, only the smallest one has center alignment
the others just take up the full screen
oh wait, the medium one channel input is also center aligned
On medium and large, imo unstable and recommended should be on the same line as the channel (since they're related to the status/stability of the version) and forum post should be visually separated (maybe under the text box and without the field layout)?
why does forum post need to be separated?
(ill also make the bg the channel color)
It's distinct from the actual status of the version; unlike the others it only controls the announcement of the version
I still want a 5 or 10px left margin on the checkbox, it's too close to the label ^^
right
And I think I kinda agree with mbax, it doesn't look as tidy I would say
really? on the large size (which is really xl) everything on two rows looks nice to me
Idk, I think it's that nothing is aligned which makes me feel that way
Idk, I need to get some sleep, I'll give it a closer look tomorrow
Maybe if you move forums post, make the outer container of channel/unstable/recommended the same width as the row above, then make channel stretch to fill that row
@gleaming sinew narrow that issue down to just creating a gh action for deployment. the other stuff already have issues open for them.
we don't want to get into too much stuff specific to one repo hosting site. some people use gitlab, bit bucket, and we aren't gonna implement stuff for each of them.
its much simpler to just provide a link to wherever the source is hosted.
That was my fear too, basically the whole OTT integration against gh
Not to mention, stuff like auto-syncing stuff like readme's requires a way to know when it changed, the webhooks will cover commits, etc, already, but, no idea how clean it would be to actually pull those files without cross coupling there, which would be wanted across the board
as for actions/dev builds, we wouldn't want to spam version releases (with or without notifications) anyways, so those should be set as a static link to like jenkins, done manually, or with gh pre releases
the pages are already markdown?
it supports only markdown
that modal seems to just be bb -> md
rst?
mooost likely unsupported for hangar
nobody willingly uses that anyways
Mini your Building doc sux
chances are they are not even written by me, pretty sure I didnt add the auth stuff 😄
but if you have sisues we might be able to assist
Na apparently its docker on wsl2 thats bad :C
kenny was having some issues w/that iirc
it's one of those "it works, but when it breaks, GLHF"
the docker setup can probably be made to be a bit simpler to setup, now that you can just use the image from gitlab, the one in the deployment/docker-compose.yml
I got it working ages ago but all the docker stuff has changed since then
probably gonna do a fresh clone lol
yeah atm, just make sure HangarAuth and Hangar are siblings in your file system.
May be a bit late to mention this, but you guys definitely should have used Nuxt for this instead of standalone Vue.
not really
this is mostly server rendered via freemarker
and we inherited the frontend, we didnt write it from scratch
How do I run it?
read the IGNOREME.md
The README just mentions building
docker-compose up -d builds the services and then runs them
-bash: dockor-compose: command not found re
nvm it's a different package
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yaml```
oh well
How does one get around "CSRF verification failed. Request aborted."?
are your cookies enabled
You mean on my browser?
ye
Yeah
usually i get that when my cookies arent enabled for whatever reason
Weird, works on Firefox
some browsers are more strict on cross site stuff
It all boils down to "why did it fail", generally down to headers, etc
We handle csrf tho
Spring writes a token into the window object and we then tell axios or jQuery to use it
is that a cookie or?
Nah, a header
ah
How can I login? I tried to create an account but the email didn't come through to either my local mailbox or Spam on Gmail
On local?
Yeah
im only familiar with rails, which stores the crsf as a post param i think and compares it to one of your cookies i believe?
also signing up probably wont work since you need mail server?
I don't know the port, but there is an application you access in your browser to receive the mail
Oh right
Check the compose file for the mail thingy it should mention the port
It's a "fake" mail server
tried to run docker-compose and got a massive stack trace, gg
ensure you have docker.app running
docker-compose used to warn that you probably don't have it running - now it just throws good old No such file or directory error with 2km long stack trace
Just MacOS things
Honestly, I just use VMs for docker
I do too, wsl2 is Default backend
The issue that docker needs a linux OS to run, so literally all solutions for it involve a VM of some sort; There's macOS's native hypervisor which pretty much nobody uses, and vbox which is what was used to be used, I think you can still get it to use that with docker-machine, but, the entire experience is kinda bleh
I think Hangar is looking pretty good! Quite a few things I would've done differently personally, but yeah, pretty decent!
yeah, for email verification, I usually just set the db entry to verified
galaxy brain
@ebon adder what would you have done differently?
Headless backend
Nuxt handling all of the frontend, no jQuery, definitely not bootstrap
Less frontend dependencies too, lots of the things can be quite easily made with component based development (Vue ofc)
Do keep in mind that Hangar is open source, so you're free to contribute those changes ^^
So much has been done using the current route, I think it would be:
- Almost insulting to strip so much of it
- Take a lot of work and time, of which I don't have really, only the weekends
- In a way, pointless, it might improve the UX and design of the end product but what's planned is still going to be more than enough either way
gonna pr blockchain
Headless backend is redundant, you can just run it in the background, no need to add a daemon into Hangar itself
Hangar's frontend is largely ported from Ore; we're working on replacing the outdated jQuery stuff with Vue, but it takes time
Headless backend allows for the entire frontend to be rendered using JavaScript which has huge benefits. - Perhaps you shouldn't have forked Ore?
I don't think "headless" means what you think it means
MVC is fine, there's no real reason for us to reinvent the wheel and go REST-only
^ pretty much
Headless backend is a backend that doesn't serve HTML?
headless cms maybe is a better term for that?
Well it doesn't have to be a CMS but yeah
Either way, the point still stands - there's little to gain from a REST-only backend approach
Except from component based frontend development being incredibly, incredibly easy to use, powerful and efficient... and also the noticeable site-wide performance and UX benefits.
I think part of the idea is to create a tool with stuff people are already familiar with vs shifting the entire design paradime over to something which people aren't too familiar with
Then again, I woulda done rest backend and PHP frontend, so, you know
runs
Mini literally does this type of setup in his day job
Plus there have been countless attempts to do this from scratch (including two ditched versions of Hangar), and Ore is the only one that has gained enough traction to actually be feature-complete
Basing off Ore is imo more sensible than trying to do this entirely from scratch
Yea, being able to get something out using a tech stack proven to work vs spending time tryna learn a new design set for the sake of being "modern", if it becomes an issue and we gotta switch it up, it's easier to do that having something which works and can sit there working vs the race to get something out in general while tryna learn a new system
Orrrrrrrr, Paper could take the Sponge strategy and do another from-scratch re-write in a language like one person knows and spend a few bonus years getting there! 🙂
Hi!
Then again, maybe that's a bit too popular of a language
hmm yes which obscure non-java framework should we pick? I vote weber
sadly kotlin does not fit those criteria, a whopping 7 people know kotlin
going to rewrite Hangar in Rails
Ti-Basic?
rewrite it using CF workers like someone suggested the other day
Nuxt is really bad for SEO
Unless you server render
Then you aren't headless anymore
Nuxt has all the benefits of headless, and it always server renders, that's basically the whole point of it
What gets rendered server side "hydrates" client side and it's as if it was never rendered on the server
It wouldn't integrate as nicely into the db as our templates do right now
Also, if we would have not forked ore, we would never be done
This is a giant project
Mini, did you get a chance to pull my channel pr? I really cannot figure out why this one thing isn't working on the channel list page
for some reason, its not updating the channel name (via a v-model binding)
Nah, spend all day on dyescape stuff
ah ok, I just saw you on intellij, wasn't sure what
Gonna have a full day of meetings tomorrow, hopefully I still got the mental capacity to look at stuff after that
I was balls deep in collision code today, really no fun
ok, I was stupid...
I just fixed it
man, apparently all I needed was to just look at it after sleeping, and I got it in a second. funny how I spent like 30 mins trying yesterday, but now I got it.
That happens so often to me
When I get stuck somewhere, I just gonna run around the house for a few minutes and come back and it often helps
Or get some ice cream from across the street
yeah, I guess that means taking breaks, even short ones, is a really good idea. I prob don't do that enough
hmm, can't figure out how to get jackson to send a string for offsetdatetime instead of 1601790864.543927 whatever this is
what kind of timestamp is that? I don't recognize it
MM not getting enough sleep?
$ date -d '@1601790864.543927'
Sun Oct 4 07:54:24 AM CEST 2020
This is regular current date UNIX timestamp.
oh ok, I haven't done much with times, im used to seeing the ISO 8601 string format
should the main project view be moved to a vue component? there is a bunch of JS relating to the page editor, the promoted versions, member list, star count, watcher count, and a bunch more
I think all this is probably better served by Vue
also, im thinking we might want this?
https://kazupon.github.io/vue-i18n/introduction.html
Im just reading about it now
or rather the -next version of it https://github.com/intlify/vue-i18n-next
trying it out, and it seems to work pretty well. just a simple $t('key.for.message')
oh i18n? rails has something similar like that
Are you guys de-jquerying hangar?
slowly
Hey Machine Maker, do you manage the Vanilla Tweaks plugin version? Had a question about the Wandering Traders component
Ahh nevermind I got ahold of jmp, he's the other dev in question
Issue with making that is Vue that it makes it harder to read for Google
But we can make fallback content I guess
Ah ye, vue-i18n is nice, use it at work
you could use the meta tags per page to help google along?
That too, but they still love actual html
definitely, but whatever creates the best experience for all sure oughtta be good enough?
Haha you clearly never worked with google
We want to be higher ranked than other sites
When you Google essentials download, hangar needs to come up first
i indeed have not, all i do is serve birbs!
yeah Mini, we could def have the rendered markdown page be still in the template
that'd be the majority of the info we'd still want google to be able to see easily right?
the promoted versions card was already done via javascript and the pages / member list? those that important for google to see?
Yeah
yeah, they are important to see? or yeah to my first bit
Content is the most important
But, gotta make the whole UI rest powered
https://github.com/PaperMC/Hangar/commit/119f2209d3d04280b55e349ce893d206392a1972#diff-b40c02b2ba94ad54c225e36b9bdcb154R6 any idea why this is giving me a 403? :<
There's some ajax setup we call
Which has csrf token stuff
Check other entry points I guess
Yeah @barren shale you’re gonna wanna call $.ajaxSetup(window.ajaxSettings); so it adds the csrf header
Also mini, are we gonna do this? https://github.com/PaperMC/Hangar/blob/master/src/main/java/io/papermc/hangar/config/SecurityConfig.java#L54
Pretty sure that’s what all those @CSPnonce.attr things are.
What is hangar?
Please explain to me what is hangar
@whole briar
report
admin
admin we need help
<@&748618676189528155>
@rapid turtle where you from?
@whole briar From germany
Why are yoi trolling me A248
?ban @whole briar troll
OmaMitRollator#7585 was banned | troll
someone should edit that to be discord-specific
OmaMitRollator just wrote me that he wants to come back with a different profile and provoke.
we'll handle it as it happens
takes him a couple minutes to waste 10 of our seconds
10 at least before they can type lol
gonna wait for you to take a look at the new vue components tmrw before merging Mini, so you can decide if we need to add more fallback content or not
why is the underline after the svg tag?
Is hangar an api like spigot?
No, it's a resource repository

ok sorry but im new to that paper stuff
I always used spigot
So what is hangar then used for?
I understand that is a resource repository but like for what
For... resources?
Yea but what can i do with it
Downloading plugins, publishing your own plugins etc
Since it's based on Ore, you have generally more possibilities than using spigot's XF resource plugin
So i dont need it for my server
No
Ok thank you rlly much
gonna wait for you to take a look at the new vue components tmrw before merging Mini, so you can decide if we need to add more fallback content or not
will do
there a reason the show staff page is restricted to people who are actually staff?
that's how its setup on ore
2:34
am sorry 😄
see, I was gonna open ore to check
but then I got distracted
but yeah, dont see why we should restrict it
yeah, im looking at the show staff route in ore rn
it checks if they have the IsStaff permission
Hey, Hangar looks like a great project, but I was wondering if it's going to have an API so we can push updates automatically from CI/CD solutions like GitHub actions, thanks! 🙂
yes, there is an api for things like that
Ooooh nice, I’m hyped then.
That was lacking for Spigot I had to write my own client that uses Cloudflare bypass stuff it’s a mess
Probably not for their API
Or at least not as a « under attack » mode like Spigot
@gleaming sinew https://i.imgur.com/3MzAzFT.png most likely CF. I have reading this channel for a while and am wondering why @gleaming sinew are so worried about scaling hangar? Spigot can keep up with all there traffic using XenForo why can't hangar do the same with java?
AFAIK Hangar will be behind CF, but won't have the CF captcha protection for API, which would be stupid.
Well, the design does have performance constraints
But, are those constraints going to be an issue for us? probably not
Yeah that was my thinking too. I mean sure you could outgrow the performance you are getting java but for now and I presuming the foreseeable future its not a concern
There is also the ability (assuming the java app is doesn't have state in it) to just run multiple instances of hangar with traefik load balancing between them
Hangar has a lot of state iirc.
If one instance isn't enough, we will start a second one, lol
Replicating state is easy
And im not sure we even have state outside of the DB
I mean, depending on what the state stuff is, I'd rather consider looking to work out it
theres the pending version cache thing? that counts right?
pending version cache?
And im not sure we even have state outside of the DB thats what I assumed
If its only in the DB then starting another instances is easy
I run spring clusters at work with tons of state without persistence, just gonna use infinispan to replicate state in my cluster and it's not an issue
Yeah I guess MM, but ideally we would have sticky sessions so you would always land on the same instance
right yeah, that wouldn't be an issue then
So, basically, redis but not redis 
Idk, I wouldn't worry about that for now, once we got a beta and see how we hold up with a couple of thousands requests per minute or smth we can see what we can do
If we let CF cache the statics that will at least make the thread pools happy
Like, other day, I walked into a room and
Infinispan is distributed tho
So it's p2p redis
- runs *
It's a cool tool tho, basically you just configure it, tell it to look for other containers with the same label and it will build a cluster and replicate your spring caches
So it sounds like scale isn't going to be a problem. I image Spoonge is doing just fine
We're not expecting it to be an issue
I mean, I've never done enterprise web dev, but, I've worked with this stuff enough to not have a massive concern about scaling at this point
I mean...we might have issues when hangar knocks google off the #1 spot on the alexa rankings, but that wont happen for.... a few months still 🙂
unless they went full... bad word... with it, scaling up is almost trivial these days
I mean atleast with CF you get free downtime when there network gets knocked offline
So it sounds like scale isn't going to be a problem. I image Spoonge is doing just fine
@gusty birch I mean, I expect to get more traffic than sponge tho, lol
Very true but I would still assume they still have alot of headroom left for traffic growth
Yeah
Anybody had this issue with the docker hangar build https://hastebin.com/wewujajumi.sql
Delete node folder an try again 🤷♂️
Ah got it. Was a problem with the frontend folder permissions
just looking through my unread GH notifications
eeeeeeeee
oooo eeee oooo aaa aaa
Oh also @gleaming sinew Netflix has a large chunk of java software https://github.com/Netflix?language=java Zuul which is a major part of Netflix is in java
Never really looked to deep into there code

