#๐Ÿ‘พ-core-development

1 messages ยท Page 9 of 1

austere talon
#

well this file protocol works fine

#

so gonna use it

umbral hedge
#

so i think you need to change smth for the var names

lament nimbus
austere talon
#

why do urls allow path traversal

#

pain

umbral hedge
#

lol

austere talon
#

sourcemaps are fine

lament nimbus
#

Hm

austere talon
#

cool site

#

isnt evanw the esbuild dev

#

sure is

#

Evan W

#

how do u safely join base path with filename without directory traversal

#
const dir = __dirname;
const filename = "../../unsafeuserinput.txt";
umbral hedge
austere talon
#

i only want to allow access to files inside dir

umbral hedge
#

browser sucks then trolley

austere talon
#

no lmao

lament nimbus
#

In nodejs

#

?

austere talon
#

thats exactly what i dont want

lament nimbus
#

What do you want

#

To evaluate the ../..?

austere talon
#

this is exactly what I don't want

lament nimbus
#

Just string.join then

#

And check OS

austere talon
#

ok i think i got it

lament nimbus
austere talon
umbral hedge
#

but cant they do ./../../

austere talon
#

that's what normalize is for

umbral hedge
#

ah

lament nimbus
umbral hedge
#

mb

lament nimbus
#

So they are gone

umbral hedge
#

yea

lament nimbus
#

And then you join them

umbral hedge
#

looks good catnod

austere talon
#

path normalize is cool

umbral hedge
#

ven is so cool

keen lance
#

frr

austere talon
#

lmao what

#

epic

golden gulch
#

out of curiosity what's the attack vector for this since for a malicious party to have a bad sourcemap url they already need to get the person to put a file into vencord source

austere talon
#

well

#

even if they run malicious code they only have renderer

#

if file schema allowed arbitrary reads they could read files

austere talon
lament nimbus
#

And couldn't find the right properties

#

Because it's not one

austere talon
#

dont think so

#

oh

#

nvm youre right

#

then why didnt it work

lament nimbus
#

Why didn't what work

austere talon
#

oh

#

im dumb

#

the url starts with schema

#

ok got it

lament nimbus
#

Can you access vencord scheme from fetch()

austere talon
#

oky works

austere talon
#

why do you think im using weird eval to test it

umbral hedge
#

meow

austere talon
#

you can access custom schemas from html elements and source map url and maybe more

#

not fetch tho

austere talon
#
electron.protocol.registerFileProtocol("vencord", ({ url: unsafeUrl }, cb) => {
    let url = normalize(unsafeUrl.slice("vencord://".length));
    if (url.endsWith("/")) url = url.slice(0, -1);
    if (url.startsWith("..")) // no directory traversal today...
        cb({ statusCode: 403 });
    else
        cb(join(__dirname, url));
});
#

for some reason it always appends / to urls

#

and that breaks reading file, so i remove it

#

file/ != file

#

i could just uh make it only allow whitelisted files

#

maybe thats better

#

just to be safe

#

yeah lemme do that

charred monolithBOT
austere talon
#

Lol i kept the settings error in

#

LGMT lets merge!!

charred monolithBOT
lament nimbus
austere talon
#

imo if we have sourcemaps no need for unminified builds

#

or should we still publish unminified builds?

#

and let users choose with a clear notice that choosing unmodified builds might result in worse performance

umbral hedge
#

ehh

#

i think not

charred monolithBOT
austere talon
#

okay that pr is ready for merge now

#

please someone review to make sure there aren't more stupid bugs like that one i just fixed

#

vendy loves making stupid mistakes

umbral hedge
#

im a stupid mistake

keen lance
#

๐Ÿค

charred monolithBOT
austere talon
#

surprised there isnt a rule by default

#

had to add a plugin

#

typescript there isn't even any code on line 70....

quick ibex
#

do i seriously have to run tsc and node . every time i have to compile and run a ts file

austere talon
charred monolithBOT
quick ibex
#

i can make the package script run those commands

#

but cringe

umbral hedge
austere talon
#

go home typescript youre drunk

