e355c77a4a
After launching an app, if successful, we connect stdio streams to it, and wait for it to exit before we return to the prompt. stdio is implemented as regular AppConnection messages: - stdin: `{ $: 'stdin', data: Uint8Array }` from phoenix -> child - stdout: `{ $: 'stdout', data: Uint8Array }` from child -> phoenix Terminal and Phoenix now communicate with each other using the same style, instead of 'input' and 'output' messages. This will help with eventually running subshells. SIGINT currently is not sent. We also suffer from the same "one more read from stdin happens after app exits" bug that's in PathCommandProvider where I copied the stdin code from. |
||
---|---|---|
.. | ||
assets | ||
config | ||
doc | ||
packages | ||
src | ||
test | ||
tools | ||
.gitignore | ||
LICENSE | ||
notalicense-license-checker-config.json | ||
package-lock.json | ||
package.json | ||
README.md | ||
rollup.config.js | ||
run.json5 | ||
test.js |
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:
- local machine platform support
See this issue
- further support for the POSIX Command Language
Check our list of missing features