Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

studio: user profile #10379

Open
wants to merge 98 commits into
base: dev
Choose a base branch
from
Open

studio: user profile #10379

wants to merge 98 commits into from

Conversation

achen5671
Copy link
Contributor

Summary

https://tsu.atlassian.net/browse/IR-2520

Subtasks Checklist

Breaking Changes

References

closes #insert number here

QA Steps

barankyle and others added 30 commits May 23, 2022 17:43
* Refactor MediaStreams to separate client and server (#6507)

* separate media streams into client and server concerns, move consumers and producers to network, webcam to client

* add key to party participant jsx element map

* Network client user refactor (#6508)

* separate media streams into client and server concerns, move consumers and producers to network, webcam to client

* add key to party participant jsx element map

* split world clients to world users and network clients

* cleanup

* rename things

* tests

* fix offline and portals

* fix instance server init bug

* Spectator View (#6491)

* Adds spectate params

* Added basic follow camera to target entity
Fixes an issue in spectateUser action dispatch

* Adds first person camera to the spectator mode

* Adds camera entity network sync

* Adds invalid active camera reference check

* Fixed a number of potential security holes in API services. (#6506)

Removed rtc-ports service since it didn't appear to be used anywhere, not even in any projects.

* Fog prefab (#6343)

* Fog node added and added Material callback for onBeforeCompile function chaining

* Implemented Onbefore Compile Plugin

* Updated the scene with fog node

* Fog node will be removed from the scene and created as a separeted node

Co-authored-by: dinomut1 <[email protected]>

* tooltips over entire input (#6515)

* CameraSystem refactor (#6472)

* CameraSystem refactor

* Finish decoupling camera system

* Update moveAvatar.ts

* Fix character movement

* Update SceneService.ts

* cleanup

* Fix test

* Fix camera rotation when exiting immersive mode

* Update constants

* Fix tests

* Fix w/ spectator mode

* Fix more tests

* Fix localClientEntity

* Cleanup spectate mode

* Fix walking rotation

* Changes for avatar drawer (#6516)

* Added avatar drawer

* Removed unused code

* Renamed load methods

* Fixed write permission key for avatar drawer

* Video textures (#6503)

* added exclusion from CSM processing for shader materials, raw shader materials, and basic materials

* *expanded material argument system
*added generic material argument presets

* removed bad material, fixed editor ui

* fixed hookstate error with loading default instancing values in engine"

* new materials, added csm ignore usedata property

* fix envmaps being assigned to matcaps and breaking them

* added video handling to AssetLoader. Added video texture assignment to material override system

* envmap wip

* removed video texture option for envmaps

* add video formats to asset import accepted extensions

* material library fixes

* fixed asset system test failure

* same-frame user input event listener for videos

* added touch event listener to videos

Co-authored-by: Gheric Speiginer <[email protected]>

* combine spectate and join world, clean up various connection things (#6521)

* Added project permissions and GitHub push integration (#6380)

* Added project permissions and GitHub push integration.

Project permissions can now be made to authorize a non-admin access to a project.
Project owners and users can access a project and its files in the editor. Owners
can give users new permissions, edit the owner/user status of existing users, and
remove users' permissions. Users can just access the project.

Users' GitHub OAuth token is now saved when they log in. When projects are being
fetched, it checks which repos that the GH app has been installed in they have
write access to. Those that match are considered permitted at the user level.

Users with permissions on a project can push that project to GitHub. This will
attempt to use their personal GH token to make the new commit and push, but if
they do not have GH credentials, then it will push it via the app's credentials.

Users with project-permissions can update the repositoryPath of the project. This
must be to a repo that the user has access to.

* fix project page crash

* Moved Project feathers listener into useApiListeners, added calls to it.

Renamed props on new Dialogs to match recent pattern change.

* Renamed modal to drawer, unified set and update github link into single drawer, misc changes for add project drawer

* Changed column name for repo link

* Allow admins to create project permissions even if there are none on a project.

Fixed population of hasWriteAccess to project.

If no permissions on a project when one is being added, that person is automatically an owner.

* Misc fixes

* Fixed icon color

* Repositioned cancel button to make ui consistent

* Updated styles to match admin changes

* Fixed bugs.

Permissions modal in admin page had some issues with state of active project pointing to another
project after update. Now tracking projectId separately and using that to ensure correct project
is active.

Fixed bugs with non-installed project showing clickables that they should not.

Deleted files were not being deleted in GH tree. They now are.

Fixed bugs with project-permissions not cascade-deleting on project deletion.

* fixup

* Fixed format issue

* Fixed icon button color

* Fixed build errors

* Fixed build error

* Fixed more errors

Co-authored-by: HexaField <[email protected]>
Co-authored-by: Hanzla Mateen <[email protected]>

* Fixed crash issue on project settings page (#6523)

* Fixed crash issue on project settings page

* Fixed lint issues

* Update Project.tsx

* Update README.md

* Update README.md

* Update README.md

Fix dark/light mode logos

* Add Profile related XRUI components (#6475)

* refactor widget menu styling

* rename files and components related to widgets

* add back mic on off widget button

* fix checkbox in settings menu

* add basic UI for profile menu and its widget icon
add basic ui components for ready player menu
add basic ui component for select avatar menu
add basic ui component for upload avatar menu

* fix username input field styling in profile menu

* fix details area and input field to show userid and api key

* fix connect input field and ready player me styling

* fix styling of theme button in profile menu

* add system for select avatar widget

* add system for upload avatar and ready player widget

* fix styling for avatar select menu

* fix auth setting fetch

* show basic upload and ready player menu

* fix vs typescript glitch

* fix styling of upload avatar view

* add comments

* fix media streams import

* add functions to link profile related views

* Fix object fitting

Co-authored-by: HexaField <[email protected]>
Co-authored-by: Gheric Speiginer <[email protected]>

* Spectator View Update (#6510)

* Adds followed player disconnect handling

* Adds head decap to networked avatar

* Head decap refactor
Adds joinWorld data types

* joinWorld refactor

* Fixes a bug in new handleJoinWorld function

* Adds spectator avatar entity check

* Adds spectator exit button
Fixes head decap when target avatar re-joins

* Update index.tsx

Co-authored-by: Gheric Speiginer <[email protected]>

* Combined Link and Edit GH editor dialogs into one dialog. (#6524)

Fixed some styling issues with that dialog.

* Updated Dockerfiles to control npm install production mode. (#6514)

Removed '--production=false' from most calls to npm install. Whether or not
devDependencies are installed now depends on npm's check of NODE_ENV, which
is now passed as an ARG to all Dockerfiles.

Moved around some dependencies.

Updated dev/prod templates to have NODE_ENV set to 'production' by default.

* Fixed coil-settings find/get handlers, pruned some client-settings fetches. (#6512)

Updates to coil-settings were preventing non-admins from getting them at all, but some information in
them is needed. Removed admin restriction on FIND & GET, made custom handlers that strip out clientId
and clientSecret for non-admins before returning.

Added custom client-setting GET handler that performs the same alterations to the result that the FIND
handler does.

Removed several extraneous calls to ClientSettingService.fetchClientSettings(). Only one is needed, and
the one in _app.tsx on udpateNeeded being true should cover every page.

* Remove obsolete serverMode mechanism. (#6527)

* Remove obsolete serverMode mechanism.

Co-authored-by: Kyle Baran <[email protected]>

* Revert "Remove obsolete serverMode mechanism. (#6527)" (#6531)

This reverts commit 2af72fdc41af56102ef0eff6f964e727c27d9abe.

* widgets improvements

* fix instance server unnecessary shutdown

* Fix Loading UI (#6533)

* update vite config to typescript

* VR Tests (#6420)

* Adds some tests for WebXRFunctions

* Adds endXR tests

* Adds input copy tests for XRSystem

* Adds AvatarSystem tests

* Adds some AvatarSystem tests
AvatarControllerSystem refactor
Adds a AvatarControllerSystem test

* update

* update

* fix going in and out of vr

* improve vr input axis handling

Co-authored-by: Josh Field <[email protected]>

* Typescript upgrade and misc cleanup (#6526)

Update Typescript
Update Prettier
Cleanup Engine state & EngineRenderer state

* Network object owned tag component (#6513)

* Network object owned tag component

We only have ownership and ownership transfer implemented as a concept, not authority.

* Update CameraSystem.ts

* Fix alignment and spacing in world chart textarea (#6541)

* fix alignement of the world chat button

* fix spacing of textarea

* Improve server spin-up speeds (#6534)

* Improve server spin-up speeds

Update ts-node
Remove ts-node-dev
Switch to SWC transpiler

* Commit package-lock.json

* Use SWC in all ts-node commands

* Update readme.md

* Update package-lock.json

* replace head decap shader with scaling the head bone (#6542)

* This change fixes the theme button which is currently broken. (#6544)

* Move projects into separate workspace

* update package-lock

* revert adding package lock

* XRUI Controller Events (#6543)

* xrui improvements

* add click events from controller trigger

* cleanup logs

* Update mediasoup

* Fixed multiple login/logout/account deletion issues. (#6530)

A bug was noticed in production where identity-providers were lacking userIds. This appears to have been caused by
the relationship in that database being set to onDelete: setNull instead of onDelete: cascade. This has been fixed
in that DB schema, and onDelete: cascade has been added to identity-provider association to reinforce it.

Added some bug-handling to oauth provider code to deal with this should it arise again. If the existing identity-provider
is missing a userId, it makes a new user and associates it to the identity-provider before continuing.

Users were confused by being able to remove all of their oauth connections and thus their account. The client will no
longer let the user remove their last OAuth connection if it's their last identity-provider, and notifies the user of this.

Added a deletion flow to the user ProfileMenu.

Co-authored-by: Gheric Speiginer <[email protected]>

* Fix mediasoup type errors

* discarded pixels outside of UV for Screenshare (#6538)

Co-authored-by: Gheric Speiginer <[email protected]>

* improve xr rotation (#6547)

Co-authored-by: Gheric Speiginer <[email protected]>

* Fix widget menu clicking

* Added @swc/core as dependency to all server types. (#6549)

* Added @swc/core as dependency to all server types.

install-projects was failing with an error saying @swc/core or @swc/wasm needed to be installed.

* debug logging

* debug logging

* debug logging

* debug logging

Co-authored-by: Gheric Speiginer <[email protected]>

* Remove swc option from dev-reinit-db

* Admin Panel Misc Fixes (#6520)

* Repositioned cancel button to make ui consistent

* Fix cancel button style in drawers.

* Code cleanup

* Fixed strings being used

* Fixed colors of avatar drawer buttons

* Fix disabled cancel button color

* Renamed submitButton with gradientButton

* Replaced cancelButton with outlinedButton

* Removed create user role functionality

* Removed unused component

* Updated InputText style

* Updated disabled style for InputSelect

* Fixed disabled style of input text, select and autocomplete.

* Fixed style selector

* Updated confirm dialog and its consumptions

* Fixed background issue on autocomplete of input text

* Renamed AddProject to project drawer

* Refractored project files drawer

* Removed unused strings in admin.json

* Removed unused code from admin.module.scss

* Fixed undefined being show for a moment before confirm dialog closes

* Update 1_minikube.md (#6548)

* Removes some sequelize debugging that accidentally got merged into dev. (#6552)

* Improvements in theme system (#6545)

* Added support for multiple themes dark, light, vaporwave, etc

* Added default themes selection for admin, studio, client

* Updated heading style

* Changes for user settings themeModes

* Added change theme functionality in user menu

* Added check to ensure json formatting of themeModes

* Fixed json parse issue in user patch

* Updated default dark theme

* Fixed issue with modal closing on theme dropdown selection.

* Fixed text color of some editor buttons.

Co-authored-by: Kyle Baran <[email protected]>

* Network Topic Type Abstraction (#6551)

* network topics working for world

* refactor topic onto network

* avatar spawn on scene load

* update peers separate from actions

* mostly working

* further simplify connection logic, editor and spectate work

* portals work

* tsc errors

* hyperflux fix

* cleanup logs

* fix types for location instance connection service

* Update README.md

* Update LICENSE

* Changes for default colors still suck in most places (#6556)

* Updated data-theme definitions

* Updated docker background color in dark mode

Co-authored-by: dinomut1 <[email protected]>

* Fix incoming action history (#6562)

* Color issues (#6563)

* Updated data-theme definitions

* Updated docker background color in dark mode

* Updated dark theme dock color

Co-authored-by: dinomut1 <[email protected]>

* Fix avatar despawn (#6564)

* fix avatar despawn

* connect to world only if scene is loaded

* visible query

* VR Tests (#6539)

* Adds more tests

* fix quat rounding error

* fix bitecs store error

Co-authored-by: Josh Field <[email protected]>

* Fixed a couple of bugs. (#6569)

group-user pre-patch hook had been mistakenly changed to disallow(). A couple of backend
services use it, and future front-end services will certainly need it available. It has
been changed to do groupUserPermissionAuthenticate on external requests.

Added some better handling of createWebRtcTransport(). A bug was reported that seems to have
been caused by that function returning null due to no routers being available to create on.
It now throws an error if there are no routers.

handleWebRtcTransportCreate has been updated to have a try/catch to prevent crashes. It also
has a check for no transport being returned from createWebRtcTransport.

* Added pagination to file browser backend service and client (#6568)

* Added pagination to file browser backend service and client

* Fixed failing tests

* Fix sending actions (#6570)

* Fix caching and peer updates (#6571)

* Fix caching

* Fix network peer updates and user indexes

* Update StoreFunctions.ts

* Fix tests

* Update SocketWebRTCClientFunctions.ts

* Feathers hooks idempotent, typescript cleanup (#6567)

* refactor bot hook

* static resources and invite type

* start location services

* user interface streamline

* tsc fixes

* fix association hook

* fix association hook

* fix user remove

* Clean up

Co-authored-by: Hanzla Mateen <[email protected]>

* Fixed some bugs in admin project page related to selected project state. (#6574)

Admin project table was referencing project state in isolated handler functions.
If a function is declared, it can't reference a useState() state directly, since the value
gets set when the function is declared and won't change when the state changes. Changed
to add a Ref to the state that the functions can use, as <ref>.current does change.

Restored a useEffect to update selected project state if its store value changes.

* Redesign location share UI (#6509)

* implemented updated location share design

* fixes dependency issue

* fixed feedback and improved interactable component ui

* little fixes

* added price ui

* added fixes feedback

* put view in AR button to work

* fixed bug

* added view product in AR

* removed model-viewer from index.html

* Update NetworkFunctions.ts

Co-authored-by: Gheric Speiginer <[email protected]>

* Fix spawning edge cases (#6572)

* Cleanup nearby users actions

* Cleanup spawning

* Fix caching

* Normalize some user state data

* Fix tests

* Update WorldNetworkActionReceptor.test.ts

* Update

* Update ActionFunctions.ts

* Fix tests

* Fix tests

* Update _app.tsx

* Update WebGLRendererSystem.ts

* Update WorldNetworkServerActionSystem.ts

* Update index.tsx

* Fixed bugs in deployed CORS and party user state update. (#6578)

Most avatar <img>'s did not have the crossOrigin tag, and were intermittently requesting
files from S3/Cloudfront without the Origin header, leading to no CORS headers being sent
back, with resultant CORS errors from the client. Added crossOrigin to all <img> elements
for avatars.

Update of party user state was incompatible with lodash and was throwing harmless but annoying
errors. Updated the affected handlers to not use lodash and instead call updates on state directly.

* fix merge error

* Fix missing bone error

* update roadmap

* Always use simple materials on mobile

* Refactor auth-related duplicate code. (#6576)

* Move AuthStrategies declaration to its own file.

* Extract initial auth state to common file.

* Add warning about duplicate lines.

* Convert loadUserData to await/async. (#6587)

* move all ecommerce interactables to project (#6580)

* move all ecommerce interactables to project

* fix

* update share menu

* update video handling

* revert video functions

Co-authored-by: Gheric Speiginer <[email protected]>

* Fixes duplicate roles assignment (#6579)

* Fix for duplicate roles assignment.

* Fixed issue with scope assignment on update

* Added null check

* Updated check

* Updated check

* XRUI Generic Components (#6550)

* xr input generic component

* remove extra scss and fix forward ref issue

* text button and upload button for XRUI components

* icon button for XRUI and use generic components in menus

* fix hover styling of icon button xrui generic component

* remove unnecassary styling

* cleanup styling

* use material icon instead of direct svgs

* toggle button xrui generic component

* xrui generic checkbox button component

* add slider and select dropdown generic XRUI component

* add missing stuff from latest profile view

* fix merge error

Co-authored-by: HexaField <[email protected]>

* Lazily create XRUI widgets (#6590)

* Fix AuthService loadUserData bug

* Fix updateNearbyAvatars

* Fix spectator checkbox

* Fixed bug in scope update. (#6593)

User patches were always deleting all scopes, when that should be done only if being patched
with scopes.

Changed group scope data name to 'scopes' from 'scopeTypes' and corrected same bug as above.

* Fix media server connections

* Adds hands rotation offsets (#6582)

* Screen Share update (#6522)

* update screenshare ui

* fix resizeable

* fix issues

* fix non-screenshare panel issue

* prototype full screen

* hide when mouse stop

* fix some issues

* clean up

Co-authored-by: Josh Field <[email protected]>

* Moved docs to separate repo (#6589)

* Fix socket listener setup (#6597)

Socket listeners were potentially being setup multiple times while authorization operations were still processing.

Also, reduced the logging noise from long frame executions as these were being too noisy to be useful.

* Update AvatarControllerSystem.ts (#6596)

* Replaced fflate with its npm package (#6598)

* Replaced fflate with its npm package

* Removed submodule

Co-authored-by: Gheric Speiginer <[email protected]>

* VR Polish (#6599)

* Aligns initial camera direction with avatar
Fixes avatar teleporting when entering VR

* Update CameraSystem.ts

Co-authored-by: Gheric Speiginer <[email protected]>

* Invite system upgrades (#6575)

* Expanded invite system, added location authorized users.

Consolidated admin invite page to a single table. Having separate tables for sent and received
does not make sense for admins - they just see all invites.

Added admin invite service for retrieving all invites and patching them. Admin invite page now
allows for creating new-user, location, and instance invites, which are all new inviteTypes.
new-user just makes a user if they don't exist and can optionally make them an admin immediately.
Location and instance invites have a dropdown to select the location/instance. They can optionally
allow for the user being spawned at another user's location (via that user's invite code) or at a
selected spawn point. Admin invite page also allows for patching a single invite, and for bulk
deleting invites. Invites can now be set to not be deleted on use.

Fixed some backend bugs with teleporting in the process of adding spawning invites. Also added
function to find spawn point by ID and teleport to that.

Doing a FIND on invites without specifying sent or received has new logic that is only available
to admins.

Added location-authorized-user service for private locations. If a user is not authorized to
be at a location, the client will not render it nor attempt to connect to any instanceservers.
Currently, the only way to become an authorized user is to get an invite to that location
(or an instance of it).

* Made location share modal work with invite changes.

Without spectate on, location share modal will generate link with user's inviteCode.
With spectate on, it will generate a link without an inviteCode but with spectate=userId.

Invite is now an 'instance' invite. Added spawnType: 'spectate', spawnDetails for it are
{ spectate: <userId> }. Updated invite flow to handle spectate invites.

Fixed issue with new way of handling invite finds. It was incorrectly restricted to admins,
but it's needed for checking if an invite already exists. Added a new query param 'existenceCheck'
that will leave the userId on the query if true, so that admins can get all invites in the admin page
but regular users can still check if an invite exists.

Co-authored-by: Kyle Baran <[email protected]>

* Fixed issue with client creating engine twice. (#6601)

* Made PartyParticipantWindows flow vertically on mobile. (#6603)

Co-authored-by: Kyle Baran <[email protected]>

* Feathers project upgrades (#6604)

* expose rest to feathers and change project settings db type

* fix webapp injection

* fix modules being loaded multiple times in editor

* update threejs

* Fixed issues with email invite subject. (#6602)

Didn't have entries for new invite types. Added them, and changed subject to
be config.client.title plus the now-pared-down type verbiage.

Co-authored-by: Kyle Baran <[email protected]>

* fix server connection sometimes not going through

* fix screenshare not always working

* Update README.md

* Commented out setting req to req.feathers.req because of circular reference. (#6613)

* Reorganize UI layout into 4 widgets (#6588)

* reduce widget buttons

* fix select xrui component and profile menu spacing and placement of mic and exit vr button

* add respawn button and remove exit vr session button since a controller have a button to implement that functionality already

* remove extra code

* add admin controls, location, socials and media session menu basic UI

* improve profile ui and outlined text generic xrui button styling

* allow generic xrui text button to accept children rather than content prop, add icons with the buttons in the menu

* update button label

* add service to change visiblity of widget to avoid duplication and add constant for widget names for ease of use

* add media session click and open menus at appropriate location

* remove extra imports

* prevent useless dispatch calls

* add audio disable

* disable widgets for deployment on non vr devices

* widget menu orients on hand properly

* add spectator checkbox and QR code in XRUI component of share menu

Co-authored-by: Josh Field <[email protected]>

* Fixed auto-scrolling of instance chat. (#6605)

* Fixed auto-scrolling of instance chat.

* Fixed chat being briefly visible at top before resetting to bottom on open.

Co-authored-by: Josh Field <[email protected]>

* added others audio setting sliders (#6517)

* added others audio setting sliders

* added XRUI version of the audio setting

* improve ui

Co-authored-by: HexaField <[email protected]>

* Added timing to invites. (#6606)

Invites can now be set to start and/or end at specific times. If a user tries to accept them before
the start time or after the end time, it will not go through and they'll be informed of that fact.

Consolidated some duplicated code in accept-invite.class.ts and invite create/update modals.

* Interactables XRUI Refactor (#6610)

* implemented mvp gltf optimizer

* added meshoptimizer engine dependency

* *fix model transform failing on quantized meshes
*fix model transform failing on ktx2 textures
*AssetLoader adds transformed model to cache

* update

* improvements to gltf inspector

* fix material override ui crash

* made model transform properties collapsible block

* adding parameters to model transform operation

* checkpoint

* implementing quantization and draco comrpession

* model optimization

* change

* begin implementing mount points and interactable refactor

* refactor & cleanup interactables, fix media controls

* checkpoint

* small fixes

* remove interactables functions test

* remove interactables group editor

* fix mount point editor node

* remove interactables group editor

Co-authored-by: dinomut1 <[email protected]>

* Refactor XRUI code (#6618)

* add label spacing in XRUI generic components, use XRSLider component in settings menu

* remove extra styling from settings menu XRUI component

* remove extra styling from profile menu related xrui components

* fix buttons in update bot model and create bot server error

* fix translation in bot commands component

* fix field labels interferring with drawer open in bots admin page

* fix table height when search bar or buttons are available above them in admin panel pages

* fix styling in theme playground

* update comment

* Removed author tags from header contact (#6620)

* Fetching avatars before scene is loaded to avoid timing issues. (#6621)

Avatars are currently only being fetched in a few modals, but they are needed to render
the scene. Added avatar fetch to LoadEngineWithScene to try to ensure they are available.

* Fix JSON viewer for state in Debug view

* Reverted author tags for off the self code (#6626)

* Reverted author tags for off the self code

* Removed docs

* Updated createActionQueue to run existing actions on startup. (#6623)

Initialization of ActionQueues now gets all actions dispatched before the queue was
set up, so that they will be properly processed by their respective services.

Co-authored-by: Gheric Speiginer <[email protected]>

* fixed ui issues in dark mode (#6628)

Co-authored-by: Gheric Speiginer <[email protected]>

* Gltf optimization (#6625)

* implemented mvp gltf optimizer

* added meshoptimizer engine dependency

* *fix model transform failing on quantized meshes
*fix model transform failing on ktx2 textures
*AssetLoader adds transformed model to cache

* update

* improvements to gltf inspector

* fix material override ui crash

* made model transform properties collapsible block

* adding parameters to model transform operation

* checkpoint

* implementing quantization and draco comrpession

* model optimization

* change

* checkpoint

* fixed undo

* update fbx loader, gltf loader modules

Co-authored-by: Gheric Speiginer <[email protected]>

* Fix GLTFLoader in node

* Update min movement distance to reduce wall sliding

* Fixed incorrect magiclink login link. (#6630)

* XR Controller Mapping Update (#6631)

* Updates XR controller setup to work with Three.js v142

* Adds a null reference check

* fix screenshare target aspect ratio calc

* Mute Volumetric Field (#6634)

* add mute field to volumetric component

* Disable tab-select

Disable tab-select because it interferes with user input for the avatar controller (space-bar to toggle button vs space-bar to jump)

* switch ModelTransformLoader base loader from NodeIO to WebIO

* fix missing import in transform loader

* revert volumetric mute field

* Added typedoc for server-core (#6627)

* Added docs for storage provider interface

* Added comments for storage interfaces

* Added more comments for storage provider

* Added doc comments for ipfs storage provider.

* Repositioned private members

* Added docs for s3 storage provider

* Added doc comments in local storage provider

* Fixed breaking changes

* remove giving scopes to guests by default

* remove unncessary todo

* fix ground plane being slightly offset

* Improve Debug View

Make ECS data update live in Debug View

* Fix media icons "on" styling

* Prevent default tab/space/enter behaviors

These events have default behaviors in a web page that conflict with avatar controls.

* Remove extra parameters from dispatchAction

The default parameter in dispatchAction breaks type safety.
The topic parameter is unnecessary since topics can be defined in the $topic field.

* Convert Input Enums into strings

Strings are more debuggable and human-readable than arbitrary integers.

* Updated nginx ingress template to install NLB. (#6608)

Updated dev/prod templates to not force SSL on ingresses, since NLB setup needs that
to be false.

* Added files and services necessary to enable PWA with TWA. (#6615)

Switched icons and favicons to Ethereal Engine ones from TheOverlay icons.

* Add client logging API endpoint. (#6633)

* Add client logging API endpoint.

* Add support for clarifying error context message.

* Fixed some issues with admin page access and scope restrictions. (#6642)

Access to projects and settings pages was not being controlled by scopes.
Standardized allowedRoutes in both adminRoutes and DashboardMenuItem.

Actual use of scopes to determine ability to access an admin service page
was not being used - admins without scopes could access /admin/users, for example.

Added settings scope-types, made them checked when hitting all settings methods
that aren't publicly available.

verify-scope hook now does not let admins through automatically, they must also
have the appropriate scope.

On an admin patching their own user, triggers a re-fetch of their user object
so that updated scopes can be applied to page render immediately.

* Party menu (#6600)

* parties

* Refactored API

* Added Kick, and create Functionality

* Fixed get party user issue

* Refactored Party User APIs

* Party API refactor

* Small fixes

* Invite , channel and bug fixes

* party admin service update

* Bug Fix

* few tweaks

* Party invites to email/sms will redirect user to the location/instance that the party owner is at,
add their invite code to the redirect so that users spawn at the party user.

Fixed bug in party user remove with appending user to returned value.

When joining an instance, the client will get a user's party channel if they're in a party.
It will then provision and connect to the instance server handling that party's channel.

When leaving a party, either because the party was deleted, or the party-user was deleted,
the user will leave the party instanceserver and (re)connect with the instance channel's instanceserver.

When leaving the instanceserver that a party channel is hosted on, the user will be removed from the party.

* Fixed a number of bugs with leaving instances.

Renamed PartyParticipantWindow(s) to UserMediaWindow(s).

Fixed channel user media windows appearing when connected to a party instanceserver.

Moved PartyService actions to be handled by new PartySystem.

Fixed camera light staying on when video turned off, which required stopping video tracks
and creating a new MediaStream from the user's video device, then replacing the producer's
media track.

(Gheric) Fixed a bug in ActionFunctions.ts that will apply actions already dispatched before
a queue is created.

* Bugfixes

* Started implementing in-screen invite toast.

* Invite accept/decline toast works, kicking user from party removes them from media server.

* Parties are mostly working, just need to work out some network timing
with leaving parties for either the instance chat or for another party.

Rewrote party services that were mostly using sequelize models directly,
as in most cases we want feathers events to trigger by using feathers
services instead.

* format

* tsc errors

* tsc errors

* Fixed issues with timing and occurrence of provisioning instances from changing parties.

* Restored party and party-user permission hooks, this time much cleaner and
separated so they don't require tons of logic

Made tests for parties and party-users, need to fix some things the last couple
are catching.

* Finished party tests

* Linted, removed extraneous logging, fixed typings.

* Fixed party-user removal when leaving party media server.

* Type fixes

Co-authored-by: NPatel10 <[email protected]>
Co-authored-by: Kyle Baran <[email protected]>

* fix tsc errors

* Convert additional console logs to logger events. (#6641)

* Add client logging API endpoint.

* Add support for clarifying error context message.

* Convert additional console logs to logger events.

* Physx to rapier (#6382)

* Add rapier and write test to load a rapier world.

* Add rigidbody to world.

* make new physics implementation functional

* Add helper function & test for creating collider.

* rename addBody function to createRigidBody so that naming conventin matches with rapier.

* Add helpers and tests for removing rigidbody & changing type of rigidbody.

* Add dynamic rigid body & its collider to physics world & ECS.

* Merge createCollider into createRigidBody function.

* Add Components for each type of rigid body type. And add those components to related entities.

* Change component type on rigid body type change.

* Add RigidBodyComponent to mark an entity as physics object.

* simplify components

* improve tag component types

* Add helper function for ray casting.

* Tests for ray casting.

* Helper function for creating collision groups and masks according to Rapier format.
And tests for the helper function.

* Add helper function for drainnig collision event queue.
Add tests for collision events.

* Hyperflux actions and CollisionComponent logic for rapier collision events.

* Remove Physics Actions.

* Add test for trigger event.

* Add RapierPhysicsSystem.
Add helper functions for Rapier physics.
Update physics debug object generator to use rapier physics.
Update Ground to support both rapier and physx.

After all of this, physics debug simulation is working correctly using rapier phsyics.

* Add support for rapier in DebugRenderer.ts

* Create rigidbody by parsing object3d userdata.
Use this for ground plane creation.

* Ground plane working with physics data parsing.

* Fix bug in debug renderer.

* Scene collider component working with rapier physics.

* Add tests for createColliderDesc function.

* Test for createRigidBodyForObject.

* Use cuboid for ground to fix objects falling through the ground issue.

* Avatar controller now uses rapier physics.

* Process collisions.
Handle avatar resize.

* Fix avatar collider being created at wrong offset on changing avatar model.

* Avatar collider now covers the model accurately.

* Add separate sensor collider for avatar feet.

* Fix bug in remove rigidBody function.

* Avatar controller finally in a good working state.

* Remove extra code.

* Keep track of avatar colliders in avatar controller component.

* Fix bugs in avatar controller resizing.

* Remove RayCast stuff from avatar.
    Add ShapeCast to move avatar. And only apply move velocity to avatar rigid body when shape cast hit is null.

* Fix bugs in avatar movement after dev merge.

* added conversion of old gltf collider format

* Use ray casting for on ground check because collision data is not registered accurately for some dynamic object collisions.

* Enable gravity for avatar so that avatar lands perfectly without any gaps.

* Tune avatar movement params.

* update sky station, fix debug, improve metadata

* start working on box collider

* backwards compatibility for old gltf colliders

* fixed errors RE collider shape checks

* Remove old collider conversion logic.

* Fix box collider collision layer and mask. Box collider now working.

* Add fallback case when bodyType not specified. Equippables now showing up in scene.

* Start working on portals.

* Avatar movement should not be blocked when near a trigger collider.

* Portals now working.

* fix debug in editor

* fix box collider and avatar movement

* update test equippable and improve collider and rigidbody creation

* test physics object

* ground normal check, jump height, avatar capsule height

* fix trimesh loading

* Set restitution of test physics obj to 0.

* Remove physx code from  checkPositionIsValid.

* Complete implementation of RapierPhysicsSystem.

* Remove physx from DebugHelpersSystem.

* Remove physx from equippables. Equippales physics revamp pending.

* Completely remove Physx code.

* Remove ColliderComponent from ColliderFunctions.ts

* fix bounding box

* fix scene load bug, clean up debug

* refactor physics system

* rename physics module, add collider for remote avatars

* avatars load properly

* improve avatar body creation and clean up physics netcode

* improve query

* decouple avatars from physics module entirely

* update almost all tests

* fix tsc problems

* logs

* Set bodyType for trigger volume objects to Fixed since the default bodytype is now set to dynamic.
Trigger Volumes are back to working now.
Also fix scale of portal in sky station.

* Update moveAvatar tests. Updated velocity checks to greater than 0 instead of strictly 1 since avatar is now a dynamic body and exact velocity may not be known beforehand.

* fix and improve portals

* deprecate 'realitypack' scene loader prefix, fix metadata loaders

Co-authored-by: HexaField <[email protected]>
Co-authored-by: dinomut1 <[email protected]>
Co-authored-by: Gheric Speiginer <[email protected]>

* fix populate-assetlinks.ts tsc error

* Fix spaces in text input

* Chairs (#6638)

* refactor interactable, transition state and mount point

* fix box collider and audio notification entity

* udpate scene

* Refactored the mount point component and editor

* Play mount animations

* Mount point work properly

* refactor sitting transitions

* animation

* cleanup

Co-authored-by: HexaField <[email protected]>

* portal bug fixes (#6651)

* make createXRUI synchronous (#6655)

* make createXRUI synchronous

* remove async check

* Fixed a bug where the builder would run deployment after a build failed. (#6646)

Wait command after running build_and_publish_package would "succeed" regardless
of the return code. Now each run of build_and_publish_package will touch a file
if it fails, and wait for all job PIDs. If the file has been touched, then it
will exit without deploying.

* PR to fix css issues (#6637)

* Updated icon colors from yellow to iconButtonColor property.

* Fixed support for multiline chat messages

* Name, thumbnail being unified in single bubble, Bubble spacings and paddings decreased

* Fixed spacing issue in chats

* Changed close chat icon and decreased its size

* Replaced joined left check based on isNotification

* Fixed duplicate joined messaged being shown

* Checked the check to look for avatar

* Fixed joined and left message dispatched to socket.

Co-authored-by: Gheric Speiginer <[email protected]>

* Update README.md

* Conference UI and Participant Window Styling fixes (#6639)

* remove extra code

* open user control menu on hover for the participant window which is hovered only

* show grid conference button on hovering participant windows

* conference mode basic layout

* add styling and dev changes in conference mode component

* add tooltips on conference open close buttons

* fix mute controls position

* fix mute controls buttons tooltips hiding behind issue

* refactor code

* Hookstate update (#6665)

* Update hookstate

* Disable general Express request logging for the API server. (#6666)

* VR Hands Twist Correction (#6640)

* Aligns initial camera direction with avatar
Fixes avatar teleporting when entering VR

* Update CameraSystem.ts

* Adds twist correction to hands IK in VR

* Removed debug code

* Adds bug fixes

* Update

Co-authored-by: Gheric Speiginer <[email protected]>

* Wallet login re-enable. (#6412)

* update input enums

* fix editor hierarchy not updating

* Misc css fixes (#6673)

* Fixed margin of chat input and messages (#6676)

* Fixed bugs in screen sharing. (#6674)

* Fixed bugs in screen sharing.

Consumer cycling of screenshare video was due to very low framerate.
This was caused by not setting dtx: true on screenshare producer encodings.

Fixed some issues in order of screenshareVideoPaused being set.

Fixed bug where UserMediaWindow screenshare pause being clicked was
pausing camVideo.

* fixup

* Fixed several bugs in party logic. (#6669)

Refactored MediaInstanceState.acceptingPartyInvite to joiningNonInstanceMediaChannel.
This serves a similar purpose of recording when a user is leaving one party to join
another, so that leaving the first party's media server won't provision the instance
channel's media server. acceptingPartyInvite was being set to false too early in some
situations - this doesn't get cleared until the media server has been connected to.

Updated UserMediaWindows to use userState.channelLayerUsers when connected to a party.
This was always using layerUsers before, which wouldn't render windows for party
members in other location instances. Added useEffect to fetch channelLayerUsers when
its updateNeeded is true. Fixed getLayerUsers so it will make proper request for
channel users when fetching channelLayerUsers.

Added a crown icon next to the party owner.

Updated party user patch handler to recalculate whether the receiving user is now
the party owner, and patch party state accordingly.

Updated partyUser.remove and party.remove to remove duplicated messages. Previously,
party.remove would emit a party-user remove for each party-user but would rely on
party/party-user foreign key association to delete party users. Now, party.remove
will call party-user.remove on each party-user unless told not to, and party-user.remove
will call party.remove unless told not to; each handler, if the first to be called,
will tell the other to not remove anything else to prevent recursion.

Added toast notifications for other party users leaving, and self/other users joining
a party.

Updated partyUser.remove to delete all invitations to that party.

* Fixed a bug with restarting user video. (#6677)

useEffect watching videoStream.track.id in UserMediaWindow is not firing when a new track
replaces a paused producer's ended video track. For now, made pauseProducer in instanceserver
be emitted to all clients so that self user's handler can act on that to pause videoStream,
which will make resuming it trigger needed updates.

* Scene Media Refactor (#6675)

* audio refactor

* reafactor media, audio, vid and vol loaders and updaters

* audio, video, uvol works

* fix problems with editor, add loading effect option to vol

* playlist functionality

* cleanup media component

* update sky station

* update sky station

* update sky station

* disable tests

* overhaul ui sound effects

* fix addMediaNode

* replace onMouseEnter with onPointerEnter

* Refactor transform system and system updates (#6679)

* Refactor transform system and system updates

* Fix tests

* Fix more tests

* Update ecs.test.ts

* More cleanup and fix documentation

* Only sort transform offsets when necessary

* Update PhysicsSystem.ts

* Fix missing topics

* Fetching instance via instance-provision before dispatching disconnected (#6678)

action. If the instance is still available, don't set network.reconnecting.

Fixed some bugs in reconnect logic.

Attempt to re-provision instance server on disconnect is actually useless since
the old API connection gets destroyed before the API call can finish. The listener
removal never happens, and causes multiple listeners to be present in some situations.

Added visibility listener to UserMediaWindow. On mobile, it will pause running audio and
video so that suspending the tab doesn't result in consumers getting nothing.

Added a check for replacing video tracks to make sure producer isn't closed.

Co-authored-by: Kyle Baran <[email protected]>
Co-authored-by: Liam Broza <[email protected]>

* fix offline location

* Fixed bugs in consumer resumption and pausing producers. (#6685)

Fetching producers when one was paused was still attempting to start
the consumer(s) on the receiving client end. Reworked logic for handling
reception of pauseProducer/resumeProducer and pauseConsumer/resumeConsumer
messages. producer pause/resume now sent to every client, and is used to
set producerPaused state in UserMediaWindow. pause/resume consumer messages
now just handle videoStreamPaused state. producerPaused state tracked on
client-side consumers. New consumers have producerPaused set from
consumerParameters used to create them.

Added state for tracking when a consumer has been paused client-side. This
will prevent a source producer that is paused and resumed from resuming it;
it will stay paused regardless of the producer's state unless that person
leaves and rejoins the instanceserver.

* Positional Audio (#6680)

* clean up user engage actions, fix ui menu

* almost finished implementing positional audio

* positional audio all working

* fix audio settings test

* disable avatar spatial audio in non xr

* clean up imports

* clean up imports

* update audio settings scene editor node

* remove unnecessary chrome bug workaround

* reenabled media control interactables

* add issue note to vol player

* fix audio settings state

* add mixbuses. fix mic and individual user sound levels

* Projects service injection fix (#6684)

* projects api serveice for world injection

* change when injection happens until after authenticated

* Misc Fixes for Css (#6682)

* Made menus smaller on mobile

* Fixed avatar menu height. Removed unused css.

* Reverted popup mobile size for new ui

* Reverted popup mobile size for new ui

* Fixed settings hamburger icon

* Fixed touchmove issue on mobile.

* Reverted removed css

* Reverted style file

* fix post processing

* Positional audio setting (#6686)

* positional audio setting

* xrui settings menu

* update naming i18n

* update default volume

* Fix createBoxComponent scale

* fix project bug

* remove unused files

* various editor fixes

* fix scene not properly unloading when changing scenes in the editor

* move media dom element into separate component

* fix vol sound

* fix tsc errors

* fix simpligfied materials exit query

* Fixed volume slider css (#6687)

* fix gltf metadata loader not populating some data, scale bug (#6692)

* Fixed a bug in UserMediaWindow with pausing producers. (#6693)

Pausing self producer was causing all consumers to be paused. pauseProducer listener
needed to check if consumers' producerId matched the ID of the producer being paused.

Added color to paused/active icons in UserMediaWindow. Gray-on-gray was hard to make out.

Attempted to fix a bug where client gets a bad instance provision. ID was getting updated
in URL when user's instanceId was patched, but Engine.instance.currentWorld._worldHostId
was staying on the invalid one. This led to infinite failed attempts to get the channel
since the world instanceId was incorrect. Made patchUser handler update currentWorld's
hostIds when this changes.

* Fixed bugs in instance connections. (#6709)

If a user disconnected right after connecting to a fresh instanceserver, the disconnect logic would
not work properly. Since app.instance had not been set, it would not call handleUserDisconnect.
Added a one-second timeout to wait for possible server startup to resolve with app.instance populated.

Updated check to call shutdownServer on peers.size <= 1. On near-simultaneous connection/disconnection,
the server peer may not have been created, leaving the number of peers 0. Prior check was if it was
exactly 1, which would not be true.

Fixed a bug in instance-provision where calling get(channelId) or get(locationId) wasn't being
try/caught, so if there was no channel, it was throwing an uncaught error.

* rename a var

* Misc fixes for mobile view (#6715)

* Fixed chat icon not appearing properly on mobile.

* Fixed labels appearing above header on scroll.

* Fixed settings cancel button indentation issue on mobile view.

* Changed lander default verbiage and logo (#6718)

* Fixed a bug with instance provisioning and unreachable instanceservers. (#6720)

* Fixed a bug with instance provisioning and unreachable instanceservers.

On a couple of occasions, instanceservers were not externally reachable -
they could be kubectl exec'd into and responded to internal requests, but
any request from outside was hanging. Updated instance-provision to make
a request to the server it's about to return. If there's an error, or it
does not receive any response within two seconds, it removes the instance
record, deletes the pod in a K8s environment, and then tries to get another
free instanceserver.

* Made unreachable timeout a configurable serverSetting

* Changes for Ready Player Me Avatar (#6716)

* - Moved 'Log in with ready player me' button to avatar upload screen, just under "<- Upload Avatar" at the top
- Added 'back' button to avatar select menu to go back to profile menu

* Fixed ready me avatar loading failed.

* - Show spinner on ready player me avatar uploading for thumbnail selection
- Show title in thumbnail selection dialog
- Fix ready player me avatar generated

* Fixed preview margins

* Fixed border being shown on loading time.

* Portal improvements (#6721)

* same location portal implementation, editor helper fix, general refactor

* refactor portal effects, type, loading screen and trigger system

* loading screen, simple material fixes etc

* fix collision test and xrui

* fix portal test

* xrui fix

* finalise, polish and update scenes

* add cubemap bakes

* Implement example issue and verify functions. (#6455)

* Implement example issue and verify functions.

* Undo disable social.

* Remove readyplayer conditional.

* Remove chai

* Fix casting

* Fix crypto-ld version.

* screenshare small refactor (#6690)

* add wallet login to non location modal

* add music option to audio component

* Replace Old Particle Emitter with three-nebula (#6719)

* replace old particle emitter with three-nebula

* implemented fromJSON. Added default emitter json

* add particle library. Expand particle system editor

* improved dust

* handle json parse for new particle system input

* debug switching between library and json mode

* initial tests

* moved nebula package to engine

* add options for different emitter shapes

* Converted userRole: admin to an admin scope. (#6727)

* Converted userRole: admin to an admin scope.

Admin status was defined by user.userRole being 'admin'. This has been changed so that
admin status is a scope 'admin:admin'.

Made a script to convert all existing `userRole: admin`s to `userRole: user` and add an
admin scope for them.

* Replaced userRole with isGuest.

Instead of userRole table related to user table, with potential for several roles,
now the only thing tracked on the user is whether they're a guest.

Changed convert-admin-to-scope.js to convert-user-roles.js, which will make guests
to isGuest: true and non-guests to isGuest: false.

* video source instancing (#6734)

* video source instancing

* revert aspect ratio option

* revert reverting aspect ratio option

* fix tests

* update scenes

* fix sitting causing error

* Prep AR Mode  (#6643)

* WIP

* Cleanup component helpers

* WIP

* WIP

* WIP

* Clean up XR settings

* WIP

* Update World.ts

* Update index.tsx

* Update PhysicsSystem.ts

* Update common.json

* WIP

* Fix camera layers

* Cleanup move avatar

* More fixes

* More avatar controller / physics fixes

* Update AnimationSystem.ts

* WIP

* WIP

* WIP

* WIP

* Update tests

* Update tests

* Remove removeAvatarControllerRigidBody

* Update AvatarControllerSystem.test.ts

* Fix more tests

* Fix more tests

* Update moveAvatar.test.ts

* Update moveAvatar.test.ts

* Update moveAvatar.test.ts

* Update Physics.test.ts

* Update BoxColliderFunctions.ts

* Update XRFunctions.test.ts

* Update XRSystem.test.ts

* Update XRSystem.test.ts

* More fixes

* update readers/writers

* Update DefaultLocationSystems.ts

* Re-enable CSM

* Fix moveAvatar isGround

* Fix offline mode

* Revert react-router-dom udpate

* Update XRUISystem.ts

Add missing getRemoved parameter

* add ambience to sky station, population UI sound everywhere

* add drone effect to sky station

* update sky station audio

* cleanup log

* Update mediaControlsUI.ts

Fix transform

* Update TransformSystem.ts

Fix computed transform when referenceEntity missing

* Reduce excessive logging

* Fix avatar rotation

* Style browser chrome to match theme

* Remove `git add` from lint-staged

* Cleanup CSS

* Set body background-color to --mainBackground

* Update EditorCameraSystem.ts

* Update index.module.scss

* Eliminate avatar spawning race condition

* Reduce num workers

* Uploaded files in editor will have lower case extension. (#6732)

* Uploaded files in editor will have lower case extension.

* Added file extension lower case check on server-core aswell

* media fixes (#6740)

* media fixes

* fix animations

* update sfx

* audio fixes

* log

* Video & screenshare fixes (#6741)

* Changes for camera video avatars

* Changes for screenshare

* Updated user media popup icons

* Fixed icon button on mobile view

* Fixed user avatar location changing on mobile view when voice and camera buttons are on.

Co-authored-by: Josh Field <[email protected]>

* Fixed editor tooltips issue (#6743)

Co-authored-by: Josh Field <[email protected]>

* Fixed issues with self video element and audio consumer pausing (#6738)

When a client is alone in a media channel, trying to pause and then resume cam video
was resulting in a blank video for themself. The useEffect listening for videoStream.track.id
changing is, for some reason, not triggering, despite re-render logging showing that the value
does change. If there's at least one other UserMediaWindow, though, it resumes normally.

This might be due to tracking an object that isn't fully in React state (though the producer
is set in a state object). Added new state to explicitly track video/audio track ID, and made
useEffects dependent on that, which seems to work better.

Added a state object to track when a video is ready for viewing to avoid flickering when
video is resumed. Before, the ended track was briefly seen before being replaced; now nothing
is shown until the new track has replaced it.

Fixed bug where a consumer pause could be overridden by the producer pausing and resuming.
This was due to the instanceserver emitting consumer pauses/resumes on producer pause/resume.
Deleted those since all connected clients get producer pauses/resumes and can make their own
decisions about whether to pause/resume consumers.

Co-authored-by: Gheric Speiginer <[email protected]>

* Discard geometry and texture after gpu upload

* Revert "Discard geometry and texture after gpu upload"

This reverts commit cd422a3abc5def98f8d96a48ba4932c45bb368d6.

Unfortunately, this breaks bvh generation and camera follow obstacle avoidance; we need to ensure buffers are discards after they are no longer needed.

* Replace lodash upperFirst with existing capitalizeFirstLetter. (#6733)

* Replace lodash upperFirst with existing capitalizeFirstLetter.

* Move guessContentType test to tests suite.

* Add controls tutorial and windows help to Settings.

* Fix for patching a non-guest user making them a guest. (#6748)

Co-authored-by: Kyle Baran <[email protected]>

* interactive frustum (#6749)

* Fixed select dropdown theme in Editor (#6750)

Co-authored-by: Gheric Speiginer <[email protected]>

* Update createAvatar.ts

* Persist frustumCameraEntity for portals

* Fix min deltaSeconds

* fix: specify python version (#6744)

Co-authored-by: Josh Field <[email protected]>
Co-authored-by: Mohsen Heydari <[email protected]>
Co-authored-by: Nayan Patel <[email protected]>
Co-authored-by: dinomut1 <[email protected]>
Co-authored-by: Gheric Speiginer <[email protected]>
Co-authored-by: Hanzla Mateen <[email protected]>
Co-authored-by: Zulqarnain Hanif <[email protected]>
Co-authored-by: Dmitri Zagidulin <[email protected]>
Co-authored-by: Jimmy <[email protected]>
Co-authored-by: Liam Broza <[email protected]>
Co-authored-by: IRANKUNDA Fabrice <[email protected]>
Co-authored-by: Ron <[email protected]>
Co-authored-by: Kyle Baran <[email protected]>
Co-authored-by: dinomut1 <[email protected]>
Co-authored-by: Hamza Mushtaq <[email protected]>
Co-authored-by: Patrick Canfield <[email protected]>
New function was added in @mui/styled-engine-sc that was breaking client build.
Merge v1.0.0-rc2 to master
* fix a couple tsc errors

* Always discard entity 0

* remove unused precache support object

* fix save hotkey and scene preview save

* fix transform reset when reparenting

* fix reparent to self bug in editor

* fix portals, replace GroupColliderComponent with GLTFLoadedComponent

* cleanup logs

* cleanup logs

* Misc fixes for profile menu (#6970)

* Restored avatar change only allowed in location.

* misc fixes

* Fixed bug with project reset in deployed mode.

In deployed mode, pushProjectToGithub was deleting the project folder after push.
If the project had onInstall hooks to run, there was no local copy of the project to run on, and would throw errors.
Removed the deletion to fix this.

* fix import error

* fix scale and rotation controls in the editor

* Button Click Refactor (#6977)

* implement button click action, refactor active menu to be a react context

* avatar ui clickaway

* Implement System Cleanup Functions (#6971)

* implement system cleanup

* remove duplicated import

* implement subsystems

* isolate createExecute function

* update system types, debug shows system uuids

* fix logger (#6983)

* fix logger

* Passing VITE_DISABLE_LOG through builder

Co-authored-by: Kyle Baran <[email protected]>

* fix hmd material handling

* only render when needed when in an HMD and no active session

* Delete xrengine black.png

* Fix transform update order (#6984)

* Fix Scene Update & Portals (#6991)

* fix scene update functionality, improve component defintion and lifecycle

* updat equality checks

* fixes

* Updates for various dependencies (#6931)

* Updated feathers

* Removed feathers-logger

* Updated feathers-sync

* Updated feathers-sequelize

* Update for remaining feathers packages

* Updated sequelize

* Updated mediasoup

* fixed typing errors for some endpoints.

* Fixed typing errors

* Updated to feathers to 5.0.0-pre.29

* Fixed errors

* Moved Params to classes.

* Replaced expressOauth with oauth. Ref feathersjs/feathers#2737

* Fixed errors in client-core

* Update paginate param to UserParams

Co-authored-by: Kyle Baran <[email protected]>
Co-authored-by: Josh Field <[email protected]>

* xrui optimization

* cleanup

* Update typescript

This fixes some typing issues w/ react-i18next

* Fixed issues with key stuck on instance load and chat getting movement keys. (#6994)

Having 'autofocus' on the instance chat was causing problems. Since it's not display:none
when closed, and it doesn't load until the instance has been connected to, if it was rendered when
the user was moving, it was now getting focus. Their movement key presses were getting entered into
the instance chat, and movement was never seeing the keyup that would tell it to stop. Removed
autofocus from instance chat.

* Lightmap and texture editor fixes (#6995)

* add scale and offset fields in texture editor. improved thumbnail handling

* create static renderer & scene for createReadableTexture instead of initializing and disposing of them every function call

* Fixed issue with redis connection string password. (#6997)

feathers-sync v3 uses redis v4, which requires that the password be passed at the start of the
connection string, as opposed to as a query parameter. Made this change.

* Entity Tree Improvements (#6993)

* various scene fixes

* fix entity tree bugs

* test fixes

* Fixed issues with key stuck on instance load and chat getting movement keys. (#6994)

Having 'autofocus' on the instance chat was causing problems. Since it's not display:none
when closed, and it doesn't load until the instance has been connected to, if it was rendered when
the user was moving, it was now getting focus. Their movement key presses were getting entered into
the instance chat, and movement was never seeing the keyup that would tell it to stop. Removed
autofocus from instance chat.

* Lightmap and texture editor fixes (#6995)

* add scale and offset fields in texture editor. improved thumbnail handling

* create static renderer & scene for createReadableTexture instead of initializing and disposing of them every function call

* Fixed issue with redis connection string password. (#6997)

feathers-sync v3 uses redis v4, which requires that the password be passed at the start of the
connection string, as opposed to as a query parameter. Made this change.

* fix editor tests

* fix asset component

Co-authored-by: Gheric Speiginer <[email protected]>
Co-authored-by: Kyle Baran <[email protected]>
Co-authored-by: dinomut1 <[email protected]>
Co-authored-by: dinomut1 <[email protected]>

* Entity tree networked (#7002)

* various scene fixes

* fix entity tree bugs

* test fixes

* fix editor tests

* start implementing scene object networking

* fix dirty transform and spawn error

* more network logic refactoring

* disable for now

* improve tests

Co-authored-by: Gheric Speiginer <[email protected]>

* Added error handling for instance provisioning returning a shutting-down instance (#7000)

There are corner cases where an instance-provision occurs right before an instanceserver
shuts down, or has its shutdown status recorded in the database. The provision returns an
IP address that is immediately invalid. The SocketWebRTCClientNetwork instantiation was not
handling this case, and throwing errors.

Now, whether there's an error with creating the websocket connection, or it fails to connect
within 3 seconds, it disconnects and then attempts another instance-provision.

* v1.0.0-rc3 (#7003)

Co-authored-by: CI Bot <[email protected]>

Co-authored-by: HexaField <[email protected]>
Co-authored-by: Gheric Speiginer <[email protected]>
Co-authored-by: Hanzla Mateen <[email protected]>
Co-authored-by: Liam Broza <[email protected]>
Co-authored-by: dinomut1 <[email protected]>
Co-authored-by: dinomut1 <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: CI Bot <[email protected]>
Merge v1.0.0-rc4 into master
* fix bad path resolution on deployment

* fix bugs with instance disconnection, make webxr controllers data oriented & catch light estimator (#7072)

* Asset cleanup (#7073)

* delete old and unused assets
* compress avatar animations
* remove ocean assets
* fix dot.png
* move collision cube into default_assets
* lower default envmap bake resolution
* delete ocean component default images
* fix material overrides in editor
* lower envmap upload resolution
* remove material overrides
* remove materialParms

* Delete setup_ip.sh

* IK Targets Refactor (#7074)

* refactor ik targets

* fix merge error

* format

* fix tests

* add nested git repo detection to vscode settings.json

* add nested git repos to vscode search functionality settings.json

* improve get hand pose

* Increase frame buffer scale factor on Quest

Strangely, WebXR sessions on the Quest report an interaction mode of 'screen-space', which is surely a browser bug ('screen-space' interaction mode is appropriate for tablets, not HMDs...)

* Fixed a few bugs.

checkRoom now gets instances that are locations, so that accidental inputs of channel roomCodes don't
attempt to provision it as a world server.

project.find had a bug with getting allowedProjects re: projects that don't have repositoryPaths.

* set defaults for envMap component to none

* give ee_material priority in loading materials in GLTFLoader.js

* Performance optimizations

* Add avatar head lock option

* fix bug with instanceId user patching

* add catch to requestHitTestSource

* Add loading messages to the loading circle (#7075)

* Add loading messages to the loading circle

* improve styling

* fix portals in VR

* simultaneous VR and AR buttons

* include VITE_FILE_SERVER in deployment (#7081)

* remove log

* fix teleport system and remove deprecated XRInputSourceComponent

* * fix losing vertex colors on change material prototype
* vertex bake now bakes to MeshBasicMaterial

* Fixed typo in build_minikube.sh

* Update loadGLTFModel.test.ts

Move addEntityNodeChild before adding ModelComponent

* Vite file server fixup (#7084)

* Update value of VITE_FILE_SERVER in templates

* Another change

* run engine on all servers

* fix regression in input handling

* Avatar IK Controller Improvements (#7089)

* fix bug with teleport movement scheme

* fix admin route

* fix unallowed admin route

* USDZ Support (#7078)

* implement basic usdz support (zipped usda only, very limited material support)
* fix fbx and usdz models not registering materials
* replace string model sources with SourceType enums

* merge in recent updates to three GLTFLoader and GLTFExporter

* exclude hmd from mobile (#7080)

Co-authored-by: Gheric Speiginer <[email protected]>

* save rotations as quaternions instead of eulers

* * remove unused loaders
* improve model transform
* update DDSLoader and FBXLoader

* * fix Asset Component
* fix NodeDracoLoader
* update Transform Component tests

* Avatar teleport works on both controllers

* fix bug with movement

* tweak teleport logic

* add animations to avatar teleport

* remove old todo, fix bug with transform functions

* expose projects and hyperflux to global

* fix gltf loader crashing server

* fix offline location import

* WebXR Haptics - Controller Vibration (#7091)

* Correctly label "Save Scene" dialog in editor

* fix bug with controller input, small optimizations in xrui system

* check that roomcode is correct on instance server connection (#7093)

Co-authored-by: Hanzla Mateen <[email protected]>

* Hyperflux Local Storage (#7096)

* refactor local storage user to be entirely hookstate driven

* refactor query params

* fix tests

* disable client test

* fix tests

* Disable Fullscreen on iOS (#7098)

* disable fullscreen on ios

* disable icon

* Split Avatar Movement (#7101)

* remove logging

* Audio gain nodes have correct values upon initialization

* Optimize System Loading for Vite Chunking (#7104)

* optimize system loading for vite chunking

* fix tsc errors

* optimize model asset fetching (#7105)

* improve teleport controls sensitivity

* Fixed a bug with patching instanceservers as admin. (#7108)

As part of initializeInstance, the instanceserver was trying to get
the user joining the server, but when done via an admin patching an
instanceserver, there is no associated user. Replaced calling the
feathers channel.find, which requires an identity-provider,
with just calling findOne on the channel model.

* fix state updates not always persisting to localStorage

* set vscode editor tab size to 2

* Added better handling of OAuth login cancellation. (#7102)

For most OAuth providers, if the user canceled the initial authorization, we were not
handling it properly and creating dummy identity-providers, thus logging them in.
Added/updated authenticate overrides to look for errors on the returned data and
throw appropriate errors.

* Added support for serving client files from Cloudfront/S3. (#7110)

Vite now uses a base path of `https://${process.env.STORAGE_CLOUDFRONT_DOMAIN}/client/`
if new variable SERVE_CLIENT_FROM_STORAGE_PROVIDER is true, STORAGE_PROVIDER is 'aws',
and STORAGE_CLOUDFRONT_DOMAIN is set. This will make all files except the root HTML be
pulled from Cloudfront, which should be faster than from the client servers.

Changed compression algorithm from gzip to brotli, since it generally results in smaller
files and is about as equally well-supported.

Added new script to rename and push the client files to S3 during the build process.
Serving from the client server was using expresss-static-gzip to return the compressed
files as their non-compressed extension types, e.g. example.js.gz being fetched from
a call to example.js, but Cloudfront/S3 will not do that substitution. The script
will push each file that ends in `.js.br` as `.js`, with a Content-Encoding header of 'br'
to indicate it is already compressed. This only runs if SERVE_CLIENT_FROM_STORAGE_PROVIDER
is set to true and STORAGE_PROVIDER is set to 'aws'.

If SERVE_CLIENT_FROM_STORAGE_PROVIDER is set to true and STORAGE_PROVIDER is set to 'aws',
run_builder.sh now locally generates a list of existing client files from S3 that have a
vite hash on them before building anything, pushes the built static files to S3 in the
client Docker build process, and deletes the list of now-old existing static files
from S3 five minutes after the builder process finishes. This ensures that the 3 bucket
does not endlessly increase in size with each build.

Added support for ContentEncoding and Metadata parameters to s3.storage.ts.

* Added support for project versioning, better project updating. (#7046)

Projects' package.json's should now include a section `etherealEngine`, which
contains the `version` of the engine that it is known to be compatible with.
The name field is now the definitive name of the project - the name of the
repository that the project is in is not used for any naming purposes.
The version in here is also displayed, and tags are used for retrieving
specific commits.

Replaced Update and Reset functionality with a single drawer. This drawer lets
user select a destination repository, as well as a source repository/branch/tagged
commit (the latest commit is also selectable). The API checks that the source and
destination are accessible by the user, and that the user has push permissions for
the latter. It also checks that the destination is either empty, or contains a
project whose name matches the source project's name.

A warning is displayed if the source project's engine version does not match
the deployment's project version, but it is always accepted. Update now always
sends `reset: true` to project.update, so whatever is in the
<deployment>-deployment branch in the destination is overwritten.

Updated builder update to a) allow for choosing which commit in the builder's repo
to use when doing the update and b) select projects to update in the new builder
update drawer.

* Revert "Added support for project versioning, better project updating. (#7046)" (#7111)

This reverts commit 8961fa4.

* Added cloudfront region to AWS settings and storage provider. (#7116)

Made Cloudfront settings editable in admin settings sub-page.

* Fixed bug in pruning old S3 client files. (#7117)

Vite sometimes generates the same hash for a built file as the prior run. These files were getting deleted
at the end of the build process because they were being recorded before the client build as files that
existed and should be deleted, leading to missing files at the end of the process.

Made get-deletable-client-files.ts store the list of files to be pruned stored in S3. push-client-to-s3.ts
now reads in the list from S3 and removes files whose names are the same as the just-built client files,
then pushes that back to S3. delete-old-s3-files.ts gets the list from S3.

* AR Placement Mode (#7113)

* get widget ui working again

* start implementing anchor widget

* implement immersive AR placement mode

* leaving the world network removes the roomcode and instanceid in the url params

* Fixed chat issues (#7112)

Co-authored-by: Josh Field <[email protected]>

* Fix relative worker imports having CORS errors when using s3/cloudfront (#7121)

* cleanup console logs

* AR Placement Widget Refactor

* Bump volumetric package to 1.0.5

* New Project API System Convention (#7122)

* Optimize Vite Code Splitting (#7123)

* implement basic camera settings

* Fix FullscreenContainer

When loading on iOS, the FullscreenContainer was not including child components in the render tree.

* Disable fullscreen button on iOS

Boolean was inverted.

* Add k8s active pod logging page in admin panel (#7076)

* Initial changes for server info

* Introduced state in server info service.

* Added table for pods

* Removed temp section

* Added auto refresh functionality

* Added server info refresh functionality

* Fixed table scrolls

* Added server logs

* Added server scope

* Added support for project versioning, better project updating. (#7125)

Projects' package.json's should now include a section `etherealEngine`, which
contains the `version` of the engine that it is known to be compatible with.
The name field is now the definitive name of the project - the name of the
repository that the project is in is not used for any naming purposes.
The version in here is also displayed, and tags are used for retrieving
specific commits.

Replaced Update and Reset functionality with a single drawer. This drawer lets
user select a destination repository, as well as a source repository/branch/tagged
commit (the latest commit is also selectable). The API checks that the source and
destination are accessible by the user, and that the user has push permissions for
the latter. It also checks that the destination is either empty, or contains a
project whose name matches the source project's name.

A warning is displayed if the source project's engine version does not match
the deployment's project version, but it is always accepted. Update now always
sends `reset: true` to project.update, so whatever is in the
<deployment>-deployment branch in the destination is overwritten.

Updated builder update to a) allow for choosing which commit in the builder's repo
to use when doing the update and b) select projects to update in the new builder
update drawer.

* fix bug with leaveNetwork

* Fix for builder tag

* Another builder tag fix.

* Another builder tag fix.

* increase curvature of teleport controls

* add some more cyberbot avatars

* AR anchor widget disabled in VR

* fix bug with scene loading

* default to auto mode to dollhouse

* update default project engine version

* Add Teleport Fade to Black (#7130)

* Add count property to instance server patching (#7128)

* add types to patch server, add a count argument

* fix incorrect hookstate

Co-authored-by: Hanzla Mateen <[email protected]>

* add local storage dist mode, fix worker stuff

* Replaced instances of the overlay with ethereal engine. (#7129)

Co-authored-by: hanzlamateen <[email protected]>

* Fixed several avatar-related bugs (#7132)

Spawning of avatar now uses avatar object on user object. Client had previously
been using fetchAvatarList and pulling the matching avatar off that, which was
prone to failure if it was not on the first page. Instanceserver now gets user
via feathers instead of sequelize model so that avatar is attached to user, and
does not have to do a separate fetch of user's avatar.

Made project.update not ru onInstall hook if the project already exists in the database.
This was causing avatars to be duplicated.

Updated fetchAvatarList to paginate. Updated avatar selection menus to paginate themselves
by their page length and to make calls to fetchAvatarList when they need to get more from
the API.

* Fixed several bugs in project versioning. (#7131)

project.find no longer errors out if any individual project fetch from Github
fails. The returned error is caught and placed into an array of errors.
This array is returned alongside the valid data, to be displayed to the requesting
user.

project.find's call to getRepo was not removing the `.git` from the repository name,
which was resulting in invalid calls. It now is.

Failing to get a project's package.json is now caught and ignored. The information
that is expected to be retrieved is just not returned.

Added GitHub scopes to authentication seed. These are necessary for full access to
repos for projects.

Removed a redundant fetch of projects on admin projects page.

Added a button in ProjectFields.tsx to copy the destinationURL to the sourceURL.

Reject project sources that lack an xrengine.config,ts

* Made generate thumbnail and envmap optional in save scene. (#7133)

* Added 8th wall in admin panel client settings (#7107)

* Added 8th wall in admin panel client settings

* Moved is dev to config

* Fixed typo in script

* Moved config to structured client object

* Moved env usages in client to config

* Setting 8th wall key in client configs

* Fixed errors

* Reverted githubapp-helper

Co-authored-by: Hanzla Mateen <[email protected]>

* Fix Face API Worker & Improve Client Dist Handling (#7134)

* more worker fixes

* refactor gltf loader out of global scope

* make isDev it's own export

* update isDev imports

* fix tests

* Added script to bump versions of default-project and template-project. (#7136)

* Fixed issues with project version bumping.

* More project bump fixes. (#7138)

* fix incorrect publicPath, optimize unnecssary await in MediaSystem

* Fix local project seeding (#7139)

* make prettier happy

* remove test script from template project

* fix default follow camera theta to orient camera behind avatar

* fix emote menu

* v1.0.0-rc5 (#7143)

Co-authored-by: CI Bot <[email protected]>

Co-authored-by: dinomut1 <[email protected]>
Co-authored-by: Josh Field <[email protected]>
Co-authored-by: dinomut1 <[email protected]>
Co-authored-by: Gheric Speiginer <[email protected]>
Co-authored-by: Hanzla Mateen <[email protected]>
Co-authored-by: hanzlamateen <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: CI Bot <[email protected]>
Update master to 1.0.0-rc6
Update master with rc6 version
Update master branch to v1.0.0-rc7
Release v1.0.0-rc8 to master
Merge to master ahead of CES
@aditya-mitra
Copy link
Collaborator

@achen5671 Can you cherry pick the commits you have made into a separate branch and PR? Because there are commits from other branches and files which do not seem relevant

@achen5671
Copy link
Contributor Author

achen5671 commented Jun 26, 2024

@achen5671 Can you cherry pick the commits you have made into a separate branch and PR? Because there are commits from other branches and files which do not seem relevant

I can. Can you let me know which change you thought was not relavant. Im assuming you are talking about the ContextMenu.
If that is it, it is related because the current context menu position would be broken if it's open from the right side of the screen.

The changes to the menu fixes that

@achen5671
Copy link
Contributor Author

achen5671 commented Jun 28, 2024

@aditya-mitra I've broke out the context menu change to a separate PR here.

#10475

@aditya-mitra
Copy link
Collaborator

@achen5671 Can you cherry pick the commits you have made into a separate branch and PR? Because there are commits from other branches and files which do not seem relevant

I can. Can you let me know which change you thought was not relavant. Im assuming you are talking about the ContextMenu. If that is it, it is related because the current context menu position would be broken if it's open from the right side of the screen.

The changes to the menu fixes that

I was talking about these changes

image

@achen5671
Copy link
Contributor Author

@achen5671 Can you cherry pick the commits you have made into a separate branch and PR? Because there are commits from other branches and files which do not seem relevant

I can. Can you let me know which change you thought was not relavant. Im assuming you are talking about the ContextMenu. If that is it, it is related because the current context menu position would be broken if it's open from the right side of the screen.
The changes to the menu fixes that

I was talking about these changes

image

ah that makes sense. I will also break that out into a new PR. ty!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants