Merge long development branch in main#144
Merged
RoiArthurB merged 245 commits intomainfrom Apr 15, 2026
Merged
Conversation
- Limited to Linux x86 on Node20 at the moment !
+ Everything documented in BUILD_EXECUTABLE.md
AI Explaination :
1. **Backend Bundling**:
- Created a `vite.backend.config.ts` to bundle the TypeScript backend into a single CommonJS file (`dist-api/index.cjs`). This resolves issues with ESM, top-level await, and complex `node_modules` structures when packaging with `pkg`.
- Dependencies are bundled into the executable (except for native modules), ensuring all assets and subpath imports work correctly.
2. **Integrated Frontend Serving**:
- Added `src/api/infra/StaticServer.ts` which uses `express` to serve the built Vite frontend from the bundled environment.
- Modified `src/api/index.ts` to automatically start this static server when running in a packaged environment or production mode.
3. **Dynamic Environment Loading**:
- Updated the `.env` loading logic in `src/api/index.ts` to look for the `.env` file in the same directory as the executable, satisfying the requirement for external configuration.
4. **Packaging Configuration**:
- Configured `@yao-pkg/pkg` (a maintained fork supporting Node 20) in `package.json`.
- Included the built frontend (`dist/**/*`) and the `uWebSockets.js` native binary (`.node` file) as assets in the executable.
5. **Build Scripts**:
- Added `npm run build:frontend`, `npm run build:backend`, and `npm run build:executable` to `package.json`.
6. **Fixes for Bundled Context**:
- Refactored `src/api/index.ts` to avoid top-level await, ensuring compatibility with the CommonJS bundle required by `pkg`.
- Applied a global fix for a `ReferenceError` (`targetMatch`) found in the `evilscan` dependency when running in strict/bundled mode.
- Also rework some of the logging messages
- At the moment, only compile for MacOS x86 - Add new runner to have the compiled package compress to save some size
Application is compiled using `yao-pkg/pkg`, caxa been tested in developpement of this work but isn't used in final workflow
Otherwise, the artifact is quite big
- Since the introduction of ESLint, a lot of error have been raised all over the application - Fixed code smell from the backend - Properly use logger (by giving the Object _inside_ the logger function instead of outside) - Add semi-colon everywhere - The introduction of GAMALESS is prone to create a lot of error (since the PlayerManager still need to be active, but without interaction with GamaConnector which still could be requested but undefined... Catch most error) - Make ESLint more flexible by allowing `any` type
…are trivial, added context to variable declaration in switch block, removed unused "handlegetplayers" in the simulationManagerPlayer component
…etting the background of the div element, we create an <img> object. This allows us to use "on error", and change the source if the app does not manage to load it properly.
… to warp the splashscreen, the latter not being displayed in the whole container and being squished instead
- Properly get Logger - Rename JsonSettings constant which is very ambiguous - Cleanup logging
- Conflicts: - .gitignore - `eslint.config.ts` should not be ignored and should be shared on the project to maintain same code quality -src/api/monitoring/MonitorServer.ts - Double check the merge, it's impossible to read with all the text reformating applied....
At the moment, if a new client connects and the scrcpy already saved a keyframe, it'll send this one, then ask streams to restart potentially creating issue where the client will init on an older keyframe. Removing this double submission, normally streamlining/simplifying stream synchronization and potentially fixing issues Related #100
…nList and simulationManager
…4258149670714501933 Fix scrcpy streams rendering on Safari using MessageChannel fallback Fix #133
… and changed its color
Add ON_DEVICE_OVR_PREFS constant for persist.ovr.prefs_overrides.* settings, checked via getprop and set via PreferencesService AIDL. Applies idle_time_threshold (Display Off) and autosleep_time (Sleep Mode) to 4 hours (14400s) on every headset connection. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add ON_DEVICE_ADB_SYSTEM_SETTINGS (screen_off_timeout: 24h) - Add ON_DEVICE_ADB_SECURE_SETTINGS (sleep_timeout: disabled) - Add ON_DEVICE_ADB_BROADCASTS with prox_close to force proximity sensor to "worn" state — prevents screen blackout on headset removal - Refactor checkGlobalSetting/setGlobalSetting into generic checkSetting/setSetting with namespace param (global/system/secure) - Add applySystemSettings, applySecureSettings, applyBroadcasts methods Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…e version used by default
…row instead of the home button, and adjusted it's positionning and size
- Remove uselessly ordered V1 folder - Remove all unused images - Unified colored logos in the new architecture - Update all the refs in components
Visual rework
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




Pull Request
Checklist
Description
Related Issue