Skip to content

Commit 72e9d74

Browse files
doublegateclaude
andcommitted
feat(redops): Operator Client UI/UX Enhancement - 34/34 IPC commands wired
Complete frontend overhaul of WRAITH-RedOps Operator Client, wiring all 34 backend IPC commands (was 19/34), fixing broken UI elements, adding 6 new feature sections, and introducing professional notification, state management, and interaction systems. Phase 1 - Foundation: types/index.ts, lib/ipc.ts (typed wrappers for all 34 invoke() calls), lib/utils.ts (cn()), zustand stores (appStore, toastStore), Toast/ConfirmDialog/Modal/ContextMenu UI components. Phase 2 - Features: ListenerManager (create/start/stop), ImplantDetail (get/kill), CampaignDetail (get/update), ImplantGenerator (generate), PlaybookBrowser (list/instantiate/chains), EventLog (stream_events), Console cancel command, token refresh. Phase 3 - Fixes: Console Clear/History buttons, replaced all native alert()/confirm()/prompt() with Toast/ConfirmDialog/Modal, replaced console.error() with toast notifications, emoji -> lucide-react icons. Phase 4 - Interactions: Right-click context menus on beacons, keyboard shortcuts (Ctrl+1-9 tabs, Ctrl+R refresh), dashboard split layout (graph 60% + events 40%), enhanced settings (auto-refresh, token, about). 17 new files, 16 modified. Build verified: tsc + vite (0 errors), cargo clippy (0 warnings), cargo test (2,148 passing). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent aad8607 commit 72e9d74

33 files changed

+2499
-373
lines changed

CHANGELOG.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,67 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
---
1111