#

ITS STILL FAILNG

#

well now theres actually a button

#

so makes sense

#

and this is why you force the merge of main before pr can be merged

umbral hedge
#

lol

charred monolithBOT
umbral hedge
#

add megu min back

austere talon
#

yes

#

okay

#

should i merge

#

im scared

quick ibex
#

no

#

explode

charred monolithBOT
umbral hedge
#

it broke omg

#

(joke)

austere talon
#

okay

#

now just need to make installer xd

umbral hedge
#

install me

austere talon
#

and decide where to put vencord files

umbral hedge
#

appdata

austere talon
#

just inside vencord config folder?

umbral hedge
#

yea

vestal grove
umbral hedge
#

frenyard

vestal grove
#

venny loves go

umbral hedge
austere talon
#

what should the files folder be called

umbral hedge
#

wait

#

thats nsfw

vestal grove
umbral hedge
#

%AppData%/Vencord/data

woeful sable
austere talon
#

i was gonna do src but its not really src

#

dist probably

umbral hedge
#

yea dist works

austere talon
umbral hedge
#

yea

#

!

austere talon
umbral hedge
#

:3

austere talon
#

now how to realiably get same dir as electron cross platform

#

in go

#

accidently cloned that emote to uni discord

#

not deleting

vestal grove
#

there's a module that returns dirs based on GOOS

quick ibex
austere talon
#

protonmail blobcatfearful

#

thx tho

#

is that ocnsistent with electron have u verified

#

appData Per-user application data directory, which by default points to:
%APPDATA% on Windows
$XDG_CONFIG_HOME or ~/.config on Linux
~/Library/Application Support on macOS

#

also funny

XDG_CONFIG_HOME=/ electron test.js```
 causes segfault
austere talon
#

yeah that protonmail lib does it

#

thanks alyxia

vestal grove
#

<3

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
austere talon
#

@vestal grove does that ui framework use cgo or pure go

#

also can you show a screenshot

vestal grove
austere talon
#

I am asking because compile time is horrid in all frameworks I tried

vestal grove
#

what times are you experiencing?

austere talon
#

well normal go programs compile in seconds

vestal grove
#

I mean, personally I care little about compile times as it runs on the CI anyways

austere talon
#

well this is incremental build with giu

#

so thats okay

austere talon
vestal grove
#

windows
mac
linux

vestal grove
austere talon
#

i might just use giu though because i really like it on first glance, unless you have something better to offer

g.SingleWindow().Layout(
    g.Label("Hello world from giu"),
    g.Row(
        g.Button("Click Me").OnClick(onClickMe),
        g.Button("I'm so cute").OnClick(onImSoCute),
    ),
)
#

also I like how the hello world example called me cute

vestal grove
#

frenyard is entirely based around flexboxes, giving you a lot of freedom in positioning

austere talon
#

why is cross compiling for Windows so pain

vestal grove
vestal grove
austere talon
#

i could also just make a java gui with swing

#

or is awt the new thing

#

oh javafx

umbral hedge
#

java bad
not on everyone's pc

austere talon
#

everyone has minecraft

#

!!!

#

why is making cross platform gui so hard

rare shale
charred monolithBOT
quaint sapphire
#

With preact

#

And typescript

#

Best combo

charred monolithBOT
crude hearth
quaint sapphire
#

ig using c libs in go

crude hearth
austere talon
#

since all gui libs are in C you gotta use cgo to make gui in go

#

cgo is really slow to compile because compiling c(++) is sloow

quaint sapphire
#

I'd suggest using rust
A nice GUI lib exists for rust

austere talon
#

rust horror

crude hearth
#

Does cpp also work

quaint sapphire
#

Or just use tauri as I mentioned earlier

#

With tauri you don't really have to write rust code

Everything can be in js/ts

tidal cloud
#

have you checked out fyne

crude hearth
austere talon
#

im using fyne rn

tidal cloud
#

fyne looked nice

austere talon
#

wait this is all we need

#

guhh we will use tauri

quaint sapphire
#

(yeah I know python is also used, but that's the minority)

quaint sapphire
#

Don't blame js for ur mistakes

crude hearth
#

Only good thing about js is being embeddable to website

quaint sapphire
#

It is a fast language, even tho it is single threaded

crude hearth
#

Thats why people use it to make gui

#

But I would never prefer it

quaint sapphire
#

And if you don't write bugs, then it is absolutely fine to use it

#

TL;DR skill issue

umbral hedge
#

I love TS

tidal cloud
#

mantika will use ts soon

fierce gale
#

whoa

golden gulch
#

js isn't even what you're making the actual UI out of

#

HTML and CSS make a great pair for making/laying out UIs and you don't even need JS to have them be functional

fierce gale
#

hm u have to use js to access backend api at least

golden gulch
#

if you're not making a desktop app, html forms go a long way (really kinda sad that everything relies on JS for form submissions these days)

austere talon
#

giu cool

golden gulch
#

that looks neat

fierce gale
#

whoa no way

crude hearth
tidal cloud
#

what's your hate with node

austere talon
#

best

tidal cloud
#

I dont just hate the language
ends message with: Also I hate the language itself

austere talon
#

just need to actually implement the logic

fierce gale
#

i think that's suppose to mean that he hates more than just the language

#

le grammar interpretation

tidal cloud
#

i mean how can you hate node

#

npm sure

fierce gale
#

everything's funky

austere talon
crude hearth
vestal grove
#

who cares manti

#

let people use what they want without shitting on it infinitely

crude hearth
austere talon
#

ok can u guys stop now noone actually cares

vestal grove
#

^

#

literally shut up

austere talon
#

why are go devs so cute

#

the giu example called me cute, go appdir example prints <3

#

@crude hearth you will love golang

#

you just put import and it automatically downloads dependency

crude hearth
#

Except error handling

austere talon
#

go should add ternary and ?? || operator

umbral hedge
#

go should go hug megu

austere talon
#

yes

crude hearth
#

You should pay me 5000$ you borrowed yesterday

vestal grove
austere talon
#
i := If(x != nil, x.yes, "never")```
#

