#hangar-dev

1 messages Β· Page 13 of 1

random badger
#

on @pallid yoke it looks like renovate can update lock files as well? is that enabled?

pallid yoke
#

I think yeah

random badger
#

oh yeah, by default

pallid yoke
#

but its still nicer to have the right version in package.json

random badger
#

well that might not matter if the deps are pinned in package.json

leaden lily
#

Well if you pass in --latest it updated dev dependencies but not regualr ones smh

#

Gotta get it to upgrade the regular ones too because it's still sematic under older vrsions.

pallid yoke
#

urg I cant get old staging to work

#

idk even what db is what

modest bisonBOT
#

no good sign

pallid yoke
#

πŸ˜„

#

ok anyways I confirmed old db is gone

#

but I think I got a backup from when I moved servers

#

lets see

#

backup as in: didnt delete the files on old server and it still runs for a few days πŸ˜‚

leaden lily
#

Alrighty well just tried to pin it all and it just broke everything. I need to take a break from this for a bit but the open PR works, just doesn't pin any of the dependencies.

pallid yoke
#

I think I can make renovate do that

#

aayy

#

old staging is back

#

mmmh

#

new staging is still redirecting to localhost

#

token is fine

random badger
#

isn't pinning the deps just as simple as removing the ^ before the version in package.json?

leaden lily
#

Yes but the packages in the package.json are not the latest.

#

Cause yarn upgrade didn't modify them

random badger
#

ooo I see

leaden lily
#

So if I pinned nuxt on what it is currently, it takes us back to 2.15

#

So gotta go through the yarn.lock and modify the package.json to that

random badger
#

@pallid yoke maybe you could set renovate's upgrade strategy to pinned and then the bot would do it?

pallid yoke
#

isnt that done via config json?

random badger
#

idk, never configured renovate

#

if it is, then I could do it

#

but I thought maybe that was above my perm level

pallid yoke
#

we broke staging again πŸ˜‚

random badger
#

this is gonna be a recurring thing...

#

what happened now? I tested the upgraded packages and they seemed to have deployed right

#

oh that

pallid yoke
#

just a script that needed updating

white pier
#

requesting renovate app eh πŸ‘€

random badger
#

yeah? that an issue?

white pier
#

yeah its a huge issue, it showed up in my inbox and everything 😒

#

you should be good to go

random badger
#

just gonna request ALL the apps now to spam your inbox

pallid yoke
#

didnt hangar already use renovate?

white pier
#

machine requested the github integration for it

random badger
#

no, I don't think so? cause it said I had to request it

white pier
#

not familiar to know if it gets used without it

#

some stuff will, some stuff wont

#

the github integration didnt exist until just now though

pallid yoke
#

you want this for pin?

random badger
#

idk, was just following the guide for it πŸ€·β€β™‚οΈ

#

yeah, I thought that would be a way to pin them

#

oh you know what... I didnt realize the repo already had a renovate.json... I was looking in the .github folder for it

#

πŸ€¦β€β™‚οΈ

pallid yoke
#

can you make it force do stuff?

random badger
#

can change it to run like every hour I guess

pallid yoke
#

build
Started 43m 8s ago

#

ah yes

#

"Investigating - We are investigating reports of degraded availability for GitHub Actions."

#

cool

#

guess I have to go to sleep without working staging, smh

leaden lily
#

Oh so it worked on renovate? Nice work.

pallid yoke
#

di dit?

#

renovate didnt do anything yet πŸ˜„

leaden lily
#

Ahh I just saw the pin commit

white pier
#

azure having some problems atm

#

not sure their status page says anything other than AD but yeah other sites down, GH actions having degraded availability, etc

#

fun times

leaden lily
#

So we can just plain that for Hangar not working

leaden lily
#

@pallid yoke It looks like it's alive again.

pallid yoke
#

Hello renovate πŸ˜‚

leaden lily
#

That is sexy

random badger
#

oh my god so much spam

main lava
#

What's hangar

#

Nvm found it

pallid yoke
#

Remember why I shoved renovates onto weekly only? πŸ˜‚

random badger
#

oh wait, need to exclude frontend-old

pallid yoke
#

Oh yeah

random badger
#

that's a bunch of the spam

pallid yoke
#

I'll look at stuff tomorrow if you don't handle it while am asleep

random badger
#

ill look into it

pallid yoke
#

On next push staging should be fixed too

leaden lily
#

Ooo nice

leaden lily
#

Nice work

random badger
#

mmkay, should be all good to now

leaden lily
#

Awesome

random badger
#

well, there is something I'm a little confused about... there are still a ton of renovate branches left over?

#

do I just delete them?

#