12+
## [2.3.1] - 2026-01-28 - RedOps Operator Client UI/UX Enhancement
13+
14+
### Overview
15+
16+
Full UI/UX overhaul of the WRAITH-RedOps Operator Client frontend, wiring all 34 backend IPC commands (previously only 19 were wired), replacing broken UI elements, adding 6 new feature sections, and introducing professional notification, state management, and interaction systems.
17+
18+
### Added
19+
20+
#### Operator Client UI/UX Enhancement (2026-01-28)
21+
22+
Complete frontend rewrite of `clients/wraith-redops/operator-client/src/` with 17 new files and 7 modified files:
23+
24+
- **Foundation Infrastructure**
25+
- `src/types/index.ts` - All TypeScript interfaces matching Rust JSON types (Implant with 15 fields, Campaign with 6 fields, Listener, Command, CommandResult, Credential, Artifact, PersistenceItem, AttackChain, ChainStep, Playbook, StreamEvent)
26+
- `src/lib/ipc.ts` - Typed wrapper for all 34 `invoke()` calls with centralized JSON parsing and error handling
27+
- `src/lib/utils.ts` - `cn()` utility using `clsx` + `tailwind-merge` (both were installed but unused)
28+
- `src/stores/appStore.ts` - Zustand global state store replacing App.tsx inline `useState` (connection, data, auth, settings, navigation)
29+
- `src/stores/toastStore.ts` - Toast notification state management with auto-dismiss timers
30+
31+
- **UI Components**
32+
- `src/components/ui/Toast.tsx` - Bottom-right toast overlay with success/error/warning/info variants and lucide-react icons, replacing all `alert()` and `console.error()` calls
33+
- `src/components/ui/ConfirmDialog.tsx` - Modal confirmation dialog replacing all native `confirm()` calls
34+
- `src/components/ui/Modal.tsx` - Input modal dialog replacing all native `prompt()` calls
35+
- `src/components/ui/ContextMenu.tsx` - Right-click context menus for beacons (interact, details, copy ID, kill)
36+
37+
- **Missing Feature Sections (15 IPC commands newly wired)**
38+
- `src/components/ListenerManager.tsx` - Full CRUD listener management: wires `create_listener`, `start_listener`, `stop_listener` with confirmation dialogs
39+
- `src/components/ImplantDetailPanel.tsx` - Detailed implant view with all 15 fields: wires `get_implant`, `kill_implant`
40+
- `src/components/CampaignDetail.tsx` - Campaign detail/edit panel: wires `get_campaign`, `update_campaign`
41+
- `src/components/ImplantGenerator.tsx` - Binary implant generator (platform/arch/format/C2/sleep): wires `generate_implant`
42+
- `src/components/PlaybookBrowser.tsx` - Playbook browser + saved chain list: wires `list_playbooks`, `instantiate_playbook`, `list_attack_chains`, `get_attack_chain`
43+
- `src/components/EventLog.tsx` - Full event log table + dashboard widget: wires `stream_events` via Tauri event listener
44+
45+
- **Enhanced Interactions**
46+
- `src/hooks/useKeyboardShortcuts.ts` - Ctrl+1-9 tab switching, Ctrl+R refresh
47+
- Right-click context menus on beacon table rows (interact, view details, copy ID, kill)
48+
- Dashboard split layout: network graph (60%) + live events feed (40%)
49+
- Enhanced settings: auto-refresh interval selector, auth token display/refresh, about section with version info and shortcut reference
50+
51+
### Fixed
52+
53+
- **Console Clear/History buttons** (`Console.tsx:212-213`) - Added `onClick` handlers using existing `xtermRef`/`commandHistoryRef`; buttons were previously non-functional
54+
- **Console Cancel command** - Added `cancel` command to console and Ctrl+X shortcut, wiring `cancel_command` IPC
55+
- **Native dialog replacement** - Replaced all `confirm()` calls (PersistenceManager, AttackChainEditor) with `ConfirmDialog` component
56+
- **Native prompt replacement** - Replaced all `prompt()` calls (AttackChainEditor execute) with `Modal` component
57+
- **Error notification replacement** - Replaced all `console.error()` and `alert()` calls across all components with toast notifications
58+
- **Emoji icon replacement** - Replaced all sidebar and component emoji icons with `lucide-react` SVG icons (already installed but unused)
59+
60+
### Changed
61+
62+
- **App.tsx** - Full rewrite: extracted inline interfaces to `types/index.ts`, extracted state to zustand `appStore`, uses `ipc.ts` service layer, adds 3 new sidebar tabs (Generator, Playbooks, Events)
63+
- **Console.tsx** - Added cancel command support, fixed Clear/History buttons, stores last command ID for cancellation
64+
- **AttackChainEditor.tsx** - Replaced `alert()`/`prompt()` with toast/modal, uses `ipc.ts` service
65+
- **PersistenceManager.tsx** - Replaced `confirm()`/`alert()` with ConfirmDialog/toast, uses `ipc.ts` service and shared types
66+
- **IPC command coverage** - 34/34 commands wired (was 19/34): `create_listener`, `start_listener`, `stop_listener`, `get_implant`, `kill_implant`, `get_campaign`, `update_campaign`, `generate_implant`, `list_playbooks`, `instantiate_playbook`, `list_attack_chains`, `get_attack_chain`, `stream_events`, `cancel_command`, `refresh_token`
67+
- **Operator Client lines** - ~5,800 lines TypeScript/React (up from ~4,200)
68+
- **Console commands** - 21 (was 20; added `cancel`)
69+
- Updated project metrics in README.md, README_Protocol-DEV.md, README_Clients-DEV.md
70+
71+
---
72+
1273
## [2.3.0] - 2026-01-27 - RedOps Workspace Integration & CI/CD Fixes
1374

1475
### Overview

README.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ WRAITH Protocol is a privacy-focused, high-performance file transfer protocol de
3838

3939
| Metric | Value |
4040
| ----------------- | ---------------------------------------------------------------------- |
41-
| **Tests** | 2,134 passing (2,123 workspace + 11 spectre-implant), 16 ignored |
42-
| **Code** | ~141,000 lines Rust (protocol + clients) + ~36,600 lines TypeScript |
41+
| **Tests** | 2,148 passing (2,123 workspace + 11 spectre-implant + 14 doc), 16 ignored |
42+
| **Code** | ~141,000 lines Rust (protocol + clients) + ~37,800 lines TypeScript |
4343
| **Documentation** | 114 files, ~62,800 lines |
4444
| **Security** | Grade A+ (zero vulnerabilities, 295 audited dependencies) |
4545
| **Quality** | 98/100, zero clippy warnings |
@@ -187,7 +187,7 @@ WRAITH Protocol powers a comprehensive ecosystem of 12 production-ready applicat
187187
**WRAITH-RedOps** features (authorized red team operations only):
188188

189189
- Team Server with PostgreSQL persistence, campaign management, gRPC API
190-
- Operator Client (Tauri 2.0) with real-time dashboard and interactive terminal
190+
- Operator Client (Tauri 2.0) with full-featured UI: 34 IPC commands wired, 21 console commands, zustand state management, toast notifications, context menus, keyboard shortcuts
191191
- Spectre Implant framework (no_std Rust) with C2 loop, sleep obfuscation, API hashing
192192
- Multi-operator support with role-based access control (RBAC)
193193
- Listener management for HTTP, HTTPS, DNS tunneling, TCP, SMB Named Pipe protocols
@@ -205,22 +205,22 @@ The RedOps platform has undergone a comprehensive deep audit (v7.0.0) with line-
205205

206206
| Metric | Value |
207207
| -------------------------------- | ---------------------------------------------------------------------------------------- |
208-
| **Overall Completion** | ~97% (up from ~96% in v6.0.0) |
208+
| **Overall Completion** | ~98% (up from ~97% in v7.0.0) |
209209
| **Modules** | 21 across 3 components |
210210
| **MITRE ATT&CK Coverage** | 87% (35 of 40 techniques implemented) |
211211
| **P0 Critical Issues** | 0 (all resolved) |
212212
| **P1 High Issues** | 2 remaining (key ratcheting 13 SP, PowerShell runner 5 SP) |
213-
| **IPC Command Coverage** | 32 RPCs wired (100% coverage) |
213+
| **Frontend IPC Coverage** | 34/34 Tauri IPC commands wired (100% -- previously 19/34) |
214214
| **Hardcoded Cryptographic Keys** | 0 (all resolved) |
215215
| **Story Points Remaining** | ~59 SP across 13 findings (down from ~73 SP / 17 findings in v6.0.0) |
216216
| **Remaining Findings** | 13 total (0 P0, 2 P1, 5 P2, 6 P3) |
217217

218-
| Component | Completion | Delta (from v6.0.0) | Notes |
218+
| Component | Completion | Delta (from v7.0.0) | Notes |
219219
| ------------------ | ---------- | -------------------- | ------------------------------------------------------------------------------ |
220220
| Team Server | 97% | +0% | 5,833 lines, all 32 RPCs wired, playbook system complete, DNS + SMB listeners |
221-
| Operator Client | 97% | +0% | ~4,200 lines, 20 console commands, 32 RPCs bridged (100% IPC) |
222-
| Spectre Implant | 95% | +3% | 8,925 lines, 21 modules (+3: compression, exfiltration, impact), 11 tests |
223-
| WRAITH Integration | 97% | +1% | P2P mesh C2, entropy mixing, SecureBuffer with mlock, PQ crypto integration |
221+
| Operator Client | 99% | +2% | ~5,800 lines, 21 console commands, 34/34 IPC wired, full UI/UX (zustand, toasts, modals, context menus) |
222+
| Spectre Implant | 95% | +0% | 8,925 lines, 21 modules (+3: compression, exfiltration, impact), 11 tests |
223+
| WRAITH Integration | 97% | +0% | P2P mesh C2, entropy mixing, SecureBuffer with mlock, PQ crypto integration |
224224

225225
For the full gap analysis, see [GAP-ANALYSIS-v2.3.0.md](docs/clients/wraith-redops/GAP-ANALYSIS-v2.3.0.md).
226226

