Skip to content

Releases: project-SIMPLE/simple.webplatform

Webplatform v4.0

Choose a tag to compare

@github-actions github-actions released this 04 Aug 09:13
1d116cf
Screenshot From 2026-08-04 16-31-14

Easier setup

  • Single application file: the Windows, macOS, and Linux versions are now each a single self-contained program — no separate runtime or extra files to install alongside it.
    • First-run setup wizard: if the platform starts without a configuration file, it now walks you through setup step-by-step in the terminal instead of requiring you to hand-edit config files.
  • Auto-detect headsets on the local network when running from the M2L2 classroom kit, instead of entering IP addresses manually.

Headset & session experience

  • Meta Quest headsets now stay locked in VR (XR) mode during sessions — the "Loft" virtual universe that could pull students out of the passthrough is disabled outside the VR game.
  • Headset software updates are now compared by their actual installed version, so the platform won't skip or force unnecessary re-installs.
  • Fixed several situations where a session could get stuck or crash:
    • the app freezing or crashing at first launch,
    • the interface not returning to the session view when GAMA closes an experiment,
    • a simulation trying to auto-restart after it had already started,
    • the app becoming unresponsive during startup.
  • More reliable connection to GAMA simulations, including a fix for a bug where the packaged (installed) version of the app could silently fail to send commands to GAMA.
  • Network scanning for devices is now faster — it stops searching as soon as it finds a match instead of always scanning the full range.

Interface

Management view Streaming view
image Emtpy Streaming view
  • Added keyboard navigation for selecting simulations.
  • Each virtual unit (VU) now gets a consistent, stable color instead of a random one that changed on every page refresh.
  • Replaced the low-resolution, pixelated SIMPLE logo with a proper high-quality version, also used as the browser tab icon.
  • The web interface now automatically reconnects if its connection drops, instead of getting stuck.
  • Fixed a crash when opening the live streaming view, and other small interface bugs (missing list items, broken pause/play behavior).

Language support

  • Added Lao and Khmer translations.
  • The interface now automatically matches your browser's language when possible (or fallback to english).
  • Fixed incorrect Khmer and Vietnamese translations, and made sure every language has complete text (no missing labels).

Reliability

  • Fixed multiple crash scenarios on Windows related to shutdown and network commands.
  • Improved compatibility with GAMA running on Windows.
  • General stability and bug-fixing pass across the interface and backend, plus expanded automated testing behind the scenes to catch regressions earlier.
  • Validating platform's stability over +350 tests to ensure everything works properly on every OS covering webplatform, Android connection and management, GAMA integration, streaming, etc
 Test Files  48 passed | 4 skipped (52)
      Tests  354 passed | 12 skipped (366)
   Start at  16:42:18
   Duration  24.49s (transform 5.25s, setup 4.24s, import 13.39s, tests 24.83s, environment 19.84s)

Download the binary and run it

Tip

If the application doesn't run in a terminal, make the binary executable with this command first :

chmod +x ./simple-macos-v4
./simple-macos-v4

Webplatform v3.0 - Guillaume

Choose a tag to compare

@RoiArthurB RoiArthurB released this 22 Apr 08:20
de1ac2b
Management view Streaming view
Management view Streaming view

Changelog

New look & feel

  • Refreshed UI with new fonts, colors, and visual assets throughout the platform
  • Consistent button sizes and layouts across all screens
  • Animated buttons in the simulation selection and management views
  • Colored borders on headset streams to easily identify which headset is which
  • New folder icon to distinguish sub-projects

Headset setup is now automatic

  • The platform can now automatically install required apps (auto-adb, Oculus ADB) on connected headsets — no manual setup
    needed
  • Use a custom android application to keep ADB Wireless active all the time
  • Headset power settings are now configured automatically (4-hour auto-off)

UPS power management

  • The platform now monitors your UPS (APC Back-UPS BX2200MI) and will automatically shut down all headsets after 3 hours or
    on power events

Better video streaming

  • Significantly improved stream quality and performance
  • Video now decodes in a background thread, reducing UI lag
  • Stream rotation is now correct (no longer tilted at 25°)
  • Streams restart automatically when a new browser tab connects
  • Fixed streaming on Safari

Bug fixes

  • Disconnected headsets are now properly grayed out in the interface
  • All players are correctly disconnected when stopping an experiment
  • Fixed the stop button not appearing in the simulation manager
  • Fixed the platform crashing when no VU is found in the configuration (Gamaless mode now clearly indicated)

For developers

ADB & Headset Management

  • Refactored AdbManager into a proper manager + new HeadsetSetup class handling all device checks and application
    installation
  • Auto-install of auto-adb and Oculus ADB tools on headsets
  • Added installApk() support for future self-healing headset configuration
  • OVR preferences and power settings (4-hour auto-off) now configurable from the platform
  • System/secure settings exposed for headset setup
  • Early detection of device → offline transitions in AdbManager

UPS Power Control

  • New UpsManager with polling, reconnection logic, and graceful shutdown
  • Reverse-engineered communication protocol for the APC Back-UPS BX2200MI
  • Automatic 3-hour session shutdown timer integrated with UPS state
  • Added shutdownAllHeadsets() on the AdbManager

