Yeesh - a LiveComponent wrapper for xterm.js

Yeesh is a straightforward live component wrapper for xterm.js, supporting a predefined set of Yeesh.Commands.

There is a sample Phoenix project in examples folder, although adding it to the Phoenix projects should be a piece of cake.

I needed this functionality for my fancy upcoming Language Agnostic Code Audit SaaS (yes, I am still a believer that CLI interface is the best humanity ever invented—except for chili con carne—and I’m positive any SaaS must have a CLI in browser.)

Enjoy!

7 Likes

That looks really nice.

Since you are starting this project: It would be nice to Provide a lua shell as well:

I am not sure what do you mean “lua shell.” I have plans to support loading BEAMs to some extent, and maybe mix tasks.

For everything else there are feature requests.

Yeesh got two features I actually needed:

Enjoy.

I subscribe to everything you said here, chilli con carne included!
And thank you for this one!

1 Like

My idea is the following:
GitHub - rvirding/luerl: Lua in Erlang · GitHub provides a lua implementation in erlang.
GitHub - tv-labs/lua: The most ergomonic interface to Luerl in Elixir · GitHub provides a nice way to connect a lua interpreter with your elixir application.
A shell running lua would provide a really powerful way to interact with your application.
Connecting the lua interpreter with Yeesh would provide exactly that.

That I understood :slight_smile:

A shell running lua would provide a really powerful way to interact with your application.

That’s something I probably would have avoided in general. Yeesh is exposed to the client. Giving it a full remote access to the server application sounds like a perilous idea. If I were after that, I’d probably start with an ability to execute an arbitrary elixir code.

Instead, Yeesh allows whitelisted mix tasks, including interactive ones. Wrapping the aforementioned library into an interactive mix tasks should not be difficult, but at the moment it is out of scope of my actual needs.

Feel free to create an issue in github though.

1 Like

The lua shell does not give full access to the elixir runtime. It is a sandbox. You have the ability to add lua functions that can execute elixir code. That way the access to the system is limited/controlled. lua provides a powerfull way to automate tasks. And a shell allows to do that interactively.

2 Likes

v0.5.0 is released with:

  • Ctrl+R for (reverse-i-search)‘’: as in shells
  • Up/down arrows for prefixed history lookup
  • Shitf+Ctrl+C/V/X for copy/paste/cut to avoid clashes with browser defaults (requires a user to permit clipboard operations in the browser)
  • Several representation bugs (like double prompt after Ctrl+L)
  • marcli for markdown

This is most likely a pre-release for v1.0.0. If you have some requests/bug reports, it’s a shout out to file an issue at Issues · Oeditus/yeesh · GitHub

Enjoy!

1 Like