Phoenix
Puter's pure-javascript shell
`phoenix` is a pure-javascript shell built for [puter.com](https://puter.com).
Following the spirit of open-source initiatives we've seen like
[SerenityOS](https://serenityos.org/),
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](https://developer.mozilla.org/en-US/docs/Web/API/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](https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/V3_chap02.html)
- 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](https://puter.com/app/terminal), 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](https://github.com/HeyPuter/phoenix/issues/14)
for updated information on our progress.
## Testing
You can find our tests in the [test/](./test) directory.
Testing is done with [mocha](https://www.npmjs.com/package/mocha).
Make sure it's installed, then run:
```sh
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:
- local machine platform support
> See [this issue](https://github.com/HeyPuter/phoenix/issues/14)
- further support for the POSIX Command Language
> Check our list of [missing features](doc/missing-posix.md)