no work

vestal grove
#

[]type{a,b}[strings.Count(strconv.FormatBool(cond), "true")]

austere talon
#

this library has autocomplete but it's broken

#

so im making my own

fierce gale
#

vendy being productive

austere talon
maiden fog
austere talon
#

cozy

umbral hedge
# austere talon

add like a boss to the end of the actually returns []string comment catnod

austere talon
#

its a pain that this lib doesn't use generics

#

it targets go 18 yet doesn't use them

#

so you have to pass []any and then cast in ur callback

umbral hedge
#

pain

austere talon
#

autocombeantion

#

it works :DD

fierce gale
#

so smort

umbral hedge
#

owo

austere talon
austere talon
#

i fixed it dw

#

it works flawlessly now

charred monolithBOT
austere talon
#

PHORCYS SPOTTED

#

his ass did not test l8r

woeful sable
#

lmao

umbral hedge
#

ven spotted

charred monolithBOT
swift fjord
#

Hardcoded variable. this can change in any version & break your code immediately.

austere talon
#

what niro button

#

anyway css exists eh

opaque pewter
#

lol!

umbral hedge
#

yeah css >

swift fjord
#

@umbral hedge Hardcoded variable. this can change in any version & break your code immediately.

umbral hedge
#

@MeguMachine Hardcoded variable. this can change in any version & break your code immediately.

woeful sable
#

@MeguMachine Hardcoded variable. this can change in any version & break your code immediately.

quick ibex
#

@MeguMachine Hardcoded variable. this can change in any version & break your code immediately.

light crag
#

@MeguMachine Hardcoded variable is great ๐Ÿ‘

swift horizon
charred monolithBOT
tidal cloud
#

@MeguMachine Hardcoded megu. this can change in any version & break your megu immediately.

austere talon
#

does it switch to the channel

#

switch

#

does the member list go nutty after a bit

#

and can u still talk in previous channel

umbral hedge
#

when you click the wrong button and delete instead of marking as off topic trolley

#

