Codify - Convert to TypeScript, Fusion, React, Luau

Release v1.1.0

Roactify now has syntax highlighting and an update to the “About” section of Settings that displays a list of contributors. Thanks to @boatbomber for these amazing changes!

image

Keep a lookout for future updates to Roactify :eyes:

Syntax highlighting is provided by @boatbomber’s Highlighter module:

What’s Changed

HTTP Permissions

You may be prompted to allow requests to GitHub. This is purely used to download the list of contributors. You are free to decline this request without negatively impacting the plugin.

New Contributors

Full Changelog: 1.0.0…1.1.0

5 Likes

Release v2.0.0

Roactify is now Codify

Thanks to @boatbomber, Roactify is now Codify. Codify has undergone a huge change which now allows for generating code for multiple frameworks, including vanilla Roblox Instances, Fusion and Roact!

Get on Roblox Get on Itch Get on Github

What’s Changed

  • Support multiple frameworks by @boatbomber in #3
    • Added support for Fusion and Roblox Instances
    • New components; including dropdowns and checkboxes (this replaces toggle buttons in the settings menu)
    • Icons to help distinguish between frameworks (Roact, get yourself an official icon!)
    • Support for NumberRange
    • More formatting options!

Thanks to @chriscerie and @mkargus for reviewing our commits too!

Full Changelog: 1.1.0…2.0.0

7 Likes

Awesome project! Might convince me to move over to Roact in the future.

Would it be possible to create a web proxy for larger object trees (> 200,000 chars) that would like output a URL and you go to it to download a RBXMX file that can be imported to studio so you can get the code?

If that sounds too complicated I may end up doing it for myself, I can provide the working code in the end if anyone is interested if I do end up trying that.

Or does that whole thing undermine what you said in one of the earlier posts where you wanted to make this for smaller components?

1 Like

that’s awesome! :heart: we support Fusion and vanilla Roblox too, so you don’t have to tie yourself into a specific framework to use this plugin!

yep, so you wouldn’t use this plugin to create an entire app, but rather the smaller components which make up an app. it’s really not designed to output an entire tree; just the code needed to physically render the instances.

feel free to go ahead with this! the project is open source on GitHub, so you’re free to use it as you see fit!

1 Like

Bought the plugin for $7 on itch. :heart: Thank you for making this wonderful plugin!

Do you plan to support Roblox-TS with TSX?

2 Likes

tysm! that means a lot! :heart:

no promises, but it was in the original plan before it became Codify!

unknown

2 Likes

Amazing plugin, such a useful utility, really great work :smiley:
Will there be indent customization support in the future for generated snippets?

1 Like

Version 2.1.0

Version 2.1.0 is now available! Thanks to everyone who gave feedback!

What’s Changed

  • Bug fixes+improvements by @csqrl in #8
    • UDim2 values are no longer clamped to the range 0-1
    • All Instances are now supported, not just GUI elements
    • The Children key can now be customised for Fusion components
    • Various other bug fixes and improvements

Full Changelog: 2.0.0…2.1.0

2 Likes

yep! v2.2.0-rc.1, which is currently available to manually install from GitHub, features the ability to customise indenting

there will be an option to switch between tabs and spaces in the settings tab, and additionally specify the number of spaces to use when set to use spaces

will be coming to the stable releases soon! I need to update the GitHub workflows, which automate releases, before I push any more updates

1 Like

This plugin is fantastic. Converting UI components to Fusion saves me a lot of time. Thank you very much for creating such an important and appropriate plugin!

1 Like

Version 2.2.0

Version 2.2.0 is available to download via the usual channels. This release contains some UI and backend improvements.

What’s Changed

  • Indent to your heart’s content!
  • PhysicalProperties and BrickColor formatting options are now respected.
  • Minor optimisations in Roact components.
  • Further re-categorisation of settings
  • Settings sections can now be collapsed
    image
  • Codify will now use the API dump for your current Studio version, instead of just fetching the latest dump.

Full Changelog: 2.1.0…2.2.0

Version 2.2.1

What’s Changed

  • Fixed an issue where installing the plugin locally (i.e. from itch.io) would put the plugin into development mode. This change restores the correct icon and labels.

    Plugin Build Icons

Full Changelog: 2.2.0…2.2.1

2 Likes

I’m not too sure if you are aware but with certain ui’s it throws this error

 user_codify-plugin-2.2.1.rbxm.CodifyPlugin.Lib.Codify.GetSafeName:10: invalid argument #2 to 'sub' (number expected, got nil) (x2)

image

I found the root cause, its due to naming them 1234567. This might need a possible fix

and it seems to not give text labels its properties

I’ll look into this one, thanks! :+1:

that’s odd. I haven’t been able to reproduce that myself, but will look into it if I can.

Hey! Absolutely awesome plugin - makes my workflow much easier.
Some criticisms, though:

  • FontFace property on TextLabel objects generates the following code:
    image

  • Adornee property on BillboardGui instances (possibly others) generates the following code:
    image
    I believe a better solution would be to intentionally omit this property to generate an error, making it easier to see.

  • There should be an option for PascalCase names; I use PascalCase in my code, while this plugin generates them in camelCase. Closest option I found was Naming Scheme, but this does not control variable naming conventions.

2 Likes

Thanks so much! Always great to hear people are enjoying Codify! :smile:

Good catch! I’m on holiday now, but I’ll look into this when I can. There’s not currently a separate case for handling FontFace, but that’s easily added.

Oops. Properties that take Instances are supposed to be omitted. I’ll take a look into this one too!

Excellent suggestion, and I agree with you. While I might use camelCase in Roact, I would definitely use PascalCase with vanilla Roblox instances. I’m planning an updated look for the settings panel, so I’ll include this setting in with that

1 Like

Thanks for the quick response time! To clarify on this:

I believe the plugin should make it clear that the property was omitted, to prevent people from spending hours figuring out why their billboards aren’t rendering :sweat_smile:

1 Like

Absolutely valid point! Alerting people of that upfront definitely makes for a better DX.

The only time you should be seeing Instance-based properties being set is when you’re using the “Regular” framework, where the Parent property is set for any descendant Instances (so, all Instances with the exception of the root object that was initially selected).

The reason behind not setting Instance properties is for the sake of portability. Those Instances aren’t guaranteed to exist (or have the same pointer) in one project file as they are another, and are irrelevant in some frameworks (Roact, and possibly Fusion, but I’ve not used Fusion before to be able to comment).

3 Likes