All fixes for VM-x64 kiosk issues are in place:
- Chromium sandbox: --no-sandbox flag
- Unix socket: Changed to TCP port 8001
- Menu endpoint: Added public /api/v1/hub/public/menu
- Pydantic 1.x: Optional[HTTPAuthorizationCredentials] syntax
Closes#34
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Menu/sidebar "Invalid menu data" error is now FIXED
- Added resolution steps and explanation
- Reference commit b2c9f01 for the fix
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add /api/v1/hub/public/menu endpoint (no auth required)
- Update sidebar.js to use public menu endpoint
- Resolves "Failed to load menu: Invalid menu data" error
- The protected /api/v1/hub/menu endpoint still requires JWT
The WebUI sidebar needs to load the menu before user authentication.
This adds a public version of the menu endpoint that returns the
same data without requiring a JWT token.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Eye Remote Interactive UI enhancements:
- TTY mode: Serial terminal display from /dev/ttyGS0
- Flash mode: Progress bar with speed/ETA for USB transfers
- Auth mode: QR code generation for backup authentication
- Mode detection via /etc/secubox/gadget-mode
Hub service VM compatibility fix:
- Changed from Unix socket to TCP port 8001
- Updated nginx configs for TCP proxy
- Fixes 502 errors in VirtualBox VMs
Also includes:
- FAQ/Troubleshooting wiki page with GitHub issue links
- Kiosk launcher --no-sandbox fix for VMs
- Profile Generator GUI mockup
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The require_jwt dependency used Python 3.10+ union syntax
(HTTPAuthorizationCredentials | None) with Annotated, which
causes FastAPI 0.92/Pydantic 1.10 to incorrectly require a
request body on GET endpoints.
Changed to Optional[HTTPAuthorizationCredentials] = Depends(_bearer)
which is compatible with older FastAPI/Pydantic versions.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add CORS headers to nginx secubox-proxy.conf for cross-origin API requests
- Fix login.html endpoints: /auth/login -> /login
- Upgrade Python deps in build scripts: pydantic>=2.0, fastapi>=0.100, uvicorn>=0.25
- Add pip upgrade in secubox-core postinst for Debian bookworm compatibility
- Fix display/__init__.py to import existing modules only
Fixes authentication and API issues in VBox and ebin builds.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Each colored arc now points toward its corresponding icon
- Fixed green/purple and red/yellow position mapping
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Icons in circle: rouge, orange, jaune, vert, bleu, violet
- Color fixes: BOOT=red, AUTH=orange, WALL=yellow
- Direct radar targeting sync (no offset)
- Complementary colors opposite each other
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove old display modes (mode_dashboard, mode_flash, mode_gateway, mode_local, renderer)
- Add display_manager.py with boot/halt splash screens
- Update fallback_manager.py with double-buffered API fetch
- Fix icon/radar alignment (-1 offset)
- Enable ONLINE mode with local metrics fallback when API unavailable
- Add logo_fallback.py for endless animated logo
- Bump version to 2.3.0
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fetch metrics from SecuBox gateway API (OTG/WiFi fallback)
- Radar sweep targets icons - highlights current module
- Display specific metrics for targeted module in center
- OFFLINE: single centered icon cycling with its metric value
- ONLINE: all icons with targeted one highlighted + metrics
- Module-specific metrics mapping (CPU/MEM/DISK/LOAD/TEMP/NET)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use 48px PNG icons (double size) for better visibility
- Icons positioned further from center (r=62)
- OFFLINE mode: same radar with single cycling icon (2s interval)
- ONLINE mode: all 6 icons displayed in hexagon
- Remove central texts (SECUBOX, time, status)
- Add cursor hiding on framebuffer console
- Tube-style metric arcs (darker outside, lighter inside)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Thinner rings (14px) with larger center area
- Tube effect: darker outside, lighter inside highlight
- Load PNG icons (22px) for center and cube faces
- Radar sweep colored by crossed metric rings
- Static icon positions in ONLINE mode (no rotation)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove all shadow effects for CPU efficiency
- Remove garbage dots at arc endpoints
- Remove alpha transparency (causes rendering issues)
- Simplify sweep line rendering
- Add metric-blended color to radar sweep
- Clean center hub and icon rendering
- Keep dice for OFFLINE, icons for ONLINE modes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Display improvements:
- Real Pi Zero metrics (CPU, MEM, DISK, LOAD, TEMP, NET)
- Logarithmic scale for LOAD and NETWORK metrics
- 2.5D depth effect with shadows and highlights
- Sweep line acts as dynamic moving light source
- Shadows cast opposite to sweep direction
- Specular highlights intensify when facing light
- Rainbow clock dots with 3D sphere effect
- Inset center hub with glossy edge
- Status LED with glass reflection
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Display priority system:
1. First boot sensor - touchpad noise calibration
2. Fallback manager - main OFFLINE/ONLINE dashboard
3. Logo fallback - endless breathing phoenix animation
Logo is the ultimate fallback when all dashboards stop.
Display manager auto-restarts crashed displays.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Display system for Pi Zero Eye Remote (HyperPixel 2.1 Round 480x480):
Splash Screen (splash.py):
- Animated phoenix logo for boot/halt/start/reboot states
- Pulsing glow effects with fire colors
- Progress indicator ring with rotating dots
- Fallback phoenix symbol if logo image missing
Fallback Display Manager (fallback_manager.py):
- Connection state detection (OTG 10.55.0.1, WiFi secubox.local)
- Four modes: OFFLINE, CONNECTING, ONLINE, COMMUNICATING
- Local metrics radar with 6 concentric rings
- 3D rotating cube with module icons when connected
- Rainbow sweep line animation
Touch Analysis Tools:
- touch_analyzer.py: Noise pattern analysis (Y-axis oscillation at stable X)
- touch_calibrate.py: Corner target display for manual calibration
- touch_filter.py: X-stable noise filtering
Radar Variants:
- radar_flashy.py: Vibrant colors with 3D cube
- radar_concentric.py: Balanced metric arcs centered at 12 o'clock
- radar_rainbow.py: Rainbow colorization with sweep
- radar_full.py: Complete feature set
Also includes:
- Hardware Smart-Strip module specs (SBX-STR-01)
- Host configuration for USB OTG network
- Systemd service for USB auto-mode
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
HyperPixel 2.1 Round uses 32-bit BGRA framebuffer, not 16-bit RGB565.
The renderer now auto-detects the bits-per-pixel and converts:
- 32 bpp: BGRA32 (HyperPixel DPI displays)
- 24 bpp: BGR
- 16 bpp: RGB565
This fixes the "two small circles" display bug.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Build script improvements:
- Copy agent/display/, agent/secubox/, agent/system/, agent/web/
subdirectories (were missing, causing import errors)
- Add pip install for httpx, fastapi, uvicorn, websockets
(not available in Debian repos)
- Disable old fb-dashboard service (use secubox-eye-agent instead)
- Add vt.global_cursor_default=0 to cmdline.txt to hide cursor
(keeps tty for console access)
This fixes the agent crash loop on first boot.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Eye Remote is a standalone gadget addon - it should not install
SecuBox packages. It connects to SecuBox via USB OTG and displays
metrics from the main appliance.
Changes:
- Remove entire SecuBox package slipstream section (was erroneously
trying to install amd64 packages on armhf Pi Zero)
- Add APT/dpkg cleanup before package installation to fix corruption
from previous failed builds
- Fix removes/cleans corrupted apt lists and dpkg status
This fixes GitHub Actions builds that were failing due to APT errors
in the QEMU chroot environment.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix glob pattern in bash test (glob in [[ -f ]] doesn't work correctly)
- Use find command instead of glob for reliable kernel detection
- Add fallback to extract ARM64 kernel from live USB image if not in rootfs
- Add verification step in GitHub Actions to check boot files after build
- Sort kernel files by version to get latest when multiple exist
Fixes missing vmlinuz/Image on multiboot USB issue.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Download latest multiboot image from GitHub releases
- SHA256 checksum verification
- Flash to USB with progress and confirmation
- Supports --list, --download, --release, --force options
- Document in scripts/README.md
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Device-Categories.md documenting AUTH→MESH Hamiltonian path
- Document color palette, HID mapping, I²C registers
- Update _Sidebar.md with new WALL — Hardware section
- Link to Smart-Strip and Eye-Remote device pages
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
python3-cryptography and python3-jose fail during debootstrap due
to complex dependencies. Moving to post-debootstrap apt-get install.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
python3-zmq has complex dependencies that fail during debootstrap.
Moving it to post-debootstrap apt-get installation resolves this.
Also removed from INCLUDE_PKGS in build-image.sh - installed via pip.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The 'arping' and 'iputils-arping' packages conflict with each other.
Using iputils-arping which provides the arping command needed by
the network fallback scripts.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Install live-boot package and rebuild initramfs with live-boot scripts
- Create squashfs filesystem (878MB) on data partition sda4
- Update boot.scr with live boot parameters (boot=live, toram)
- Fix wiki sidebar links from [[Page|Display]] to [Display](Page)
- Add Eye-Remote wiki page documentation
- Add sync-wiki.sh script for wiki repository sync
- Add patch-multiboot-efi.sh for post-build EFI patching
Partition layout:
- sda1 (512MB): EFI with kernel, initrd, dtbs, boot.scr
- sda2 (3GB): ARM64 rootfs reference
- sda3 (3GB): x86 rootfs for VirtualBox/QEMU
- sda4 (9.5GB): Data + /live/filesystem.squashfs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add announcement banner on wiki home for v2.2.3 multiboot release
- Create wiki/Multiboot.md with full multiboot documentation
- Add Multiboot and Eye Remote links to sidebar navigation
- Update sidebar version to v2.2.3
- Document Eye Remote Pi Zero as USB gadget for ESPRESSObin boot
- Add partition layout, boot flow, and troubleshooting docs
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed [[ -z "$VAR" ]] && err to if/then/fi pattern
- This prevents early exit when condition is false with set -e
- Removed --minimal flag to install full SecuBox packages
Note: SecuBox packages on AMD64 still require apt.secubox.in SSL fix
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The auth router has routes like /login, so needs prefix="/auth"
to create proper /auth/login endpoint.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- postinst creates /etc/haproxy if haproxy package not installed
- Remove RuntimeDirectory=haproxy to avoid NAMESPACE errors
- Fixes systemd namespace setup failure when haproxy not present
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Move directory creation from import-time to startup event
- Add try/except to handle permission errors gracefully
- Create haproxy data directories in postinst
- Increase RestartSec from 5s to 30s
- Add StartLimitBurst to prevent rapid restart spam
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Extended mv88e6xxx blacklist to include mv88e6085 subdriver and added
initcall_blacklist for built-in driver scenarios. Fixes detection loop
on ESPRESSObin v7 during USB boot via Eye Remote.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Home.md: SecuBox OS as main product with full documentation
- _Sidebar.md: Eye Remote moved to "Addons" section
- Eye-Remote.md: Marked as optional addon, not main feature
The wiki now presents SecuBox OS as the core product with:
- Complete module stack (125 modules)
- ARM64 + x86_64 support
- Security features (firewall, IDS, WAF, DPI)
- Eye Remote as optional monitoring addon
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>