docs: spec refinements — RDP key pass-through, SQLite WAL, tab transitions
- RDP input: Windows key + Alt+Tab pass-through toggle per connection - SQLite: WAL mode + busy_timeout for concurrent read/write safety - UI: 0.5s CSS transitions on tab active/background state changes Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0641ce34c8
commit
587b5396fd
@ -242,6 +242,8 @@ CREATE TABLE settings (
|
||||
|
||||
**Connections → Credentials** is many-to-one. Multiple hosts can share the same credential.
|
||||
|
||||
**SQLite WAL mode:** Enable Write-Ahead Logging (`PRAGMA journal_mode=WAL`) on database open in `db/sqlite.go`. WAL mode allows concurrent reads during writes, preventing "database is locked" errors when the frontend queries connections while the backend is writing session history or updating `last_connected` timestamps. Also set `PRAGMA busy_timeout=5000` as a safety net.
|
||||
|
||||
**Host keys** are keyed by `(hostname, port, key_type)`. Supports multiple key types per host. Separated from connections so host key verification works independently of saved connections (e.g., quick connect).
|
||||
|
||||
---
|
||||
@ -250,10 +252,12 @@ CREATE TABLE settings (
|
||||
|
||||
### Visual Identity
|
||||
|
||||
Dark theme inspired by the Wraith brand: deep dark backgrounds (#0d1117), blue accent (#58a6ff), green for SSH indicators (#3fb950), blue for RDP indicators (#1f6feb). The aesthetic is "operator command center" — atmospheric, moody, professional. Subtle hover states and tab transitions for an "alive" feel without being flashy. Reference: `docs/karens-wraith-layout.png` for the target mood.
|
||||
Dark theme inspired by the Wraith brand: deep dark backgrounds (#0d1117), blue accent (#58a6ff), green for SSH indicators (#3fb950), blue for RDP indicators (#1f6feb). The aesthetic is "operator command center" — atmospheric, moody, professional. Reference: `docs/karens-wraith-layout.png` for the target mood.
|
||||
|
||||
Logo: `images/wraith-logo.png` — ghost with "$" symbol, used in the title bar and app icon.
|
||||
|
||||
**The "alive" feel:** Tabs use a 0.5s CSS `transition` on `background-color` and `border-color` when switching between active and backgrounded states. The active tab's background subtly brightens; backgrounded tabs dim. This creates a fluid, "breathing" quality as you switch between sessions — the Wraith is present without being loud. Same 0.5s transition applies to sidebar item hover states and toolbar button interactions. No animations on the terminal itself — that would be distracting.
|
||||
|
||||
### Main Window Layout
|
||||
|
||||
```
|
||||
@ -497,6 +501,8 @@ Frontend: mouse/keyboard events captured on <canvas> element
|
||||
|
||||
**Scancode mapping:** JavaScript `KeyboardEvent.code` values (e.g., "KeyA", "ShiftLeft") must be translated to RDP hardware scancodes that FreeRDP expects. A static lookup table in `internal/rdp/input.go` maps JS key codes → RDP scancodes. This is a known complexity in web-based RDP — the table must handle extended keys (e.g., right Alt, numpad) and platform-specific quirks. Reference: FreeRDP's `scancode.h` for the canonical scancode list.
|
||||
|
||||
**System key pass-through:** The Windows key and Alt+Tab require special handling. By default, these keys are captured by the local OS. A per-connection toggle in `connections.options` (`"grabKeyboard": true`) controls whether system keys are forwarded to the remote host or stay local. When enabled, the RDP canvas captures all keyboard input including Win key, Alt+Tab, Ctrl+Alt+Del (via a toolbar button). Power users toggling between remote and local need this to be fast and obvious — surface it as an icon in the RDP toolbar.
|
||||
|
||||
### Clipboard Sync
|
||||
|
||||
```
|
||||
|
||||
Loading…
Reference in New Issue
Block a user