Add portal UX and dashboard specifications
Portal (unauthenticated):
- Code entry with browser-specific download instructions
- Custom protocol handler (guruconnect://session/{code})
- One-time agent runs in userspace, no admin required
Dashboard (authenticated):
- Support tab: Active sessions by technician, support request queue
- Access tab: Three-panel layout with groupings sidebar
- Build tab: Installer builder form
- Settings tab: Appearance, groupings, notifications, account
Visual style matches GuruRMM dashboard design
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# GuruConnect Cargo Configuration
|
||||
# GuruConnect Cargo Configuration (Windows Development)
|
||||
|
||||
# Default to 64-bit Windows MSVC
|
||||
# Default to 64-bit Windows MSVC for local dev
|
||||
[build]
|
||||
target = "x86_64-pc-windows-msvc"
|
||||
|
||||
@@ -10,10 +10,8 @@ target = "x86_64-pc-windows-msvc"
|
||||
b64 = "build --release --target x86_64-pc-windows-msvc"
|
||||
# Build 32-bit release
|
||||
b32 = "build --release --target i686-pc-windows-msvc"
|
||||
# Build both architectures
|
||||
ball = ["b64", "b32"]
|
||||
|
||||
# Target-specific settings
|
||||
# Target-specific settings - static CRT for standalone binaries
|
||||
[target.x86_64-pc-windows-msvc]
|
||||
rustflags = ["-C", "target-feature=+crt-static"]
|
||||
|
||||
|
||||
264
REQUIREMENTS.md
264
REQUIREMENTS.md
@@ -8,6 +8,270 @@
|
||||
|
||||
---
|
||||
|
||||
## End-User Portal (connect.azcomputerguru.com)
|
||||
|
||||
### Unauthenticated View
|
||||
|
||||
When a user visits the portal without being logged in:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ [Company Logo] │
|
||||
│ │
|
||||
│ Enter your support code: │
|
||||
│ ┌─────────────────────────┐ │
|
||||
│ │ 8 4 7 2 9 1 │ │
|
||||
│ └─────────────────────────┘ │
|
||||
│ │
|
||||
│ [ Connect ] │
|
||||
│ │
|
||||
│ ───────────────────────────────────────────────── │
|
||||
│ │
|
||||
│ Instructions will appear here after clicking │
|
||||
│ Connect, based on your browser. │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Connection Flow
|
||||
|
||||
1. **User enters code** → Click "Connect"
|
||||
2. **Server validates code** → Returns session info or error
|
||||
3. **Attempt app launch** via custom protocol:
|
||||
- `guruconnect://session/{code}`
|
||||
- If app is installed, it launches and connects
|
||||
4. **If app doesn't launch** (timeout ~3 seconds):
|
||||
- Auto-download small EXE (`GuruConnect-{code}.exe`)
|
||||
- Show browser-specific instructions
|
||||
|
||||
### Browser-Specific Instructions
|
||||
|
||||
Detect browser via User-Agent and show appropriate guidance:
|
||||
|
||||
**Chrome:**
|
||||
> "Click the download in the bottom-left corner of your screen, then click 'Open'"
|
||||
> [Screenshot of Chrome download bar]
|
||||
|
||||
**Firefox:**
|
||||
> "Click 'Save File', then open your Downloads folder and double-click the file"
|
||||
> [Screenshot of Firefox download dialog]
|
||||
|
||||
**Edge:**
|
||||
> "Click 'Open file' in the download notification at the top of your screen"
|
||||
> [Screenshot of Edge download prompt]
|
||||
|
||||
**Safari:**
|
||||
> "Click the download icon in the toolbar, then double-click the file"
|
||||
> [Screenshot of Safari downloads]
|
||||
|
||||
**Generic/Unknown:**
|
||||
> "Your download should start automatically. Look for the file in your Downloads folder and double-click to run it."
|
||||
|
||||
### Custom Protocol Handler
|
||||
|
||||
**Protocol:** `guruconnect://`
|
||||
|
||||
**Format:** `guruconnect://session/{code}`
|
||||
|
||||
**Registration:**
|
||||
- Permanent agent registers protocol handler on install
|
||||
- One-time agent does NOT register (to avoid clutter)
|
||||
|
||||
**Behavior:**
|
||||
- If registered: OS launches installed agent with session code
|
||||
- If not registered: Browser shows "nothing happened" → triggers download fallback
|
||||
|
||||
### One-Time Session Agent (Temp/Support)
|
||||
|
||||
**Key Requirements:**
|
||||
- Runs in **user space** - NO admin elevation required
|
||||
- Downloads as `GuruConnect-{code}.exe` (code baked in)
|
||||
- ~3-5MB executable
|
||||
- Self-contained (no installer, no dependencies)
|
||||
- Connects directly to session on launch
|
||||
- Self-deletes after session ends (or on next reboot)
|
||||
|
||||
**Elevation Note:**
|
||||
- Basic screen sharing works without admin
|
||||
- Some features (input to elevated windows, UAC dialogs) need admin
|
||||
- Show optional "Run as Administrator" button for full access
|
||||
|
||||
---
|
||||
|
||||
## Technician Dashboard (Logged-In View)
|
||||
|
||||
### Visual Style
|
||||
|
||||
Follow GuruRMM dashboard design:
|
||||
- HSL CSS variables for theming (dark/light mode support)
|
||||
- Sidebar navigation with lucide-react icons
|
||||
- Card-based content areas
|
||||
- Responsive layout (mobile hamburger menu)
|
||||
- Consistent component library (Button, Card, Input)
|
||||
|
||||
### Navigation Structure
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────────┐
|
||||
│ ┌──────────┐ │
|
||||
│ │GuruConnect│ │
|
||||
│ └──────────┘ │
|
||||
│ │
|
||||
│ 📋 Support ← Active temp sessions │
|
||||
│ 🖥️ Access ← Unattended/permanent sessions │
|
||||
│ 🔧 Build ← Installer builder │
|
||||
│ ⚙️ Settings ← Preferences, groupings, appearance │
|
||||
│ │
|
||||
│ ───────────── │
|
||||
│ 👤 Mike S. │
|
||||
│ Admin │
|
||||
│ [Sign out] │
|
||||
└──────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Support Tab (Active Temporary Sessions)
|
||||
|
||||
**Layout:**
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ Support Sessions [ + Generate Code ] │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ▼ My Sessions (3) │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ 847291 │ John's PC │ Connected │ 00:15:32 │ [Join] [End] │ │
|
||||
│ │ 293847 │ Waiting │ Pending │ - │ [Cancel] │ │
|
||||
│ │ 182736 │ Sarah-PC │ Connected │ 00:45:10 │ [Join] [End] │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ▼ Team Sessions (2) [Howard's sessions] │
|
||||
│ ┌─────────────────────────────────────────────────────────────┐ │
|
||||
│ │ 928374 │ DESKTOP-A │ Connected │ 00:05:22 │ [View] [Join] │ │
|
||||
│ │ 746382 │ Laptop-01 │ Connected │ 01:20:15 │ [View] │ │
|
||||
│ └─────────────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ▶ Support Requests (1) [End-user initiated] │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Features:**
|
||||
- Sessions grouped by technician (own first, then team)
|
||||
- Real-time status updates (WebSocket)
|
||||
- Duration timer for active sessions
|
||||
- Quick actions: Join, View (spectate), End, Cancel
|
||||
- Support request queue from end-user tray icon requests
|
||||
|
||||
### Access Tab (Unattended/Permanent Sessions)
|
||||
|
||||
**Layout:**
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ Access 🔍 [Search...] [ + Build ] │
|
||||
├──────────────┬──────────────────────────────────────────────────────┤
|
||||
│ │ │
|
||||
│ ▼ By Company │ All Machines by Company 1083 machines │
|
||||
│ (empty) 120│ ─────────────────────────────────────────────────── │
|
||||
│ 4 Paws 1│ ┌──────────────────────────────────────────────┐ │
|
||||
│ ACG 10│ │ ● PC-FRONT01 │ Glaztech │ Win 11 │ Online │ │
|
||||
│ Glaztech 224 │ ● SERVER-DC01 │ Glaztech │ Svr 22 │ Online │ │
|
||||
│ AirPros 2│ │ ○ LAPTOP-SALES │ Glaztech │ Win 10 │ 2h ago │ │
|
||||
│ ... │ │ ● WORKSTATION-3 │ ACG │ Win 11 │ Online │ │
|
||||
│ │ │ ... │ │
|
||||
│ ▶ By Site │ └──────────────────────────────────────────────┘ │
|
||||
│ ▶ By OS │ │
|
||||
│ ▶ By Tag │ ──────────────── Machine Detail ───────────────── │
|
||||
│ │ Name: PC-FRONT01 │
|
||||
│ ──────────── │ Company: Glaztech Industries │
|
||||
│ Smart Groups │ Site: Phoenix Office │
|
||||
│ ──────────── │ OS: Windows 11 Pro (23H2) │
|
||||
│ Attention 1│ User: jsmith │
|
||||
│ Online 847 IP: 192.168.1.45 / 72.194.62.4 │
|
||||
│ Offline 30d 241 Serial: 8XKJF93 │
|
||||
│ Offline 1yr 238 Last Seen: Now │
|
||||
│ Outdated 516│ │
|
||||
│ Recent 5│ [ Connect ] [ Wake ] [ Tools ▼ ] │
|
||||
│ │ │
|
||||
│ ▶ My Filters │ │
|
||||
│ + New Filter│ │
|
||||
└──────────────┴──────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Left Sidebar - Groupings:**
|
||||
- By Company (with counts, expandable)
|
||||
- By Site
|
||||
- By OS
|
||||
- By Tag
|
||||
- By Device Type
|
||||
- Smart Groups (auto-generated)
|
||||
- Custom Filters (user-created)
|
||||
|
||||
**Main Panel:**
|
||||
- Machine list with status indicators (● online, ○ offline)
|
||||
- Quick info columns (configurable)
|
||||
- Click to select → shows detail panel
|
||||
|
||||
**Right Panel - Machine Detail:**
|
||||
- Full machine info (Session, Device, Network sections)
|
||||
- Action buttons: Connect, Wake (if offline), Tools dropdown
|
||||
|
||||
### Build Tab (Installer Builder)
|
||||
|
||||
**Layout:**
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ Build Installer │
|
||||
├─────────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Name: [ Use Machine Name ▼ ] │
|
||||
│ Company: [ __________________________ ] (autocomplete) │
|
||||
│ Site: [ __________________________ ] (autocomplete) │
|
||||
│ Department: [ __________________________ ] │
|
||||
│ Device Type: [ Workstation ▼ ] │
|
||||
│ Tag: [ __________________________ ] │
|
||||
│ │
|
||||
│ Platform: ○ Windows 64-bit (recommended) │
|
||||
│ ○ Windows 32-bit │
|
||||
│ ○ Linux (coming soon) │
|
||||
│ │
|
||||
│ ───────────────────────────────────────────────────────────────── │
|
||||
│ │
|
||||
│ [ Download EXE ] [ Download MSI ] [ Copy URL ] [ Send Link ] │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Settings Tab
|
||||
|
||||
**Sections:**
|
||||
|
||||
**Appearance:**
|
||||
- Theme: Light / Dark / System
|
||||
- Sidebar: Expanded / Collapsed by default
|
||||
- Default landing tab: Support / Access
|
||||
|
||||
**Groupings:**
|
||||
- Default grouping for Access tab
|
||||
- Show/hide specific smart groups
|
||||
- Configure custom filter defaults
|
||||
|
||||
**Notifications:**
|
||||
- Browser notifications: On/Off
|
||||
- Sound alerts: On/Off
|
||||
- Email alerts for support requests: On/Off
|
||||
|
||||
**Session Defaults:**
|
||||
- Default session visibility: Private / Team / Company
|
||||
- Auto-accept from specific companies
|
||||
|
||||
**Account:**
|
||||
- Change password
|
||||
- Two-factor authentication
|
||||
- API keys (for integrations)
|
||||
|
||||
---
|
||||
|
||||
## Session Types
|
||||
|
||||
### 1. Support Sessions (Attended/One-Time)
|
||||
|
||||
Reference in New Issue
Block a user