mirror of
https://github.com/EthanShoeDev/fressh.git
synced 2026-01-11 14:22:51 +00:00
Better docs
This commit is contained in:
79
README.md
79
README.md
@@ -1,11 +1,74 @@
|
||||
Fressh is a mobile SSH client that remains clean and simple while supporting
|
||||
powerful features:
|
||||
## Fressh
|
||||
|
||||
- Securely storing previous connections
|
||||
- Configurable preset command buttons
|
||||
- Configurable theme
|
||||
[Fressh](https://fressh.dev/) is a mobile SSH client that remains clean and
|
||||
simple while supporting powerful features.
|
||||
|
||||
Coming soon
|
||||
[](https://github.com/EthanShoeDev/fressh/actions/workflows/check.yml)
|
||||
[](https://www.npmjs.com/package/@fressh/react-native-uniffi-russh)
|
||||
[](https://www.npmjs.com/package/@fressh/react-native-xtermjs-webview)
|
||||
|
||||
- Fully accurate xterm emulation
|
||||
- On-device LLM for command completion and output summarization
|
||||
### Features
|
||||
|
||||
- **Secure connection history**: Securely store previous connections
|
||||
- **Command presets**: Configurable preset command buttons
|
||||
- **Theming**: Configurable theme
|
||||
|
||||
### Coming soon
|
||||
|
||||
- ~~**xterm fidelity**: Fully accurate xterm emulation~~ Done!
|
||||
- **On-device AI**: On-device LLM for command completion and output
|
||||
summarization
|
||||
|
||||
### Architecture
|
||||
|
||||
The app is a monorepo with three main parts:
|
||||
|
||||
- **`apps/mobile`**: The actual React Native Expo app.
|
||||
- **`packages/react-native-uniffi-russh`**: A
|
||||
[uniffi react native](https://github.com/jhugman/uniffi-bindgen-react-native)
|
||||
binding package that exposes a native Rust module for
|
||||
[russh](https://github.com/Eugeny/russh).
|
||||
- **`packages/react-native-xtermjs-webview`**: A small library that instantiates
|
||||
an Expo WebView preloaded with [xterm.js](https://xtermjs.org/).
|
||||
|
||||
Both packages are published on npm if you want to use them in your own project:
|
||||
|
||||
- [`@fressh/react-native-uniffi-russh`](https://www.npmjs.com/package/@fressh/react-native-uniffi-russh)
|
||||
- [`@fressh/react-native-xtermjs-webview`](https://www.npmjs.com/package/@fressh/react-native-xtermjs-webview)
|
||||
|
||||
### Why
|
||||
|
||||
Mostly to practice with React Native, Expo, and Rust. There are a few more
|
||||
developed SSH clients on the Google Play and iOS App Stores.
|
||||
|
||||
Some of those try to lock features like one-off commands behind a paywall, so
|
||||
this aims to be a free alternative.
|
||||
|
||||
Another notable feature of the app is the WebView xterm.js renderer. Using this
|
||||
as the render layer has a few benefits:
|
||||
|
||||
- **Parity with VS Code**: We match the render behavior of VS Code
|
||||
- **Consistent visuals**: The render layer visually matches on both iOS and
|
||||
Android
|
||||
|
||||
With that said, it is probably less performant than a native renderer, so it may
|
||||
be replaced in the future. Implementing a
|
||||
[Nitro view](https://nitro.margelo.com/docs/view-components) seems very
|
||||
promising.
|
||||
|
||||
### Changelogs
|
||||
|
||||
- `apps/mobile`: [`apps/mobile/CHANGELOG.md`](./apps/mobile/CHANGELOG.md)
|
||||
- `@fressh/react-native-uniffi-russh`:
|
||||
[`packages/react-native-uniffi-russh/CHANGELOG.md`](./packages/react-native-uniffi-russh/CHANGELOG.md)
|
||||
- `@fressh/react-native-xtermjs-webview`:
|
||||
[`packages/react-native-xtermjs-webview/CHANGELOG.md`](./packages/react-native-xtermjs-webview/CHANGELOG.md)
|
||||
|
||||
### Contributing
|
||||
|
||||
We provide a Nix flake devshell to help get a working environment quickly. See
|
||||
[`CONTRIBUTING.md`](./CONTRIBUTING.md) for details.
|
||||
|
||||
### License
|
||||
|
||||
MIT
|
||||
|
||||
Reference in New Issue
Block a user