diff --git a/README.md b/README.md index 4b54356..6a94220 100644 --- a/README.md +++ b/README.md @@ -1,244 +1,158 @@

- +

-

- Simple CLI tool to check and manage updates across multiple Ubuntu systems over SSH. -

+# SubFox 🦊 -

- Built for Lanx environments – lightweight, fast and no unnecessary dependencies. -

+> 🎬 Intelligent subtitle translation with disk cache & batching -## 📚 Table of Contents - -* [Features](#features) -* [Update Manager UI](#update-manager-ui) -* [Quick Install](#quick-install) -* [SSH Setup](#ssh-setup-required) -* [Configuration](#configuration) -* [Usage](#usage) -* [Logging](#logging) -* [File Structure](#file-structure) -* [How it works](#how-it-works) -* [Requirements](#requirements) -* [Future ideas](#future-ideas) -* [License](#license) +SubFox translates subtitle files efficiently using batching and a persistent disk cache — reducing API calls and improving performance. --- -## Features +## 🚀 Version -* Check updates on multiple hosts -* Run updates remotely over SSH -* Interactive CLI menu (dialog-based UI) -* Centralized logging -* Simple config files -* No agents required -* Works with existing SSH setup +**Current version: 0.1.0** --- -## Update Manager UI +## ⚡ Features -### Main menu - -

- Main menu -

- -### Log menu - -

- Log menu -

- -

- Lightweight • No dependencies • Works over SSH -

+* 🔁 Batch translation (packed subtitles) +* 💾 Disk cache (persistent across restarts) +* ⚡ Reduced API usage via caching +* 🧠 Smart fallback per subtitle line +* 🐳 Docker-based deployment +* 📡 API-driven translation flow +* 📊 Progress tracking support --- -## Quick Install +## ⚡ Quick Start + +### 1. Clone project ```bash -git clone https://github.com/YOUR-USER/update-manager.git -cd update-manager - -sudo apt update -sudo apt install dialog openssh-client - -sudo mkdir -p /opt/update-manager -sudo cp update-manager.sh update-manager-ui.sh dialogrc /opt/update-manager/ - -sudo chmod +x /opt/update-manager/update-manager.sh -sudo chmod +x /opt/update-manager/update-manager-ui.sh - -sudo ln -s /opt/update-manager/update-manager.sh /usr/local/bin/update-manager -sudo ln -s /opt/update-manager/update-manager-ui.sh /usr/local/bin/update-manager-ui +git clone https://git.lanx.dk/ed/subfox.git +cd subfox ``` --- -## SSH Setup (Required) +### 2. Setup environment -Update Manager uses SSH to connect to your hosts. +Create `.env`: -You must have SSH key-based authentication set up (no password prompts). - -### Generate SSH key (if not already done) - -```bash -ssh-keygen -t ed25519 +```env +OPENAI_API_KEY=your_api_key_here ``` --- -### Copy key to hosts +### 3. Start with Docker ```bash -ssh-copy-id user@192.168.1.10 -ssh-copy-id user@192.168.1.20 -ssh-copy-id user@192.168.1.30 +docker compose up -d --build ``` --- -### Test connection +### 4. Open in browser -```bash -ssh user@192.168.1.10 ``` - -You should be able to connect **without entering a password**. - -> ⚠️ If SSH is not configured, the tool will fail or hang during execution. - ---- - -## Configuration - -### Copy config files - -```bash -cp update-manager.conf.example update-manager.conf -cp hosts.conf.example hosts.conf +http://localhost:8000 ``` --- -### Edit hosts +## 🧠 How it Works -```bash -nano hosts.conf +```text +Upload SRT + ↓ +Parse blocks + ↓ +Batch translation (packed) + ↓ +Cache lookup + ↓ +OpenAI (if needed) + ↓ +Fallback per-line (if mismatch) + ↓ +Return translated subtitles ``` +--- + +## 💾 Cache System + +SubFox uses a disk-based cache: + +* Stored in `/data/cache` +* Persisted via Docker volume +* One file per translation (hashed key) + Example: -```bash -# name ip user -server1 192.168.1.10 user -server2 192.168.1.20 user -server3 192.168.1.30 user +```text +/data/cache/en_da/ +├── a1b2c3d4.json +├── f6g7h8i9.json ``` --- -## Usage +## 🐳 Docker Configuration -### Check updates +Example volume setup: -```bash -update-manager check -``` - -### Start UI - -```bash -update-manager-ui +```yaml +volumes: + - ./uploads:/app/uploads + - ./outputs:/app/outputs + - /mnt/user/appdata/subfox/cache:/data/cache ``` --- -## Logging +## 📡 API -Log file location: +### Version endpoint ```bash -/opt/update-manager/log/update-manager.log +GET /version ``` -View log: +Response: -```bash -less /opt/update-manager/log/update-manager.log -``` - -Follow log: - -```bash -tail -f /opt/update-manager/log/update-manager.log +```json +{ + "version": "0.1.0" +} ``` --- -## File Structure +## 📜 Changelog -```bash -/opt/update-manager/ -├── update-manager.sh -├── update-manager-ui.sh -├── update-manager.conf -├── hosts.conf -├── log/ -│ └── update-manager.log -``` +See [CHANGELOG.md](CHANGELOG.md) --- -## How it works +## 🛠 Tech Stack -* Uses SSH to connect to each host -* Runs `apt` commands remotely -* Logs results locally -* No agents or services needed -* Designed for simple and efficient operations - ---- - -## Requirements - -* SSH access to all hosts -* SSH keys recommended (no password prompts) -* Ubuntu/Debian-based systems - ---- - -## Future ideas - -* 🔔 Notifications (ntfy / push alerts) -* 🌐 Web interface -* 📧 Email reporting -* 📊 Basic monitoring (status, last check, pending updates) -* 🧩 Plugin system (extensible modules) -* 🔐 Security & compliance checks -* 🤖 AI integration (Lanx AI) +* Python 3.11 +* FastAPI +* OpenAI API +* Docker +* JSON-based disk cache --- ## ❤️ Credits -Built with ❤️ for Lanx by [NodeFox 🦊](https://nodefox.lanx.dk) +Built with ❤️ for Lanx by [NodeFox 🦊](https://nodefox.lanx.dk) Maintained by [Eddie Nielsen](https://lanx.dk) > Learn. Adopt. Survive. Share. - ---- - -## License - -This project is licensed under the GNU GPL v3 License. - -See the LICENSE file for full details. - ----