I dont wanna be one of those repositories that has renovate/* branches sitting around for like 3 years

leaden lily
#

Yeah I say go for it

#

Can always have them open next Saturday

random badger
#

well renovate doesn't have a schedule set

#

that was dependabot

#

which I think is github's own thing

narrow verge
#

wut there's only 3 branches

random badger
#

yeah I deleted the rest

pallid yoke
#

Renovate had a schedule, i just nuke the schedule for now

#

It was set for Saturdays

random badger
#

I’m confused a bit... why is it creating branches but no pr?

#

Oh wait... is there a pr limit?

#

Soon as I closed one, it opened another new one.

pallid yoke
#

Yeah i think 5 PRs?

#

Just let them be for now and we will handle the PRs and if it isn't happy in a day or two we can look at stuff again

proud basalt
#

I don't like how renovate advertises in their PRs

#

what's wrong with dependabot anyhow?

pallid yoke
#

Idk, we kinda have both idk why

leaden lily
#

Lol

pallid yoke
#

jake, can you take a look why auth is not working on staging?

#

I thought I fixed the wrong redirect, but even if I fix manually, its not logging me in

leaden lily
#

It's cool watching a build push and going through the action and then deploying.

pallid yoke
#

welcome to 2015? πŸ˜„

leaden lily
#

lmao

random badger
#

yeah, I can take a look

pallid yoke
#

ill take another look on why the redirect is wrong in a second

#

finished testing the paper update

#

wait I think env vars in code doesnt work how I think they do

random badger
#

oh, did you just use process.env.adfal in the code?

pallid yoke
#

yeah πŸ˜„

#

but the way I do it now should work

random badger
#

is staging using the same auth db as not-staging?

pallid yoke
#

shouldnt

random badger
#

I mean... it can right?

#

not making any breaking changes to hangarauth I don't think

pallid yoke
#

it can even use the same hangar auth instance

#

its just easier not too πŸ˜„

#

I can copy over the data tho

#

320 rows, not bad

random badger
#

is the gh action trying to deploy the prs?

pallid yoke
#

no

#

it should only build

random badger
#

I see Deploy as a step in the action in a pr tho

pallid yoke
#

it should be skipped

random badger
#

oh ok

pallid yoke
#

hangar auth new should have all accounts now

#

reee I still get redirected to localhost

random badger
#

hmm

#

yeah, so returnUrl is still set to localhost when you click the login button

pallid yoke
#

its hardcoded in the source

random badger
#

oh, well you are still using process.env.publicHost

pallid yoke
#

thats the env set via nuxt

random badger
#

you need to use the env property of the Context

pallid yoke
#

I think I need the env var at build time

#

no both should work

random badger
#

oh rly?

pallid yoke
#
Then, I can access my baseUrl variable in 2 ways:

Via process.env.baseUrl.
Via context.env.baseUrl, see context API.
random badger
#

hmm

pallid yoke
#

if, and only if, baseUrl is defined in env in nuxt.config.js

random badger
#

yeah, typing $nuxt.context.env in the browser console spits out localhosts

#

nodeEnv is correct tho

#

it says production

#

which is right

pallid yoke
#

yeah I just need to move stuff

#

ok that worked, nice

#

now you can see why it doesnt log me in πŸ˜›

#

looks right to me

random badger
#

looks like we cant use a util method isLoggedIn. it doesn't look like its reactive like a computed property would be.

#

like if you log in, then click sign out, the order of the header buttons gets messed up

pallid yoke
#

can you make that a getter for a store?

#

then we can still reuse the code or smth

random badger
#

yeah, that might work

#

well maybe that's not the problem... when I click sign out... this happens

#

then a refresh, and the author & staff buttons are back on the right side

#

idk what that is

pallid yoke
#

interesting, lol

pallid yoke
#

man I was productive today

#

not

pallid yoke
#

Promise all makes requests concurrent?

random badger
#

I think so?

#

that's better right?

pallid yoke
#

Yeah, was just asking if that was the case

#

This is the first time an touching async in js ^^

random badger
#

the promise "starts" when its created

#

so removing the awaits creates them all at once

#

and the promise.all waits until they are all done

pallid yoke
#

I see

leaden lily
#

Ooo new Vuetify version out

#

I saw the 3.0 released a new alpha too.

pallid yoke
#

Call me when nuxt 3 is out, then I'll get exited

leaden lily
#

πŸ˜›

pallid yoke
#

Cause then we can do webpack 5 and vue 3

leaden lily
#

Oooo

pallid yoke
#

ok github

#

and I thought I was drunk

random badger
#

??? the same thing appeared on my screen

#

I hadn't closed the tab, went back to it, and there was a bunch

random badger
#

eeesss.. think I just found that you can accept other people's invites

#

there isn't a userid check anywhere

#

πŸ˜… it only gets the role table id from the request

pallid yoke
#

kek

#

on ore too?

random badger
#

idk

#

its possible, I found an issue on ore a while back that you could change other people's roles in a project

pallid yoke
#

thats my contribution for today

#

πŸ˜„

#

had a team event at work and we got drunk playing games, hopefully I can properly continue tomorrow

random badger
#

its doing it again....

pallid yoke
#

Guess the update checking has a timing problem

random badger
#

hmm Mini, we need to figure out this pagination stuff

#

we can't really do client-side filtering and server side pagniation

#

both the filtering and pagination have to be either client-side or server-side

#

My initial thinking... is projects should be server-side pagination & filtering, but versions on the client side

#

gonna be 1000s of projects hopefully someday, I dont know if a project is going to have 1000 versions

pallid yoke
#

Can't we do all server side?

#

Vuetify had some examples on how to do that I think

#

Filtering in frontend can be heavy on mobile i guess

random badger
#

Mmkay, yeah, it can be all server side. Have to refactor some of those requests to accept filters for various things.

pallid yoke
#

Maybe we can have it generic, as part of the pagination object

#

A filter is just field operator value, plus sort direction, right?

#

Really good progress btw, I'll look thru the commits when am at work

leaden lily
#

The sign up page still links to the SpongePowered TOS

pallid yoke
#

I know

#

We don't have one for paper

#

It's a Todo in code

random badger
#

I'm not sure we have any sort directions anywhere?

pallid yoke
#

author/staff page

random badger
#

ah that's right

#

was just thinking of projects/versions

pallid yoke
#

but those dont have pagination I think

random badger
#

well... the authors one should I think

#

staff doesnt need to have that

pallid yoke
#

idk, sort doesnt seem too hard to add, filter is a where, sort is a sort by, but its generally the same

#

I just signed off of work, I dont have much time today it seems but maybe I can throw a poc together

#

I need a better cpu, >50% usage by opening the hangar project, pulling and letting IJ index πŸ˜„

#

I wonder if I can make IJ not index node_modules

#

I can!

#

mmmh do you know why the getProjects swagger api thingy doesnt include the pagination param?

#

I thought it was because of a missing @RequestParam annotation but that doesnt change anything

#

oh am dum

random badger
#

I dont think the swagger "try it out" works rn

#

we still havent done the new api authentication system

#

actually, who knows, it might work if you are logged in

#

Is there are reason you separated the UserSelectionForm and MemberList components?

#

they are very similar

#

I also don't see a reason why the edit button on the MemberList on the project page has to link to the settings page, why not be able to edit it where it is?

pallid yoke
#

no I noticed that too that they got very similar now

#

and yes in place editing seems find so we can nuke one

#

I just fixed swaggers try it out

#

mmmh, I wonder if I can write smth that can take all parameters, that arent part of the method, and do smth with them in spring

random badger
#

hmm, like a catchall?

pallid yoke
#

I think a hanlder interceptor should be able to do that

random badger
#

do you think an isHome column of the project page table is better than checking against the configured value?

pallid yoke
#

where do we do that rn?

#

frontend just checks if home iirc, right?

random badger
#

Yeah. Checks if the page name equals a string.

#

But the configuration isn’t sent to the frontend. So it’s a hard coded string

pallid yoke
#

yeah lets do it on the table then

random badger
#

Could also allow changing the home page name, or smth in the future

pallid yoke
#

yeah

random badger
#

any way to enforce in the db only one row per project having it set to true?

#

we want it unique with the project id if isHome is true

#

but not if isHome is false

pallid yoke
#

I dont think so

#

generally thats really bad normalization wise and we would have a separate table for marking smth as homepage

random badger
#

should we do that? have a table that just has a project_id and a page_id?

pallid yoke
#

idk how much overhead that is, but then we can nicely enforce the uniqueness

random badger
#

and prevent deleting the home page without setting a new one

#

I think ON DELETE has a prevent option right?

pallid yoke
#

I am really no sql pro, idk this stuff by head πŸ˜„

random badger
#

ya, it does, ON DELETE RESTRICT

pallid yoke
#

ok so I have an idea on how this could work but am deep into spring stuff, I need more time to understand, lol

#

but am I fairly confident that I can get all remaining parameters and put them into the pagination object

#

I constructed a CatchAllHandlerMethodArgumentResolver πŸ˜‚

random badger
#

lovely name

#

but that should be good then

pallid yoke
#

basically, I can wrap the class that does the request -> pagination object resolving

#

that class is called ServletModelAttributeMethodProcessor in case you were wondering

#

...

#

not to be confused with the RequestParamMethodArgumentResolver

#

that I had before, that is only used for the more "literal" arguments, but not for the nested thing

modest bisonBOT
#

Jesus, what's up with IRC today?

random badger
#

discord > irc confirmed

sly mason
#

Looks like esper is having issues

#

MM, I don't think it's that bad yet

#

yet

modest bisonBOT
#

Not just esper, I also enountered the same issue with spigot earlier today

#

both times I was on catastrophe, so I guess we have someone to blame

random badger
#

hey, what about letting users chose icons for their pages?

#

like the home has a house by default

#

(paid feature!)

pallid yoke
#

Just a mdi string?

#

Issue I see is that we then expose implementation details, so if we ever change icon lib, those all break

random badger
#

maybe we have a set few to pick from

#

then we link those to an mdi string

#

or some other string if we change

pallid yoke
#

Yeah that would be better I think

#

And more user friendly

#

Mdi's website is hella annoying

#

We would have a table with icons or smth

#

But i would propose we just throw this line of thought into a github issue and work on other stuff for now πŸ™ˆ

random badger
#

ya for sure

#

just a thought that occurred to me

pallid yoke
#

Yeah thought like that are really cool and we def need to persist them somewhere

#

We wanna set ourself apart from the rest

random badger
#

I think I'm gonna separate out some of the project settings. Like have different save buttons for different things. You've got the existing save button for the links, category, keywords, description, forumSync, one for the member list, icon has its own, deployment key has its own, and rename is its own thing

#

no need for all them to be under 1 save changes button when some of them (like rename) have nothing to do with it

pallid yoke
#

And split the UI in multiple cards?

random badger
#

yes

pallid yoke
#

Or tabs?

random badger
#

cards I think

#

the sticky card title works well cause its only on screen for the card that it pertains to

pallid yoke
#

Vertical tabs might work, it's pretty common to have a sidebar for setting navigation

random badger
#

well there are really just 3 groups then,

  • the links, category, description
  • project members
  • misc (rename, icon, deployment key)
#

then there are the 2 delete buttons

#

idk if that's enough for tabs

pallid yoke
#

Yeah i guess it's fine for now

random badger
#

that part doesnt matter, the splitting up is really all I was going for cause that has backend implications

#

btw IE11 doesnt support sticky

#

but I dont think the plan is to support IE fully

white pier
#

IE6 support is a hard requirement

#

single gunshot in the distance

random badger
#

would just leave PaperMC rn...

#

🀣

pallid yoke
#

What's IE?

#

I don't know IE

#

We only support chrome, and maybe firefox if we are bored

#

Safari Support has to be contributed by cat

random badger
#

you use chrome for this right?

pallid yoke
#

Edge, yeah

random badger
#

I use firefox so I guess that kinda makes sure there aren't any breaking inconsistencies

white pier
#

youll care about safari when you get to mobile

#

only reason anyone does afaik

pallid yoke
#

Yeah

#

It's horrible i have to do it at work

white pier
#

otherwise, an open issue ticket for an issue and a help-wanted label is good enough

#

"safari misrenders this pls fix"

#

"PRs pls"

#

"dont break the rest of it kthxbai"

random badger
#

mini, how do you want to get config values for various min/max lengths of fields?

pallid yoke
#

You wanna make that configurable?

random badger
#

it is now

#

probably was on ore

#

couple things like that are configurable

pallid yoke
#

At work we got a route for validations like that

random badger
#

yeah, I thought about that. It'd be cool to have counters tho on the fields themselves

pallid yoke
#

Can prolly shove that into the store then

#

No i mean data, we have a route that gives validations for a "flow"

#

Flow being a list of forms

random badger
#

oh I thought you mean you have a route you send whatever text and it returns yes or no

pallid yoke
#

Nah that's slow

#

We do client side validation and server side validation, but store the validation config once and expose it

random badger
#

is there a better way to do that here than just sending a json object with various fields for different things, regex, min, max len, etc

pallid yoke
#

Don't think so

#

At work we have a mixin of some sorts that handles that

#

Idk how it works tho

#

Surprisingly i never touched our vue base component lib

sly mason
#

wait, I can test on safa... oh, I have it installed

pallid yoke
#

That's old btw

random badger
#

dark theme ftw

pallid yoke
#

Kek we broke new staging

random badger
#

again?

#

what now

pallid yoke
#

Oh also new staging doesn't have images

#

Idk, 500

#

I'll check tomorrow πŸ€·β€β™‚οΈ

random badger
#

I think I can only see logs for not-staging on portainer

pallid yoke
#

Oh

#

I thought i did that

#

I'll hopefully remember that too

random badger
#

oh, its probably db changes right?

#

the migrations are complaining because we changed the base file instead of adding a new one

#

now that staging is working, should use migrations until we want to flatten again

sly mason
#

Yea, I know, but, like, me remembering stuff and to check on stuff is like... yea...

#

I mean, I spent the past few hours practically unable to see

#

#YAYHEALTH

pallid yoke
#

If it would be DB changing backend wouldn't even start

random badger
#

its not

#

that's the frontend

#

frontend works w/o backend

#

it just spits out 500

pallid yoke
#

Ah I couldn't check browser log cause mobile

#

Prolly can catch that better eventually

#

Am drive home now, but I'll prolly just crash in my bed

random badger
#

yeah, the first request made is in the nuxtServerInit when it tried to load the stuff from backend data controller

#

although I think that doesnt fail, I think the one telling it to show 500 is one of the ones on pages/index.vue

#

but whatevs

pallid yoke
#

Worked on that ar work today, making frontend still serve sane stuff when backend is gone

#

Since company likes to literally turn of power for an hour or two sometimes

#

So a wget my static content and inject error pages for dynamic content and do fail over dns to some cheap vps, lol

sly mason
random badger
#

yeah, its broken

#

who knows regex and has a good URL one? I found
(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})

stiff token
#

Or just send HEAD request and see if you get Content-Type: text/html thinksmart

#

I think it might be just like with emails - hard to really properly parse it.

spiral current
pallid yoke
#
found additional param limit
found additional param category
#

getting there

#

now I will just hardcode exclude limit and offset I think, lol

random badger
#

wow mini... your project folder is still called hangar2 😏

pallid yoke
#

ye

random badger
#

oh mini, did you fix staging?

pallid yoke
#

not that I know of

random badger
#

Gradatim Ferociter

pallid yoke
#

Meh

#

I don't like that motto ever since bezos stole it

pallid yoke
#

mmmh, I cant find a good way to turn a map<string, string[]> into a where clause

#

there was somebody who did that with jdbi 2 but thats different with jdbi3

pallid yoke
#

ok I think I got smth

#

idk if I like it tho

pallid yoke
#

that works and is safe

#

also fixed staging by dropping the schema

pallid yoke
#

@Validate(SpEL = "#root matches @hangarConfig.urlRegex", message = "general.error.invalidUrl")
private final String homepage;

#

this doesnt allow empty

#

ok I dont wanna touch the regex πŸ˜‚

#

yeah we def need to seperate between required url and optional url

#

you cant even upload a version rn

random badger
#

Oh ya....

#

Add to the @Validate annotation an or clause

#

Matches url regex or is null

#

Or what you did works. πŸ˜…

pallid yoke
#

less stuff in spel is a win for me πŸ˜„

#

am working on ProjectChannelsPage rn but I cut my finger so I cant really type

barren shale
#

I'll come back to make Hangar worse again in the late phases of your frontend rewrite btw panda_candy as part of me currently being a very active hangar team member

pallid yoke
#

oh, you wanna fix the design?

#

πŸ˜‚

barren shale
#

only very small things that bug me lol, else just backend again. webdev frontend itself is this_is_fine for me

pallid yoke
#

heh

#

still plenty stuff to do backend wise

random badger
#

I love that comparison between the old and new channel edit modal πŸ™‚

pallid yoke
#

yeah, the vuetify color picker is nice

random badger
#

kinda annoying how the hot reloading doesn't seem to call the asyncData hook so when you change something, you get 500 errors until you refresh the page

pallid yoke
#

yeeeeeeee

#

only sometimes tho

random badger
#

yes, it is only sometimes. Idk what the deal is there

pallid yoke
#

I guess when it has to reload the component

#

the data module for the flag doesnt seem to line up with the reviews page ore has, idk what up with that

#

but I gotta stop for today, my hand hurts from typing so strangely

random badger
pallid yoke
#

I don't see a subject in our data model

#

Maybe I was just blind

#

Will continue tomorrow

random badger
#

oh yeah ok, that was never fleshed out, the typescript Flag interface is different from the HangarProjectFlag java model

#

so those need to be synced together

pallid yoke
#

Yeah that's what I guessed

pallid yoke
#

For channel deletion, how should that work?

#

Would deleting a channel delete all versions?

#

Can you delete versions rn as a user?

random badger
#

yeah... I never even fully implemented it before we switched to nuxt

#

I only implementing deleting the channel if there were no versions with it

pallid yoke
#

Which is why am asking if you can delete versions

#

Because then that's acceptable

random badger
#

I think only soft delete (which doesn't really do anything except hide it from others)

pallid yoke
#

Mmh

#

Maybe we can just allow you to hide channels then

#

And if a channel is hidden, all versions of that channel are hidden too

random badger
#

ya, that could work.

pallid yoke
#

We could do the hiding in sql then

random badger
#

I had a thought about having a "no channel" state for versions where then the author could attach a different channel after deleting one

#

so you delete a channel, the versions attached just have no channel, dont show up in the version list to others, until to associate it with a channel again

pallid yoke
#

Mmh but we said no switching channels, which that effectifly is

random badger
#

do you think that's the right call? no switching channels?

#

I think if a plugin changes how it does its versioning, maybe they want the opportunity to change the channel of old versions, and this would be the only way

#

deleting a channel, versions with that channel can then be re-assigned to a different one

pallid yoke
#

Renaming works?

random badger
#

oh right

#

I think before there wasn't renaming channels either

pallid yoke
#

Hiding would be called "archiving" btw, i like that more

random badger
#

mmkay

pallid yoke
#

I thought about actual hiding too, so like youtube's unlisted

random badger
#

so only can be linked to?

pallid yoke
#

Yeah

random badger
#

yeah, that's prob a good thing

pallid yoke
#

For sending debut builds?

random badger
#

can be a setting associated with a channel

#

versions released on this channel are unlisted

pallid yoke
#

Yeah

#

So a channel can be unlisted or archived

random badger
#

making an issue for this rn

pallid yoke
#

Was about to ask, am on phone πŸ™ˆ

#

Thanks

#

So no deleting then?

#

Maybe we can just not do that for now and see if users complain and worry about it later, lol

random badger
#

deleting if no versions

#

I think is fine

pallid yoke
#

Yeah

#

What about soft deleted versions?

#

Does that count?

random badger
#

right now it does. the version count thing I added just looks for versions with that channel id

#

doesn't look at the visibility

#

if we want to keep the not null constraint on a version's channel_id column, they have to count

pallid yoke
#

Yeah let's just leave it at that then

#

It's not worth it to overthink such simple stuff rn i guess

random badger
#

I just looked at the db, if a channel row is deleted, it cascades to project_versions and deletes the version row

#

prob dont want that

pallid yoke
#

We need that for the constraints as you just said

random badger
#

well can just have it throw the exception instead

#

to prevent any accidental mishaps somehow

pallid yoke
#

I guess

random badger
#

is it enough to just soft delete all the versions on an archived channel?

#

or should there be a new visibility state

pallid yoke
#

Depends if we wanna allow unarchiving?

#

Because if we do, we couldn't differentiate between what was deleted manually and what was deleted by archiving

random badger
#

we could do nothing with the version visibility, but that would requiring checking the archive state of all versions' channels in queries, and idk if that's a good thing

#

so maybe a new visibility state would be better

pallid yoke
#

Adding a new different field seems wrong, yeah

random badger
#

it'd probably be two new visibilities, Archived, and Unlisted

#

can apply to both projects and versions I guess

pallid yoke
#

Yeah

random badger
#

(also, probably dont need a confirm delete channel modal then, like I think ore had)

#

oh, and can't delete all channels is a constraint

#

must have at least one

pallid yoke
#

I would go so far so say that release is untouchable?

#

Also color, so it's consistent

random badger
#

mm, I always thought the release name, and color was just defaults, not something set.

#

but we could do that too

#

if we do want to make that first channel un-editable, then we should add a new column to the db editable or smth so we aren't comparing it to config values

pallid yoke
#

Yeah

random badger
#

mmkay, not gonna do that now, but ill do another issue for it

pallid yoke
#

Read thru the issue, only think idk about is the relisting a version in an unlisted channel

#

Because that effectifly would create a version without a channel?

#

Else you would expose the channel

#

I also don't see a usecase for that

random badger
#

I thought the unlisted channel would be more of setting the default for versions released on it

#

and then could be unlisted later

#

not forcing versions on it to be unlisted all the time

pallid yoke
#

So as a preview kinda thing?

#

But basically that would mean that an unlisted channel isn't actually hidden

random badger
#

ya sorta. Like if you wanted new versions to be unlisted for a week then listed after that

pallid yoke
#

Yeah ok that makes sense

random badger
#

yeah, the channel itself isnt hidden, but it sets the version's visibility to unlisted from the start

random badger
#

mmkay, I think I'm done for the day

pallid yoke
#

Nice

#

My finger hurts like hell, so I'll not be able to touch my PC this morning, hopefully after lunch it will be better

random badger
#

Man, this sounds like a serious cut. I thought you just cut it a bit, not like cut it all the way off πŸ˜›

pallid yoke
#

I did cut a bit on the side off ^^

#

I think i had the band aid too strong this night so it's a bit swollen, and I expect that to go away in a few hours

#

But the cut itself isn't that bad, just burns a bit but that i can handle

random badger
#

Mini, what was your thinking behind adding routes behind /organization?

#

before, it was almost identical to a user

pallid yoke
#

For projects and stuff?

#

It's, that would duplicate a bunch of routes for no real gain I think

#

There's no real difference between a user and an org, other than that an org has members

#

We can do the differentiation for the end user in the UI so it's clear that smth is a org or not

#

Wait i misread

#

Where did i add routes behind orgs?

random badger
#

You added some routes in pages/organization/_organization/settings/*

#

I agree with everything you said

#

there is one route that is being used rn, organizations/new

#

which is fine I guess

pallid yoke
#

Backend of frontend?

random badger
#

frontend

pallid yoke
#

Mmh I think for those i just mirrored ore

random badger
#

I removed them. They had nothing in them except your default template from when you added all the pages

pallid yoke
#

πŸ€·β€β™‚οΈ

#

No idea where those came from

#

Aaah

#

Maybe those were backend requests

random badger
#

mmm ya probably

pallid yoke
#

I think i used the routes stuff on backed to generate the pages

#

So yeah, can just be deleted

random badger
#

smth broken with deployment again

#

Could not resolve hostname bender.minidigger.me: Name or service not known

pallid yoke
#

Huh

#

Did i forget to renew my domain? Lmao

random badger
#

that'd be... πŸ˜…

#

brb, gonna steal it

pallid yoke
#

It's strange

#

I can't renew, but it's also not gone yet

#

Contacted support

#

Registrar Status pendingDelete, redemptionPeriod, serverHold

#

πŸ˜…

#

I seriously need to fix the mess that my personal inboxes are, lmao

pallid yoke
#
Request URL: http://localhost:3000/api/internal/flags/
Request Method: PUT
Status Code: 403 Forbidden
Response: Invalid CORS request
#

huh?

pallid yoke
#

man I become rusty on all the backend stuff, lol

pallid yoke
#

interesting, sometimes I dont get the full menu

pallid yoke
#

Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "projects_namespace_unique" Detail: Key (name, slug)=(Test, Test) already exists.

#

I think this is wrong

#

should be paper/Test

#

but other than that, I can create org projects now

random badger
#

I’ve never had that issue with the menu before...

pallid yoke
#

It started happening today, don't think i saw it before

#

I also sometimes get console errors for the organization prop being null somewhere, so i blame that for now

random badger
random badger
#

Ok, I identified the issue where the organization prop was null. It was set to required on child pages of _user.vue.
And I'm getting the missing menu items issue on first page load now

pallid yoke
#

Yeah idk either, maybe refresh is better cause it makes sure no desyncs?

random badger
#

The refreshing is so seamless that from a users perspective, there really shouldn’t be any different if it’s setup correctly.

pallid yoke
#

Let's do that then

wise slate
pallid yoke
#

Mfw i can't even dam them

random badger
#

is there anything different between using ResponseEntity<Something> or using the @ ResponseBody annotation and just returning Something?

sly mason
#

apparently the annotation causes automatic json serialization

random badger
#

right, but I thought ResponseEntity also did that

sly mason
#

I thiiink returning does the same by default too?

#

biggest thing for the object is being able to do stuff like set the response code

random badger
#

like ResponseEntity includes a status code, do I have to use @ ResponseStatus if I want to set the status code if I use @ ResponseBody

ivory ingot
random badger
#

So @pallid yoke I just had a thought about filtering/sorting. Instead of exposing impl to the frontend for filters/sort by, we have presets for various things, sort by’s, and filters and they are parsed out of the query, and attached to each preset is a way to modify the sql statement.

#

So we have some SortBy interface that’s implemented by AuthorSortBy, that adds sql to sort by an author

#

Or a Filter interface that’s implemented by ProjectCategoryFilter that gets a project category from the url query and then adds the appropriate sql

#

I think that’s far superior to having the api take sql table/column names/aliases which could change easily if we need the query to change somehow

#

If what I laid out doesn’t make sense, I can try to mock something up tmrw

random badger
#

well... I couldn't wait so I made a new branch.

#

very basic and the sql intergration isn't even implemented, just some comments but I think it gets the point across

pallid yoke
#

I'll look later

#

Only concern I have is that it's not as flexible, but if ppl need additional filters in public api they can just PR them

random badger
#

Yes, it should be easy to add new ones.

hot jackal
#

I think it would be cool if you could have the option to select which platform you want to download when you download a plugin, like it comes up with a screen with all the options for available platforms on it

#

and you can upload different versions of a plugin for different platforms as an author

modest bisonBOT
#

Plattforms?

hot jackal
#

because idk about anyone else here, but I personally find it quite frustrating to have to go to many different places just to find the version I want

#

yeah, like Paper, BungeeCord, Sponge, Velocity, Fabric, Forge, etc.

modest bisonBOT
#

Myeh, Sponge, Fabric and Forge don't belong at Hangar

hot jackal
#

true

warped vortex
#

Fabric and Sponge have their own repositories

hot jackal
#

yeah I was just saying for example

#

even a link to the other version from Hangar would be enough

sly mason
#

that's likely gonna be up to plugin authors

warped vortex
#

wouldn't that just be a pretty hyperlink

hot jackal
#

yeah

sly mason
#

They can just use the description if they wanna link elsewhere

hot jackal
#

true

pallid yoke
#

Hangar already supports platforms like that

hot jackal
#

I’ve just always liked the idea of one centralised place for everything

#

makes everyone’s life easier

warped vortex
#

and makes the maintainer's life hell

hot jackal
#

a bit like what LuckPerms’ downloads page has for example

hot jackal
pallid yoke
#

every version can have multiple platforms

modest bisonBOT
#

Curseforge was on the way of becoming that, however they never hosted bungee or velocity plugins

zealous charm
#

god i love mini

hot jackal
#

oh that’s cool

#

mini you’re a god

#

I really hope Hangar takes off

warped vortex
#

it looks like a mixture of modrinth and ore right now lol

pallid yoke
hot jackal
#

I love the idea of promoting free and open-source

pallid yoke
#

better example

hot jackal
#

that tabbed design looks really easy and intuitive as well

#

and very clean

pallid yoke
#

dependencies get auto detected, and hangar requires you to provide either the name of the hangar project, or a link

#

so its really easy to find dependencies

hot jackal
#

what does it support for dependency scanning?

#

Maven and Gradle hopefully

pallid yoke
#

no

#

plugin.yml, bungee.yml, plugin.toml (thats the velocity thing, right?)

hot jackal
#

ah right

#

that will be nice

#

oh also, will it support custom platforms?

pallid yoke
#

velocity-plugin.json

hot jackal
#

just out of curiosity

pallid yoke
#

we can add new platforms, its just a DB entry and some svg mostly

hot jackal
#

nice

pallid yoke
#

actually not sure if its a table yet

#

might be just an enum

hot jackal
#

so what’s the motivation for this project? what are its aims?

pallid yoke
#

a place for paper plugins

#

since spigot is unavailable and dbo is "dead"

hot jackal
#

ah okay

#

and plugins are required to be free and open-source right?

pallid yoke
#

no

hot jackal
#

you supporting premium plugins then?

pallid yoke
#

yes

#

premium quality

#

no paywall tho

hot jackal
#

remind me what a paywall is again

sly mason
#

pay to download

hot jackal
#

ah okay

sly mason
#

idea is that we push for pay for support, iirc

hot jackal
#

love it

sly mason
#

Thiiiiink that we was discussing requiring stuff to be OSS, given the licensing

teal smelt
#

what would be with plugins that utilize Paper forks, such as Tuinity (there is an API for the per-player-chunkloading thing) and Purpur I wonder?

hot jackal
#

I’m personally fed up with the amount of plugins on Spigot that are premium and the author either overcharges, doesn’t offer good support, doesn’t make a good API for you to add to it, or all three

sly mason
#

that's not been discussed

hot jackal
#

so I love the idea of everything being open-source

sly mason
#

The general hope is that stuff like that gets all pulled back into paper

pallid yoke
modest bisonBOT
#

As long as they have fallback logic to be compatible with paper that is fully okay

pallid yoke
#

just gotta make it clear or smth

#

but basically, no policies have been decided

sly mason
#

I don't think that we intend to exclude them, but, like, ^ We'd much prefer if stuff hosted on our platform supported our platform

hot jackal
#

yeah

#

also, about the multi platform support, just out of curiosity, does that mean I could add support to distribute plugins that have support for my platform?

#

anything to do with my platform will be maintained fully by me, just curious if it could be accepted or not

sly mason
#

I doubt that we're gonna support custom platforms as that just gets messy

teal smelt
#

that is true, but it would be convenient for everyone if that would be a thing. I get if you don't think that fabric or forge mods belong on Hangar, but everything that is Paper-related (and that is basically Tuinity and Purpur, Airplane does not have APIs if I am right, and all other forks are not considered as trusted) would fit on Hangar in my opinion, as there is no place for it currently

pallid yoke
#

if there is demand for a new platform by the community, we will certainly talk to the platform owner

hot jackal
#

great!

warped vortex
sly mason
#

yes, but spigot outright boots you from it

teal smelt
sly mason
#

having the requirement and a preference are two different things

teal smelt
#

fair

sly mason
#

being hostile to the community serves no good for anybody, and ideally we work on getting stuff pulled back into paper at some point

hot jackal
#

forgive me for asking, but wdym by pulled back into Paper btw?

warped vortex
#

forks getting merged back to paper

hot jackal
#

ah right

warped vortex
#

or rather, their useful patches

teal smelt
#

flying squids in Paper confirmed

sly mason
#

Purpur goes too OTT

teal smelt
hot jackal
#

yeah that would be great, would avoid all the confusion with the spider’s web of forks on top of forks on top of forks we have

sly mason
#

probs to billy for his insanity, but, a lot of the stuff in PurPur really doesn't suit a general mc server

teal smelt
#

as I just read somewhere on their discord, "Purpur is Billy being too lazy to write plugins" lmao

hot jackal
#

lol

sly mason
#

if there's anything good we'd like it, but, basically, yea

#

Paper tends to eer towards API rather than slapping config options for everything, BILLY

#

||jkilynokillme||

hot jackal
#

lol

zealous charm
#

but but but my floating-squids-that-are-spawned-on-tuesdays-while-players-are-holding-torches config ☹️

teal smelt
pallid yoke
#

this is also really offtopic, if you wanna talk forks, use #general

ivory ingot
#

Probably something like tags for fork names would be good. So that someone can exclude/include certain plugins supported by their used fork.
And paper contributer could filter them to see what features could be pulled upstream.

teal smelt
#

sorry, you are right

#

yeah but back to my point, if something like an area for those legitimate forks existed, it would be nice and definitely serve some people πŸ˜„

pallid yoke
#

ppl can just add stuff like Purpur to their dependencies on the paper platform, thats prolly enough to make it clear to users

teal smelt
#

or this, even smoother

pallid yoke
#

but like, tbh, thats not really a concern

teal smelt
#

would be just scarier to get another SpigotMC-like thing that gets picky about plugin devs genuinely trying to tell that you can do more on Paper with their plugins

pallid yoke
#

90% of plugins that use the paper api dont use works

#

so we gotta serve those first

#

but as cat said, we have a friendly relationship with forks, we have no reason to be hostile

teal smelt
#

some great people doing really great stuff, and hangar is something kinda everyone is really looking forward to

random badger
#

Mini, did you get a chance to peek at what’s on the new branch?

pallid yoke
#

oh no

#

will do once am done with this

#

wait, that broke again

random badger
#

why arent you using 3 equals signs?

pallid yoke
#

because it didnt work

#

but now it also doesnt work with 2

#

if I toggle the value in the vue console it works

#

when I reload it doesnt

#

idk whats going on there and idk rn, lol

#

your branch looks nice

#

not sure I like the map there tho

random badger
#

ya, I wasn't sure what the best way to test against all possible filters would be

pallid yoke
#

I would rather have like a registry for the thingies

#

for minimessage I solved this project like this

#

have a types there

#

then register them somewhere

#

then use the type to call the method that tests if its supports the type, and the method to instanciaze

random badger
#

mmm ok. ya I see the similarities

pallid yoke
#

this being the canParse

#

and this the instanciation

#

altho that can be just done with a functional interface in the Types class I guess

#

do we even need the supports method?

#

cant we move the param map call to the registry, and only have a name for the filter?

random badger
#

yeah, if it never gets more complicated than just having a query string present

#

I thought maybe somehow it might get more complicated that just having ?projectCategory= in the query

pallid yoke
#

I cant think of anything

#

also, your filter doesnt support repeated params, I feel like that could be useful?

random badger
#

yes, indeed I thought of that

#

projectCategory = 2 categories for example

pallid yoke
#

maybe it becomes more complicated when we want to limit which filters can be applied to which query

random badger
#

hmm, I wonder if there is an annotation that takes an array of enums for saying what filters are compatible with a request method

#

if we could add that^

pallid yoke
#

when I did my poc I also thought about if I want ?projectCategory=admin,fun or ?projectCategory=admin&projectCategory=fun and I think the latter is nicer

#

we prolly could, yeah

random badger
#

or better, an array of classes so we dont have to make an enum for it

pallid yoke
#

pretty sure we can get access to the annotation here

random badger
#

yeah, so we get the compatible filters/sortbys from the annotation, filter though those, if they are present, add them to the RequestPagination object, and then modify the sql accordingly

pallid yoke
#

and then just check the pagination object and remove filters

#

then we just gotta think about if a unsupported filter is a 400?

#

might be the clearest to users, right?

random badger
#

yeah, I think 400 is fine

#

maybe just ignore it, but then users wouldnt know they did something wrong

pallid yoke
#

yeah

#

its a developer error, so it needs to be reported

random badger
#

and you think just having a name for the filter is enough to replace the supports method?

pallid yoke
#

I cant think of a reason where we wouldn't just check the param name

random badger
#

k, what about this latest commit? It's actually really similar to how the mc advancements work

pallid yoke
#

that fits, ye

#

now just convert the query param field into a method, and move the supports method as a default method to filter

random badger
#

mmhmm ya

pallid yoke
#

then we can override if needed

#

looking good

random badger
#

So this does mean we have to use the name table, column name aliases on db queries where the same filter will be used on each.

#

But hopefully that won’t be an issue

#

We could add arguments to the bind pagination annotation to configure that maybe

pallid yoke
#

we already have a "convention" like that I think

#

like, all joins and stuff just use the captials of each table I think

#

users -> u, user_roles -> ur

random badger
#

Ya OK I guess that’s fine

random badger
#

@pallid yoke we thinking only 1 sortBy for a query?

pallid yoke
#

Idk

#

Prreeetty sure the data table in vuetify allows multiple?

#

Not sure if that's worth the effort tho

random badger
#

ah yes, it does support multi-sorting, I totally didn't know that

#

well hey, if it supports it, I'm all for it. just have a ?sortBy=firstThing&sortBy=secondThing&sortDirection=ASC&sortDirection=DESC

somber flicker
#

hey @random badger do you use a lot of async ajax calls for hangar?

random badger
#

"async ajax" is one of those "pin number" or "atm machine" things
but yes, there are a lot of async http requests. Its how the frontend communicates w/the backend

somber flicker
#

sorry yeah my bad - do you know of any decent js discord channels -

random badger
#

I mean, the ones I'm in mainly have to do with hangar atm. Like the official Vue, Nuxt, Vuetify ones. I'm not in any general js programming ones

somber flicker
#

yeah ok ...Ill keep looking I need a jquery specific one ...chaining ajax calls is a nightmare

#

sorry async calls

#

the fact its ajax is irrelevant

random badger
#

I think the tides have turned on jquery, I think most people are against using it nowadays

last aurora
#

@somber flicker Have you tried async/await? It’s honestly so much better than using callbacks or even the regular promise.then

random badger
#

in hangar, we started using Promise.all for concurrent requests over await, but yeah its nice

random badger
#

mmkay @pallid yoke author page sorting should be in. I added one TODO in the sorting in pages/author.vue that you should prop take a look at and see what you think the best way to solve it is

copper perch
#

Hey mini, am I going crazy, or did you let your domain expire? Trying to look at the dev instances, but they're all returning DNS errors

random badger
#

ya, he knows about it

copper perch
#

aight just checking πŸ‘

pallid yoke
#

Basically need to wait till it's deleted @copper perch...

#

I saw this before, but is this really optional?

#

Mmh, I guess

pallid yoke
#

Maybe that's a bit more clear

#

Ah you did do that

#

Solving the username issue in that case is easy, just name it username in the header and use a slot to display the data

#

I wanted a slot there anyways, since we wanna make it a link

random badger
random badger
#

Really happy with the sorters tho. Will be easy to implement elsewhere I think.

#

I didn’t test out filters cause there aren’t filters on the authors page

pallid yoke
#

I didn't even test with UI, just manually called the api

random badger
#

One thing tho, for project/version lists, we use a data-iterator. How do we want sorting to work with that cause there aren’t table headers?

pallid yoke
#

And with the optional or not licence url I mean that I am not sure if it should be required in UI? Choosing the licence is pretty important, it should be required. Do we require a licence url for all licences? Or is it enough to select MIT, but require it for custom stuff?

random badger
#

Oh, I didn’t realize we wanted to require a license

pallid yoke
#

Well, i don't think no option is acceptable, maybe we should give all rights reserved as a preset?

#

And project/version list is controlled via the boxes in the sidebar, that should be enough to construct the request params

random badger
#

Not sorting tho

#

Thats enough for filters

pallid yoke
#

Iirc the main page has a drop down for sorting

#

Question also is if we need sort everywhere

random badger
#

Mm, maybe not in version list.

pallid yoke
#

And like, api can still easily support it for 3rd party stuff

random badger
#

Always sort by created_at

pallid yoke
#

I mean, I could see why ppl would wanna see the first uploaded Version or smth, idk

#

We can think about some UI for that later

random badger
#

Def want sorting for projects tho, most downloaded, viewed,

pallid yoke
#

Yeah, on home page that has a drop-down, on profile Pages we could just move that?

#

Eh copy I mean

random badger
#

Yeah ok.

#

Btw, #WenHop might be today

pallid yoke
#

Yep, saw it

untold idol
#

you're farming contributions

random badger
#

Mini, maybe each license should be tied to a default url that can be overriden?

#

idrk much about various licenses, can you have a generic one? or does each project need their own specific one

pallid yoke
#

generally you link to your own file

random badger
#

Oh, how should the api sorting/filtering be documented btw? Can we register some custom swagger annotation or smth?

#

To make it use the ApplicableSorters/Filters annotations

pallid yoke
#

Oh that would be cool

random badger
#

Hmm implementing Model converter I think is what we want?

pallid yoke
#

I just skimmed it, i can't really focus rn

random badger
#

I'm just gonna merge the filter sort branch. It seems like we settled on a design choice right?

pallid yoke
#

Yeah

main lava
untold idol
main lava
#

What?

#

It's not broken I think

#

.gg redirects to .com/invite, it's IMO better practice to go directly to .com, especially for slower connections

pallid yoke
#

That's bullshit and you know it, why are you even trying to argue this?

#

We welcome every actually meaningful contributions

#

Don't bore me

mellow pebble
#

isn't that wrong?

sly mason
#

it's a singular line non priority thing

#

there are much more pressing things to deal with that a '

main lava
#

There are. Sorry for bothering you all.

main lava
ivory ingot
#

wow

random badger
#

grrrrr this sql binding stuff is driving me crazy

#

jdbi is yelling that < is invalid syntax when I try to do this

#

but jdbi also says that is how you bind lists

#

😑 😑 😑 😑

#

oooo I wonder if its because you can't have defined params inside other defined params

#

hmmmm

#

like, it does one replace, but then doesn't go back over the string to see if that replace added anything to replace

main lava
somber flicker
#

I think understanding the stage at which a Project is it is really important @main lava. In the case of a really mature project ..the fixes you proposed (well maybe not the invite change) would be accepted as simple fixes - but Hanger is not that...its not even out of development - its dynamic changing and has some major stuff that needs doing before it can go public - which everyone is "hanging" out for - and I think we need to be clear - Every PR doesnt count - everyone here gets what I call ComputerScience commits...which drive me nuts - because I still have to review each one from some kid who hasnt a clue what my project does and is just following some CS rule - eg Liskov's principal.

Are grammar edits really appropriate on a project that is still in development with out a single beta release?

main lava
#

I don't think so.

#

Thanks for the thorough explanation!

somber flicker
#

btw did everyone like my "pun" ....we are all

hanging out for hangar...

#

maybe thats too australian

#

idk

white pier
#

πŸ‘

random badger
#

this.... is australian

#

.camm

modest bisonBOT
sly mason
#

now I remember why we left y'all on an island

somber flicker
#

thats australian

random badger
#

pretty sure ore was doing a left join on a one-to-many relation where they had limit/offset parameters

#

that throws off the whole thing

random badger
#

phew. ok, so I think the only big thing left on the backend (relating to filters/sorting) is the project sorting. since that already has logic dealing w/it

pallid yoke
#

Strange that list binding didnt work for you

#

Btw, I vote for static importing filter and sort registry for readability

#

Oh i see it goes thru the string template engine

#

Well, no, not really

#

It's strange

random badger
#

Well... it kinda does

#

I think it does what I ended up doing

#

Procedurally creating binded params

pallid yoke
#

Yeah it seems good enough anyways

#

Heh, didn't knew we still had scala code around, lol

random badger
#

Yeah, that bit in PromotedVersionMapper. Idk what it really did and I was like... well stuff is working w/o it so who cares

random badger
#

hrm... bit of a conundrum. When a user has no channels selected in the version list, it shows everything

#

cause its no longer filtering by channels cause none are in the api request query

pallid yoke
#

Mmh, I mean, is that wrong?

random badger
#

well I guess I would expect it to show 0 versions

pallid yoke
#

Technically it is, yes, but there's no usecase to show 0

#

Maybe we can communicate that in the UI, like a show all checkbox

#

Wait doesn't that exist for channels?

random badger
#

yeah, there is a global checkbox

#

that unchecks/checks all the channels' checkboxes

pallid yoke
#

I am trying to think of smth that makes sense UI wise

#

I mean, we could have a dummy filter, but that's strange api wise

#

Maybe just send no request at all if non is selected?

random badger
#

yeah, ?channel=randomalphanumericstring 🀣

#

yeah, could just manually update the versions to have 0

random badger
#

oh mini, why did you add a logged-out page instead of redirecting back to /?

pallid yoke
#

There was some Todo I think

random badger
#

not on that page

#

oh on this redirect?

#

I guess redirecting it to / every time is fine. My initial thinking was it should just refresh the page, but then sometimes it would error if someone was viewing a protected resource

pallid yoke
#

We deleting old stuff now if it's present in new?

#

Great work tho, I have a feeling of getting really close now

random badger
#

Yes, it’s wayyyy easier to figure out what has to be done still by looking at old controllers and seeing what is still there

pallid yoke
#

Yeah I guess

#

I was mostly going by the todos in frontend tbh

random badger
#

Should I not have deleted stuff? I did check that it was implemented before doing so.

pallid yoke
#

Nono it's fine

#

Not as satisfying as deleting everything in one go, but still good ^^

#

As you said, easier to track progress

random badger
#

Yeah, I would’ve liked to delete it all at once too. But... that’s meaningless πŸ™‚

pallid yoke
#

^^

random badger
#

jdbi says it can't find a mapper for

#

it handles lists of strings when they are an sql array in the result set

#

oh huh, it works w/o the enumby ordinal annotation

#

cause that makes sense

pallid yoke
#

gotta move the annotation to the generic

random badger
#

doesn't work on the generic

#

as in the annotation doesnt have that as a valid spot for it

#

it always defaults to enum names everywhere else

#

so it doesnt make sense that it works here w/o any annotation

pallid yoke
#

πŸ˜„

#

I started working on displaying user action log stuff btw

random badger
#

nice

#

im working on the version approvals

#

do you know what the purpose of the BACKLOG review state?

#

why not just UNREVIEWED, UNDER_REVIEW

#

like, there's that button on the review logs page to toggle the version between the BACKLOG state

#

and I've never understood what it's purpose was

pallid yoke
#

backlog means like todo normally

random badger
#

wouldnt unreviewed kinda mean that then?

pallid yoke
#

well, unreviewed is new, and backlog is moved back?

#

like, unreviewed needs triage, backlog is somebody looked at it and moved it back for others to view?

random badger
#

is there really a difference between those then?

#

both need to be looked at still

pallid yoke
#

🀷

#

priority kinda I guess

random badger
#

k, whatever. I was just looking at the old version approval queue and it looks like versions in the BACKLOG state don't show up there

#

which seems wrong

pallid yoke
#

I mean, we can just nuke that state altogether

#

and if we later find when reviewing stuff we would benefit from smth like this, add it back

random badger
#

yeah ok, ill do that

#

queue finding random sql queries that relied on the ordinal order in 2 weeks

pallid yoke
#

no need to keep using stuff because ore did it that way, even tho it makes no sense to us

#

yeah ordinal order is really meh :/

#

ideally we would have a proper table for the enums and use their PKs

#

but idk how much overhead that would mean

random badger
#

that's a lot of tables

pallid yoke
#

could have one enum table πŸ˜›

random badger
#

also, would make a LOT of queries more complicated

pallid yoke
#

but yeah, its ugly either way

random badger
#

cause jdbi has nice mapping for enums

#

well, actually, the button on the version review page is called removeFromQueue

#

is there a usecase for hiding an unreviewed version from the queue?

pallid yoke
#

yeah thats what I meant, its not in the "incoming" lane