What features should we make to deliver a productivity tool for multipc multimonitor work. Copy and paste works, this is a time saving application. Let's save time for anyone who uses this app. List features and other tasks to complete this project and save it all in SUMMARY.md
# EnvoyOS — Multi-PC, Multi-Monitor Productivity Suite
A productivity-focused desktop application built with Godot 4.6. Designed for engineers and knowledge workers who work across multiple PCs and monitors. The core value proposition: **every keystroke, file, and timer is one hop away regardless of which machine you're sitting at.**
---
## Project Highlights
- **All-in-One Toolkit**: AI tools, clipboard sync, file transfer, timers, inventory tracking, video/audio settings, and built-in support documentation in a single interface.
- **Modular Architecture**: Clean separation between logic (`*_engine.gd`) and UI (`*_ui.gd`) ensures scalability and easy maintenance.
- **Cross-PC Sync**: ENet-based multiplayer with AES-256 encrypted clipboard, planned file transfer, and shared state.
- **Multi-Monitor Aware**: DPI scaling, per-monitor layout memory, window tiling, and floating overlays.
- **AI Integration**: Local Ollama-powered code assistant, suggestions, and (planned) transcription.
---
## Why Support?
Developing and maintaining open-source tools takes time, effort, and resources. Your support directly funds:
- New feature development & bug fixes
- Performance optimizations & engine updates
- Documentation & community resources
Every contribution, no matter the size, helps keep this project growing and accessible to everyone. Thank you for your support! ☕✨
---
## Current State
### Completed / Working
| Module | Status |
|--------|--------|
| Clipboard sync (ENet + AES-256) | ✅ Working |
| AI Chat (Ollama streaming) | ✅ Working |
| Markdown Editor (autosave) | ✅ Working |
| VoIP (UDP, VAD, jitter buffer) | 🚧 In Progress |
| Audio settings (volume, mute, mic level) | 🚧 In Progress |
| Timer panel (12 slots, fuel-bar UI) | ✅ Working |
| Inventory panel (12 slots, fuel-bar UI) | 🚧 In Progress |
| Tab management (custom tab bar, session persistence) | ✅ Working |
| OS Grid layout (configurable rows × cols) | 🚧 In Progress |
| Theme builder (bg/font/accent/shade/transparency) | ✅ Working |
| Video settings (FPS, DPI, window mode, position, size) | ✅ Working |
| Web tab browser (paginated Chrome export) | 🚧 In Progress |
| Ship game (2D physics, object pooling) | ✅ Working |
| TOP / Power state tracker | 🚧 In Progress |
| User AFK detection (cross-platform) | ✅ Working |
| Window drag/resize (borderless) | ✅ Working |
| System tray minimization | ✅ Working |
### Missing / Stub (Blocking)
| File | Status | Action Required |
|------|--------|-----------------|
| `system_engine.gd` | Empty | Implement CPU/RAM/disk/GPU stats |
| `system_ui.gd` | Empty | Build system dashboard (CPU graph, RAM bar, disk, AFK) |
| `ai_code_engine.gd` | Empty | Build code-gen/review/explain engine |
| `ai_code_ui.gd` | Empty | Side-by-side code editor + AI panel |
| `music_engine.gd` | `extends Node` only | Implement playback queue, seeking, shuffle |
### Known Bugs / Technical Debt
| Issue | Location | Fix |
|-------|----------|-----|
| `grid_engine.gd` references `clipboard_engine.is_connected_to_network` (doesn't exist) | `grid_engine.gd` line ~230 | Change to `clipboard_engine.can_broadcast` / `clipboard_engine.is_connecting` |
| `tab_engine.gd` and `top_engine.gd` are 95% duplicates | Both files | Merge into one class or have TopEngine extend TabEngine |
| No input validation on VoIP port field | `voip_ui.gd` | Add `is_valid_int()` check before `int()` cast |
| Timer/Inventory `hh:mm:ss` parse has no overflow guard | `time_ui.gd`, `inventory_ui.gd` | Validate h≤23, m≤59, s≤59 before arithmetic |
| Music/Media tab is a dead tab | `main_engine.gd` ALL_TABS | Either implement or remove from list |
| No CI / automated testing | Repo root | Add GitHub Actions with `godot --headless --check-only` |
---
## Feature Roadmap
### Phase 1 — Fix & Stabilise (Weeks 1–2)
| # | Task | Details |
|---|------|---------|
| 1.1 | Implement `system_engine.gd` | CPU %, RAM used/total, disk usage, GPU load (platform-specific), network throughput. Emit signals for UI. |
| 1.2 | Implement `system_ui.gd` | Dashboard with live-updating gauges, AFK timer (reuse `user_active_engine.gd`), process list (optional). |
| 1.3 | Fix `grid_engine.gd` broken refs | Replace `is_connected_to_network` → `can_broadcast`, `is_reconnecting` → `is_connecting`. |
| 1.4 | Merge `tab_engine` / `top_engine` | One base class, reduce duplication. |
| 1.5 | Add input validation | VoIP port, Timer/Inventory time parsing, all user-facing number fields. |
| 1.6 | Implement or remove Music tab | Either build `music_engine.gd` + wire `music_ui.gd`, or remove "Media" from ALL_TABS. |
| 1.7 | Add unit tests (GUT) | ThemeSerializer round-trip, TabEngine CRUD, TimeEngine tick, InventoryEngine expiry, ClipboardEngine encrypt/decrypt. |
| 1.8 | CI pipeline | GitHub Actions: `godot --headless --check-only` + GUT test run on push. |
### Phase 2 — Multi-PC Power Features (Weeks 3–6)
| # | Task | Details |
|---|------|---------|
| 2.1 | **Clipboard History Ring Buffer** | Store last 100 items (text + images) with timestamp, source PC, app name. Global hotkey `Ctrl+Shift+V` opens searchable picker across all peers. |
| 2.2 | **Snippet Library** | Save frequently-used text blocks (code snippets, email templates, API keys). Sync to all PCs. One-click paste. |
| 2.3 | **Cross-PC Text Search** | Type a keyword → search all peers' clipboard history simultaneously via RPC. |
| 2.4 | **P2P File Transfer** | Drag file onto Network tab → AES-256 encrypt → chunked ENet stream → progress bar → destination PC. Reuse existing crypto. |
| 2.5 | **Shared Workspace Folder** | Synced directory (chunked transfer). Edit on PC-A, open on PC-B. |
| 2.6 | **Shared Kanban Board** | To-Do / In-Progress / Done. RPC-synced in real-time. Cards: title, tags, due date, assigned PC. Reuse `clipboard_engine` RPC pattern. |
| 2.7 | **Notification Mirroring** | System/app notifications broadcast to all peers. "PC-A idle > 10 min" → toast on PC-B. Timer expiry → alert all. |
| 2.8 | **Command Palette (`Ctrl+K`)** | Fuzzy-search all actions: "open tab", "change theme", "start timer 3", "connect to PC-B", "mute audio". One keystroke to do anything. |
| 2.9 | **Global Hotkeys (OS-level)** | Register via native helper: clipboard history, screenshot, quick paste. Works even when app is unfocused. |
| 2.10 | **Offline Queue** | When disconnected, queue clipboard/file/task changes. Auto-sync on reconnect (extend existing reconnection logic). |
### Phase 3 — Multi-Monitor & AI (Weeks 7–10)
| # | Task | Details |
|---|------|---------|
| 3.1 | **Monitor Layout Memory** | Detect monitors, save per-monitor window positions/sizes per panel. Restore on reconnect. `user://monitor_layout.json`. |
| 3.2 | **Floating Overlays** | Always-on-top widgets: timer countdown, clipboard dock (last 5 items), AFK indicator glow. Assignable to specific monitor. |
| 3.3 | **Window Tiling / Snapping** | `Ctrl+1..4` → quadrant. `Ctrl+Shift+Left/Right` → half. Save/load named layouts. `Ctrl+L` to cycle. |
| 3.4 | **Per-Monitor Contrast** | Each monitor can have different shade/brightness. Auto-adjust based on ambient light or time-of-day. |
| 3.5 | **AI Code Engine** | `ai_code_engine.gd`: Explain selected code, Refactor + diff view, Generate from prompt, Review PR diff. Reuse Ollama streaming client. |
| 3.6 | **AI Code UI** | `ai_code_ui.gd`: Side-by-side editor + AI response panel. Syntax highlighting, diff view, copy-to-clipboard. |
| 3.7 | **AI Meeting Notes** | Stream mic audio → local Whisper (Ollama-compatible) → bullet-point summary → sync to all peers. |
| 3.8 | **Cross-PC Input Mirroring (KVM)** | Type on PC-A → keystrokes stream to PC-B. Mouse delta streaming (relative, not absolute). Per-peer toggle. |
| 3.9 | **AI Suggestion Engine** | Wire existing "Suggestion" prompt field to a "Smart Suggestions" button on clipboard tab. 3 context-aware actions. |
### Phase 4 — Polish & Release (Weeks 11–12)
| # | Task | Details |
|---|------|---------|
| 4.1 | **Auto-start with OS** | Registry key (Win), `.desktop` file (Linux), `LaunchAgent` (macOS). |
| 4.2 | **System Tray Menu** | "Show", "Mute", "Disconnect", "Open Timer", "Open Kanban", "Exit". |
| 4.3 | **Backup / Restore** | One-click export all `user://` settings to `.zip`. Import on new PC. |
| 4.4 | **Accessibility Pass** | High-contrast mode, UI font scaling, screen-reader labels on all controls. |
| 4.5 | **Session Replay** | Record 10s UI interaction replay as JSON for bug reports. |
| 4.6 | **User Documentation** | Expand SUMMARY.md → full user manual. Keyboard shortcut reference. Setup guide per OS. |
| 4.7 | **Export / Packaging** | `godot --export-release` for Windows / Linux / macOS. In-app updater (optional). |
### Phase 5 — Differentiators (Ongoing)
| # | Feature | Description |
|---|---------|-------------|
| 5.1 | Screen recording per monitor | GPU capture, "record this monitor" toggle, export to file. |
| 5.2 | Screenshot + AI annotate | Capture region → send to Ollama → written description. |
| 5.3 | Pomodoro focus mode | 25/5 preset. Auto-pauses AI streaming and network sync during focus. |
| 5.4 | Dark-light auto-switch | Theme tied to system clock (dark after 18:00). |
| 5.5 | Peer presence bar | Avatar strip showing online PCs (reuse `multiplayer.get_peers()`). |
| 5.6 | Voice commands | "Hey, paste the last email" → VAD → match snippet → paste. |
| 5.7 | Shared timer countdown | Timer on PC-A shows live on PC-B. Sync `end_timestamp` over network. |
| 5.8 | Calendar view | Timers/inventory deadlines on a mini monthly calendar. |
| 5.9 | CSV export | Timer/inventory state as CSV for spreadsheet tracking. |
| 5.10 | Low-stock alerts | Inventory item below threshold → red flag on all PCs. |
---
## Architecture Notes
```
┌─────────────────────────────────────────────────────────────────────┐
│ MainUI / GridUI (Root) │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ TabBar / Grid Toolbar │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ TabContainer / Content Area │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ AI Chat │ │ Editor │ │ Network │ │ Timer │ ... │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ Engines (Nodes) │ │
│ │ clipboard_engine │ ai_engine │ video_engine │ audio_engine │ │
│ │ mic_engine │ web_engine │ time_engine │ inventory_engine │ │
│ │ ui_engine │ top_engine │ tab_engine │ voip_engine │ │
│ └───────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
Network Layer: ENet (MultiplayerPeer) + AES-256 (AESContext)
Persistence: ConfigFile (*.cfg) + JSON (*.json) + CSV (timers/inventory)
Theme: ThemeSerializer (compressed JSON, hex colors, FastLZ)
```
---
## Supported Platforms
| OS | Clipboard | Audio | Idle Detection | Network |
|----|-----------|-------|----------------|---------|
| Windows | ✅ | WASAPI | GetLastInputInfo (P/Invoke) | ENet |
| macOS | ✅ | CoreAudio | IOHIDSystem (ioreg) | ENet |
| Linux | ✅ | PipeWire/PulseAudio | D-Bus (Mutter/KWin) / xprintidle | ENet |
---
## Keyboard Shortcuts (Planned)
| Shortcut | Action |
|----------|--------|
| `Ctrl+K` | Command Palette |
| `Ctrl+Shift+V` | Clipboard History (cross-PC) |
| `Ctrl+1..4` | Snap to quadrant |
| `Ctrl+Shift+Left/Right` | Snap to half |
| `Ctrl+L` | Cycle saved layouts |
| `Ctrl+W` / `close_tab` | Close current tab |
| `Ctrl+T` / `new_tab` | New tab |
| `Ctrl+Tab` / `Ctrl+Shift+Tab` | Next / Previous tab |
---
## Why This Saves Time
| Pain Point | Solution | Time Saved |
|------------|----------|------------|
| Copy on PC-A, walk to PC-B, paste | Cross-PC clipboard sync | 30s–2min per transfer |
| Re-type same email/snippet on each machine | Snippet library + one-click paste | 1–5min per repetition |
| "Where did I save that file?" | Shared workspace + cross-PC search | 5–15min per search |
| Set up different configs per monitor | Monitor layout memory + auto-restore | 5–10min per session |
| Explain code to colleague on another screen | AI explain + share to all PCs | 5–10min per explanation |
| Track physical inventory across desk drawers | Shared inventory with expiry alerts | Ongoing |
| "Did I finish that task?" | Shared Kanban visible on all PCs | 2–5min per check |
| Context-switch between 4 monitors on 2 PCs | Window tiling + input mirroring | 1–3min per switch |
---
## Contribution Guidelines
1. Read `AIFIX.md` for Godot 4.6 API corrections before editing.
2. Follow the `*_engine.gd` / `*_ui.gd` naming convention.
3. All new UI must handle tab-switch cleanup (check for existing wrapper before adding).
4. Network changes must go through `clipboard_engine.gd` RPC pattern (or the new `MultiplayerChannel` helper).
5. Theme changes must flow through `ui_engine.gd` → `MainUI.apply_full_theme()`.
6. Run tests: `godot --headless -s res://addons/gut/gut_cmdln.gd -gdir=res://tests`
---
## License & Attribution
See repository for license file. Built with ❤️ and too much coffee. ☕
EnvoyOS — Multi-PC, Multi-Monitor Productivity Suite
A productivity-focused desktop application built with Godot 4.6. Designed for engineers and knowledge workers who work across multiple PCs and monitors. The core value proposition: every keystroke, file, and timer is one hop away regardless of which machine you're sitting at.
Project Highlights
All-in-One Toolkit: AI tools, clipboard sync, file transfer, timers, inventory tracking, video/audio settings, and built-in support documentation in a single interface.
Modular Architecture: Clean separation between logic (*_engine.gd) and UI (*_ui.gd) ensures scalability and easy maintenance.
Cross-PC Sync: ENet-based multiplayer with AES-256 encrypted clipboard, planned file transfer, and shared state.