Video Streaming (Scrcpy)

  • Migrated video decoding to WebCodecs API (replacing previous approach)
  • Moved WebCodecs decoder to a Web Worker for better performance
  • Added backpressure handling to keep video stream clean and reduce artifacts
  • Bumped Scrcpy to v3.1 and yume-chan libs to v1.0.0 (stream rotation now flat)
  • Fixed bitrate: was wrongly set to 200bps instead of 8Mbps
  • Fallback to MessagePort when ReadableStream transfer is unsupported (Safari fix)
  • Streams now restart for every newly connecting client
  • ReadableStream and decoder lifecycle management improved

Networking & WebSockets

  • Migrated WebSocket layer to µWebSockets.js (faster, lighter, better payload compression)
  • Added multicast DNS (mDNS) support — connect via simple.local: instead of static IPs
  • Per-message compression enabled for player connections
  • Unified sendMessageByWs() function in Monitor for cleaner message handling
  • Fixed wsID forwarding in addEveryPlayer

Player Management

  • Migrated PlayerManager to a Map<id, player> structure
  • Fixed player disconnect/reconnect edge cases (ghost players when closing a simulation)
  • Properly disconnect all players when stopping an experiment
  • Fixed player ID mismatch between websocket ID and in-game Unity ID

Gamaless Mode

  • Better handling of the GAMALESS mode in both backend (verbose warnings) and frontend (visual indicator)
  • Prevents crashes when no VU is found in the configuration

Scanning & Setup Scripts

  • scan_and_connect script reworked: faster scan (~2s vs 10s), verbose flag, better regex, admin-mode speedup
  • PowerShell equivalent script added for Windows users
  • IP address sanitization added to prevent copy-paste artifacts from breaking the config

Cleanup & Refactoring

  • Removed the old demo package and unused components/pages
  • Removed React.FC usage across components
  • Reorganized dependencies (most devDependencies moved to prod)
  • Package version bumped to 3.0.0
  • Added GitHub issue templates

Generated changelog

Full Changelog: 2.5...v3.0

Webplatform V2.5

Webplatform V2.5 Pre-release
Pre-release

Choose a tag to compare

@GuillaumeLeroy34 GuillaumeLeroy34 released this 02 Feb 05:01

What's new ?

  • Features — user-facing

    • Automatic network/device discovery and more robust ADB connections: the platform now auto-scans the subnet, uses a more reliable connection flow (tango/AdbManager/evilscan), and avoids attempting USB streaming when inappropriate. (@RoiArthurB)
    • Better codec handling for streams: automatic codec selection with safer fallbacks (h265/h264), server-driven codec negotiation and client compatibility checks to reduce broken streams. (@RoiArthurB)
    • Improved streaming layout and rendering: overhauled streaming rendering to maximally and responsively size each headset stream; new dynamic layout logic for portrait/landscape and grid fitting. (@GuillaumeLeroy34)
    • More resilient scrcpy/video behavior: device-specific cropping, restart logic for crashed streams, and protections against duplicate/ghost streams so displays remain stable. (@RoiArthurB, @GuillaumeLeroy34)
    • Usability: clearer error message when GAMA is unreachable to help users quickly resolve the common “GAMA not started” problem. (@RoiArthurB)
  • Fixes — stability / bug fixes

    • Fixes to avoid duplicate canvases/streams and to prevent restarting streams that have already exited. (@RoiArthurB, @GuillaumeLeroy34)
    • Stream sizing and canvas dimension fixes (solo screen, grid sizing, responsive tests). (@GuillaumeLeroy34)
    • Improved removal/cleanup logic for disconnected ADB clients (moved to reliable hooks / list change handling). (@RoiArthurB)
    • Rotating error logs and Windows scrcpy path fixes. (@RoiArthurB)
  • Logging, observability and developer quality-of-life

    • Full logging rework: switched to logtape, added meta sinks and separate frontend logger; improved trace logs and categories to facilitate debugging. (@RoiArthurB, @GuillaumeLeroy34)
    • Several housekeeping commits: bumped libraries, updated tsconfig, reorganized backend, and cleaned many console.log leftovers by using the new logging pipeline. (@GuillaumeLeroy34, @RoiArthurB)
  • Chores / infra / security

    • Dependency bumps and maintenance: uWS/qs/express/vite/lodash bumps, various compatibility adjustments for newer Node versions. (@RoiArthurB, @GuillaumeLeroy34)
    • .env and configuration improvements: ENV_GAMALESS, ENV_SCRCPY_FORCE_H265, default app host set to wildcard to ease local demos. (@RoiArthurB)

Full Changelog: v2.0...2.5

Webplatform v2.0 - Tuan

Choose a tag to compare

@RoiArthurB RoiArthurB released this 10 Jan 02:59

image

This is the stable release from the webplatform (middleware + management panel) allowing to connect GAMA to Unity, and manage the first implementations of the SIMPLE project in school.

New Contributors

  • @nautuan Built the new management UI and reworked part of the application

Full Changelog: v1.0...v2.0

Middleware v1.0 - Léon

Choose a tag to compare

@RoiArthurB RoiArthurB released this 09 Aug 02:03

image

This is the stable release from the middleware allowing to connect GAMA to Unity, mainly scoping a development objective.

New Contributors

  • @leonsi7 Built all of this first prototype version

Full Changelog: https://github.com/project-SIMPLE/GamaServerMiddleware/commits/v1.0