Rush Sync Server
π NOTE: Version
0.2.2on crates.io has a critical bug in language file loading (*.jsonnot embedded correctly). Please use version0.2.3+for a stable release!
Rush Sync Server is a modern, modular terminal application written in Rust, featuring an interactive TUI, internationalized interface, color-coded logging, and flexible configuration. Perfect for developers who need a customizable, scriptable terminal UI.
π Installation & Usage
π¦ As Binary (End Users) - Version 0.2.3+
# Install directly from crates.io
# Run the application
π As Library (Developers) - Version 0.2.3+
Add to your Cargo.toml:
[]
= "0.2.3"
= { = "1.36", = ["full"] }
Quick Start Examples:
use *;
async
use *;
async
use *;
async
Advanced Library Usage:
use *;
async
π From Source (Development)
# Run as binary
# Or install locally
β Features
- Interactive terminal UI with an asynchronous event loop (Tokio)
- Color-coded logging with level detection (
ERROR,WARN,INFO,DEBUG,TRACE) - Runtime log-level switching with persistent config saving
- Performance monitoring with real-time FPS & config analysis
- Internationalization (i18n):
- Multilingual markers are automatically mapped to standard colors (
[SPRACHE],[IDIOMA]βlangβ Cyan) - Dynamic language switching at runtime (German/English)
- Automatic language detection and config persistence
- Multilingual markers are automatically mapped to standard colors (
- Typewriter effect & blinking cursor (configurable/disableable)
- Auto-scroll & scrollable message history
- Input history & full cursor navigation
- Modular command handler with extensible plugin system
- Configurable design & prompt via TOML with performance optimization
- Unicode support (grapheme-based)
- Restart function without external process restart
- Smart bounds checking with automatic config correction
π» Available Commands
| Command | Description | Examples |
|---|---|---|
version / ver |
Show application version | version |
lang / language |
Switch language (EN/DE) with config persistence | lang de, lang en |
clear / cls |
Clear all messages | clear |
exit / q |
Exit with confirmation | exit |
restart |
Internal restart (reloads config) | restart, restart --force |
history -c |
Clear input history | history -c |
log-level |
Change log level (runtime + persistent) | log-level 3, log-level debug |
perf / performance |
Show performance & config status | perf, performance |
Log-Level Command Details
# Available levels:
# 1 = ERROR (Only critical errors)
# 2 = WARN (Warnings and errors)
# 3 = INFO (General information) [DEFAULT]
# 4 = DEBUG (Debug information)
# 5 = TRACE (Very detailed tracing)
Performance Command Details
Performance Report includes:
- Current FPS (based on poll_rate)
- Typewriter speed (chars/second)
- Config values & file location
- Performance recommendations
- Related commands
β¨οΈ Keyboard Shortcuts
| Key | Function |
|---|---|
β / β |
Navigate input history |
β / β |
Move cursor in text |
Home / End |
Jump to start / end of input |
Shift + β / β |
Scroll line by line |
Page Up / Down |
Scroll page by page |
Enter |
Confirm input |
ESC (twice) |
Exit the program |
βοΈ Configuration
The rush.toml file is automatically created in the .rss directory on first start.
Complete Default Configuration
[]
= 100
# Typewriter-Effekt: 50ms = 20 Zeichen/Sekunde (empfohlen: 30-100ms)
= 50
= 100
= 30
# Poll-Rate: 16ms = 60 FPS (empfohlen: 16-33ms, NICHT unter 16!)
= 16
= "info"
[]
= "Black"
= "White"
= "Black"
= "DarkGray"
= "Black"
[]
= "/// "
= "Black"
[]
= "en"
# =================================================================
# PERFORMANCE-HINWEISE:
# =================================================================
# poll_rate:
# - 16ms = 60 FPS (EMPFOHLEN fΓΌr flΓΌssiges UI)
# - 33ms = 30 FPS (akzeptabel fΓΌr langsamere Systeme)
# - 1-15ms = NICHT empfohlen (hohe CPU-Last!)
# - 0ms = CRASH! (Tokio interval panic)
#
# typewriter_delay:
# - 50ms = 20 Zeichen/Sekunde (gut lesbar)
# - 30ms = 33 Zeichen/Sekunde (schnell)
# - 100ms = 10 Zeichen/Sekunde (langsam)
# - 0ms = Typewriter-Effekt deaktiviert
# =================================================================
Performance Optimization
Recommended Values:
poll_rate = 16(60 FPS - optimal)poll_rate = 33(30 FPS - good for slower systems)typewriter_delay = 0(disabled) or30-100(enabled)
Automatic Bounds Checking:
- Invalid values are automatically corrected on startup
- Corrected values are saved back to config
- Performance warnings for critical settings
Colors (COLOR_MAP)
Supported:
Black, White, Gray, DarkGray, Red, Green, Blue, Yellow,
Magenta, Cyan, LightRed, LightGreen, LightBlue, LightYellow,
LightMagenta, LightCyan
Smart Color Categories:
errorβ Redwarning/warnβ Yellowinfoβ Greendebugβ Bluelang/languageβ Cyanversionβ LightBlue
i18n translations are automatically mapped to standard keys
(e.g., "Sprache", "Idioma", "Π―Π·ΡΠΊ" β lang β Cyan).
π Project Structure
src/
βββ core/ # Core logic (Config, Error, Prelude, Constants)
βββ ui/ # Terminal UI (ScreenManager, TerminalManager, Widgets)
βββ input/ # Input handling (Keyboard, EventHandler)
βββ output/ # Logging, MessageManager, Color, Performance
βββ commands/ # Modular commands (exit, lang, history, restart, log-level, performance)
βββ setup/ # Auto-configuration (TOML setup)
βββ i18n/ # Internationalization (German/English)
βββ langs/ # Language files (de.json, en.json)
π Technical Details
- Event loop: Asynchronous (Tokio) β split into:
handle_input_eventhandle_tick_eventhandle_resize_event
- Logging:
- Global
AppLogger(intercepts alllog::*calls) - Runtime log-level switching with config persistence
LogMessagestores level + text β color-coded output
- Global
- Performance Monitoring:
- Real-time FPS calculation based on poll_rate
- Typewriter speed analysis (chars/second)
- Config value validation with automatic correction
- Performance recommendations based on system capabilities
- Internationalization:
get_marker_colorautomatically maps translated markers to standard categories- Smart fallback for unknown display categories
- Persistent language switching with config save
- Restart: Internal, without external process restart
- Memory Management: Bounded message buffers with automatic cleanup
π§ͺ Testing
RUST_LOG=debug
# Test specific components
Available tests: β Commands (including new log-level & performance) β Event loop β Config setup & bounds checking β i18n translations (German/English) β Performance monitoring β Language switching
π Advanced Usage
Performance Monitoring
# Show detailed performance report
# Output example:
&
)
)
) )
)
Dynamic Log-Level Management
# Runtime log-level switching (saved to config)
Language Switching
Library Integration Examples
Create Custom Commands
use *;
// Define a custom command
;
async
Use with Custom UI
use *;
async
πΊ Roadmap
- Mouse support (scroll & selection)
- Split-screen & tabs
- Syntax highlighting
-
Plugin system for custom commandsβ Implemented -
Live log-level configurationβ Implemented -
Performance monitoringβ Implemented -
Binary & Library distributionβ Implemented (v0.2.3+) - Live UI configuration changes
- Config hot-reload without restart
- Custom color themes
- Command aliases & macros
π What's New in v0.2.3
- β
Binary distribution: Install with
cargo install rush-sync-server - β Library API: Use as dependency in your Rust projects
- β
Convenience functions:
run(),load_config(),create_handler() - β
Public exports: Access to
Config,CommandHandler,ScreenManager - β Custom command support: Extend functionality with your own commands
- β Hybrid usage: Use as standalone app OR integrate into your project
π License
Dual-Licensing Model
This project is distributed under a dual license:
- Community License (GPLv3) β free for private and non-commercial use. See LICENSE.
- Commercial License β required for any commercial use. See COMMERCIAL_LICENSE.md.
Contact for commercial licensing: π§ l.ersen@icloud.com
π€ Contributing
- Fork this repository
- Create a feature branch
- Commit changes + add tests
- Submit a pull request
Development Guidelines:
- Follow performance recommendations (poll_rate >= 16ms)
- Add i18n support for new features (de.json + en.json)
- Include performance tests for new commands
- Update config bounds checking for new parameters