docs: migrate all gururmm session logs to claudetools session-logs/
This commit is contained in:
122
session-logs/2025-12-20-session.md
Normal file
122
session-logs/2025-12-20-session.md
Normal file
@@ -0,0 +1,122 @@
|
||||
# Session Log: GuruRMM v0.4.0 Build with Tray Icon
|
||||
**Date:** 2025-12-20
|
||||
**Focus:** Tray icon implementation, cross-platform builds
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
Built GuruRMM v0.4.0 with new system tray application for Windows.
|
||||
|
||||
### Completed
|
||||
|
||||
1. **Tray Icon Implementation** (from previous session)
|
||||
- IPC infrastructure in `agent/src/ipc.rs` (Named Pipe for Windows)
|
||||
- TrayPolicy struct for admin-controlled visibility
|
||||
- Tray app crate with menu, icon states, IPC client
|
||||
- SVG icon assets (green/yellow/red/gray states)
|
||||
|
||||
2. **Compilation Fixes**
|
||||
- Fixed `device_id::get_device_id()` return type (String, not Result)
|
||||
- Added `TrayPolicyUpdate` match arm in WebSocket handler
|
||||
- Added `last_checkin` and `tray_policy` fields to Windows service AppState
|
||||
- Fixed tray-icon API change (`set_menu` returns unit now)
|
||||
|
||||
3. **Cross-Platform Builds**
|
||||
- Installed mingw-w64 via Homebrew on Mac
|
||||
- Added `x86_64-pc-windows-gnu` target to Rust
|
||||
- Configured cargo for Windows cross-compilation
|
||||
|
||||
### Build Results (v0.4.0)
|
||||
|
||||
| Component | Target | Size | Location |
|
||||
|-----------|--------|------|----------|
|
||||
| Agent | Linux x86_64 | 3.3 MB | Build server: `~/gururmm/agent/target/release/gururmm-agent` |
|
||||
| Agent | Windows x64 | 2.8 MB | Local: `agent/target/x86_64-pc-windows-gnu/release/gururmm-agent.exe` |
|
||||
| Tray App | Windows x64 | 1.6 MB | Local: `tray/target/x86_64-pc-windows-gnu/release/gururmm-tray.exe` |
|
||||
|
||||
---
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
┌─────────────────┐ Policy ┌─────────────────┐
|
||||
│ RMM Server │ ──────────────► │ Agent Service │
|
||||
│ (WebSocket) │ │ (Background) │
|
||||
└─────────────────┘ └────────┬────────┘
|
||||
│ IPC
|
||||
│ (Named Pipe)
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ Tray App │
|
||||
│ (User Session) │
|
||||
└─────────────────┘
|
||||
```
|
||||
|
||||
- Named pipe: `\\.\pipe\gururmm-agent`
|
||||
- Agent runs as SYSTEM, tray runs in user session
|
||||
- Policy controls: visibility, menu items, allowed actions
|
||||
|
||||
---
|
||||
|
||||
## Key Files
|
||||
|
||||
### New Files
|
||||
- `agent/src/ipc.rs` - Named pipe IPC server, TrayPolicy, AgentStatus
|
||||
- `tray/Cargo.toml` - Tray app crate config
|
||||
- `tray/src/main.rs` - Entry point
|
||||
- `tray/src/tray.rs` - Tray icon management
|
||||
- `tray/src/menu.rs` - Dynamic menu building
|
||||
- `tray/src/ipc.rs` - Named pipe client
|
||||
- `assets/icons/*.svg` - Tray icon states
|
||||
|
||||
### Modified Files
|
||||
- `agent/Cargo.toml` - Version 0.4.0, Windows IPC features
|
||||
- `agent/src/main.rs` - IPC server integration, AppState fields
|
||||
- `agent/src/service.rs` - Added last_checkin, tray_policy to AppState
|
||||
- `agent/src/transport/mod.rs` - Added TrayPolicyUpdate to ServerMessage
|
||||
- `agent/src/transport/websocket.rs` - Handle TrayPolicyUpdate
|
||||
|
||||
---
|
||||
|
||||
## Build Server (172.16.3.30)
|
||||
|
||||
- **SSH:** `guru@172.16.3.30` or `root@172.16.3.30`
|
||||
- **Rust:** Installed via rustup
|
||||
- **Note:** Requires sudo for apt (password needed)
|
||||
- **Linux binary:** `~/gururmm/agent/target/release/gururmm-agent`
|
||||
|
||||
### Cross-Compile from Mac
|
||||
```bash
|
||||
# Windows agent
|
||||
cd agent && cargo build --release --target x86_64-pc-windows-gnu
|
||||
|
||||
# Windows tray
|
||||
cd tray && cargo build --release --target x86_64-pc-windows-gnu
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Pending Tasks
|
||||
|
||||
1. **Deploy Windows binaries** to downloads server
|
||||
2. **Implement tray launcher** in agent (auto-launch in user sessions)
|
||||
3. **Add TrayPolicy to server** data model and site settings API
|
||||
4. **Dashboard UI** for tray policy management
|
||||
5. **Mac/Linux tray support** (Unix domain socket instead of named pipe)
|
||||
|
||||
---
|
||||
|
||||
## Credentials Reference
|
||||
|
||||
### Build Server (172.16.3.30)
|
||||
- SSH: guru/root with key
|
||||
- PostgreSQL: gururmm / gururmm / 43617ebf7eb242e814ca9988cc4df5ad
|
||||
|
||||
### Site Code
|
||||
- Main Office: `SWIFT-CLOUD-6910`
|
||||
|
||||
### URLs
|
||||
- Dashboard: https://rmm-api.azcomputerguru.com/
|
||||
- API: https://rmm-api.azcomputerguru.com/api/
|
||||
- WebSocket: wss://rmm-api.azcomputerguru.com/ws
|
||||
Reference in New Issue
Block a user