# Phase 2: Core Features **Duration:** 8 weeks **Team:** 1 Frontend Developer + 1 Agent Developer + 1 Backend Developer (part-time) **Goal:** Build missing launch blockers and essential features --- ## Overview Phase 2 focuses on implementing the core features needed for basic attended support sessions: - End-user portal for support code entry - One-time agent download mechanism - Complete input relay (mouse/keyboard) - Dashboard session management UI - Text clipboard synchronization - Remote PowerShell execution - Basic file download **Completion Criteria:** MSP can generate support code, end user can connect, tech can view screen, control remotely, sync clipboard, run commands, and download files. --- ## Week 5: Portal & Input Foundation ### End-User Portal (Frontend Developer) - [ ] Create server/static/portal.html (support code entry page) - [ ] Design 6-segment code input (Apple-style auto-advance) - [ ] Add support code validation via API - [ ] Implement browser detection (Chrome, Firefox, Edge, Safari) - [ ] Add download button (triggers agent download) - [ ] Style with GuruConnect branding (match dashboard theme) - [ ] Test on all major browsers - [ ] Add error handling (invalid code, expired code, server error) - [ ] Add loading indicators during validation - [ ] Deploy to server/static/ ### Input Relay Completion (Agent Developer) - [ ] Review viewer input capture in viewer.html - [ ] Verify mouse events captured correctly - [ ] Verify keyboard events captured correctly - [ ] Test special keys (Ctrl, Alt, Shift, Windows key) - [ ] Wire input events to WebSocket send - [ ] Test viewer → server → agent relay - [ ] Add input latency logging - [ ] Test on LAN (target <50ms) - [ ] Test on WAN with throttling (target <200ms) - [ ] Fix any input lag issues --- ## Week 6: Agent Download (Phase 1) ### Support Code Embedding (Backend Developer) - [ ] Modify support code API to return download URL - [ ] Create /api/support-codes/:code/download endpoint - [ ] Generate one-time download token (expires in 5 minutes) - [ ] Link download token to support code - [ ] Test download URL generation - [ ] Add download tracking (log when agent downloaded) ### One-Time Agent Build (Agent Developer) - [ ] Create agent/src/onetime_mode.rs - [ ] Add --support-code flag to agent CLI - [ ] Implement support code embedding in agent config - [ ] Make agent auto-connect with embedded code - [ ] Disable persistence (no registry, no service) - [ ] Add self-delete after session ends - [ ] Test one-time agent connects automatically - [ ] Test agent deletes itself on exit --- ## Week 7: Agent Download (Phase 2) ### Download Endpoint (Backend Developer) - [ ] Create server download handler - [ ] Stream agent binary from server/static/downloads/ - [ ] Embed support code in download filename - [ ] Add Content-Disposition header - [ ] Test browser downloads file correctly - [ ] Add virus scanning (optional, ClamAV) - [ ] Log download events ### Portal Integration (Frontend Developer) - [ ] Wire portal download button to API - [ ] Show download progress (if possible) - [ ] Add instructions: "Run the downloaded file" - [ ] Add timeout warning (code expires in 10 minutes) - [ ] Test end-to-end: code entry → download → run - [ ] Add troubleshooting section (firewall, antivirus) - [ ] Test on Windows 10/11 (no admin required) --- ## Week 8: Agent Download (Phase 3) & Dashboard UI ### Agent Polish (Agent Developer) - [ ] Add tray icon to one-time agent (optional) - [ ] Show "Connecting..." message - [ ] Show "Connected" message - [ ] Test agent launches without UAC prompt - [ ] Test on Windows 7 (if required) - [ ] Add error messages for connection failures - [ ] Test firewall scenarios ### Dashboard Session List (Frontend Developer) - [ ] Create session list component in dashboard.html - [ ] Fetch active sessions from /api/sessions - [ ] Display: support code, machine name, status, duration - [ ] Add real-time updates via WebSocket - [ ] Add "Join" button for each session - [ ] Add "End" button (disconnect session) - [ ] Add auto-refresh (every 3 seconds as fallback) - [ ] Style session cards - [ ] Test with multiple concurrent sessions - [ ] Add empty state ("No active sessions") ### Session Detail Panel (Frontend Developer) - [ ] Create session detail panel (right side of dashboard) - [ ] Add tabs: Info, Screen, Chat, Commands, Files - [ ] Info tab: machine details, OS, uptime, connection time - [ ] Test tab switching - [ ] Add close button to collapse panel - [ ] Style with consistent theme --- ## Week 9: Clipboard Sync (Phase 1) ### Agent-Side Clipboard (Agent Developer) - [ ] Add Windows clipboard API integration - [ ] Implement clipboard change detection - [ ] Read text from clipboard on change - [ ] Send ClipboardUpdate message to server - [ ] Receive ClipboardUpdate from server - [ ] Write text to clipboard - [ ] Test bidirectional sync - [ ] Add clipboard permission handling - [ ] Test with Unicode text - [ ] Add error handling (clipboard locked, etc.) ### Viewer-Side Clipboard (Frontend Developer) - [ ] Add JavaScript Clipboard API integration - [ ] Detect clipboard changes in viewer - [ ] Send clipboard updates via WebSocket - [ ] Receive clipboard updates from agent - [ ] Write to local clipboard - [ ] Request clipboard permissions from user - [ ] Test bidirectional sync - [ ] Add UI indicator ("Clipboard synced") - [ ] Test on Chrome, Firefox, Edge --- ## Week 10: Clipboard Sync (Phase 2) & PowerShell Foundation ### Clipboard Protocol (Backend Developer) - [ ] Review ClipboardUpdate protobuf message - [ ] Implement relay handler for clipboard - [ ] Relay clipboard updates viewer ↔ agent - [ ] Add clipboard event logging - [ ] Test end-to-end clipboard sync - [ ] Add rate limiting (prevent clipboard spam) ### Clipboard Testing (All) - [ ] Test: Copy text on local → appears on remote - [ ] Test: Copy text on remote → appears on local - [ ] Test: Long text (10KB+) - [ ] Test: Unicode characters (emoji, Chinese, etc.) - [ ] Test: Rapid clipboard changes - [ ] Document clipboard limitations (text-only for now) ### PowerShell Backend (Backend Developer) - [ ] Create /api/sessions/:id/execute endpoint - [ ] Accept command, timeout parameters - [ ] Store command execution request in database - [ ] Send CommandExecute message to agent via WebSocket - [ ] Relay command output from agent to viewer - [ ] Add command history logging - [ ] Test with simple commands (hostname, ipconfig) --- ## Week 11: PowerShell Execution ### Agent PowerShell (Agent Developer) - [ ] Implement CommandExecute handler in agent - [ ] Spawn PowerShell.exe process - [ ] Capture stdout and stderr streams - [ ] Stream output back to server (chunked) - [ ] Handle command timeouts (kill process) - [ ] Send CommandComplete when done - [ ] Test with long-running commands - [ ] Test with commands requiring input (handle failure) - [ ] Add error handling (command not found, etc.) ### Dashboard PowerShell UI (Frontend Developer) - [ ] Add "Commands" tab to session detail panel - [ ] Create command input textbox - [ ] Add timeout controls (checkboxes: 30s, 60s, 5min, custom) - [ ] Add "Execute" button - [ ] Display command output (terminal-style, monospace) - [ ] Add output scrolling - [ ] Show command status (Running, Completed, Failed, Timeout) - [ ] Add command history (previous commands) - [ ] Test with PowerShell commands (Get-Process, Get-Service) - [ ] Test with CMD commands (ipconfig, netstat) --- ## Week 12: File Download ### File Browse API (Backend Developer) - [ ] Create /api/sessions/:id/files/browse endpoint - [ ] Accept path parameter (default: C:\) - [ ] Send FileBrowse message to agent - [ ] Relay file list from agent - [ ] Return JSON: files, directories, sizes, dates - [ ] Add path validation (prevent directory traversal) - [ ] Test with various paths ### Agent File Browser (Agent Developer) - [ ] Implement FileBrowse handler - [ ] List files and directories at given path - [ ] Read file metadata (size, modified date, attributes) - [ ] Send FileList response - [ ] Handle permission errors (access denied) - [ ] Test on C:\, D:\, network shares - [ ] Add file type detection (extension-based) ### File Download Implementation (Agent Developer) - [ ] Implement FileDownload handler in agent - [ ] Read file in chunks (64KB chunks) - [ ] Send FileChunk messages to server - [ ] Handle large files (stream, don't load into memory) - [ ] Send FileComplete when done - [ ] Add progress tracking (bytes sent / total bytes) - [ ] Handle file read errors - [ ] Test with small files (KB) - [ ] Test with large files (100MB+) ### Dashboard File Browser (Frontend Developer) - [ ] Add "Files" tab to session detail panel - [ ] Create file browser UI (left pane: remote files) - [ ] Fetch file list from API - [ ] Display: name, size, type, modified date - [ ] Add breadcrumb navigation (C:\ > Users > Downloads) - [ ] Add "Download" button for selected file - [ ] Show download progress bar - [ ] Save file to local disk (browser download) - [ ] Test file browsing and download - [ ] Add file type icons --- ## Phase 2 Completion Criteria ### Functional Checklist - [ ] End-user portal functional (code entry, validation, download) - [ ] One-time agent downloads and connects automatically - [ ] Dashboard shows active sessions in real-time - [ ] "Join" button launches viewer - [ ] Input relay works (mouse + keyboard) with <200ms latency on WAN - [ ] Text clipboard syncs bidirectionally - [ ] Remote PowerShell executes with live output streaming - [ ] Files can be browsed and downloaded from remote machine ### Quality Checklist - [ ] All features tested on Windows 10/11 - [ ] Cross-browser testing (Chrome, Firefox, Edge) - [ ] Network testing (LAN + WAN with throttling) - [ ] Error handling for all failure scenarios - [ ] Loading indicators for async operations - [ ] User-friendly error messages ### Performance Checklist - [ ] Portal loads in <2 seconds - [ ] Dashboard session list updates in <1 second - [ ] Clipboard sync latency <500ms - [ ] PowerShell output streams in real-time (<100ms chunks) - [ ] File download speed: 1MB/s+ on LAN ### Documentation Checklist - [ ] End-user guide (how to use support portal) - [ ] Technician guide (how to manage sessions) - [ ] API documentation updated - [ ] Known limitations documented (text-only clipboard, etc.) --- **Phase Owner:** Frontend Developer + Agent Developer + Backend Developer **Prerequisites:** Phase 1 complete (security + infrastructure) **Target Completion:** 8 weeks from start **Next Phase:** Phase 3 - Competitive Features