Codify - Convert anything to Luau, TypeScript, Fusion, React, Vide, Rojo

Version 2.4.12

Get on Roblox Get on Itch.io

Demo version →

  • Added option to wrap arguments with parentheses in supported frameworks (Fusion, Vide). This can be enabled from Settings → Generation → Wrap Arguments.
  • Added option to show all settings.
  • Minor style and layout changes.
2 Likes

Thank you so much, your a lifesaver :pray:

1 Like

is there support to select multiple things?

not currently, but I could add the ability to output multiple snippets based on multiple selections. for react and tsx, we could even have fragments

V3 when?
‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ‎‎‎‎‎‎‎‎ㅤ

It’s still a work in progress. Overall, I’m not expecting too many user-facing changes to begin with (mostly UI enhancements), but I am currently prototyping some magical new features to upgrade and improve your workflow.

I’m in the process of refreshing my whole plugin suite, starting with the Resurface plugin, most likely followed by a new plugin that should compliment (and possibly even integrate with) Codify, but more on that one later.

1 Like

Version 2.4.13

Get on Roblox Get on Itch.io

Demo version →

  • Fixed Rojo generator not filtering out Instance-based properties (e.g. “BillboardGui.Adornee”, “GuiObject.SelectionImageObject”).
  • Added button to export snippet directly to a ModuleScript.
1 Like

How did you create the “save to device” feature? I’ve searched everywhere and I can’t find a function that does that.

I see your question was already answered, but for anyone else wondering, Codify temporarily creates a ModuleScript containing the component snippet, selects the newly created ModuleScript and then uses the plugin:PromptSaveSelection method to show the native save dialogue.

2 Likes

by the way, for the demo plugin there is no option to “save on your device”, is this intended?

That was not intentional. I’ve updated the demo version to restore the “Save to Module” option. You can save it to file manually by right-clicking the created ModuleScript in the Explorer window and selecting the “Save to File…” option from the context menu.

alright, i’ll try it now (it’s on the itch.io version right?)

It is indeed. I can’t actually publish the demo version to the Creator Store as the anti-fraud AI flags it and blocks it from being distributed.

this is really cool, but what happens if the script is larger than 20,000 characters?

There’s not much I can do in that instance. If you’re reaching the script character limit, even exporting to device will not work, since that system still relies on scripts.

I’m looking into ways to export to third-party services for the full version of Codify v3 (e.g. Pastebin, GitHub Gist), but if you’re hitting those character limits, you should probably look into splitting up into smaller components. You really shouldn’t have components that large.

UIDragDetectors appear to error.

1 Like

Got it. Will look into this asap.

1 Like

UIFlexItems also do it, seems like any of the newer instances are not supported.

My suggestion is to detect errors for unknown instances, then just skip over them and warn the user

1 Like

Will investigate when I get a spare minute. UIDragDetectors are in beta, so this may be why they’re not showing up and I’ll see if I can find a way to work around that. Not sure why UIFlexItems aren’t showing, but I’ll try and issue a patch for both of these.

UIGradients are also broken, when I run this code (generated by Codify Demo):

local uIGradient = Instance.new("UIGradient")
uIGradient.Name = "UIGradient"
uIGradient.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(Color3.new(1, 1, 1), 0),
    ColorSequenceKeypoint.new(Color3.new(1, 0.898, 0.486), 0.656),
    ColorSequenceKeypoint.new(Color3.new(1, 1, 1), 1)
})

I get this error:

ColorSequence:4: invalid argument #1 to 'new' (number expected, got Color3)