puter/packages/phoenix
Sam Atkins 4067c82486 feat(phoenix): Expose parsed arg tokens to apps that request them
Some shell apps care about what order the arguments appear in. When
`parseArgs()` is called with `tokens: true`, it produces this `tokens`
array which represents all the command line options and arguments, in
order, which is useful for these more advanced cases.
2024-05-31 15:49:32 +01: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
packages fix(parsely): Make Repeat parser work when no separator is given 2024-05-31 15:49:32 +01:00
src feat(phoenix): Expose parsed arg tokens to apps that request them 2024-05-31 15:49:32 +01: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 chore: Add missing imports for node:process 2024-05-02 11:21:50 +01: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: