Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Releases: tractordev/apptron

v0.7

03 Mar 01:00
@progrium progrium

Choose a tag to compare

Offline Sites, Console Embeds, and Much More

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.

clip2

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.

Check out the demo video

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 console embed
  • add open command for non-project files (#230)
  • add support for .apptron files as dotfiles in project root
  • add .apptron/banner or .banner to customize shell banner
  • add support for ?topbar=0 to 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/dl filesystem for triggering downloads
  • add ENV_MODE environment 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: 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...

power-rangers-dino-thunder-power-rangers

Assets 2
Loading
amtrack and rokf reacted with thumbs up emoji
2 people reacted

v0.6

06 Dec 03:23
@progrium progrium

Choose a tag to compare

Port Endpoints and Static Site Publishing

Apptron is a sophisticated browser-based cloud development environment that runs a full x86 Linux virtual machine entirely in the browser. It combines several cutting-edge technologies—WebAssembly, x86 emulation, Plan 9 filesystem protocols, and Cloudflare's edge computing platform—to deliver a complete development experience with VS Code, terminal access, and persistent storage, all without requiring any local installation.

This is a fairly accurate summary from the Apptron Analysis Report recently put together by Simon Willison using Claude Code to inspect the project source and generate a report. While it does a decent job at covering Apptron architecture and capabilities, it's not perfect. Most notably, it's missing the recently added features of this release!

Static Site Publishing

The Share dialog now has a Publish section that lets you publish static files from a particular project directory to a separate public URL. Publishing lets you use Apptron environments as a backend for updating blogs, marketing websites, documentation, etc. This is very similar to GitHub repositories being able to publish to GitHub Pages.

Considering an Apptron environment is just static files, this could soon be used to self-deploy new Apptron environments or Wanix-based virtual environments. Other long term plans for this functionality include automatic offline support, utilizing service workers, cache API, and web app manifest to be a zero config local-first platform. Static site publishing becomes progressive web app publishing.

As a full Linux environment, you can use any number of static site generators with publishing. If you have a favorite you want to get working in Apptron, submit an issue if you are having trouble.

Lastly, for advanced users, what Publish does is effectively rsync files from the source directory to a /public mount that is synced directly with the files served on the publish URL. You could skip the Publish dialog and write your own publishing script, or even directly modify files under /public. This mount is only available after using Publish once.

Port Endpoints

If any program listens on the session IP, Apptron will automatically set up a temporary public URL that will tunnel/route to this port. This lets you share a public URL to a server running in your browser. It's like a built-in Ngrok (or localtunnel, if you remember).

For example, if you install Python (apk add -u python3), you can run:

python3 -m http.server -b 0.0.0.0

This serves the current directory on port 8000, and Apptron will detect the port listen and print out the URL to access it publicly.

Future plans include tunneled WebSocket access for non-HTTP servers.

More Improvements

  • You can now execute both WASI and "Go JS" Wasm executables from the command line.
  • Go support has been improved with a pre-compiled standard library, speeding up initial builds.
  • You can enable the "built-in" Go with source /etc/goprofile.
  • Custom environment builds using .apptron/envbuild finish 30% faster.
  • There is initial support for embedding public environments via iframe. See Share > Embed.

Although it's very incomplete, there is also now a README that will slowly be improving. Unfortunately, this is the only current documentation besides these releases. However, as Simon Willison did, you can always have an LLM figure it out! Regardless, feel free to ask questions in Discord or in the Discussions here on GitHub.

As usual, file issues, help out where you can, and a huge thanks to our GitHub Sponsors.

Full Changelog: v0.5.0...v0.6.0

Loading

v0.5

07 Nov 23:40
@progrium progrium

Choose a tag to compare

Sharable Apptron Environments

Apptron is the first of a new category of general-purpose compute platform with over 5 years of R&D behind it. In these early releases, Apptron is starting out as a humble, local-first IDE. It is a development environment powered by Wanix, a new Plan 9 inspired runtime for WebAssembly, which allows you to run Wasm and x86 programs in a full Linux environment that works entirely in the browser without cloud compute.

Similar to Smalltalk, Apptron is designed to be a live editable, malleable environment that can become much more than a software IDE. This is an idea that will become more clear in time. To that end, Apptron is initially focusing on the means to share itself and what you can create with it.

Apptron v0.5 Release

This release introduces basic project visibility and sharing, allowing you to keep a project private, or share a project and its environment via URL. The initial public release was only a few weeks ago, so this release also includes a number of basic improvements. Most notably:

  • 2x performance increase in load time for environments
  • Full Safari support, resolving an issue that degraded Safari to read-only
  • Improved Git support, resolving an issue that corrupted repository cloning
  • A number of miscellaneous UX improvements

Apptron is still quite new and incomplete, but it is open source and self-hostable. We'd appreciate any roadmap suggestions, bug reports, and contributions. One issue we could use help with is investigating slow network performance in our virtual network gateway.

Our next sprint will likely focus on "publish" functionality, letting project environments export web assets to a separate, public URL. Secondarily, we'll be finishing port access, letting arbitrary programs listening on the virtual network to be accessed by a public endpoint, a la Ngrok. We'll also continue work improving performance.

There is a lot of work behind us and still ahead, which would not be possible without our GitHub Sponsors. We believe this is the future of sustainable community software development, and if you agree then we'd love to have you join us.

Full Changelog: https://github.com/tractordev/apptron/commits/v0.5.0

Loading

v0.4

24 Oct 21:40
@progrium progrium

Choose a tag to compare

Local-First Development Environment

This is the first official release of Apptron deployed to apptron.dev. Still very early, but features basic project creation and Wanix powered in-browser development environment.

  • First polyglot development environment entirely in-browser
  • Project files stored in OPFS and synced to the cloud
  • Synced user home directory for dotfiles and user data
  • Private session IP on shared virtual network
  • Container-inspired custom environment building

See the recording of our October Showcase+Feedback Call for a demo and initial roadmap.

Demo Video

Loading

AltStyle によって変換されたページ (->オリジナル) /