nothing of value was lost

charred monolithBOT
umbral hedge
#

literally

austere talon
#

why doesnt this work smh

umbral hedge
#

goos

#

e

verbal pumice
#

what is a .GOOS

umbral hedge
#

go os

austere talon
#

go(lang) os

verbal pumice
#

oh

charred monolithBOT
umbral hedge
#

wip

#

only pushed bc i wanted to make sure a merge didn't do anything weird trolley

charred monolithBOT
jagged cloak
#

this is me when Hardcoded variable. this can change in any version & break your code immediately.

brave forge
#

go use zig

limber skiff
#

hot

austere talon
vestal grove
#

@austere talon feel free to copy the discord finders from impregnate/replugged-installer if need be

austere talon
#

we already have logic for it in js, mostly adapted from replugged

#

but ill have a look at cc installer, maybe it'll save me some time

charred monolithBOT
charred monolithBOT
#

Thank you! However I don't really see the point of this because this is easier done with css and that won't break in the future. It also doesn't even cover all cases, there is for example still an obnoxious header on top of people's banners

I feel like being able to easily configure which parts i want turned off is an improvement over CSS, you can't really do that with a CSS theme (without modifying the theme itself manually)

limber skiff
#

lmao

#

It does work

umbral hedge
#

lmao

limber skiff
#

but yeah

#

trying to understand all the regexes is a pain

#

it's just so much KEKW

limber skiff
#

we could actually move the plugin so it's not a folder

austere talon
limber skiff
#

HELL YEAH

#

I forgot to change one thing

austere talon
#

lol

#

u gonna pr again?

limber skiff
#

nah

austere talon
#

move it to a file then trolley

limber skiff
#

oh

#

sure then

#

I renamed a variable and didn't change it in one place

charred monolithBOT
charred monolithBOT
charred monolithBOT
charred monolithBOT
halcyon salmon
#

wen ven merge prettier

#

next christmas would be cool

charred monolithBOT
quick ibex
#

Bru I was working on a new version angelIsob

austere talon
#

sorry

#

I don't think running it outside of client is viable

#

I tried bundling it but because plugins recursively import basically the entire mod its not really possible

#

actually

#

using the Web version as a base might work

quick ibex
#

I mean working on an action

austere talon
#

the fact that it's just matching a variable

#

that's pretty likely to cause issues

#

you should match a bit more

#

like match the variable and then some more unique string later on

#

yeah smth like that is better

charred monolithBOT
austere talon
#

I hate how the compiler doesn't tell u errors in files for other platforms

#

i have to rename file to find_discord_darwina

#

to get errors

charred monolithBOT
lament nimbus
#

Wha

#

Why does it send twice

quick ibex
#

WOOHOOO

fierce gale
#

vendy being twice as productive

austere talon
charred monolithBOT
austere talon
#

anyway installer works for me

charred monolithBOT
austere talon
#

so once I got some Windows & Mac people's feedback we can release it

#

i also added console logging spam so if it doesn't work for someone i can just tell them to run it via terminal and send me the output

quick ibex
#

WOHOOOO

austere talon
lament nimbus
austere talon
#

but fawn already tried Windows

charred monolithBOT
tame escarp
#

i've tried

#

it's an issue with the gui lib i think lmao

austere talon
#

bruh

charred monolithBOT
austere talon
#

othr than that looks good so feel free to merge

umbral hedge
#

nya

charred monolithBOT
umbral hedge
#

@fossil otter merged

fossil otter
#

pog

limber skiff
#

not sure if there's any better way to do this

austere talon
#

what's bad about it?

limber skiff
#

it's the same module

#

but one access the Z export

#

and the other the IgnoreActivities one

austere talon
#

oh

#

uh

#

can't you access the store via reRenderGamesExport.Z?

limber skiff
#

yeah

austere talon
#

then do that

#

Z = default
so it's safe to hardcode

limber skiff
#

aight

#

done

charred monolithBOT
fiery jungle
#

@austere talon @austere talon Vencord org when

vestal grove
#

never

austere talon
#

there's 2 repos

