Examples Templates Store Pricing Docs Turbo CSS Blog Introducing Turbo UI Named buckets Turbo CSS is Tailwind CSS on steroids Introducing Turbo CSS, the most advanced web-design language Calculate how much storage you use Better login system Collaboration settings Filesystem and Database are not cutting the problem space right What I'm working on 64bit File node IDs New how-to videos Creating buttons gets easier Introducing reusable components HTTPS by default Introducing the Boomla Theme CDN for faster pageloads Write your own website builder on top of Boomla On On composition Shared admin access A fresh config editor Building a multi-purpose theme A filesystem to replace your CMS New file link type: scope Mobile editing support Inline file wrapping changed Package sandboxing New PHP-like JavaScript engine [sjs-4e] Send emails to the website owner New JavaScript engine [sjs-4] A better editing experience New email service provider Glossary and other changes New panel changes Improved registration flow Boomla goes multiplayer Using local dev tools Why Boomla doesn't need Git File Panel Let's build a community Automatic updates Improved sjs-3 API New Frontend CSS modules Work offline with Boomla Faster page loads via caching Drag & drop supercharged Supporting CommonJS modules  Paranoid about loosing data IDE usability improvements Simple App install flow Meetups in Budapest Goodbye broken links Flow control from user space Customizing apps Contextmenu support for apps Deprecating the .Class file Hello Changelog Embedding 3rd party plugins Introducing Tools Installing apps just got amazing Public beta Host on our servers Simple deploy with push/pull Version Control for the Web 350M files on a 1TB disk 2 weeks in review
Control Panel

Improved sjs-3 API


This is a developers post.

The API of the sjs-3 interpreter was improved with the following.


The os.TYPESAFE placement flag was added for moving, copying, creating files. This allows you to programmatically access the same typesafe file placement functionality present on the drag-and-drop frontend.

The os.TYPESAFE flag enforces that a file can only be placed in a typesafe fashion, where typesafe means conforming the file’s .Accept rules.

If the bucket is provided, and placement would not be typesafe, the operation will fail.

If the bucket is not provided, Boomla will find the first typesafe bucket and use it. If no bucket is safe, the operation will fail.

Docs: os.TYPESAFE.


Similarly, the os.TYPESAFE_IF_POSSIBLE placement flag was also added.

It’s like os.TYPESAFE, but it will proceed anyway instead of failing, when a typesafe bucket is not available.


File.inline(), Collection.inline()

Now you can call f.inline() directly, instead of calling os.inline(f).

Same goes for collection.inline(), instead of os.inline(collection).

Docs: File.inline().
Docs: Collection.inline().


The last argument, the bucket, is now optional.

Now you can call

f.new(os.APPEND, "name")

instead of

f.new(os.APPEND, "name", 0)

Docs: File.new().


The last 2 arguments are now optional. You can use the following 3 forms:

f.move(os.APPEND, target)
f.move(os.APPEND, target, "name")
f.move(os.APPEND, target, "name", 0)

Docs: File.move().


Similarly, the last 2 arguments are now optional. You can use the following 3 forms:

f.copy(os.APPEND, target)
f.copy(os.APPEND, target, "name")
f.copy(os.APPEND, target, "name", 0)


you can follow me on Twitter