Commit graph

13 commits

Author SHA1 Message Date
roberts
22b87a3427 Fix clipboard sync: install xclip, poll both X11 selections, add toast UI
- Add xclip to install.sh dependencies (was missing entirely — root cause)
- Poll both CLIPBOARD and PRIMARY X11 selections (Electron button-click
  copies often use PRIMARY)
- Add xsel as fallback if xclip unavailable
- Log xclip errors with stderr instead of silently swallowing
- Add startup diagnostic test for clipboard connectivity
- Replace silent clipboard write with visible toast notification:
  on HTTPS auto-copies and shows brief "Copied" confirmation,
  on HTTP shows "Click to copy" button (user gesture enables clipboard)
- Toast auto-dismisses after 8s, styled to match Atlus theme

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 01:50:13 -05:00
roberts
12c10d69f0 Maximize GUI app window and fix input forwarding
- After window discovery, activate, move to (0,0), and resize to
  fill the 1280x1024 Xvfb display so the app is fullscreen
- Add windowactivate --sync before click events so the window
  receives focus in X11 before mouse input
- Add windowfocus --sync before key events so keyboard input
  goes to the correct window
- Make canvas fill the entire app panel area (width/height 100%)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 01:09:58 -05:00
roberts
3c295ba302 Replace file manager toolbar buttons with hamburger menu
Removed individual delete, upload, hidden files, and refresh buttons.
Added a hamburger (☰) menu with:
- Select: toggles selection mode with checkboxes for multi-select
- Delete: enabled only when files are selected
- Upload: file upload
- Refresh: reload current directory
- Show Hidden Files: toggles dotfile visibility, persisted via localStorage

Toolbar now only has New File, New Folder, and the hamburger menu for a
cleaner interface.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 00:48:33 -05:00
roberts
11c4817497 Add show/hide hidden files toggle to file manager
Toolbar button (·) toggles visibility of dotfiles. Hidden by default,
click to show. Active state highlighted with accent color. Filtering
happens client-side so no backend changes needed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 00:39:26 -05:00
roberts
8d48e3eeb8 App exit diagnostics, desktop file discovery, WiFi wpa_supplicant fix
- Capture stderr from GUI apps and show meaningful exit reasons (signal names,
  error messages) instead of generic "Application exited"
- Add /api/display/discover-apps endpoint that scans .desktop files for
  installed GUI apps, replacing manual-only app configuration
- Settings > Applications now shows discoverable apps with one-click Add,
  with manual form available as fallback
- Fix WiFi: start wpa_supplicant before bringing interface up, handle rfkill
  blocks, add retry logic and error messages to scan results
- Fix WiFi scan frontend bug: response is {networks:[...]} not a bare array
- Add iw and wpasupplicant to install.sh dependencies

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 00:03:13 -05:00
roberts
23e4906d08 Replace panel services with docked apps, add autostart and update scanner settings
Panel: SERVICES section becomes APPLICATIONS — shows configured GUI apps with
status dots, launch/stop controls, and "+ Add" button linking to Settings.

Backend: DisplayManager.autostart_apps() launches autostart-enabled GUI apps on
service startup (always-on desktop session). Lifespan calls it before yield.

Settings: new Applications section for managing GUI apps (add/remove/autostart
toggle). General section gains update scanner interval + enable/disable toggle.
Config adds update_check_enabled and update_check_interval fields.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 23:40:44 -05:00
roberts
06e958f488 Add WiFi SSID/password support and replace DHCP/Static toggle with radio buttons
Backend: wireless interface detection, wpa_supplicant config writing, WiFi scan
endpoint via iw/iwlist. Frontend: segmented radio selector for DHCP/Static (fixes
text overflow behind right panel), SSID/password fields for wireless interfaces
with network scan dropdown, Apply handler sends WiFi credentials.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 23:21:47 -05:00
roberts
a73b515258 Add native GUI app support via per-window frame streaming
Each configured GUI app (e.g. Nextcloud) gets its own dock icon and
opens as a regular Atlus tab. Under the hood: Xvfb virtual display,
ImageMagick captures individual window pixmaps as JPEG, streams over
WebSocket to a canvas element, with xdotool forwarding mouse/keyboard
input back to the X11 window. Apps persist in background when tab is
closed, and streaming pauses when no viewers are attached.

New files: backend/display.py (DisplayManager + ManagedGuiApp),
backend/routers/display.py (WebSocket + REST), frontend display.js/css.
Config: gui_apps array in settings for registered applications.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 23:09:15 -05:00
roberts
6b407a056b Remove X11/noVNC display feature entirely
The Xvfb + x11vnc + websockify + noVNC approach defeats the purpose
of a native web desktop environment. Removed all related backend
(display.py, routers/display.py), frontend (xdisplay.js/css, panel
tray polling), and installer (X11 deps) code.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 22:45:18 -05:00
roberts
a88e7bbb06 Fixed polling agent and status bars. 2026-03-14 22:41:00 -05:00
roberts
9c402e3726 Add package manager, text editor, file manager enhancements, auto-updates
Package Manager (new app):
- Search, install, remove apt packages via web UI
- Backend: apt-cache/dpkg-query/apt-get wrapper with input validation
- Frontend: searchable package list with expandable detail panels

Text Editor / File Viewer (new app):
- Opens from file manager, supports text editing with line numbers
- Image preview via authenticated blob URLs
- Binary file info display with download option
- Ctrl+S / Cmd+S save, dirty tracking, tab key support

File Manager enhancements:
- Toolbar: New File, New Folder, Upload, Delete, Refresh buttons
- Context menu: New File/Folder options, Open in Editor
- Double-click files to open in editor
- Right-click empty area for create options

Auto-update notification:
- Backend checks git repo for new commits (fetch + compare)
- One-click update: git pull + pip install + service restart
- Toast notification in right panel with dismiss option
- Polls every 30 minutes, retry logic for server restart

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 19:13:13 -05:00
roberts
4631ebc07a Add network configuration to Settings (DHCP/static, WiFi scan/connect)
Full NetworkManager (nmcli) backed network management:
- Backend: new network.py router with endpoints for device status,
  connection config, IPv4 DHCP/static toggle, WiFi scan/connect/disconnect
- Frontend: interactive network settings UI with per-device config,
  WiFi network list with signal strength, inline password input
- Graceful 503 fallback to read-only psutil view when nmcli unavailable

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 18:29:35 -05:00
roberts
f9743bb29a Initial commit — Atlus web desktop environment for SBCs
Full-stack implementation: FastAPI backend with PAM auth, WebSocket
stats/terminal, and vanilla JS frontend with tiling desktop shell.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-14 16:53:46 -05:00