fiery jungle
#

soon there will be 4 more

vestal grove
fiery jungle
#

it already happened

#

I exploded

charred monolithBOT
#
[Vendicated/VencordInstaller] New tag created: v1\.0\.1
#
[Vendicated/VencordInstaller] New tag created: v1\.0\.2
austere talon
#

I'm stupid

vestal grove
#

lmao this puts my method to utter shame

austere talon
#

huh?

vestal grove
#

the way you did this is so much less of a hack

austere talon
#

oh lol

#

did u have the same issue

#

what'd u do

austere talon
#

let me guess shell out with mkdir and custom umask stuff?

vestal grove
#

but it works

austere talon
#

oh

#

similar to mine but just shelling out

vestal grove
#

still relatively proud of my installation code purely because of how much work went into the hacks LMAO

austere talon
#

btw

#

add go build cache

#

it reduces windows build time from really long to way shorter

#

notice how Windows still hasn't finished lmao

#

fucking 10 minutes build ๐Ÿ’€

charred monolithBOT
austere talon
#

FINALLY

austere talon
vestal grove
austere talon
#

to replugged installer?

umbral hedge
#

meow

vestal grove
#

yeah

charred monolithBOT
vestal grove
#

I'll be rewriting internals for new installation procedure anyways but just so the build code is there

austere talon
#

force pushed tag

#

just for new build to see if the new cache still works

charred monolithBOT
austere talon
#

lmao

#

oh

#

i yeeted actions checkout oopsie

charred monolithBOT
austere talon
#

i did a bunch more improvements to the workflow

umbral hedge
#

horror

austere talon
#

like bumping a lot of actions

austere talon
#

whats a middle @vestal grove

#

why is the folder named that

vestal grove
#

it's what's between the frontend and the framework

#

the middle

austere talon
#

do you also want me to add this when i pr to workflow

#

its just a linker flag

vestal grove
#

what does this do?

austere talon
#

basically

#

you can use the linker to replace variables

#

so I declare a variable named InstallerGitHash and make the linker replace it with the actual git hash

vestal grove
#

but what's the point of this variable in the code?

austere talon
#

version info

vestal grove
#

sure, give me a second for me to point you where to add them

austere talon
#

i'll just add it to the workflow and u can later implement it in code

#

