#hangar-dev
1 messages Β· Page 12 of 1
It's not a component library tho
And tbh, i much rather have reusable classes than a bunch of what is basically inline style
hmmm. so typescript errors aren't showing up with the normal linting...
which means they aren't caught on commits. That needs to be fixed, or we will always end up having to double commit to fix any typescript errors we missed that cause the build process to fail
Well, typescript errors also show up in serve output
idk why they aren't, eslint is extending the config nuxt says to if you are using typescript
yes they do, but that doesn't prevent you from committing/pushing the error
the pre-commit hook prevents you from committing linting errors but that doesnt cover the typescript ones apparently
I guess double commits to the master branch can kinda be avoided if we just do prs that require a successful build before merging, but thats kinda annoying for small fixes. It'd be good if that check was done on the developer side
Well, later, yes
But for now, it doesn't matter
It also doesn't matter if we push shit to master
is there a reason not to allow spaces in page names?
regex is ^[a-zA-Z0-9-_]{3,}$ currently
we do slugify the name for url stuff so...
dang ok, I'm pretty happy with the pages stuff
and did we decide that it should be...
author/projectSlug/versions/platform/versionname?
to avoid ugly numbers in the url?
I don't remember, but let's go for that for now
And yes, adding a space to the page name as you did is fine too
man, looking through at the version creation code... YIKES
I'll be glad to delete a lot of that π
from back when I was just trying to copy function for function from ore
Yeah so was I
And like, it wasn't a bad option back then
But am also glad we redoing everything now, lol
yeah, nuxt-frontend turned into redo-everything
Oh btw, I think we don't need to make internal api accessible to the outside
If I understood this correctly, pages are always rendered on the server
So in theory most internal api shouldn't be called from the browser
I guess it's only the actions, forgot about those
hmm I dont think that's the case.. I think its the first request that is ssr
cause I use the network tab to debug requests to all routes
but can just use cors to restrict it right?
dont think we need the CSP stuff now either
cause spring has nothing to do with the rendered content
I took tomorrow of work, maybe I can finally be helpful on hangar again then
Ok, version creation, here I come
oh you got ton of progress, way more than it looked like even from the commits, lol
I dont have much time today, but ama try to fix one issue I found
yeah, I tend to do big commits that are full of lots of random stuff when re-writing a project rather than feature based commits
well wait, whats wrong w/that?
level 1 and level 2 worked, afterthing below that added the full slug
that was my intention?
adding the full slug? makes it easier on the frontend to know what the full slug is
check page test5
it is below Test2 test3 and test 4
but slug was "Test2/Test2/Test3/Test2/Test2/Test3/Test4/Test5"
because it was copying the full slug all the time
so slug of test2 + slug of test3 + slug of test 4 + slugified named of test5
when slug of test4 already contained slug of test 3 (which contains slug of test2)
I suck at explaining, lol
just try creating pages a couple of levels deep and you should see what I mean
the slug grew exponetially basically
(in my screenshot, first 4 rows are the broken behavior, last 4 rows are the fixed)
yeah, all it should do is tack on its slug to its parent cause its parent should already have all the rest
yeah, the recursion was operating under the (wrong) assumption that only its slug was stored in the table
that was harder to explain than to fix, lmao
yeah, that stuff is always a pain to explain
at least I was helpful today
now... how do we get the Docs tab to match /pages route....
it'd be nice if it was highlighted on child pages routes
maybe just have to do that manually tho
yes, but its route is /author/slug/ not /author/slug/pages/parent/child
and we don't want it matching for /author/slug/versions
or /author/slug/settings
so the docs one kinda has to be exact
cant say Ive ever put an annotation on a type like that before.
we also need to have change how the recommended version works, so projects can have one for each platform
atm, its just one recommended version per project
should be one per platform per project
maybe a new db table?
id - created_at - version_id - project_id - platform
unique constraint on project_id and platform
ah, the big SQUASH at the end of this is gonna be satisfying
also should go through and weed out some of the issues that might not apply now
Yeah, the great cleanup will be at the end, and hopefully we can publicly call for testers then
And get a bunch of new issues (bugs and requests) then π
I don't totally remember how recommended versions work right now, was that that strange json field? In that case, yes, i very much prefer a new table like you outlined
!!
Heh
Nah, itβs not json, itβs just one version id on the project table
Yeah... idk why thatβs there, but it is. π€·
I think the only json thatβll be left is project notes?
Which we could move out too
Well, it can be collapsed to just tab.exact, right? I can handle that after shower and stuff
re todo list, we got this https://github.com/PaperMC/Hangar/issues/314
prolly can clean it up
Yes!
And while at it, doing some cleanup on the backend
Some technical dep we inherited from ore
It's like next
But we don't write the buisness logic in javascript
That's all spring
Ohh like Nuxt handles serving the page but it uses the Spring API for data?
So frontend, but mostly server rendered, which talks to spring backend for getting the data and doing actions
Yeah makes sense
Yeah, itβs just way nicer to use vue to write the frontend than having to juggle vue and freemarker
Added benefit of it being fast
Like, once we can get some caching into the backend, and I do a bit of seo magic, stuff will be amazing
god it feels so nice clicking around on the site w/no page loading times
insta-navigation
hangar-new when
Runaway wen?
Runaway 1.5 years ago
][ halfβ’aliveβs music video for βRUNAWAYβ
Debut album βNow, Not Yetβ available now
Listen now: https://smarturl.it/nownotyet
find halfβ’alive onβ¦
Instagram: http://instagr.am/halfaliveco
Twitter: http://twitter.com/halfaliveco
Spotify: https://spoti.fi/2KsJpjE
Soundcloud: https://soundcloud.com/halfaliveco
Website: http://halfalive.co
YouTube...
so Mini, this then for recommended versions?
Yeah
I'm wondering if there is a gh action that can create an issue that tracks all TODOs in the code
https://github.com/marketplace/check-todo does checks for TODOs
that second one is just checkboxes in pr descriptions right?
yeah nvm just read it
https://github.com/dtinth/todo-actions does an issue per TODO
Issue is also that all the actions only check stuff on commit
Idk, maybe I can steal some code
I mean, if you don't commit anything, the TODOs won't go away, so does it really matter if they only update on commit?
well getting all the todos initially would be the trick there
Ye
but idk if one issue per todo is a good thing... dont really want 150 new issues
or do you
dont wanna turn into Paper π
It's also not helpful
I'll write something later
That just scans the whole code
It's easy enough
π
First gonna cook smth tho
yeah, ok so there are 2 places where we store json in the db, project notes, and all the comments on a project version review
not sure what the best way to handle those are
(just a note, I don't think there was even a way with old or even ore to add project notes)
ah ok
ok, lets see how to do this todo scanning
I think we need to also set some standards when it comes to capitalization I think even now w/the rewrite some stuff in inconsistent regarding looking up projects by author & project slug
I would say ignore capitalization for that stuff
I guess, ye
probably also need to look for .equals in the code then too and change to ignore case where appropriate
ye
easy part is done
(just ignore this regex)
<!--[ \t]*@?(?:todo|fixme):?[ \t]*([^\n]+)[ \t]*-->|(?:@|\/\/[ \t]*)?(?:todo|fixme):?[ \t]*([^\n]+)
now to look at what to with the result
am thinking, you configure an issue, it posts all the tasks into the OP, and a comment, where stuff that got removed is archived, which we could mark as offtopic
oh also I want this to create a comment on PRs, this PR will add X todos, remove Y todos
we prolly wanna rename todos a bit π
RFC: "Not Todo List"
"Exception in thread "main" java.lang.NullPointerException: Cannot invoke "org.kohsuke.github.GHRepository.getOwnerName()" because the return value of "org.kohsuke.github.GHIssue.getRepository()" is null"
shit api, smh
this is fun
π¬ going to hangar
is there a way I could hide info in the markdown? π€
a comment works, nice
github is really not happy with me, lmao
when I press edit in the interface, I get some old content
this is the stuff that would be written on a PR
(removed is so large because I made the script ignore some folders and didnt let it update the comment cause I dont wanna get IP banned :D)
I wish the issue itself would display the number of open tasks
you can only see it when its referenced
oh and in the overview
and I guess it doesnt matter since I write summary anyways
ok, had a thought about maybe the platform can be the last part of the url path?
Machine_Maker/Maintenance/versions/3.0 then wouldn't 404, but show different platforms with that version string?
(or if it only had one, could show that version)
then you could do Machine_Maker/Maintenance/versions/3.0/paper or Machine_Maker/Maintenance/versions/3.0/waterfall
or even could do another v-tabs situation with the 3 platforms (or however many that version supported)
this would work for uber jars that support all 3 at once OR different jars that have the same version string
oh that reminds me... need to change where it stores the plugin jar. rn its in a folder named the version string, which isnt unique anymore
Or we could do it a bit different again
Where in upload, you upload x jars for all platforms
And then it's basically one release (one version, one text) but multiple jar, but one page to download them all
@barren shale, since you have plugins on multiple platforms, do you have a need for unique change logs per platform or would being able to upload all jars at once be nicer?
at once π
If the changelog is markdown we can structure it ourselves to declare specialities.
What do you think about this idea jake? I think it's nicer UX wise both for authors and users
So each version could be tied to more than one file?
Do we then go back and undo everything so version strings are still unique in the project_versions table? Or should you still be able to upload a version with the same string at a different time?
I have to think more about how that would work backend wise. And itβs 1am. So that doesnβt help
I didn't think about the impl, just tried to approach it from a UX Pov
And yes, get some sleep
I think there are authors who would want to do separate stuff tho. Doesnβt leaving it as it is leave more control to them?
Mmh
Maybe we can leave it distinct on the backed
And do a unified release process in frontend optionally
(which we would work on later)
But yeah, keeping it separate on backend allows for more flexibility, we can always solve this on the UI later
Yeah, I say on the backend, we keep it as one version db row has one file, but maybe later we allow the frontend to create 3 versions at once
Yeah
I think regardless tho, we still should decide on how the version page layout should work
/_author/_slug/versions/_platform/_name OR /_author/_slug/versions/_name which has links to each platform, or just displays the one if there is only one
sure, and thats /_author/_slug/versions/_name/?_platform
cause we can have the tabs linked to a url
re: "why doesn't this work as a replace? It'd be good that this page wasn't saved in history" on linkout, history api requires same origin
So not possible then?
no
now I'm second guessing what we are doing w/versions
should each version row in the db table correspond to a platform the plugin is compatible with?
its just if we are displaying each platform separately (even if its a uber jar) wouldnt that be easier?
I am not sure am following
Oh and if my auth change broke stuff for hangar auth, just revert, having to reload when I use fake user is acceptable
Tbh I don't know how we store versions rn
Maaaaaaaybe should switch that to the nuxt-frontend branch?
Or just disable for now, thought about that too, will look at it when am at my laptop
I played a bit around with a graph lib, since the admin pages have some graphs
Looking nice, will not be able to finish today tho, but tomorrow
So dare I ask but are we any closer to Hangar going live?
I ask primarily because ....Spigot have just flaggeed anyone who uses Paperlib.suggestPaper() as advertising and removing the plugin from Spigot....
or you can update and remove it
read: spigot started enforcing their years old rules
...given its not actually advertising ...prism actually does work better with paper...
it is advertising under their rules, and has been for many years
hangar will be ready when its ready
maybe I should just change the wording......"You can use Spigot but numerous events wont be tracked. If you wish to track all events please use Paper."
File removed or entire plugin listing banned?
@soft hornet they havent specified the punishment at this stage just said its a rule breach
imagine using spigot resources
We decided to rewrite the frontend of hangar and cleanup some backend stuff, but we are making fast progress
please direct any and all rule discussion of spigotmc to phoenix's DMs on IRC :>
EsperNet!
ESPERNET!
π
The best
E S P E R N E T!
looking fresh https://i.imgur.com/N0qLbOV.png
I don't like that the data is not taken all at the same time
I have no Idea how hangar works, and quite honestly I do not want to know as long as it just works
π
How are you going about the upcoming changes to ore?
In a change of policy, the Ore review system will be changed from the current approval-based system, to the Community Reporting System, whereby we will provide a mechanism for the community to flag content that may be malicious and/or violate the TOS. As part of this, we will be removing the click-through warning that currently exists on unverified downloads and replace it with a banner disclaimer.
Importantly, this change means that our community will have even more input on these matters and we hope that you will help others by flagging that may cause harm. The exact design of this system is still under consideration, but we will keep you informed as it develops.
In addition, development on Ore API v2 is proceeding, with a focus on ensuring stability of the new system.
well, as usual, we have not agreed (or even really talked about) any policies, so we don't know if we wanna mandate approval before upload or react after a report
we don't want to be in a situation where we have large review queues, thats for sure
stuff like, only review first upload, then rely on reports, is also possible
Still It would be good to have a system in place to at least somewhat prevent bad jars.
reporting is already implemented
Hm
and yes, I kinda want to do a bit automated scanning
that too
I want to flag all obfuscated resources and put up a warning on download
because its inherently unsafe for users
Yeah I saw a very obfuscated one on spigot yesterday
Maybe also detect any uses of force-op and changing other files
They made methods not readable for the decompiler
And I had to read bytecode
Maybe detect that stuff and encrypted strings
I wanted to look into using https://github.com/OpticFusion1/MCAntiMalware
and if that sucks too much, I would roll my own one ppl could contribute to
it would also be extended when new reports come in
but, tbh, that is most likely out of scope for MVP
we need to get out the basic functionality in the hands of users first
For now flagging everything that can't be 100% decompiled would make sense.
and then we can look into convince stuff like t
Hm ok
I mean, doesn't mean we don't accept PRs for that rn, but I am personally looking to finish the UI first π
From my experience krakatau appears to be a good decompiler in that it's output is easily parseable, only issue is that it takes far longer (like 60x longer) to decompile anything compared to ForgeFlower and that the full classpath needs to be known beforehand in order for it to decompile fully
no need to decompile tho
yeah
More progress when button alignment is done. π
which buttons?
Generate, Upload, Rename.
Ctrl-F "setOp", done
s/setOp/setBanned/ would be fun as well.
Also detect classloader stuff!
Nah, on Hangar we're all living on the edge π
And detect the java version and add a tag that the plugin is only compat with Java x and later.
hangar will require plugins to be compiled with java 17, clearly
Ouch, that means I have to get a 4th JVM
why keep old versions?
Modding non-minecraft java games
thats not an explanation, as its backwards compatible?
Well, libGDX has some issues when it comes to OpenJDK
Well, it's actually ld.so that is the one that creates the issue, but idk what really happens there
No. Just 



And also require latest snapshot 
Found it
I see (or not, 'eh)
'eh? what are you one of those syrup drinkers now?
I kinda learned English from Canadians π
oh no
Worth noteing that that is the old branch
But https://hangar-new.minidigger.me is bork iirc
Ye
Pls unbork
for some reason it seems like sass is broken?
yeah I have really no idea
ERROR Invalid or unexpected token
@import './tools/_index'
^
SyntaxError: Invalid or unexpected token
at new Script (vm.js:101:7)
at createScript (vm.js:262:10)
at Object.runInThisContext (vm.js:310:10)
at wrapSafe (internal/modules/cjs/loader.js:967:15)
at Module._compile (internal/modules/cjs/loader.js:1027:27)
at Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Object.require.extensions.<computed> [as .js] (node_modules/ts-node/src/index.ts:1045:43)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
nuxt docs say "In case you want to use sass make sure that you have installed sass and sass-loader packages. "
so I did that
no change
what did you change?
also - i'll take a dig at approval versioning (pages/admin/versions.vue) in a few hours 
issue is, I dont remember the last time it did work
since it only breaks on yarn build && yarn start, not on yarn dev
and like, yarn start isnt throwing the error, only after the first request comes
and I dont keep logs of dead containers
so no way to tell when it last worked π
could be weeks
i'll give it a shot on my machine see if it builds properly
yeah builds fine for me
maybe try clearing your node_modules @pallid yoke?
oh wait
do yarn start and do a request
no it doesnt π
package.json doesnt seem to contain sass or sass-loader
maybe manually adding those would get us working?
that just broke vuetify even more
I have that locally
what ver?
mind jest doesnt seem to be in the new frontend
π
the stacktrace is really useful
I may have added that to make it shut up about peer dependencies
I know that I downgraded it to 4 from 5.16
seems to be quite a niche issue though, as any similar issue i could find seems to be related to jest which isnt being used on the new nuxt project
at least thats what git blame says
Is there a list of phrases, or a way to generate phrases?
ah, clocked the typescript file
@Phil: old frontend https://github.com/PaperMC/Hangar/blob/master/src/main/frontend/src/components/entrypoints/admin/VersionQueue.vue
underReview and notStarted are List<ReviewQueueEntry>
so just create a new interface for that class somewhere and hardcode some dummy values in the page
@paper heart
cheers
ERROR Failed to compile with 1 error 1:39:11 AM
This dependency was not found:
* @johmun/vue-tags-input/vue-tags-input/publish in ./node_modules/cache-loader/dist/cjs.js??ref--10-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader-v16/dist??ref--0-1!./src/components/entrypoints/projects/ProjectSettings.vue?vue&type=script&lang=js
To install it, you can run: npm install --save @johmun/vue-tags-input/vue-tags-input/publish
Webpack Bundle Analyzer is started at http://127.0.0.1:8888
Use Ctrl+C to close it
^C
β― yarn add @johmun/vue-tags-input/vue-tags-input/publish
yarn add v1.22.10
[1/4] Resolving packages...
error Couldn't find package "@johmun/vue-tags-input/vue-tags-input/publish" on the "npm" registry.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

also, trying to start hangar api itself https://paste.gg/p/anonymous/2a0dbb64e1154314a9351db538136bc2
and yes el DB is running https://static.jacobandersen.dev/shared/ππ½β½οΈπβπ.png
ok cat informed me that the active branch is nuxt-frontend
so im trying that now
k seems to load except for the avatar bork, idk if that's a setup issue or bug
Error occurred while trying to proxy request /avatar/paper?size=120x120 from localhost:3000 to http://localhost:8000 (ECONNREFUSED)
sorry irc, lmao
?
sent 2 msgs by accident
No real issue
where is this channel linked, not on esper with the rest?
Correct.
there
didnt have the -dev prefix
suffix
fuck im out of it tonight
RE: the latest commit. If you set the fallback to an external source, won't it have to reach out to it for each one that needs a fallback? Couldn't you just inline it into the static directory or something?
thats not prod code, there is never a fallback necessary as hangarauth handles that, but am too lazy to start hangar auth locally
also, no, your browser is smart and caches stuff
yeah thats not why I added it
and like, you will hopefully still have most images cached, or cloudflare will
oh mini, did you figure out that spring security issue?
oh ya ok. maybe a better solution would be to have a getGlobalPermissions method that returned the default globals if no principal existed?
I feel like that might be useful other places as well
ah yeah
hmm Mini, I'm thinking we just need to add a separate method for checking each permission since we can't use typescript enums the vue templates themselves
making a bunch of redundant get canEdit, get canDelete which is kinda annoying
would be very nice if we could do $util.hasPerms(NamedPermission.DELETE_VERSION) inside a v-if but I don't think that'll work
Yeah main reason i didn't implement all the perm checks is that u couldn't figure out a nice way
Took me a solid 15 minutes to realize/remember that it was broken for me when I tried to use hangar yesterday
Am sorry :/
Joshua Parker's segment from #INTRODUCTIONS (2015) by LaBeouf, RΓΆnkkΓΆ & Turner http://labeoufronkkoturner.com
Full 30-minute version: https://vimeo.com/125095515
Released under a Creative Commons Attribution Non-Commercial Share-Alike licence. #JUSTDOIT
Putting that on full Volume wasn't the wisest of all ideas
Gotta post the motivational shia before i go to bed, smh
.remind -d -w 126975485493248000 13h 819330968883953704
idk its bork
also not sure what happened to that link but ok discord
TS enums as a concept are generally considered an anti pattern. A type union of strings is generally the way to go
Also means it works properly with vue etc
Yeah, I only realized you could do that yesterday. Way nicer for some routes I think.
damn... I love Vue
hmm Mini do you remember how this review thing is supposed to work?
like can you add a message here now on your admin acct?
https://hangar.minidigger.me/MagicCheese1/DamageIndicator/versions/1.0.1.10/reviews
I see this
But basically, i expect the list down there to have stuff like started review, stopped, approved, approved partial, and "user added a message: something here seems fishy"
Like, notes
Message might be a dum teen
Term
I think the way its setup, is that only the person who started the review can comment until they stop or approve
I guess that makes sense, don't want ppl to duplicate work
So like, I start review, I see something I don't understand, I add message, I stop review, it goes back to the queue again and somebody else can look and sees my note
hmm ok. sounds good
I don't exactly know how ore does it, but that seems like a sane flow to me
btw, I tacked the version dependency stuff finally. I had kinda been dreading do all that, but it should be all working, including editing platform versions and plugin dependencies after the version has already been created.
oh, do we wanna mess with the JSONB column of the project version review table?
basically as far as I can tell, each review is one row so all the messages from the user and stored in the JSONB column
could add a new table, project_version_review_messages table
I really don't mind much, whatever works best I guess. A table might be easier to work with?
And yeah, I did fly thru the commit earlier, saw the perm stuff, gotta remember that that's now easy so i don't need to skip it anymore ^^
table is def easier to work with
That's what I thought, let's just go with that then
Is there a roadmap somewhere of stuff that needs to be fixed?
Most stuff is handled with Todo comments
The easiest to pick up are todos like "implement XYZPage", there we need the whole layout
gotcha
im probably being stupid again but i cant get the postgres server running i'm in the docker/db folder but when i run docker-compose up its complaining about hangar auth? I thought i didnt need that?
hmm doesnt work from the docker folder using the root docker-compose.yml either
ah yes, smoll brain strikes again, got it working now
I only run the dev db compose file, you can tell it to use a special file with -f
But IJ also has clicky stuff to make it wasy
yeah thats how i got it working
well it works, but its not having a good time
its not loading any resources
Have you yarn run dev or whatever?
You need db, spring and fronted
I do db in docker and rest in IJ
I think MM does everything in docker
Remember, frontend here also renders all html on the server
render as in building the page and sending it to the client you mean?
Failed to compile.
./src/components/entrypoints/projects/ProjectSettings.vue?vue&type=script&lang=js (./node_modules/cache-loader/dist/cjs.js??ref--10-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader-v16/dist??ref--0-1!./src/components/entrypoints/projects/ProjectSettings.vue?vue&type=script&lang=js)
Module not found: Error: Can't resolve '@johmun/vue-tags-input/vue-tags-input/publish' in 'C:\Users\Joshua\Documents\Projects\Hangar\src\main\frontend\src\components\entrypoints\projects'
i ran yarn install and then yarn run serve
ok
ah
Use nuxt branch, frontend is now in root
hm, how do i get that to run? yarn run serve doesnt seem to work in Hangar/frontend
install worked fine tho
So am I ^^
god this takes so long to build
https://pastie.io/meuyva.md well, now i'm getting migration errors
if i delete the docker container all data should be removed right?
if you didn't mount anything, yes
idk man, im just pressing green play buttons
don't really remember how desktop has that set up
sounds like it
but on the other screen there is a section for volumes/mounts, if nothing is there than yes
it just comes back
Β―_(γ)_/Β―
and when i try to run it i get: Failed to deploy 'Compose: docker': Sorry but parent: com.intellij.execution.impl.ConsoleViewImpl[,0,0,1275x227,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@4a213a01 will never be disposed
oh i got no idea about how intellij works with docker
Inteloij docker is still sketch
Docker stores data in volumes
So if you wanna nuke data, gotta nuke that
Or login and delete the schema
if you just want to start fresh you can just do
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) && docker volume rm $(docker volume ls -q)
or something like that, haven't tried it
windows docker might be different somehow Β―_(γ)_/Β―
because that's for sure a thing
just shows stopped containers
... i deleted the container, removed the volume and its still bitching about migrations
Well, use IJ to login into the db and see
Maybe jake broke the migration yesterday π€
i managed to get it deleted
straight to the next error
[Template Error] The following has evaluated to null or missing: ==> config.useWebpack [in template "utils/hangar.ftlh" at line 6, column 10]
Why is that still freemarker π€
You sure you on nuxt branch?
Oh most likely you accessed it from the wrong port
Try the port nuxt tells you in frontend CLI
well thats what it says at least
yeah makes sense, it didnt work earlier on 3000 cuz the spring app wasnt running yet
seems to work now
well that was a process...
Isn't technology fun? π
If you want, i guess a good way to contribute, and to make it easier for the next ones, is to write what you just learned down. For me and Jake that's hard, because we are so used to all the quirks, from this projects and others, so it's hard to notice when stuff isn't obvious
yeah i suppose i could do that
should i just put the entire process on the root readme?
If that's where you would expect it, sure!
It it's too long, might be worth expanding it into a contributing.md, but always can do that later
I guess the readme in frontend is usless anyways, can just nuke that
yeah its a bit on an odd place
It's auto generated
oh
@pallid yoke so what would be the proper docker command to run the db? (i just pressed the play button)
what does the -d stand for?
Start in background iirc
ah
Demon
this is what i have so far
Sounds good!
Ded, did you get it working in the end?
yeah
alright, will do
I can't review tonight, can get to it tomorrow if nobody else merged till then
Sure. It's not like it's a big deal hah
for version reviews (this is for moderation of versions) would you expect the oldest review to be at the top or bottom of the list?
so right now, the newest is at the bottom.
there is an option to hide stopped reviews so only the latest unfinished one is shown
most recent first makes sense to me
but then it might get kinda long where you have to scroll all the way down to get to the newest stuff
reviews for a version
like approvals?
yes
oh well if its a thread then prob the other way around
i thought you meant like user reviews for a specific version
Oldest unresolved should be top
no no, not user reviews
dont think were doing user reviews even
no. well there's a forum thread attached to your project if you want it
and people can talk about it there
ya idk im just randomly stopping by this channel lol
k, so I'm changing the functionality of the version approval system a bit
before, only 1 review could be ongoing by a moderator
now, each moderator can start their own review and either stop, approve, or partially approve
then they can go back and re-open their own review.
no more "takeover" the review from someone else cause you can just start your own at the same time
no sniping reviews?
The most important thing is others being able to see the messages i guess
I don't particularly care about the order, in 99% of cases the list will not have more than like 5 entries anyways
Itβs possible I spent entirely too long on the review page...
its possible be spend too much time on a lot of things π
but it will be all worth in the end
I think it looks pretty π₯
Reactivity just makes it soooo easy to have stuff just work
oh review is looking hella fancy
oh man am too dum for sql
SQL method returns primitive long, but statement returned no results
this makes no sense
ah got it
Ikr?
mmmh the perm util doesnt seem to work for project perms
:can-edit="$perms.canManageSubjectMembers" results in false
even tho am owner in that project
I like how almost everything on project page is down, but the download link π
cause who needs that
Hmm. Is it checking the right permission?
found it
I had canEdit: Boolean = false;
cause I thought that would work
as a default
but vue sets the prop and the false then mutates it again
does async data work on layouts?
hmm. I guess its a "page"
it doesnt seem t work
oh, you should probably use the nuxtServerInit store action instead
that's where a lot of global stuff is fetched
fetch works
what are you getting in layout?
announcement
hmm, fetch isnt blocking when loading from client-side tho, that gonna be an issue?
well, am trying at least
clearly spring thinks otherwise
lets see
ok its called both on client and server?
I dont get it, lol
on page load I can see it in html, then it vanishes
ok now it stays
and its only executed on the server
I just looked wrong, nuxt sends server log to client too
yes, that's relatively new. threw me off when I first saw it too
I was like.. why is it logging in both places
its easier to have everything in one place
and its marked as SSR log
I like it
just need to look properly π
I only partially approved the project
thats worth to show, right?
heh to approve full after partial, you gotta undo and then approve again
anyways, works
I kinda also want to have push notifications
but that will have to wait, lol
heh, going thru old issues
"I mostly was speaking about colors, I don't think its practical to switch away from bootstrap, we use quite a few of its features"
haha
I have no clue how push notifications work on a web app
LOL
neither do I but I know where to look
gotta use a service worker for that iirc and stuff
my irc client does that, I looked at the code before
oo, just realized, cause there can be multiple reviews, should it only notify users that the version has been reviewed if a review was approved while no others are open?
Re: the stargazers stuff, should we just move that to internal then? Is there a use in having that public?
I think it originally was public api
Mmmh
I didn't do that join because the query was already so big
But meh i guess if these queries become an issue in the future we can just cache both in spring and in CloudFlare
Itβs not a big thing to add it right? Itβs just a 1 line subquery?
Well, there can only be ever one result, right? So like, if maybe if I review and another review is open, warn me if I really wanna close? Idk
Yeah
Lmao dependabot
I changed the default branch and now it's not happy
Guess we can exclude the frontwnd old
kek IJ showed me that the prop was dum https://i.imgur.com/BsSBGbI.png
oh I see why deployment is failing, I did a docker update or smth and it no longer exposes the socket, lol
thats rather sad cause that means I need to restart docker which means downtime
urg
gotta do that tonight I guess
but doesnt matter since nuxt start still is broken
ok, I tracked down a nuxt discord, time to see if they know what is wrong
Iβve tried asking for help in the nuxt discord... itβs never done anything for me.
Mainly, itβs a lot of people asking questions it seems.
yeeee
I am facing some weird issues with a query you wrote for getUserWatchingCount
the query looks fine
I get this Undefined attribute for token '<endif>' [statement:"null", arguments:{positional:{0:paper}, named:{user:paper}, finder:[]}]
The one already committed?
Oh, itβs missing the @UseStringTemlate annotation thing
When you use the <if()> stuff, you need that annotation on the query
uufff
thanks didnt see that
its late...
hwo was that named route thingy thing again?
Itβs just the folder/file name separated by hyphens
So like βauthor-slug-versionsβ
do you remmeber where you used that?
Hmm not off the top of my head. Search the project for βauthor-slug-versionsβ
:to="{ name: author-slug-versions-version-platform, params: { ...$route.params, platform: version.toLowerCase() } }"
ah
Yep
We can custom name routes if we wanted to make that easier...
Right now nuxt just generates them automatically
wonderful
I implemented the api keys as a page again
I think its too big for a modal
Hmm ya ok
unless you got an idea on how to compact that?
I thought about making two, for new and for managing existing
but its easier this way
enough for today
slowly but surely we are getting stuff done
Well you can probably make those checkboxes shorter in height. Add the βdenseβ and βhide-detailsβ props to v-checkbox
kek I tried to make stuff denser but didnt see props I think
so I wrote css
move the text field top because that makes more sense
.v-input--checkbox {
margin-top: 0;
}
is still needed tho
Yeah, I know I still added some css after the props
Speaking of checking boxes on a version... should probably change up the version table to have a bitset of βflagsβ for stuff like that.
That way we donβt have to keep changing the db table in the future
A couple of the Booleans on that table can be converted to that as well
Yeah i had for usecases for that, cause they also should be used for filtering, be displayed as badges etc
Yep
Opensource, obfuscated, "reputable"?, Antivirus flagged?
Well, open source might be more project-level
Same with reputable
Same w/reputable. But yeah, can have flags on project as wel
For open source, should we have a preset list of hosts (GitHub, bitbucket, etc) that give your project the open source badge?
Idk what a good way to verify that would be
Meh, we can just make that work with the source link, if you enter smth you get the badge, if you get caught cheating you get the boot
Cause a few ppl use their own git hosting
Oh and we have the licence thing anyways
If it's MIT it's open source, no?
Mm ya
https://spdx.org/licenses/ check their licence against this ;)
you'll have to take the decision whether FSF, OSI, or either are most important (which I know will be controversial among certain people), but otherwise a good list; other large projects like Rust's crates.io use it too
as long as that means jroy can use his beloved Giant Penis License 
π
oh shit proxi discovered our bad hangar code
no good
A lot better than what I deal with daily 
though I do have a longer monitor at work, so some of this wouldn't go noticed :p
well, thanks for looking at it
the more eyes on the code the better
I dont claim to know wtf am doing here π
lol where
VersionApiController L48
oh thats generated code
and in controller old
all packages with old in the name are deprecated
wai it exist
ic
we trying to get rid of all of that with the nuxt rewrite
flash was the term ore uses for alerts I thinkl
I see
if you wanna do some real work, you can look at getUserWatching/getUserStarred and implement a getUserOrganizations, that returns a list of the orgs that user has π
thats a todo in frontend
AuthorPage line 74
the sql query kinda shoudl exist somewhere in the old code too
SELECT o.id, o.created_at, o.name, o.owner_id, o.user_id FROM organization_members om JOIN organizations o ON om.organization_id = o.id WHERE om.user_id = :id
altho you prolly wanna join users so you can do where user.name
Erm... donβt really need to make changes to stuff in any package with βoldβ in it right?
That stuff isnβt used anywhere (or shouldnβt be)
yeah that why I explained
Oh ok. I just looked at the commits
π delete old code
sorry proxi that was wasted effort
wtf wtf wtf
Yeah, basically, donβt touch anything with βoldβ it itβs package name
but until then its not worth deleting small stuff, and we can easier use it for reference
I cannot guarantee that is wasnt drunk when writing parts or everything of hangar
but I do have sonar lint, that yells at that normally?
no, it doesn't
we moved from qube to cloud :p
the bbcodeconverter still in an old package smh 
good .
but the bbcodes!
Ya, itβll prob get moved over. Unless proxi decides to rewrite it or smth... π
its also not implemented in the new frontend yet
thats when we would mvoe it over I guess
it even has a small thingy in the bottom right of a page if a hot reload is happening
so the commit after that broke it?
thats not too old
and... found a broken one not too long after https://github.com/PaperMC/Hangar/tree/e4e5644d028e01312ff792a756b588f9a2689efe
~15 commits in between
git bisect... here we come
is that it?
its compare between the two
yep
ya, could do it that way too
css: ['~/assets/main.scss'], is new, together with main.scss
but has no vuetify at that point
are you sure its vuetify?
the code is from vuetify
I didnt see anything about it in the stack trace of the error
I looked at it before
its scss code from vuetify and smth is reading it as js
while you guys look at that, lemme restart docker so we can deploy again, lmao
urg ppl online on my teamspeaks
narrowing in on the issue
maybe I should just rewrite my stuff to not use an exposed docker host anymore but just ssh
good: 4ca8d85b7254c146de266e0bdb1302c35189b821
bad: 2f936baf6bcbf5c47b7332c8f779f70814171375
moment
ah, thanks
oh, that's gonna be it
trying
that has smth to do with vuetify
Might have found something.
yeah, https://github.com/PaperMC/Hangar/commit/dd0c115fd4b92ce1229fb04104f8989dd25a3996 is the bad commit
just finished the binary search
did it work if you didnt move it out into its own plugin file?
I guess it did, cause that was the commit that stopped it working
I don't understand why that would be... but π€·ββοΈ
so we cant use vuetify stuff in a plugin
That's so weird.
its useful code for sure I think, to dynamically change background color
Is it safe to push that commit so I can pull that?
a question - i suppose I need to have hangarauth running in order to log in as the fake user?
no
press login and refresh manually
ill commit my stubs for now and whenever somebody has time they can look at it
Oop. Just did a package update and now it won't compile anymore. Apparently we aren't on the latest version on Nuxt atm that had a set of changes so we'd have to modify our shit to make it compatible again.
yeah, I had that happen when I tried to update nuxt as well
will have to look into that
should look into that before too long tho, useful to stay on latest version as long as its not changing to vue 3. probably wont update to that for a while. vuetify for vue 3 just went into alpha, so itll be a while before all our stuff is compatible to update to vue 3
It looks to stem from the nuxt-il8n package. Looking into that right now.
well, there's something that the latest nuxt version has typescript compilation bundled with it now as well, so no need for the nuxt-ts command as well
Yeah that too.
I remember having issues with that lib before
btw fix is verified workingβ’οΈ
L143 in frontend\pages\notifications.vue has a spelling error - should be "Couldn't update invite"
well... it really should be not there
notifications was like the first page we did after home I think, prob before i18n
well, it is used
oh its just error log
oh its displayed to user
yep
Okay so I've tracked down that new error on the updated stuff and it's just upset about how we and creating our config option. Working on making a fix.
yeah that needs i18n
well, itll have it on the server end I think
I just replaced it with this.$util.handleRequestError
Oh Machine I wonder if you have to update this. It looks like it's directing to your fork of it fixing a memory leak?
thats where I stopped too last time π
The error is stemming from vueI18nLoader: true
If you set it to false, it works no errors.
oh ok. ya my fix isnt the right fix according to the author https://github.com/nuxt-community/i18n-module/pull/1040
but apparently the right fix requires some big changes to nuxt itself
the mem leak issue isn't a problem for production, only for dev with reloading on changes
Okay so then I should be good to change this to use the real one?
I don't think its been fixed? maybe I can just rebase my fix on the latest nuxt i18n version?
That would be appreciated if you could do that so I could test this
mmhmm, will do
Thanks. Lmk when that's deployed so I can pull it and test.
ok, branch is updated @leaden lily
Alrighty. Let me try to upgrade that package.
we can just copy the code vuetify uses for those functions right? vuetify is MIT licensed
Hmm, I'm getting 504 errors when I try to view the page via yarn build.
But, I did get it to compile with updated dependencies.
probably because you need to have the server backend running
Well Mini said I could get it to run without a backend 
I mean... if you get it to compile, you can prob just pr the updates and be fine
no major breaking changes anywhere afaik, was just complicated because nuxt-i18n is pointing to my branch
should probably figure out a way to have some page show up without the server running
The only thing I don't think I can test is the removal of the typescript-runtime package because I can't load pages π
Well, lemme try.
k, well error page will show now
was just missing catching an api request on the home page
are project approvals implemented on the backend?
version approvals are. I don't think project ones are yet
i could try to impl the frontend
that takes place when you try to change the visibility of the project on the settings page iirc
ik mini started the settings page, but idk how far he got
like I think the way it worked, was a mod/admin could change the project visibility and if they changed it to need-changes, you'd have to give a reason why
(doesnt have to work the same as before, to be clear)
and version approvals are?
yes.
Alrighty. PR opened.
only 1 tiny part is
Glare, I get this when I try to run yarn dev
I installed packages after checkout out your branch
Hmm, I think I saw that too. Happened when I updated nuxt.
Cause I don't natively see that package in our package.json
@typescript-eslint is probably required by @nuxtjs/eslint-config-typescript
I could try downgrading typescript itself back to the version below 4.2.0?
4.1.3 looks to be it
yeah, hopefully a package doesn't require > 4.2.0 then
We'll find out
Oh I see why
"@nuxt/typescript-build@^2.0.4looks like it brought in 4.2
So what's your suggestion for that warning we're getting right now?
well it looks like that typescrpt-estree supports 4.3.0 now (in its repo at least) https://github.com/typescript-eslint/typescript-eslint/blob/0473674c58df5039a2de3c63ad7494fc6be7487e/packages/typescript-estree/src/parser.ts#L28
So then we should be good 
can you pin all deps?
what version of typescript-estree does it have?
wdym "pin"? remove the ^ before them?
"@typescript-eslint/typescript-estree@4.14.1
hmm ya that's outdated
ye, and set them to the real version, because else its hella confusing
also
Updating service hangar_new_db (id: fibnjz43p5k4urly8fh53moof)
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)
yey
now to nuke db I think, lemme chekc backend logs
ye
Lemme try to update that specific package.
Idk why it's not showing up on interactive.
ya idk either
they are required here I believe https://github.com/nuxt/eslint-config/blob/master/packages/eslint-config-typescript/package.json
.... smh
rip old staging
hmm Glare, I just ran yarn upgrade, and it upgraded a bunch of stuff
does interactive not show everything?
interactive maybe only shows deps in package.json
yes π
ugh... I was used to testing how stuff worked on the projects people had put on there
π
yeah π
Okay I ran it without interactive. and not getting that error anymore.
yeah, it seems yarn upgrade upgrades everything in the .lock file where yarn upgrade-interactive only shows dependencies in the package.json
ya, it seems to work fine with all upgrade packages, so just add that. and then do what mini suggested and remove all the ^ from the package.json
I'll go ahead and push these changes.
Hmm could've sworn there was a command you could run to pin it all.
" If you are using yarn to manage your node dependencies, you will automatically have dependency pinning due to the yarn.lock file that yarn produces and uses. "


mini does constants in UpperPascalCase