Apptron has become the center of all my projects. It's where everything is being put together and is itself a new kind of software platform. If you haven't been following closely, you may have missed it. So below are the release notes of our latest release.
This is our biggest release yet! Lots of fixes and UX improvements, but also lots of new little features here and there. For example, the /web/dl mount is a new write-only filesystem that will cause files written to it to be downloaded by the browser.
There's also now an open command that will let you edit files that aren't in /project, which is what the file explorer shows by default. If you use open on a directory, it will add it as a new root in the explorer.
Lots more if you read the full changelog below, but first are some details on the major improvements in this release.
Console Mode Embeds
Embedding your environment on other pages with the embed snippet code previously just meant you could embed more or less the exact editor UX of visiting the environment directly. Now you can choose if you want "Editor Mode" or "Console Mode" for your embed.
Editor Mode is the same as before, giving you the default editor experience (though now without the Apptron topbar). Console Mode gives you just the terminal, making it really easy to create interactive playgrounds for CLI programs, or just run arbitrary Wasm/Linux on any web page.
Like before, you can put a .apptron/envrc file in your project (which can now also be .envrc in your project), allowing you to hook into right before you get a prompt. You can use it to run commands to customize the shell at startup like a project-level .profile.
You'd still get the "Welcome to Apptron" banner text with information about your session before .envrc is run. But now you can customize this by creating a .banner or .apptron/banner file, which will run instead of the default banner. For example, creating an empty file will cause no banner to be shown.
This all gives you full control over how the terminal session looks and is set up. You can even run different code in different contexts. For example, there is an environment variable ENV_MODE that is either edit or console. When loaded as an embed, there will be a variable set called ENV_EMBED.
Offline Public Sites
Apptron environments give you one of the fastest ways to publish a static site by just changing what's in the /public mount. Now by default, those static sites will work offline after visiting with no extra effort.
If you have a /public/index.html, we inject JavaScript to install a dynamic service worker that starts to cache all assets in /public in the background. Now after visiting the homepage, the entire site will then still be accessible and load when you are offline.
This is really cool and I've not seen any other platform do this, despite it being pretty low hanging fruit. Caching is always tricky, though, and the default refresh-ahead strategy used at the moment means you'll have to reload a page twice to see changes. Please try this feature to help us work these sorts of issues out.
Performance Improvements
It is an ongoing effort to maximize what we can get out of the embedded-like performance and memory constraints of Wasm and the browser. Two big improvements in this release, though both with plenty of room for further improvement, apply to network speed and environment building.
We upgraded our deployment's network gateway on Cloudflare Containers to the current max available of standard-4 and that gave us a 4x improvement in throughput. This mostly means downloading files and installing packages will be faster.
We also finally integrated our copy-on-write filesystem so that changes to an environment via envbuild are layered on top of the base system with every session. This was to make sure those environments got updates to the base system, but also turns out to make larger builds finish up to twice as fast.
Changelog
Additions
- add new project welcome readme (#221)
- add default service worker to cache public site assets for offline
- add custom 404 support to public sites
- add Embed Mode option to get new
consoleembed - add
opencommand for non-project files (#230) - add support for
.apptronfiles as dotfiles in project root - add
.apptron/banneror.bannerto customize shell banner - add support for
?topbar=0to hide topbar - add sponsor dialog from account dropdown (#247, #225)
- add feedback form dialog from topbar (#247, #224)
- add bundle caching that clears on login (#163)
- add publish helper command (#227)
- add loopback network device
- add
/web/dlfilesystem for triggering downloads - add
ENV_MODEenvironment variable (edit or console) - add kernel modules for audio support in vm
- add confirmation dialog on project delete (#262, #267)
- add toast notification on project delete (#238)
- add loading indicators to buttons (#244, #203, #234, #202)
- add help text in publish tab of share dialog (#195, #249)
- add improved copy button in share dialog (#242)
Changes
- use copy-on-write for custom environments (#217) (2x envbuild speedup, cuts seconds from pageload)
- improve network throughput (#159) (4x speedup)
- change starting directory to /project
- refactor share dialog architecture (#245, #222)
Bugfixes
- fix project file truncation/corruption (#232, #157)
- fix first-time publish failure (#231)
- fix inability to publish project root (#244, #233)
- fix broken markdown preview (#229)
- fix offscreen login component in smaller windows (#269, #268)
- fix broken UI in share dialog (#266)
- fix broken dropdown dismissal behavior (#240, #214)
- fix broken apptron logo link (#228)
- fix short project name limit (#208)
- fix login failure when session expires (#210, #243)
- fix broken state after changing project settings (#167)
- fix dangerous username change in account dialog (#239, #246)
Full Changelog: https://github.com/tractordev/apptron/compare/v0.6.0...v0.7.0
As usual, we'd love you to try it out and file issues you run into. A huge thanks to our GitHub Sponsors who are now our only source of funding. Consider sponsoring to make sure we can sustainably see these projects all the way through and get that "Megazord" moment that's been 6 years in the making...


Top comments (2)
@progrium this is sick. Thanks for sharing on DEV!
Thanks, Swift! Let me know if you have any ideas around how MLH might be able to use it. Lots of educational use potential, too.