puter/packages/phoenix
Sam Atkins e2ea57fcf9 tweak(phoenix): Only take auth params from config message
Having the parent app send us arbitrary config values was a holdover
from when phoenix was an embedded iframe and not a separate app. It led
to a security issue previously. Let's only take the auth parameters
since we can't get those otherwise, and they're safe to read.
Everything else should be available in our own URL params.
2024-07-01 12:46:15 -04:00
..
assets Phoenix: Remove unwanted CSS includes 2024-04-17 11:05:03 +01:00
config Phoenix shell deployment update 2024-05-17 13:26:44 -04:00
doc Copy over phoenix 2024-04-12 20:53:44 -04:00
src tweak(phoenix): Only take auth params from config message 2024-07-01 12:46:15 -04:00
test Move error-conversion functions into PosixError 2024-05-22 08:56:50 +01:00
tools Phoenix shell deployment update 2024-05-17 13:26:44 -04:00
.gitignore Copy over phoenix 2024-04-12 20:53:44 -04:00
LICENSE Copy over phoenix 2024-04-12 20:53:44 -04:00
notalicense-license-checker-config.json Copy over phoenix 2024-04-12 20:53:44 -04:00
package-lock.json Remove xterm dependency from Phoenix 2024-05-14 16:10:30 +01:00
package.json Remove xterm dependency from Phoenix 2024-05-14 16:10:30 +01:00
README.md Update README.md files for monorepo'd projects 2024-04-12 23:54:41 -04:00
rollup.config.js refactor: flatten the monorepo 2024-06-08 01:07:42 -04:00
run.json5 Copy over phoenix 2024-04-12 20:53:44 -04:00
test.js Copy over phoenix 2024-04-12 20:53:44 -04:00

Phoenix

Puter's pure-javascript shell


phoenix is a pure-javascript shell built for puter.com. Following the spirit of open-source initiatives we've seen like SerenityOS, we've built much of the shell's functionality from scratch. Some interesting portions of this shell include:

  • A shell parser which produces a Concrete-Syntax-Tree
  • Pipeline constructs built on top of the Streams API
  • Platform support for Puter

The shell is a work in progress. The following improvements are considered in-scope:

  • Anything specified in POSIX.1-2017 Chapter 2
  • UX improvements over traditional shells

    examples include: readline syntax highlighting, hex view for binary streams

  • Platform support, so phoenix can run in more environments

Running Phoenix

In a Browser

You can use the terminal on Puter, including self-hosted installations.

Running in Node

Under node.js Phoenix acts as a shell for your operating system. This is a work-in-progress and lots of things are not working yet. If you'd like to try it out you can run src/main_cli.js. Check this issue for updated information on our progress.

Testing

You can find our tests in the test/ directory. Testing is done with mocha. Make sure it's installed, then run:

npm test

What's on the Roadmap?

We're looking to continue improving the shell and broaden its usefulness. Here are a few ideas we have for the future: