Skip to content

Commit 1df1ca6

Browse files
KaiCreatesclaude
andcommitted
release: bump to v1.1.0 — egui migration, edge switching, updated docs
- Cargo.toml: version 1.0.3 → 1.1.0, author corrected to KaiCreates - README: full rewrite — removes Tauri/React/WebView2/Node references, highlights pure Rust + egui single native binary, screen edge switching, dead zones/corners, optional TLS, updated build instructions and credits - CHANGELOG: add v1.1.0 entry documenting architecture migration and new features Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 5afe138 commit 1df1ca6

3 files changed

Lines changed: 99 additions & 79 deletions

File tree

CHANGELOG.md

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,33 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
---
99

10+
## [1.1.0] — 2026-03-08
11+
12+
### Changed
13+
14+
**Architecture — Full migration from Tauri/WebView2/React to pure Rust + egui:**
15+
- Replaced the entire Tauri + React frontend with a native egui (eframe 0.31 + glow) UI — no browser engine, no WebView2, no Node.js required at build or runtime
16+
- Single portable native binary (~9 MB stripped) replaces the .deb/.exe installer package
17+
- Windows no longer requires WebView2 Runtime — completely self-contained executable
18+
19+
### Added
20+
21+
- **Screen edge switching** — moving the cursor to any configured screen edge automatically forwards control to the connected client
22+
- **Dead corners** — configurable corner regions that block edge triggers to prevent accidental switching
23+
- **Dead zones** — configurable rectangular screen regions that suppress edge activation
24+
- **Optional TLS transport** — self-signed TOFU certificate via `rcgen` + `rustls` + `tokio-rustls`; layered on top of the existing ChaCha20 session encryption
25+
- **Settings persistence** — all configuration saved to `~/.local/share/inputsync/config.json` via serde_json
26+
- **In-app log viewer** — real-time log output in the Logs tab via `egui_logger`
27+
- **Mini screen-map widget** — clickable Painter-based widget in Settings for configuring edge targets
28+
- Tabs: Main | Settings | Logs
29+
30+
### Fixed
31+
32+
- **Server restart after stop**`Start Server` now auto-stops any running server; no stale state
33+
- Stopped TCP listener now releases port immediately on shutdown
34+
35+
---
36+
1037
## [1.0.2] — 2026-03-07
1138

1239
### Fixed
@@ -67,7 +94,7 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6794

6895
## [Unreleased]
6996

70-
### Planned — v1.1
97+
### Planned — v1.2
7198
- Clipboard sync across machines
7299
- Linux Wayland support (libei)
73100
- mDNS/Bonjour server auto-discovery
@@ -76,8 +103,7 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
76103
- Code signing for Windows SmartScreen bypass
77104
- RPM and Arch (AUR) packages
78105

79-
### Planned — v1.2
80-
- Multi-monitor layout configuration (edge-based switching)
106+
### Planned — v1.3
107+
- Multi-monitor layout configuration
81108
- macOS support
82-
- Screen edge cursor switching (like Barrier/InputLeap)
83109
- Multi-client support with named client slots

README.md

Lines changed: 67 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@
99
│ ░ ▌ ░ │
1010
│ ░░░░░░░░░░░░░░░░░░░░░░░░ │
1111
└────────────────────────── ┘
12-
████
13-
████████
12+
████
13+
████████
1414
```
1515

1616
# InputSync
@@ -19,7 +19,7 @@
1919

2020
[![License: MIT](https://img.shields.io/badge/License-MIT-6c63ff.svg)](LICENSE)
2121
[![Build](https://img.shields.io/github/actions/workflow/status/KaiCreates/InputSync/build.yml?label=Build&logo=github)](https://github.com/KaiCreates/InputSync/actions)
22-
[![Version](https://img.shields.io/badge/version-1.0.0-3ecf8e)](https://github.com/KaiCreates/InputSync/releases)
22+
[![Version](https://img.shields.io/badge/version-1.1.0-3ecf8e)](https://github.com/KaiCreates/InputSync/releases)
2323
[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20Windows-blue)](https://github.com/KaiCreates/InputSync/releases)
2424
[![Downloads](https://img.shields.io/github/downloads/KaiCreates/InputSync/total?color=3ecf8e)](https://github.com/KaiCreates/InputSync/releases)
2525

@@ -31,7 +31,7 @@
3131

3232
InputSync is a lightweight, encrypted software KVM (Keyboard, Video, Mouse) switch. Run it on two or more computers on the same network and seamlessly share your keyboard and mouse between them — no hardware required.
3333

34-
Think of it like [Barrier](https://github.com/debauchee/barrier) or [InputLeap](https://github.com/input-leap/input-leap), but built from scratch in **Rust + Tauri** with end-to-end encryption baked in from day one.
34+
Think of it like [Barrier](https://github.com/debauchee/barrier) or [InputLeap](https://github.com/input-leap/input-leap), but built from scratch in **pure Rust + egui** with end-to-end encryption baked in from day one. No browser engine. No Electron. No WebView2. Just a single native binary.
3535

3636
---
3737

@@ -40,9 +40,12 @@ Think of it like [Barrier](https://github.com/debauchee/barrier) or [InputLeap](
4040
- **🔐 End-to-End Encrypted** — X25519 ECDH key exchange + ChaCha20-Poly1305; no plaintext ever leaves your machine
4141
- **⚡ Ultra Low Latency** — UDP transport with delta-encoded events; input feels local
4242
- **🎯 Session Codes** — 6-character alphanumeric codes to pair devices; no IP configuration required
43-
- **🖥️ Cross-Platform** — Linux (X11 + Wayland) and Windows from a single codebase
44-
- **🪶 Tiny Footprint**~3.5 MB installer; ~10 MB installed; no background services
45-
- **🎨 Pixel-Art UI** — Minimal dark terminal-themed interface built with React + Tauri
43+
- **🖱️ Screen Edge Switching** — move the cursor to the edge of the screen to automatically switch control to the client
44+
- **🚫 Dead Zones & Dead Corners** — block edge triggers in configured screen regions to prevent accidental switching
45+
- **🖥️ Cross-Platform** — Linux (X11) and Windows from a single Rust codebase
46+
- **🪶 Tiny Footprint**~9 MB native binary; no background services; no runtime dependencies
47+
- **🎨 Native Dark UI** — Terminal-themed interface built with egui; no browser engine or WebView2 required
48+
- **🔒 Optional TLS** — Self-signed certificate (TOFU) transport layer on top of the encrypted stream
4649
- **📋 Clipboard Sync** *(roadmap)* — Paste text across machines seamlessly
4750
- **🔍 Local Discovery** *(roadmap)* — Auto-detect InputSync servers via mDNS
4851

@@ -70,7 +73,7 @@ Think of it like [Barrier](https://github.com/debauchee/barrier) or [InputLeap](
7073
│ └───────────────────────────────────────────────┘ │
7174
│ │
7275
├─────────────────────────────────────────────────────┤
73-
│ ● Ready — Start server or connect to one v1.0
76+
│ ● Ready — Start server or connect to one v1.1
7477
└─────────────────────────────────────────────────────┘
7578
```
7679

@@ -80,38 +83,33 @@ Think of it like [Barrier](https://github.com/debauchee/barrier) or [InputLeap](
8083

8184
### Linux (Ubuntu / Debian)
8285

83-
```bash
84-
# Download the latest .deb
85-
wget https://github.com/KaiCreates/InputSync/releases/latest/download/InputSync_1.0.0_amd64.deb
86+
Download the `inputsync` binary from [Releases](https://github.com/KaiCreates/InputSync/releases/latest):
8687

87-
# Install
88-
sudo dpkg -i InputSync_1.0.0_amd64.deb
88+
```bash
89+
# Download the latest Linux binary
90+
wget https://github.com/KaiCreates/InputSync/releases/latest/download/inputsync
8991

90-
# If missing dependencies
91-
sudo apt-get install -f
92+
# Make executable and run
93+
chmod +x inputsync
94+
./inputsync
9295
```
9396

94-
**Required system libraries** (usually already present):
97+
**Required system libraries** (usually already present on most Linux desktops):
9598
```
96-
libwebkit2gtk-4.1-0 libgtk-3-0 libayatana-appindicator3-1 libx11-6 libxtst6
99+
libgtk-3-0 libx11-6 libxtst6 libxdo3
97100
```
98101

99-
### Linux (Fedora / RHEL)
102+
### Linux (Fedora / RHEL / Arch)
100103
```bash
101-
# Extract the .deb and install manually, or build from source
102-
# (RPM packaging is on the roadmap)
103-
```
104-
105-
### Linux (Arch)
106-
```bash
107-
# AUR package coming soon — build from source in the meantime
104+
# Build from source — see below
105+
# RPM and AUR packages are on the roadmap
108106
```
109107

110108
### Windows
111109

112-
1. Download `InputSync_1.0.0_x64-setup.exe` from [Releases](https://github.com/KaiCreates/InputSync/releases/latest)
113-
2. Run the installerWindows Defender may prompt; click **More info → Run anyway**
114-
3. Launch InputSync from the Start Menu
110+
1. Download `inputsync.exe` from [Releases](https://github.com/KaiCreates/InputSync/releases/latest)
111+
2. Run it directlyno installer, no runtime dependencies required
112+
3. Windows Defender may prompt on first launch; click **More info → Run anyway**
115113

116114
```powershell
117115
# winget (coming soon)
@@ -141,9 +139,7 @@ Address: 192.168.1.42:24800
141139

142140
### 3. Start controlling
143141

144-
Back on the server, toggle **Capture: ON** — your keyboard and mouse events will now be forwarded to the connected client.
145-
146-
Toggle it off at any time to regain local control, or press the configured hotkey.
142+
Move your cursor to the **screen edge** — InputSync automatically forwards control to the connected client. Move it back to the server's edge to return. You can also toggle capture manually from the **Main** tab.
147143

148144
---
149145

@@ -195,6 +191,7 @@ InputSync was designed with security as a first-class concern.
195191
| Nonce Strategy | Per-packet counter XOR'd with combined server+client nonces |
196192
| Session Binding | Code + IP pair; codes are single-use per server start |
197193
| Data at Rest | No keys stored; fresh exchange every session |
194+
| Optional Transport | TLS (self-signed TOFU) via `rustls` + `rcgen` |
198195

199196
**What is protected:** All keyboard and mouse events, including keystrokes, are encrypted before leaving your machine. An attacker on the same network cannot read your input or replay captured packets.
200197

@@ -209,7 +206,10 @@ InputSync was designed with security as a first-class concern.
209206
| Open Source | ✅ MIT | ✅ GPL | ✅ GPL | ❌ Partial |
210207
| Encryption | ✅ ChaCha20 | ⚠️ TLS optional | ⚠️ TLS optional | ✅ Paid tier |
211208
| Session Codes | ✅ Built-in | ❌ Manual IP | ❌ Manual IP | ❌ Manual |
212-
| Binary Size |~3.5 MB |~50 MB |~50 MB | ❌ Large |
209+
| Screen Edge Switch | ✅ Built-in ||||
210+
| Native Binary | ✅ Pure Rust | ❌ C++ | ❌ C++ | ❌ Large |
211+
| No Browser Engine | ✅ egui ||||
212+
| Binary Size |~9 MB |~50 MB |~50 MB | ❌ Large |
213213
| Modern Codebase | ✅ Rust 2021 | ❌ Legacy C++ | ❌ Legacy C++ | ❌ Legacy |
214214
| Linux Wayland | 🔜 Roadmap | ⚠️ Partial | ⚠️ Partial | ❌ No |
215215

@@ -221,13 +221,13 @@ InputSync was designed with security as a first-class concern.
221221
- Ubuntu 22.04+ / Debian 12+ / equivalent
222222
- X11 display server (Wayland support on roadmap)
223223
- 64-bit processor
224-
- `libxtst6`, `libx11-6`, `libgtk-3-0`, `libwebkit2gtk-4.1-0`
224+
- `libxtst6`, `libx11-6`, `libgtk-3-0`
225225

226226
### Windows
227227
- Windows 10 (build 1903) or Windows 11
228228
- 64-bit processor
229-
- WebView2 Runtime (bundled in installer)
230-
- ~10 MB disk space
229+
- ~15 MB disk space
230+
- No runtime dependencies — single portable `.exe`
231231

232232
### Network
233233
- Both machines on the same local network (LAN/Wi-Fi)
@@ -242,35 +242,26 @@ InputSync was designed with security as a first-class concern.
242242
# Rust (stable)
243243
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
244244

245-
# Node.js 18+
246-
nvm install 20
247-
248245
# Linux build dependencies
249-
sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev \
250-
libayatana-appindicator3-dev libx11-dev libxtst-dev
251-
252-
# Tauri CLI
253-
cargo install tauri-cli --version "^2" --locked
246+
sudo apt install libgtk-3-dev libx11-dev libxtst-dev libxdo-dev
254247
```
255248

256249
### Build
257250

258251
```bash
259252
git clone https://github.com/KaiCreates/InputSync
260-
cd InputSync
261-
262-
# Install frontend dependencies
263-
npm install
253+
cd InputSync/src-tauri
264254

265-
# Build for current platform
266-
./build.sh linux # → InputSync-linux-x64.deb
267-
./build.sh windows # → InputSync-windows-x64-setup.exe (requires MinGW)
268-
./build.sh all # both
255+
# Build release binary (~35 seconds, ~9 MB output)
256+
cargo build --release
269257

270-
# Development mode (live reload)
271-
cargo tauri dev
258+
# Output: target/release/inputsync
259+
./target/release/inputsync
272260
```
273261

262+
### Cross-compile for Windows
263+
Windows builds are handled by the GitHub Actions workflow (`.github/workflows/build.yml`) using `cross` or the Windows runner. Building locally requires a Windows host or MinGW toolchain.
264+
274265
---
275266

276267
## Troubleshooting
@@ -301,9 +292,13 @@ cargo tauri dev
301292
302293
> Ensure both machines are on a wired or high-quality Wi-Fi connection. UDP packets may be delayed on congested networks. Check for VPN software that might be wrapping UDP traffic in TCP.
303294
304-
**Windows Defender flags the installer**
295+
**Windows Defender flags the binary**
296+
297+
> InputSync is not code-signed yet. Click **More info → Run anyway** in the SmartScreen prompt. Code signing is on the roadmap for v1.2.
305298
306-
> InputSync is not code-signed yet. Click **More info → Run anyway** in the SmartScreen prompt. Code signing is on the roadmap for v1.1.
299+
**Edge trigger fires accidentally**
300+
301+
> Configure dead corners or dead zones in the **Settings** tab to block edge triggers in specific screen regions.
307302
308303
---
309304
@@ -314,17 +309,20 @@ cargo tauri dev
314309
| Core encryption + session system | ✅ v1.0.0 |
315310
| Input capture (Linux X11 + Windows) | ✅ v1.0.0 |
316311
| Input simulation (Linux + Windows) | ✅ v1.0.0 |
317-
| React UI (server + client panels) | ✅ v1.0.0 |
318-
| Linux .deb + Windows .exe packaging | ✅ v1.0.0 |
319-
| Clipboard sync | 🔜 v1.1 |
320-
| Linux Wayland support (libei) | 🔜 v1.1 |
321-
| mDNS/Bonjour server discovery | 🔜 v1.1 |
322-
| Hotkey to toggle control | 🔜 v1.1 |
323-
| Multi-monitor layout configuration | 🔜 v1.2 |
324-
| macOS support | 🔜 v1.2 |
325-
| Screen edge switching | 🔜 v1.2 |
326-
| Code signing (Windows + Linux) | 🔜 v1.1 |
327-
| RPM / Arch packages | 🔜 v1.1 |
312+
| Native egui UI (server + client panels, settings, logs) | ✅ v1.1.0 |
313+
| Screen edge switching | ✅ v1.1.0 |
314+
| Dead corners + dead zones | ✅ v1.1.0 |
315+
| Optional TLS transport (TOFU) | ✅ v1.1.0 |
316+
| Settings persistence (~/.local/share/inputsync) | ✅ v1.1.0 |
317+
| Clipboard sync | 🔜 v1.2 |
318+
| Linux Wayland support (libei) | 🔜 v1.2 |
319+
| mDNS/Bonjour server discovery | 🔜 v1.2 |
320+
| Configurable switch hotkey | 🔜 v1.2 |
321+
| Multi-monitor layout configuration | 🔜 v1.3 |
322+
| macOS support | 🔜 v1.3 |
323+
| Multi-client support | 🔜 v1.3 |
324+
| Code signing (Windows + Linux) | 🔜 v1.2 |
325+
| RPM / Arch packages | 🔜 v1.2 |
328326
329327
---
330328
@@ -334,13 +332,13 @@ InputSync is built on these excellent open-source libraries:
334332
335333
| Library | Purpose |
336334
|---------|---------|
337-
| [Tauri](https://tauri.app) | Cross-platform app framework |
335+
| [eframe / egui](https://github.com/emilk/egui) | Native cross-platform GUI framework |
338336
| [tokio](https://tokio.rs) | Async Rust runtime |
339337
| [x25519-dalek](https://github.com/dalek-cryptography/x25519-dalek) | X25519 ECDH |
340338
| [chacha20poly1305](https://github.com/RustCrypto/AEADs) | ChaCha20-Poly1305 AEAD |
339+
| [rustls](https://github.com/rustls/rustls) + [rcgen](https://github.com/rustls/rcgen) | Optional TLS |
341340
| [enigo](https://github.com/enigo-rs/enigo) | Cross-platform input simulation |
342341
| [rdev](https://github.com/Narsil/rdev) | Cross-platform input capture |
343-
| [React](https://react.dev) | UI framework |
344342
345343
---
346344
@@ -352,12 +350,8 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, code style, and PR
352350
353351
Found a vulnerability? See [SECURITY.md](SECURITY.md) for responsible disclosure.
354352
355-
## Code of Conduct
356-
357-
This project follows the [Contributor Covenant](CODE_OF_CONDUCT.md).
358-
359353
## License
360354
361355
InputSync is released under the [MIT License](LICENSE).
362356
363-
Copyright © 2025 KaiCreates
357+
Copyright © 2026 KaiCreates

src-tauri/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[package]
22
name = "inputsync"
3-
version = "1.0.3"
3+
version = "1.1.0"
44
description = "InputSync - Software KVM Switch"
5-
authors = ["InputSync"]
5+
authors = ["KaiCreates"]
66
edition = "2021"
77
rust-version = "1.77.2"
88

0 commit comments

Comments
 (0)