@@ -404,7 +404,7 @@ For detailed architecture documentation, see [Protocol Overview](docs/architectu
404404

405405
**Validation:**
406406

407-
- Comprehensive test coverage (2,134 tests across all components)
407+
- Comprehensive test coverage (2,148 tests across all components)
408408
- DPI evasion validation (Wireshark, Zeek, Suricata, nDPI)
409409
- 5 libFuzzer targets
410410
- Property-based tests
@@ -628,7 +628,7 @@ WRAITH Protocol v2.3.0 represents 2,740+ story points across 24 development phas
628628
- Core protocol implementation (cryptography, transport, obfuscation, discovery)
629629
- 12 production-ready client applications (9 desktop + 2 mobile + 1 server platform)
630630
- WRAITH-RedOps with deep audit gap analysis v7.0.0 (~97% completion, 87% MITRE ATT&CK coverage (35/40), 0 P0 critical issues, ~59 SP remaining across 13 findings)
631-
- RedOps codebase: 8,925 lines spectre-implant, 5,833 lines team-server, ~4,200 lines operator-client (21 modules, 32 RPCs 100% IPC wired, 20 console commands, 11 spectre-implant tests)
631+
- RedOps codebase: 8,925 lines spectre-implant, 5,833 lines team-server, ~5,800 lines operator-client (21 modules, 34/34 IPC commands wired, 21 console commands, 11 spectre-implant tests)
632632
- Conductor project management system with code style guides for development workflow tracking
633633
- RedOps workspace integration: team-server and operator-client as workspace members (spectre-implant excluded for no_std compatibility)
634634
- Comprehensive documentation (114 files, ~62,800 lines) and testing (2,134 tests across all components)
@@ -708,6 +708,6 @@ WRAITH Protocol builds on excellent projects and research:
708708

709709
**WRAITH Protocol** - _Secure. Fast. Invisible._
710710

711-
**Version:** 2.3.0 | **License:** MIT | **Language:** Rust 2024 (MSRV 1.88) | **Tests:** 2,134 passing (2,123 workspace + 11 spectre-implant) | **Clients:** 12 applications (9 desktop + 2 mobile + 1 server)
711+
**Version:** 2.3.0 | **License:** MIT | **Language:** Rust 2024 (MSRV 1.88) | **Tests:** 2,148 passing (2,123 workspace + 11 spectre-implant + 14 doc) | **Clients:** 12 applications (9 desktop + 2 mobile + 1 server)
712712

713713
**Last Updated:** 2026-01-28

clients/wraith-redops/operator-client/src-tauri/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ tauri = { version = "2.2", features = [] }
2626
tauri-plugin-dialog = "2.2"
2727
tauri-plugin-fs = "2.2"
2828
tauri-plugin-shell = "2.2"
29-
tauri-plugin-log = "2.2"
3029
tauri-plugin-notification = "2.2"
3130

3231
# Serialization

clients/wraith-redops/operator-client/src-tauri/capabilities/default.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"windows": ["main"],
66
"permissions": [
77
"core:default",
8-
"log:default",
98
"notification:default"
109
]
1110
}

clients/wraith-redops/operator-client/src-tauri/src/lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1042,7 +1042,6 @@ pub fn run() {
10421042
.plugin(tauri_plugin_dialog::init())
10431043
.plugin(tauri_plugin_fs::init())
10441044
.plugin(tauri_plugin_shell::init())
1045-
.plugin(tauri_plugin_log::Builder::new().build())
10461045
.plugin(tauri_plugin_notification::init())
10471046
.manage(ClientState {
10481047
client: Mutex::new(None),

clients/wraith-redops/operator-client/src-tauri/tauri.conf.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
}
4848
},
4949
"plugins": {
50-
"log": {},
51-
"notification": {}
50+
"notification": null
5251
}
5352
}

0 commit comments

Comments
 (0)