#Simple Reactive UI Library (Quark)
1 messages · Page 2 of 1
and I don't think mobile players find it less immersive
maybe if you disable light interference with the gui
I don’t work with mobile players
Then do it
hm..
would take a new design then for the Ui
Profiles either are all on screen with pages.. or it shows one at a time and u cycle through with a button
Ui design is hard
Like what’s intuitive for ppl…
Ultrakill terminal ultra revamp
Search that in yt
It’s alright
Hey guys creeper has gone inactive due to school so for the timebeing ill be taking over quark development. Tell me what update you guys want next, like a premium subscription
Is this real
No
But if someone wants to fix quark I'll gladly take the offer
scopes are kinda bugged
feeling cute today might drop a pull request 
I was not aware of dis…
Yeah so apparently there's a bug where you cant put a tertiary and above scope
Not sure what causes this
Hm
I did notice this I think
It was stumping me for a while until eventually I just fixed it by just passing only one scope to use in all the components
but do we rly need scopes…?
Yeah you don't need tjem
@wind chasm isnt this ur game
"house game"
Uh sure whatever you say
@rain lagoon should i use a snackbar module or make my own
What's that
Sounds cool
Uh they’re like the little pop up’s
Games have
Little notifications
Yeah those are very cool
Make them
And add customization
Do you know about the AutomaticSize property
UI can scale to fit it's children
Yes
Basically the ui can scale to fit its children
But should I be using an existing module to manage them or just made all in quark
You can make a wrapper that uses quark underneath
Or better just use stories
And then use the stories
stories r still lost on me
just seems like a way to display components using a plugin
Yes
You're correct
No need to play the game to test your ui
It automatically instantly updates when u change the code
i get that but the ui is needed to actually be used in game
not just live viewed in studio
are stories still a valid organizational format for live ui display
Yeah
They boost productivity
And you can layer multiple stories on each other if you want
how...
@rain lagoon
how would u reccomend creating methods for a piece of ui
for like open, close
etc
@dusk spoke r u using quark still
I made my own thang
Hooks?
Or yeah connecting states
I found that scopes are unusable
The state Connect also doesn’t have its second parameter type
Oh….
And is state change supposed to fire everytime the value is set or everytime the value changes?
Like running UI to open and close it.
Show/Hide
Stuff like that
Really?
Is it just a type issue or does it not have the old value
Yeah in this you just use a state and connect it
myState(myState())
idk what this means or if u understand what im referring to
Just type issue
THE RELEASE YOU'VE ALL BEEN WAITING FOR
@lilac locust @reef sundial @wet trellis
That took like only 2.53 years
Yeah who would've though the answer to my problems was converting everything into a function
FINALLY
couldn't be me
definitely never said smt like that before
I was told by someone a long time ago that modules returned the same mutable data
Which means converting everything into a function worked
U don’t even use it 🥀
@rain lagoon
https://devforum.roblox.com/t/flipbook-—-storybook-plugin-for-roblox-ui/2184387
Could you make a test project with flipbook setup for quark?
Flipbook is a storybook plugin that previews UI components in a sandboxed environment. With it you can isolate distinct parts of your game’s UI to hammer out edge cases and complex states without having to run through the whole UI. With native support for popular UI libraries like Roact, Fusion, and Roact 17, no matter how you create UI you c...
Yes you can
But why not use UI Labs
It's better than flipbook
Check the Quark Docs on stories
fire
did u fix the issues with cleanup
Cause I ended up having to create just a blank function and manually call quark cleanup inside of it for uilabs to stop being lame with it
uhhhhh
Ive never encountered that
but cleanup is fixed
It doesn't stack overflow crash Roblox studio
not to be that guy but this sentence is dubious
automatically stories
and pass in a function as a param
maybe im just bad at english
Oh yeah it should be "automatically creates stories"
also @rain lagoon in documentation all types are required with Quark.Type
but in reality it should be Quark.Types.Type
in creating instances and in scope types
also @rain lagoon how do i clone uis made with quark? i have some uis that i want to reuse across my project
im not sure if i can put children in a stylesheet
basically i want to reuse a frame with a bunch of children
Really?
Oh
Types must be exported by the main Quark module then
local function MyComponent(New)
return New "Frame"
end
return MyComponent
You could make a module that exports a component as a function
Then call it however u like
(for autocomplete and types you can import Quark but make sure to not use Quark.New because then cleanup wouldn't work)
(instead pass a scope into the function as a parameter)
nice
that was very hard to understand and also didnt work when passing a scope
only worked when passing quark.new
with a scope it errored saying "attempt to call a table"
Yeah
Scope() just makes another version of Quark basically
@rain lagoon vro
u killed all the quark types
switching back to the older version
ur a new type solver user..
Can you quickly copy paste the export type lines from QuarkBase into Quark
Quark.QuarkBase module
And also make a pull request on the GitHub repo I'll merge it
💀
What
runtime not in studio
Dude can you go into Quark base and send a screenshot
I edited the old quark module to require and return the new quark module at runtime
Copy paste that massive chunk into Quark
starting where
Remove the new function
Actually you can remove the local Types thing and just write QuarkBase.State<T> and stuff
And type of Quark should be QuarkBase.Quark
@rain lagoon
And you can make the Last line be
return Quark :: Quark
❤️
it still wont work
Try closing the script and reopeningg
this in base will still remain an error
Hover over it
its recursive
Go into types.Quark
Go into the Types module and show Quark
im not using it
How tf is it recursive 😭
That doesnt do anything
y not just remove the typeof(new()) part
Try it?
hm
Dang, that idea was suppose to....... work!!!!!
because it causes a cool spiral into HELL
What is new returning
ok
Did it qwork
You're welcoem
Make a pull request if you want
💀
What's the issue
It's 1:40am
no rush
@short narwhal do u use quark
i cant figure out how best to organize logic with the quark component.... its just a UI Labs demonstration rn with animations
I don't 😭
but if types are angry then you done messed up
he fixed those
That is absoltuel a LEI and it will appear in 2 YEARS
y
oh yea I also misunderstood what I said
but still the point stands, I don't use quark because I never planned a "proper" game yet
I only make smoll components
Make a folder called Components where you write the code for your components
Make a folder called Stories where you write modules that show off the components and use some default/multiple testing values
@rain lagoon i dont see how stories can be used in live game
You can use the Components to make other Components
theyre so restrictive
Then use those to build the UI
i got all that
but i want to actually add logic externally
have methods for opening and closing
etc
and returning a cleanup function does not help that
im better off not using stories to actually utilize the ui
but then its not easily visualized
Yeah stories are restrictive in that they are just functions returning cleanup
Instead you should just write your code for Components and write stories that use those components as testing grounds
When I was making robalatro i put my cards in a story, made a story for the cardHolder, and a story for the FullGame
Then I made a localscript that just ran the FullGame and parented to a screengui
so u recommend just using components
and stories only for testing
not live
thank you
that helps a lot
I mean you can use stories for live but it's less flexible
im free
Unless you only want a create->cleanup thing
Add these 2 brackets
thanks for the fix
the library is peak tho i ain gon lie pure cinema
entries example is also broken
(it says "rest in wealth is calling")
very sigma lock in moment indeed
What the helly
@rain lagoon ayo
i think a boundary condition for this would make sense
also it can be negative
same for elasticity
xdd
Still using stories…
?
What i do is make my components in a story
then move everything to a component
and then make the story use the component
and use the component in a different component when needed
But not using stories at runtime
bro stories are like unit tests for gui
they show if shit even launches and show how it looks if it does
this is probably the best example
but like its the actually fun version of a unit test
unit test with tweakable params
yeah
@rain lagoon do you plan on making a plugin to convert a gui to quark code?
There's a thing called Reflection service that lets you get the names of all properties of an instance
And etc.
What if you tried making it
Then I could add you into the docs 🤑
buh
you tryna get that free labor from me
I would say the plugin should first collect all gui object default properties, then compare your existing guis with defaults to only write necessary stuff
im 70% done
AYOOOOOO
@rain lagoon AYO
ima implement recursion for children real quick
but shit already works for single gui instances
```lua
--!strict
-- SERVICES
local Reflection_Service = game:GetService("ReflectionService")
-- LOCAL TYPES
type GUI_Class_Name = string
type GUI_Class_Property_Name = string
type DEPRECATED_PROPERTY = "DEPRECATED"
type GUI_Class_Properties_Map = {
[GUI_Class_Name]: {
Properties: {
[GUI_Class_Property_Name]: DEPRECATED_PROPERTY | any
},
Child_Classes: {GUI_Class_Name}
}
}
-- CONSTANTS
local DEPRECATED_PROPERTY_NAME: DEPRECATED_PROPERTY = "DEPRECATED"
-- LOCAL VARIABLES
local Default_GUI_Class_Properties = {} :: GUI_Class_Properties_Map
-- LOCAL FUNCTIONS
local function Prepare_GUI_Class_Properties_Table(gui_class_name: string)
--
-- Class already exists in the table? => return
--
if (Default_GUI_Class_Properties[gui_class_name] ~= nil) then
return
end
```lua
local class_dump = Reflection_Service:GetClass(gui_class_name)
--
-- Invalid class name? => return.
--
if (class_dump == nil) then
return
end
--
-- Valid class name?
-- =>
-- Add all properties of this class
-- to Default_GUI_Class_Properties, and call this function
-- with all child class names to recursively construct
-- the whole Default_GUI_Class_Properties table.
--
local properties_dump = Reflection_Service:GetPropertiesOfClass(gui_class_name)
local properties_table = {}
```lua
pcall(function()
local instance_with_default_property_values = Instance.new(gui_class_name)
for _, property in properties_dump do
--
-- Deprecated property? => Set value to "DEPRECATED" and continue.
--
if (property.Display ~= nil) then
if (property.Display.DeprecationMessage ~= nil) then
properties_table[property.Name] = DEPRECATED_PROPERTY_NAME
continue
end
end
--
-- Normal property? => Copy the value from instance_with_default_property_values.
--
local success, value = pcall(function()
return instance_with_default_property_values[property.Name]
end)
if (success == true) then
properties_table[property.Name] = value
else
properties_table[property.Name] = true
end
end
end)
Default_GUI_Class_Properties[gui_class_name] = {
Child_Classes = class_dump.Subclasses or {},
Properties = properties_table
}
if (class_dump.Subclasses == nil) then
return
end
for key, child_class in class_dump.Subclasses do
Prepare_GUI_Class_Properties_Table(child_class)
end
end
local function GUI_Instance_To_Quark_Code(gui_instance: GuiBase, recursion: number?): string
local class = gui_instance.ClassName
recursion = recursion or 1
local quark_code = `local {gui_instance.Name} = New "{class}" \{`
local class_dump = Default_GUI_Class_Properties[class]
if (class_dump == nil) then
warn(`Class dump for {class} wan't found. Report this to the plugin developers.`)
return ""
end
```lua
quark_code = `{quark_code}\n--Propeties start\n`
for key, property in Default_GUI_Class_Properties[class].Properties do
local success, instance_property_value = pcall(function()
return gui_instance[key]
end)
if (not success) then
continue
end
--
-- Gui instance's property has the default value? => Skip this property.
--
if (instance_property_value == property) then
continue
end
--
-- Developer is using a deprecated property? => We don't care, skip this property.
--
if (property == DEPRECATED_PROPERTY_NAME) then
print(`Property {key} of class {class} in instance {gui_instance.Name} is deprecated. Skipping it.`)
continue
end
for i = 1, recursion do
quark_code = quark_code .. "\t"
end
quark_code = `{quark_code} {key} = {instance_property_value},\n`
end
quark_code = `{quark_code}\n--Propeties end`
quark_code = `{quark_code}\n}`
return quark_code
end
-- MODULE OPERATION
Prepare_GUI_Class_Properties_Table("GuiBase2d")
-- RETURN VALUE
return GUI_Instance_To_Quark_Code
shit i forgot to destroy temp instances lmfao
@rain lagoon so sadly the reflection service doesn't specify default values for properties, only their names, so i actually use instance.new and collect all defaults via pcalls
if that doesn't work i just set them to true
and if an instance is impossible to create with instance.new then you don't want it anyway so i dont bother getting values for such shit
⛹️ 🎣 🛀
✈️ 🗼 🤯
🥀 📤
bro wait for it cro
ye i need to add that
i know
ok @rain lagoon I'm pretty happy with how it ended up
had to clean up some code
textbox is not highlighted because i didnt go through the trouble of building a map on all roblox classes or anything, if you need to highlight em you add them manually in code i couldnt be bothered
to copy the text you disable highlighting anyway
because if you look inside you see it's using rich text
wait
wait
wait
there's focused event in textbox
damn
ok then ima just make text unhighlighted on focus

ok i made it react to focus events
ok @rain lagoon
here's the code
I put it under MIT license just you know cause dudes gotta get credit where credit is deserved
it really only requires credit
@lilac locust rate my code in this thing
somehow highlighting is still not perfect but ion give a shit no more bro it took too long already
you can use ReflectionService here
to cache properties of the particular gui object when you encounter one
a lazy cache
oh wait you are doing it mb
but you stil pcall it
yeah all good here
pcall again is just a decision atp
okay this looks pretty good
that’s actually so sigma
thats actually amazing
you even cache the data to make it faster (i think)
im not sure if it handles every single datatype but thats fine
(you can try adding Font and stuff)
does it automatically handle children and stuff like Constraints, UIGradient, UIStroke, etc?
ohh wait i understand
I would also maybe limit numbers to 4 decimals max?
I dont add children, I just make them separate variables
like if you want them you select them
and the generator spits the code
And because it's recursive, children are always on top of the output, and parents are on bottom
so you never have problems with undeclared variables or whatevee
pretty cool but i think children should be on the bottom so you dont get Parent = nil issues
i was meaning you can always do
children {...}
@rain lagoon anyway to animate a list -> make the item add and remove and list reorder animated/smooth?
You could make the actual element be inside a Frame and animate that at startup
Or animate the size of the frame if you want all the other list elements to react
Assuming everything is in a UIListLayout
So that will still allow you to use the UiListlayout
and dynamically add elements to it
@rain lagoon so what are you planning to do with the plugin etc
I think most people who wanna try getting into declarative reactive UI hate the idea of memorizing and writing syntax
I've seen some people who only want the animation and reactivity and like designing UI in real time using Roblox tools
yes
This is great for those people i think
so what are you gonna do with the plugin
Cus they can make something and see what the code equivalent is
I layed a starting point but im not gonna maintain allat
I probably won't use it as much as others because i like writing the code and am pretty good at designing UI in my head more than with tools
(and because I design stuff in figma and don't wanna re-create stuff twice in Roblox)
I mean are you gonna maintain it and allat
Maybe I could but the plugin doesn't really take advantage of any other features and it doesn't need to i feel
Animations are something the user should add by themselves
will you credit my ass in the docs
Yeah sure
you can add your plugin into the docs yourself
and pull request
(cus I haven't checked it out you can make an entire tutorial for it)
dam
@rain lagoon I am working with QML rn and they really cooked with their State object
basically a state in qml is a table of properties, and you can use states on actual UI elements later for example on events
could you do a similar thing? Named differently ofc
also a multi-property state from quark would be good, I usually have to use more than one state if I use any
multi-property state :0
-- HOVERING CONTROLS OTHER STATES
local hovering = State(false)
-- SIZE
local size_state = State(function(use)
if use(hovering) then
return UDim2.fromScale(1, 1)
end
return UDim2.fromScale(0.5, 0.5)
end)
-- COLOR
local color_state = State(function(use)
if use(hovering) then
return Color3.new(1)
end
return Color3.new(0)
end)
But I do like the idea of a State that consists of other states
ok true
So you could have ```lua
local StateManager = Manager({
Health = 100,
Hungry = false,
})
And in the properties you can do
but sugar tho
this looks to imperative
🥷🏿
New "Frame" {
Size = state_manager.Health
}
it is sugar though :/
👨🏿🌾
we love sugar cro
Yeah lol
i was asking for sugar here
like where my sugar at here
too imperative
I hate the way lua handles function lambdas
you mean in no way
cause its the same syntax
you only write 1 word less that word being the actual name
im making an ide for coding luau on android btw
woah
ye rn we have this bullshit with and
local x = use(hovering) and "yes" or "no"
69 and 120 or "gtfout"
yes
you can't even stack them well
lmao
this is so beautiful
why cant roblox just use it 😠
apparently : is reserved for funny method
well that is default lua
if use(hovering)
then Color3.new(1, 1, 1)
else Color3.new(1, 0, 0)
yeah
i also want if let syntax
You definitely can use it but it's hard to use it with Reactivity
Since the CurrentPage is Read Only
You could bind a Signal to call Layout:JumpTo()
but JumpTo requires the instance
not the ID or name
PageLayout's require you to name the pages or decide their order
youd have to do that with quark no
Yeah you can its just annoying
Would pagelayout not make it easier to develop page ui
with quark
rather than doing all the logic yourself
the logic you have to write is```lua
New "Frame" {
Visible = State(function(use)
return use(Page) == 1
end)
}
whats that
its why i asked ab animated ui lists
i gotta make a framework so that i can have dif systems give notifs..
ohhh
but whats wrong with a UIListLayout and just spawning components
children = {
Notification("Name", "Warning", "Description")
}
or just set the parent at runtime
AddChild or whatever
no idea i havent started
but i think ui list makes animations harder?
it can depending on how you wanna animate stuff
but i like that it automatically lays out where each frame should go
you can do the thing where you keep the real frame inside a pseudo-parent frame
and then i lerp the position to where it should be
or something
just use a spring
u know what i mean
yeh
main thing is making the api for this
:SendToast(erjherhjkere)
and then that doing some quark stuff
gotta design the look of it too..
would would the module be tho......... a "ToastService", a "ToastManager", a "ToastFramework", a "ToastCore", or a "ToastSystem"
local Toast = {}
local ToastComponent = require("path")
local holder
function Toast.Init(gui: ScreenGui)
holder = ToastComponent.Holder(gui)
end
function Toast.Send(name, description)
ToastComponent.Toast(holder, name, description)
end
return Toast
ill prolly create the screengui in the init
ToastComponent module
local ToastComponent = {}
local Quark = require("path")
local New = Quark.New
function ToastComponent.Holder(gui: ScreenGui)
return New "Frame" {
Parent = gui,
Position = UDim2.new(1, 1),
AnchorPoint = Vector2.one
}
end
function ToastComponent.Toast(holder, name, desc)
return New "Frame" {
Parent = holder
-- stuff
}
end
thats cool too
im not writing the entire code obviously but yeah
also add the UIListLayout i forgor
ill have to have cleanup for when they get destroyed
@rain lagoon this type of stuff usually stumps me
ToastManager
ToastService sounds like bloat
ToastCore doesnt make sense
ToastSystem could work
isnt manager something that is tracking live items
ToastHandler
ToastHandler
Bruh just put the bread in the toaster
Woman go make me a sandwich
woah
⛹🏿 🔥 👨🏿🌾
Elite ball knowledge from creeper
Man goes on incognito
Starts quarking
i aint diddling allat
Exploiting my plugin and chinese clankers to blitz quark guis
plugin does the heavy lifting then clanker adjusts it to my codin standards
✋🏿 🙏🏿 🤚🏿
but yeah this clanker is fucking retarded so I still have to do some stuff manually
😭
@rain lagoon CREEEEEEEEEEEEPER
i love those types of buttons
me too (its for a commission)
was my favorite type to make when i did web react
button:hover::before {
translate: 0 4px;
}
:P
what is that..
CSS?
why is named before instead of start 💀 is this css
oh wait
is it before hover?
looks like css
and after hover
on hovering over the button, its before pseudo element should move down by 4 pixels
no css is for web dev
okay fair
creeper.... im gonna make an interface that uses keys to navigate instead of mouse
linux users
in game computer terminal
no touch screen
should i use buttons for the selectables
is there a way to manually select a button
like a method
:click
Button.Activated:Connect(callback)
```To manually click the button```rs
callback()
meep
ill figure it out
i could just tag textlabels
@rain lagoon ok but what i wanted to ask
was about using the ui at runtime
outside of a story
you can just call the Component function
wanted to know what a good practice would be for setting up a module
Are Mount and Render proper terms
MyButton(Scope, "Text") {
Parent = script.Parent,
Position = UDim2.new(0.5, 0.5)
}
creeper..
WeaponWheel being one distinct ui interface. Not being an object I suppose? (or maybe a singleton?)
And the WeaponWheel module just owns the lifecycle of the Components/Story
and when you want to show or hide it you WeaponWheel.Show()
But if its populated with data that has a limited lifetime..... do you want it to be an object that is owned by another object..?
Like
Inventory = {
Wheel = WeaponWheel.New()
}
@rain lagoon
Theoretically yeah
You're write
Wheel:Mount(script.Parent)
Wheel:FillItems({a, b, c})
Wheel:Show()
Wheel:Hide()
Mount() is just setting the parent in this case
hell you could just write
WeaponWheel.new(script.Parent)
``` and mount it instantly
so what is render then
so i should make it an object?
Not just a "stateless" modulescript
what if FillItems() just instantly renders them
keep a track of all created items
keep a track of their connections
if it was quark you could just write ```rs
Scope.Cleanup()
cus each item would be a component and all state is maintained inside the item you wont worry about leaking states
im using quark..
i didnt see it sorry
i saw this and thought you were doing this manually lol
im tryna figure how best wrap around the quark objects for use in the wider game
makes sense
sooooo
object.....? or stateless module
And what could the terms render and mount be used for
I dont think you need the render and mount terms
because components are just created and automatically connected to functions
unless your weapon wheel changes in realtime i doubt you need to do anything
the weapon wheel shows weapons in your inventory. so it has to be updated with what those are
your rendering thing could be positioning the weapons with a Spring
and then selection has to be connected to the equiping systems
local PositionState = State(function(use)
local current_number = use(CurrentNumberState)
return -- calculate position for circle thingy
end)
local PositionSpring = Spring(
Center,
PositionState,
0.6,
0.3
):Play()
Did something change with Quark Springs
This module is a return function
In order for it to work here in the Spring it needs to be called first
Reactive()
but it is called........ inside of QuarkBase..
im confused
but not if Spring requires it directly
QuarkBase runs Animations which requires Spring
Are you using the latest quark version
No im sorry
I went and checked for a more recent release
And updated and it worked
And then i forgot to delete
My messages
well this is how it works```rs
Text.Create(
"This text is awesome!",
frame,
{
LineSorting = true,
WordSorting = true
}
)
it requires the frame
it could definitely work
local text_holder = New("Frame")
Text.Create(
"This text is awesome!",
text_holder.Object,
{
LineSorting = true,
WordSorting = true
}
)
I probably wouldn’t do the line and word sorting, i really just need it for custom fonts
as long as it’s able to be cleaned up with quark
And be used with quark animations and states
Yeah it should be
this used to be the quark logo
animations?
animations would be controller by the Text+
Quark would just store the Text+ elements in a parent frame
But i want quark animations..
write your own Text component
And the state updates
@rain lagoon HUGE L from you cro
this is on wiki
this is in source code
😭
send the PR
aw
claude cooks hard bro
fr
always works first try
by the way
im scared of it
wth 😭
LMFAO
because I do exact and not question mark shit
I think this is just luau language server being retarded at this point
lmao
so sorry for the shots fired at ya
why are you making custom type checking
xd
it's not custom
which uses actual luau under the hood
roblox actually have their typechecking directly in the language source code
and this dude just has a language server protocol wrapper
w
woah its written in lune?
thats crazy
uh no?
its c++
and typescript
typescript is for vscode extension
it also has a neovim version
btw @rain lagoon have you ever tried putting quark components into states?
is that a thing you can do?
i am making a custom chat and would just put messages into a state
theoretically you could make a state that uses it
no but i get a reference to the quark obj right?
5 days later
had to follow up..
wdym by my own text component.......
i just wanna use quark anims..
I will update the gui-to-quark plugin
tomorrow
it still processes some unnecessary bullshit properties + doesnt save child-parent relationships + no ui corners or list layouts
bro…
I just want to shove it into the quark ecosystem..
you can do that
but text+ handles its own text characters i think
I’d like to use quark to be able to just manage the animations of the “textlabel” as a whole
like manage the animations of every character?
cus Text+ makes a frame with all characters as separate text labels
you can wrap that in with a New() if you want
Nah just like the properties of the textlabel like position size etc
Yeah
I guess
I’d just use quark on that frame
But connecting Text property to state updates…
If I could pin this i would
you should make a devforum post about quark and include my plugin
what the fuck was the prompt lmfao
LMFAOOOO
🔥 🔥 🔥 🔥 🔥 🔥 🔥
nah @rain lagoon twin you really gotta lock in with the documentation and devforum post trust
whats wrong with the docs
😭
LMFAOOOO
nice
i have like 20x more bullshit named commits in my game btw
@rain lagoon where the fuck is the documentation stored it's not in the repo bro how do i make a pr for it
its in a branh
branh
github pages
dam
i had to do cli black 🥷🏿 magic boohoo shenanigans with git to get this branch on my fork of quark repo
a whole diff remote added
but ye now i can do a pr
cant you just do ```arm
git clone ... -b pages
when you fork you only add main to origin you dont clone all the branches they are non existent
so i had to add another origin to get that branch
anyway
@rain lagoon there are 2 ways here, either renaming Stylesheets to StyleSheets in docu, or changing the name to Stylesheets in implementation
im a fan of option 2
stylesheet is a whole word not 2 words why camelcase
@rain lagoon you gotta add a readme for the pages or somethin
how do i verify a new markdown page works
index.html aint working
i click docs button i get this
ok it looks like this is just a browser issue
lemme try making a local server with this
ye ok it works when hosted
but when just opening index html it will be opened as file://path/index.html and wont work
well i did get a notification on my phone
whatever i used a python script to locally host this
its just inconvenient
but thats a browser issyou
lmao
not sure if it should be in the readme
read the comment for the change
I gotta get some props for the plugin fam
^
I wanna change a little and put it under the documentation
ok
(it's not important to the users directly)
(😭)
anyway ive also made additions to documentation
you review
ima go touch grass
⛹🏿 ⛹🏿 ⛹🏿
cool idea and all
but im gonna ask you to move that from a different page into the Premade Instances page
and also im changing the link
have you tried the new plugin version out?
nah i was buying a cake
you amateur
real ones use the code editor that they made in pure Luau
sybau
lmao
yk how it was to make that goddamn editor in pure Lua??
what is that pairs keyword usage
it's just a function bro
you give it params and get output
ive never seen it used like that
what is the output
sybau
skiddy got mad
lmao
this is so quark
my laptop is lagging
and im not even inside a roblox game right now
just the homescreen
gives me flashbacks of my old laptop
lmao
Quark people is this a good change
for comparison this is what it used to look like
@lilac locust @cursive ginkgo @digital shale
@rain lagoon I need yo help
how do I link a specific folder in game in project.json
like I want ReplicatedStorage\Client to be replicated to Client
"ReplicatedStorage": {
"Client": {
"$path": "ReplicatedStorage/Client"
}
}
something like that
is this good
I did that and it still synced everything 🥀
restart the plugin
alr
and server
Looks better
yeah that should work
it didn't at least not for initial sync
i'd only use this resource
if there was some guarantee that it's maintained by an indian unemployed chud daily
and not gonna be dropped then u on ur own
@rain lagoon
im not sure if this is supposed to happen
3
this stuff also fails
actually theres a ton of test failures hot dam
hm
is this lua or luau
quicklist only works with luau
it is luau bruh
here are all the tests
most of these fail
i skip them from now cause most fail
works for me
thats not what the test does cro
i dont think the tests work with metatables then
:(
local list = ql({1, 2, 3})
local sum = 0
list:forEach(function(v) sum += v end)
expect(sum).to.equal(6)
try something like this
and this
local list = ql({"a", "b", "c"})
local indices = {}
list:enumerate(function(i, v) indices[v] = i end)
expect(indices["a"]).to.equal(1)
expect(indices["b"]).to.equal(2)
expect(indices["c"]).to.equal(3)
you're using colons
yeah quicklist uses dots
xd
the only use of AI thats actually good
testicles
