Better docs

This commit is contained in:
EthanShoeDev
2025-10-07 00:21:46 -04:00
parent 7f07b2f0ab
commit 2b33da8e20
9 changed files with 251 additions and 373 deletions

View File

@@ -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
[![ci](https://github.com/EthanShoeDev/fressh/actions/workflows/check.yml/badge.svg)](https://github.com/EthanShoeDev/fressh/actions/workflows/check.yml)
[![npm: @fressh/react-native-uniffi-russh](https://img.shields.io/npm/v/%40fressh%2Freact-native-uniffi-russh)](https://www.npmjs.com/package/@fressh/react-native-uniffi-russh)
[![npm: @fressh/react-native-xtermjs-webview](https://img.shields.io/npm/v/%40fressh%2Freact-native-xtermjs-webview)](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