it doesn't do anything if there isn't actually such a variable (it doesn't error)

vestal grove
#

ah, sure then

austere talon
#

just let me know what to name it

#

and in what namespace

vestal grove
#

InstallerGitHash is fine

austere talon
#

package

vestal grove
#

middle

#

middle version.go

austere talon
#

then it'd be```sh
-X 'middle.InstallerGitHash=$(git rev-parse --short HEAD)'

#

gonna add that in my pr

#

(tmrw, i will sleep now)

austere talon
#

oh god

#

well ig if u have manual version number should i do that instead

#

replace that variable with the tag

#

well then ur fetch wouldnt work anymore ig

#

i'll not add it for now ig, you can do it later

vestal grove
#

sure

#

but yeah, i do that for displaying a notice in the app when there's an update

#

god I keep forgetting how much I love frenyard ngl

austere talon
#

I should try it at some point

#

the library I use rn is also really cozy tho

#

imgui nice

vestal grove
#

agree

vestal grove
#

I did my best and I think I did a pretty good job

#

I like using it and that's what matters to me

austere talon
vestal grove
#

idk, I feel like it might come off as too raw syntax to people

austere talon
#

I was gonna write the installer in C++ initially for the funnies

#

but realised I don't wanna have to debug segfaults

#

Also go stdlib is cozy

vestal grove
#

so in general I hope frenyard isn't too bad

#

but honestly nobody else has used it before so I can't judge

vestal grove
austere talon
#

in the lib I use its just Label("Text")

austere talon
vestal grove
#

you could, the reason I didn't was for freedom

austere talon
#

anyway my biggest issue was state management

vestal grove
#

other things make sense to be components but text was a difficult topic for me

austere talon
vestal grove
austere talon
#

and conditional rendering was also pain since go doesn't have ternary, I had to implement my own ConditionalComponent

vestal grove
austere talon
austere talon
#

that's nice

#

what in the world is a GSLeftwards

vestal grove
#

The animation state!

#

So remember that video? How the screens slid left and right?

#

(and up and down)

#

That's controlled by GSLeft/Right/Up/Downwards

#

and can be disabled by using GSInstant for an instant transition

austere talon
#

btw why is logging in go so weird

#

why are there three different modules for logging lmao

#

fmt, log, and the globals

vestal grove
#

I just use fmt

austere talon
#

log is cool cause it prints the date as well

#

oh also log goes to stderr by default

#
const (
	Ldate         = 1 << iota     // the date in the local time zone: 2009/01/23
	Ltime                         // the time in the local time zone: 01:23:23
	Lmicroseconds                 // microsecond resolution: 01:23:23.123123.  assumes Ltime.
	Llongfile                     // full file name and line number: /a/b/c/d.go:23
	Lshortfile                    // final file name element and line number: d.go:23. overrides Llongfile
	LUTC                          // if Ldate or Ltime is set, use UTC rather than the local time zone
	Lmsgprefix                    // move the "prefix" from the beginning of the line to before the message
	LstdFlags     = Ldate | Ltime // initial values for the standard logger
)```
#

neat u can customise log format

#

and even print line numbers and stuff

vestal grove
#

ooo

austere talon
#

the more u know

#

and u can OR them to your hearts desires it seems

vestal grove
#

| | | |

austere talon
#

oh also log is threadsafe whereas fmt isn't

#

How to Properly Log Things in Go (log package)
Today's video is about using package log to log program information. Logging is essential in any programs, so check out this video so you can stop using fmt.Println() for litterally anything ;)

--
Golang Dojo is all about becoming Golang Ninjas together. You can expect all kinds of Golang tutorials...

โ–ถ Play video
vestal grove
#

tomorrow busy day
need to make basic replugged settings ui
continue web rewrite
write more frenyard docs

#

and I need to go to work

#

time for sleep

austere talon
#

zzzz gn

vestal grove
#

nini

#

you go sleep too venny

charred monolithBOT
maiden elk
austere talon
#

idea for third party loading:
compile ```ts
import Foo from "Vencord/Foo"

Foo.bar()


```js
((Foo) => {
  Foo.bar()
})(window.Vencord.Foo)
#

then just generate typings and plugins will use those

#

alternatively, i could just define window.require

function require(path) {
  if (!path.startsWith("Vencord/")) throw new Error("No such module: " + path);
  return path.slice("Vencord/".length).split("/").reduce((prev, curr) => {
    if (!prev[curr]) throw new Error("No such module: " + path);
    return prev[curr];
  }, Vencord);
}```
maiden elk
#

a separate js file can't be imported?

#

like one js file with all plugins one after the other

#

n import it from renderer or sumth

austere talon
#

it can

#

but how are u gonna import other things from Vencord lol

charred monolithBOT
austere talon
#

guh tsc

umbral hedge
#

guh guhsc

charred monolithBOT
austere talon
vestal grove
#

@austere talon pr instantly

austere talon
vestal grove
charred monolithBOT
charred monolithBOT
charred monolithBOT
austere talon
#

@rigid venturea

rigid venture
#

as long as you are happy

austere talon
#

this is what the new patch does

#

ee = Object.assign

#

Object.assign(target, obj1, obj2) merges obj1 and obj2 into target

#

thats why the onClick gone, it's now in "e"

#

thankfully Object.assign takes varargs

#

so i just pass a third argument with our own handlers and it overrides the earlier ones

charred monolithBOT
rigid venture
#

i dont know what that means

charred monolithBOT
austere talon
rigid venture
#

literally bend over

charred monolithBOT
#

could you give a little more detail like just import it and get over the Promise issue or like the code below. Since i don't really understand what you meant by "do it without it in start()" or maybe i'm just not smort.

let prettier;

export default definePlugin({
...,
async start() { prettier = (await import("x"))?.default; ... }
})
austere talon
#

yes

charred monolithBOT
#

Hey, got a crash after injecting the latest version, which didn't happen around a week ago:

xtrm:~/ $ discord-canary
[Vencord] Starting up...
libva error: vaGetDriverNameByIndex() failed with unknown libva error, driver_name = (null)

# just hangs here

This doesn't happen without Vencord but I can't figure out what uses libva in the project.

lament nimbus
#

Xwayland should work though so

charred monolithBOT
limber skiff
#

lmao what

#

how the heck did changing the name turn IgnoreActivities_reRenderGames into undefined

#

what

#

nvm

limber skiff
#

super cool

austere talon
#

lmao

#

how many fixes are u gonna make

limber skiff
#

hopefully the last

#

I should have tested one more time

#

though the other one was just me forgetting to test on manually added games

austere talon
limber skiff
keen lance
umbral hedge
fierce gale
tame escarp
verbal pumice
maiden fog
woeful sable
tame pendant
quick ibex
sullen gust
jagged cloak
fathom herald
lament nimbus
rancid dragon
charred monolithBOT
austere talon
#

3 billion commits

charred monolithBOT
charred monolithBOT
charred monolithBOT
vestal grove
#

Someone will make a logo for frenyard NOW

jagged cloak
#

there are no fren in my yard

swift fjord
#

what is frenyard

woeful sable
swift fjord
#

hm

#

is the dev in this server

jagged cloak
#

(uwu is cumcord people) (yes)

woeful sable
swift fjord
#

how

jagged cloak
woeful sable
swift fjord
#

i don't know everyone's github username

swift fjord
#

@vestal grove what are you looking for in a logo

robust basin
#

log

vestal grove
vestal grove
crude hearth
#

Bad

maiden fog
maiden elk
#

bro looks like drake

tidal cloud
#

he looks pretty cool

quick ibex
#

Arab final boss

swift fjord
#

anyways its kinda difficult to make a logo if i don't know whats wanted

#

try to find something similar online

quick ibex
#

Make vencord logo

#

Only suggestion

#

Femboys

swift fjord
#

i already made one

#

a while ago

austere talon
#

show

austere talon
grizzled epoch
keen lance
quick ibex
swift fjord
verbal pumice
#

actually looks based

light crag
#

i like the duck on top

maiden elk
#

time to get sued

light crag
#

you gonna get Vanceded

austere talon
#

but Discord logo so ugly

#

jumpscare

grizzled epoch
charred monolithBOT
swift horizon
swift fjord
#

๐Ÿฅ

#

what the fuck is that free smiley

verbal pumice
#

damn chuck put on some weight

quick ibex
#

idk but i fwi

limber skiff
#

hey at least it's not IgnoreActivities this time

austere talon
#

WHY IS IT INITIAL COMMIT

#

horror

limber skiff
#

lmao

austere talon
#

i thought it would use pr name as title

limber skiff
#

simply the initial commit

umbral hedge
#

initial commit

limber skiff
#

new project

umbral hedge
#

initial d

limber skiff
#

thank god

austere talon
#

I CANT EVEN FIX

limber skiff
#

I was hating that unread box

charred monolithBOT
umbral hedge
#

HORROR

austere talon
#

there fixed the commit title

light crag
#

๐Ÿคฎ

golden gulch
#

the beauty of rebasing instead of merging means commits aren't renamed

limber skiff
verbal pumice
#

trolley

umbral hedge
#

skulley

austere talon
#

thats why u dont forcepush

#

but i figured noone pulled yet so its fine

limber skiff
#

only I did

#

i fixed it already anyways

verbal pumice
#

git pull speedrun any% glitchless

austere talon
#
const megu = yield "i love";
const cute = yield "forcepushing";
let log = yield console.log;
log = yield log.bind(yield console);
yield log(yield megu, yield cute);
#

javascript is a beatiful language

#
const javascript = yield "javascript";
const iss = yield "is";
const funny = yield "funny";
const log = (yield console)[yield "log"][yield "bind"](yield console);
yield log(yield javascript, yield iss, yield funny);
umbral hedge
#

husk