Skip to content

feat: living lobby prototype - #10082

Draft
eordano wants to merge 12 commits into
devfrom
feat/living-lobby-upstream
Draft

eordano wants to merge 12 commits into
devfrom
feat/living-lobby-upstream

Conversation

@eordano

@eordano eordano commented Sep 13, 2026

Copy link
Copy Markdown
Member

Adds a Home lobby behind the default-off explorer-alfa-living-lobby flag. Home shows the avatar, places, live events, online friends and recent destinations while the world prepares. Jump In enters the world; Escape returns Home after dismissing any popup. The logo opens Home and the avatar opens Backpack.

The portrait has an opaque circular background and visible border. The menu close button has a larger target and space from the screen edge. Existing Backpack, Events and Communities colors remain unchanged. With the flag disabled, the original welcome, menu and navigation remain active.

Both cohorts report exposure, readiness, entry and discovery/travel activity through the existing analytics pipeline. Reopening a menu does not count as another entry. Explicit destinations and local overrides are marked separately for comparison.

Validation

The portrait, close button, Home/Backpack navigation, 4:3 and ultrawide layouts work on both platforms. The original welcome and menu work with the flag off.

Test Instructions

  1. Launch with --open-lobby --living-lobby. Authenticate; Home should appear while world preparation continues. Click Jump In during preparation and confirm world entry.
  2. Press Escape from the world; open a popup and check Escape dismisses it first. Verify Decentraland opens Home, the Home avatar opens Backpack, and Places/Events navigation and their Jump In actions work. Existing Backpack, Events and Communities page colors should remain unchanged.
  3. Launch without the args. Verify the original welcome including Different Account, original loading screen and original menu. Repeat Places/Events Jump In.
  4. Launch enabled with --position 40,54; verify the explicit destination is honored. Verify no online friends means no friends section, and unavailable posters keep their fallback.

@eordano eordano added the force-build Used to trigger a build on draft PR label Sep 13, 2026
@github-actions

github-actions Bot commented Sep 13, 2026

Copy link
Copy Markdown
Contributor

🚦 CI Status

Build

Build failed! Check the logs to see what went wrong.
If the error repeats please consider the clean-build tag.

Platform Links & timing
Windows GitHub job · Unity Cloud #4 · Unity log · ⏱ 28m 42s build + 11m 19s queue
Mac GitHub job · Unity Cloud #4 · ⏱ 26m 33s build + 3m 1s queue

Lint

No C# files changed — lint ratchet skipped.

Tests

All Unity tests passed ✅

TESTS SUITE Result Passed Failed Skipped Tests time Job time
EditMode ✅ Passed 25913 0 13 3m 48s 15m 29s
PlayMode ✅ Passed 248 0 37 44s 9m 17s

Tests time sums the test cases; Job time is the job's wall clock including checkout, licensing and asset import.

Slowest tests
  • [editmode] 16.5s DCL.AuthenticationScreenFlow.Tests.ProfileFetchingAuthStateShould.CancelStalledFetchOnTimeout
  • [editmode] 12.4s DCL.Tests.Editor.ValidationTests.CheckUnityObjectsForMissingReferences
  • [editmode] 10.2s DCL.Tests.Editor.ValidationTests.CheckForDebugUsage
  • [editmode] 10.0s DCL.Notifications.Tests.NotificationsRequestControllerShould.ReuseSingleListInstanceAcrossPollIterations
  • [editmode] 5.4s DCL.Tests.Editor.ValidationTests.SettingsAreValid
  • [editmode] 5.0s DCL.Friends.Tests.FriendsConnectivityStatusTrackerShould.RaiseOnlineEventWhenSameStatusIsRebroadcastAfterReset
  • [editmode] 5.0s CrdtEcsBridge.WorldSynchronizer.Tests.CrdtWorldSynchronizerShould.ThrowIfSyncBufferIsAlreadyRented
  • [editmode] 4.2s SceneRunner.Tests.SceneFacadeShould.ContinueUpdateLoopOnBackgroundThread(90,4000)
  • [editmode] 4.1s SceneRunner.Tests.SceneFacadeShould.ContinueUpdateLoopOnBackgroundThread(10,4000)
  • [editmode] 4.1s SceneRunner.Tests.SceneFacadeShould.ContinueUpdateLoopOnBackgroundThread(5,4000)
  • [playmode] 4.4s Global.Tests.PlayMode.CubeWaveSceneShould.EmitECSComponents
  • [playmode] 3.1s DCL.SDKComponents.Tween.Tests.TweenUpdaterSystemShould.ContinuousTweensRunIndefinitelyWhenDurationIsZero
  • [playmode] 2.3s DCL.SDKComponents.Tween.Tests.TweenSequenceSystemShould.TweenSequenceWithoutLoopCompletesOnce
  • [playmode] 2.3s DCL.SDKComponents.Tween.Tests.TweenUpdaterSystemShould.RotateContinuousCompletesAfterDuration
  • [playmode] 2.3s DCL.SDKComponents.Tween.Tests.TweenUpdaterSystemShould.MoveContinuousMovesAndCompletesAfterDuration
  • [playmode] 2.3s DCL.SDKComponents.Tween.Tests.TweenUpdaterSystemShould.TextureMoveContinuousOffsetCompletesAndUpdatesMaterial
  • [playmode] 2.3s DCL.SDKComponents.Tween.Tests.TweenSequenceSystemShould.TextureMoveSequenceUpdatesMaterial
  • [playmode] 1.7s DCL.SDKComponents.Tween.Tests.TweenSequenceSystemShould.TweenSequenceWithMoveRotateScaleWithOmittedScale_ResolvesScaleFromCurrentTransform
  • [playmode] 1.6s DCL.SDKComponents.Tween.Tests.TweenUpdaterSystemShould.RotateContinuousPositiveAndNegativeYDirectionsAreOpposite
  • [playmode] 1.6s DCL.SDKComponents.Tween.Tests.TweenUpdaterSystemShould.RotateContinuousAroundXAxisRotatesAroundXNotZ

