From 2adbf16f8f3d1dbb85d4ec38458be9de6f2cad7b Mon Sep 17 00:00:00 2001 From: Olaroll Date: Thu, 24 Sep 2026 13:33:03 +0300 Subject: [PATCH 1/4] Include stack trace in effect errors (#91) --- src/graph.luau | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/graph.luau b/src/graph.luau index fd22489..b85b66e 100644 --- a/src/graph.luau +++ b/src/graph.luau @@ -31,7 +31,14 @@ local function efn(err: string) end trace ..= "\nsource update stacktrace:" -return trace + return trace +end + +local function effect_traceback(err: unknown): string + local message = tostring(err) + -- Nested effect error already has full thread stack + if string.find(message, "^effect error:\n") then return message end + return `effect error:\n{debug.traceback(message, 2)}` end local function ycall(fn: (T) -> U, arg: T): (boolean, string|U) @@ -181,13 +188,13 @@ local function evaluate_node(node: Node) destroy_owned(node) push_scope(node) - local ok, new_value = pcall(node.effect :: (T) -> T, node.cache) + local ok, new_value = xpcall(node.effect :: (T) -> T, effect_traceback, node.cache) pop_scope() if not ok then table.clear(update_queue) update_queue.n = 0 - error(`effect error:\n{new_value}\n`, 0) + error(new_value, 0) end node.cache = new_value From 73272ee7d4e5fdb46194959aaba40b32455f3820 Mon Sep 17 00:00:00 2001 From: ayden Date: Thu, 24 Sep 2026 23:38:48 -0400 Subject: [PATCH 2/4] feat: expand Instances types --- selene.toml | 1 + src/create.luau | 42 ++++++++++++++++++++++++++++++++++-------- 2 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 selene.toml diff --git a/selene.toml b/selene.toml new file mode 100644 index 0000000..c4ddb46 --- /dev/null +++ b/selene.toml @@ -0,0 +1 @@ +std = "roblox" diff --git a/src/create.luau b/src/create.luau index 120d17d..bb0bc85 100644 --- a/src/create.luau +++ b/src/create.luau @@ -53,37 +53,63 @@ local function create(class_or_instance: string|Instance, properties: { [unknown end export type Instances = { + -- containers Folder: Folder, + Configuration: Configuration, + + -- layer collectors + ScreenGui: ScreenGui, + SufaceGui: SurfaceGui, BillboardGui: BillboardGui, - CanvasGroup: CanvasGroup, + + -- ui objects Frame: Frame, + CanvasGroup: CanvasGroup, ImageButton: ImageButton, ImageLabel: ImageLabel, - ScreenGui: ScreenGui, ScrollingFrame: ScrollingFrame, - SurfaceGui: SurfaceGui, TextBox: TextBox, TextButton: TextButton, TextLabel: TextLabel, + VideoFrame: VideoFrame, + Path2D: Path2D, + + -- ui components UIAspectRatioConstraint: UIAspectRatioConstraint, UICorner: UICorner, UIGradient: UIGradient, - UIGridLayout: UIGridLayout, - UIListLayout: UIListLayout, UISizeConstraint: UISizeConstraint, UITextSizeConstraint: UITextSizeConstraint, UIScale: UIScale, UIPadding: UIPadding, UIStroke: UIStroke, UIFlexItem: UIFlexItem, + UIShadow: UIShadow, + UIDragDetector: UIDragDetector, + + -- ui layouts + UIGridLayout: UIGridLayout, + UIListLayout: UIListLayout, UIPageLayout: UIPageLayout, UITableLayout: UITableLayout, - VideoFrame: VideoFrame, + + -- viewports / world ui ViewportFrame: ViewportFrame, - ProximityPrompt: ProximityPrompt, - UIDragDetector: UIDragDetector, Camera: Camera, WorldModel: WorldModel, + + -- interaction + ProximityPrompt: ProximityPrompt, + + -- value objs + BoolValue: BoolValue, + IntValue: IntValue, + NumberValue: NumberValue, + StringValue: StringValue, + ObjectValue: ObjectValue, + ColorValue: Color3Value, + VectorValue: Vector3Value, + CFrameValue: CFrameValue, } export type function Properties(instance: type?) From 52edc4903bd14e58c21f3741cfb47413f0d66950 Mon Sep 17 00:00:00 2001 From: ayden Date: Thu, 24 Sep 2026 23:40:35 -0400 Subject: [PATCH 3/4] Delete selene.toml --- selene.toml | 1 - 1 file changed, 1 deletion(-) delete mode 100644 selene.toml diff --git a/selene.toml b/selene.toml deleted file mode 100644 index c4ddb46..0000000 --- a/selene.toml +++ /dev/null @@ -1 +0,0 @@ -std = "roblox" From a57679118a900de2e671fbfc027970fd6e677f34 Mon Sep 17 00:00:00 2001 From: ayden Date: Fri, 25 Sep 2026 08:29:07 -0400 Subject: [PATCH 4/4] feat: expand and organize Instances types (#92) * feat: expand Instances types * Delete selene.toml --- src/create.luau | 42 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/src/create.luau b/src/create.luau index 120d17d..bb0bc85 100644 --- a/src/create.luau +++ b/src/create.luau @@ -53,37 +53,63 @@ local function create(class_or_instance: string|Instance, properties: { [unknown end export type Instances = { + -- containers Folder: Folder, + Configuration: Configuration, + + -- layer collectors + ScreenGui: ScreenGui, + SufaceGui: SurfaceGui, BillboardGui: BillboardGui, - CanvasGroup: CanvasGroup, + + -- ui objects Frame: Frame, + CanvasGroup: CanvasGroup, ImageButton: ImageButton, ImageLabel: ImageLabel, - ScreenGui: ScreenGui, ScrollingFrame: ScrollingFrame, - SurfaceGui: SurfaceGui, TextBox: TextBox, TextButton: TextButton, TextLabel: TextLabel, + VideoFrame: VideoFrame, + Path2D: Path2D, + + -- ui components UIAspectRatioConstraint: UIAspectRatioConstraint, UICorner: UICorner, UIGradient: UIGradient, - UIGridLayout: UIGridLayout, - UIListLayout: UIListLayout, UISizeConstraint: UISizeConstraint, UITextSizeConstraint: UITextSizeConstraint, UIScale: UIScale, UIPadding: UIPadding, UIStroke: UIStroke, UIFlexItem: UIFlexItem, + UIShadow: UIShadow, + UIDragDetector: UIDragDetector, + + -- ui layouts + UIGridLayout: UIGridLayout, + UIListLayout: UIListLayout, UIPageLayout: UIPageLayout, UITableLayout: UITableLayout, - VideoFrame: VideoFrame, + + -- viewports / world ui ViewportFrame: ViewportFrame, - ProximityPrompt: ProximityPrompt, - UIDragDetector: UIDragDetector, Camera: Camera, WorldModel: WorldModel, + + -- interaction + ProximityPrompt: ProximityPrompt, + + -- value objs + BoolValue: BoolValue, + IntValue: IntValue, + NumberValue: NumberValue, + StringValue: StringValue, + ObjectValue: ObjectValue, + ColorValue: Color3Value, + VectorValue: Vector3Value, + CFrameValue: CFrameValue, } export type function Properties(instance: type?)