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]
|
[build]
|
||||||
target = "x86_64-pc-windows-msvc"
|
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"
|
b64 = "build --release --target x86_64-pc-windows-msvc"
|
||||||
# Build 32-bit release
|
# Build 32-bit release
|
||||||
b32 = "build --release --target i686-pc-windows-msvc"
|
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]
|
[target.x86_64-pc-windows-msvc]
|
||||||
rustflags = ["-C", "target-feature=+crt-static"]
|
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
|
## Session Types
|
||||||
|
|
||||||
### 1. Support Sessions (Attended/One-Time)
|
### 1. Support Sessions (Attended/One-Time)
|
||||||
|
|||||||
Reference in New Issue
Block a user