Full report: run summary · results + editor logs: editmode · playmode

Performance

🏁 Bare-metal benchmark finished — run #34831724592.

Full report

PR #10082, run #34831724592

Overall: ✅ no significant changes

Builds: Windows change, Windows baseline, macOS change, macOS baseline

How to read this table
  • Each build is measured 3 times, interleaved with the other build (change, baseline, change, baseline, ...) in the same session, so both see the same world content and machine state. The values are the median, and (min–max) is the lowest and highest of those runs.
  • Δ is Change minus Baseline (a negative Δ means Change is faster).
  • 🟢 faster / 🔴 slower — a difference that passed every check: the runs are fully separated (every run of one build faster than every run of the other), and the median difference is at least 3% and at least 0.5 ms.
  • ⚪ within noise — the builds' runs overlap, or the difference is tiny; it cannot be told apart from random variation. Treat it as no change.
  • — informational — the 0.1% worst metrics average only the few worst frames of a run, so a single OS hiccup swings them by a lot; they are shown for context and never earn a verdict.
  • ⚠️ no verdict — the two builds' sessions were not comparable (very different sample counts, or too few usable runs), so no conclusion is drawn from them.
  • Exceptions per run — the average number of exceptions in a run's log, not counting teardown ones logged while the app quits. Flagged only on a difference of at least 2 per run and 1.5× the other build; exception kinds the baseline never threw are called out under the table. The Exception breakdown groups all of them by the explorer's report category and exception type (as totals across the runs).
  • A run that logged unusually many exceptions (at least 10 and 5× the median of its build's runs — e.g. a service was down during it) is excluded from all numbers and called out under the table.
  • The Overall line at the top only reacts to a metric that moved on two or more machines, or by 10% or more on one — a single modest 🟢/🔴 cell can still be a statistical fluke.

Apple M1

Metric Baseline Change Δ Result
Samples 4163 (×3) 4245 (×3)
CPU average 21.5 ms (20.3–22.9) 21.1 ms (19.3–21.3) -0.4 ms ⚪ within noise
CPU 1% worst 196.7 ms (121.2–220.8) 175.0 ms (133.4–201.0) -21.7 ms ⚪ within noise
CPU 0.1% worst 235.9 ms (232.3–237.3) 236.8 ms (233.1–241.0) 0.9 ms — informational
GPU average 34.8 ms (33.7–35.4) 33.4 ms (32.2–34.7) -1.3 ms ⚪ within noise
GPU 1% worst 46.3 ms (45.6–46.7) 43.7 ms (41.9–45.0) -2.6 ms 🟢 6% faster
GPU 0.1% worst 47.9 ms (47.3–51.6) 45.0 ms (42.9–46.1) -2.8 ms — informational
Exceptions per run 0 0 0 ⚪ no significant change

Intel Core i5

Metric Baseline Change Δ Result
Samples 4651 (×3) 4611 (×3)
CPU average 19.3 ms (17.2–19.6) 19.4 ms (18.1–20.4) 0.1 ms ⚪ within noise
CPU 1% worst 284.8 ms (44.2–311.2) 288.5 ms (106.4–324.7) 3.8 ms ⚪ within noise
CPU 0.1% worst 390.1 ms (121.3–400.1) 395.9 ms (393.2–418.9) 5.8 ms — informational
GPU average 12.5 ms (11.6–12.5) 12.1 ms (12.1–12.9) -0.4 ms ⚪ within noise
GPU 1% worst 184.0 ms (24.7–196.8) 148.6 ms (40.7–164.0) -35.4 ms ⚪ within noise
GPU 0.1% worst 386.5 ms (44.8–402.3) 373.9 ms (231.9–389.9) -12.5 ms — informational
Exceptions per run 0 0 0 ⚪ no significant change

Automation

On demand — comment /visual-tests on this PR to run the visual regression suite against its build.

@NickKhalow NickKhalow added the force-lint Forces lint check on PR (Only if changes are introduced under 'Explorer/**' path) label Sep 14, 2026
Arm the callback listener before opening the browser and return sign-in to the running client. Retry incomplete bridge files, preserve early cached-login completion, and keep OTP completion tied to its login attempt.

Propagate cancellation through OTP operations and return to login selection when cached OTP restoration times out.
@decentraland-bot

This comment has been minimized.

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

Labels

force-build Used to trigger a build on draft PR force-lint Forces lint check on PR (Only if changes are introduced under 'Explorer/**' path)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants