Skip to content

Commit

Permalink
Merge pull request #2757 from decentraland/release/release-11-11-2024
Browse files Browse the repository at this point in the history
release: 11-11-2024
  • Loading branch information
m3taphysics authored Nov 12, 2024
2 parents 89da81b + 8139326 commit bf90c01
Show file tree
Hide file tree
Showing 146 changed files with 2,482 additions and 928 deletions.
8 changes: 4 additions & 4 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
name: Bug report
about: Create a report to help us improve
title: '[QA] Title'
labels: 'bug'
labels: 'bug, new'
assignees: ''


Expand All @@ -20,16 +20,16 @@ assignees: ''
2.
3.

### **Expected behavior:**
### **Actual Result:**


### **Current behaviour:**
### ✔️ **Expected Result:**


### **Repro Index:**
<!-- Starting on 0/10 attempts -->

#### **Evidence:**
### **Evidence:**


#### **Additional Notes:**
Expand Down
8 changes: 4 additions & 4 deletions .github/actions/version/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,12 @@ runs:
MINOR="${BASH_REMATCH[2]}"
BUILD="${BASH_REMATCH[3]}"
NAME="${BASH_REMATCH[4]}"
COMMITS_SINCE="${BASH_REMATCH[5]}"
echo "Version parsed match:"
echo "[Major]: $MAJOR"
echo "[Minor]: $MINOR"
echo "[Build]: $BUILD"
echo "[Name]: $NAME"
echo "Commits since tag: $COMMITS_SINCE"
else
echo "Failling! Tag does not match expected format: $TAG"
exit 1
Expand All @@ -60,16 +58,18 @@ runs:
else
BRANCH_NAME=$(echo "$GITHUB_REF" | cut -d'/' -f 3)
fi
COMMIT_HASH=${GITHUB_SHA}
FULLVER="v${MAJOR}.${MINOR}.$((BUILD + COMMITS_SINCE))-${NAME}-${BRANCH_NAME}"
FULLVER="v${MAJOR}.${MINOR}.$((BUILD))-${NAME}-${BRANCH_NAME}-${COMMIT_HASH}"
echo "Full version: $FULLVER"
echo "full_version=$FULLVER" >> "$GITHUB_OUTPUT"
TAGVER="v${MAJOR}.${MINOR}.$((BUILD + COMMITS_SINCE))-${NAME}"
echo "Tag version: $TAGVER"
echo "tag_version=$TAGVER" >> "$GITHUB_OUTPUT"
NEXT_FULLVER="v${MAJOR}.$((MINOR + 1)).0-${NAME}-${BRANCH_NAME}"
NEXT_FULLVER="v${MAJOR}.$((MINOR + 1)).0-${NAME}-${BRANCH_NAME}-${COMMIT_HASH}"
echo "Next full version: $NEXT_FULLVER"
echo "next_full_version=$NEXT_FULLVER" >> "$GITHUB_OUTPUT"
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/build-unitycloud.yml
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,8 @@ jobs:
if [ "${{ matrix.target }}" == "macos" ]; then
zip -r upload_to_s3/Decentraland_${{ matrix.target }}.zip build.tar
elif [ "${{ matrix.target }}" == "windows64" ]; then
zip -r upload_to_s3/Decentraland_${{ matrix.target }}.zip build -x "build/*_BackUpThisFolder_ButDontShipItWithYourGame**" -x "build/*_BurstDebugInformation_DoNotShip**"
cd build
zip -r ../upload_to_s3/Decentraland_${{ matrix.target }}.zip . -x "*_BackUpThisFolder_ButDontShipItWithYourGame**" -x "*_BurstDebugInformation_DoNotShip**"
fi
- name: Upload artifact to S3
Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/s3-latest-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: S3 Latest Release

on:
release:
types:
- published
- edited

jobs:
check-latest-release:
runs-on: ubuntu-latest
steps:
- name: Check if current release is the latest release
id: check_latest
run: |
RELEASE_TAG=$(jq -r .release.tag_name "$GITHUB_EVENT_PATH")
echo "Release Tag: $RELEASE_TAG"
# Get the latest release from the API
LATEST_RELEASE=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r .tag_name)
echo "Latest Release: $LATEST_RELEASE"
# Set output for is_latest_release based on comparison
if [ "$RELEASE_TAG" == "$LATEST_RELEASE" ]; then
echo "is_latest_release=true" >> $GITHUB_OUTPUT
else
echo "is_latest_release=false" >> $GITHUB_OUTPUT
fi
echo "latest_release=$LATEST_RELEASE" >> $GITHUB_ENV
- name: Run actions if release is the latest
if: steps.check_latest.outputs.is_latest_release == 'true'
env:
AWS_MAX_ATTEMPTS: 3
AWS_RETRY_MODE: standard
AWS_ACCESS_KEY_ID: ${{ secrets.EXPLORER_TEAM_AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.EXPLORER_TEAM_AWS_SECRET_ACCESS_KEY }}
EXPLORER_TEAM_S3_BUCKET: ${{ secrets.EXPLORER_TEAM_S3_BUCKET }}
RELEASES_PATH: ${{ format('@dcl/{0}/releases', github.event.repository.name) }}
run: |
echo '{
"version": "${{ env.latest_release }}",
"timestamp": "'$(date -u +"%Y-%m-%dT%H:%M:%SZ")'"
}' > latest.json
aws s3 cp latest.json s3://$EXPLORER_TEAM_S3_BUCKET/$RELEASES_PATH/latest.json
126 changes: 126 additions & 0 deletions .github/workflows/upload-build-epic-store.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
name: Upload Latest Build to Epic Store

on:
workflow_dispatch:
inputs:
platform:
description: "Select the platform(s) to upload"
required: true
default: "both"
type: choice
options:
- windows
- mac
- both

jobs:
debug-build-artifacts:
runs-on: windows-latest

steps:
- name: Check out code
uses: actions/checkout@v3

- name: Get the latest release info
id: get_release
run: |
$releaseData = Invoke-RestMethod -Uri "https://api.github.com/repos/decentraland/unity-explorer/releases/latest"
$version = $releaseData.tag_name
$windowsUrl = ($releaseData.assets | Where-Object { $_.name -eq "Decentraland_windows64.zip" }).browser_download_url
$macosUrl = ($releaseData.assets | Where-Object { $_.name -eq "Decentraland_macos.zip" }).browser_download_url
Write-Host "Release version: $version"
Write-Host "Windows download URL: $windowsUrl"
Write-Host "macOS download URL: $macosUrl"
echo "version=$version" >> $env:GITHUB_OUTPUT
echo "windows_url=$windowsUrl" >> $env:GITHUB_OUTPUT
echo "macos_url=$macosUrl" >> $env:GITHUB_OUTPUT
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Ensure BuildRoot and CloudDir paths exist for Windows
if: ${{ github.event.inputs.platform == 'windows' || github.event.inputs.platform == 'both' }}
run: |
New-Item -ItemType Directory -Path "C:\Users\runneradmin\tools\BuildPatchTool\BuildRoot_Windows" -Force
New-Item -ItemType Directory -Path "C:\Users\runneradmin\tools\BuildPatchTool\CloudDir_Windows" -Force
- name: Ensure BuildRoot and CloudDir paths exist for macOS
if: ${{ github.event.inputs.platform == 'mac' || github.event.inputs.platform == 'both' }}
run: |
New-Item -ItemType Directory -Path "C:\Users\runneradmin\tools\BuildPatchTool\BuildRoot_Mac" -Force
New-Item -ItemType Directory -Path "C:\Users\runneradmin\tools\BuildPatchTool\CloudDir_Mac" -Force
- name: Download Windows build artifact
if: ${{ github.event.inputs.platform == 'windows' || github.event.inputs.platform == 'both' }}
run: |
echo "Downloading Windows build artifact..."
curl -L -o Decentraland_windows64.zip "${{ steps.get_release.outputs.windows_url }}"
echo "Extracting Windows build artifact..."
Expand-Archive -Path Decentraland_windows64.zip -DestinationPath "C:\Users\runneradmin\tools\BuildPatchTool\BuildRoot_Windows"
echo "Windows build artifact extracted to C:\Users\runneradmin\tools\BuildPatchTool\BuildRoot_Windows"
- name: Download macOS build artifact
if: ${{ github.event.inputs.platform == 'mac' || github.event.inputs.platform == 'both' }}
run: |
echo "Downloading macOS build artifact..."
curl -L -o Decentraland_macos.zip "${{ steps.get_release.outputs.macos_url }}"
echo "Extracting macOS build artifact..."
Expand-Archive -Path Decentraland_macos.zip -DestinationPath "C:\Users\runneradmin\MacBuildTemp"
New-Item -ItemType Directory -Path "C:\Users\runneradmin\tools\BuildPatchTool\BuildRoot_Mac" -Force
tar -xf "C:\Users\runneradmin\MacBuildTemp\build.tar" -C "C:\Users\runneradmin\tools\BuildPatchTool\BuildRoot_Mac"
echo "macOS build artifact extracted to C:\Users\runneradmin\tools\BuildPatchTool\BuildRoot_Mac"
- name: Download BuildPatchTool
run: |
echo "Downloading BuildPatchTool..."
Invoke-WebRequest -Uri "https://launcher-public-service-prod06.ol.epicgames.com/launcher/api/installer/download/BuildPatchTool.zip" -OutFile "BuildPatchTool.zip"
echo "Extracting BuildPatchTool..."
Expand-Archive -Path "BuildPatchTool.zip" -DestinationPath "C:\Users\runneradmin\tools\BuildPatchTool"
echo "BuildPatchTool extracted to C:\Users\runneradmin\tools\BuildPatchTool"
- name: Add BuildPatchTool to PATH
run: echo "C:\Users\runneradmin\tools\BuildPatchTool\Engine\Binaries\Win64" >> $env:GITHUB_PATH

- name: Upload Windows artifact
if: ${{ github.event.inputs.platform == 'windows' || github.event.inputs.platform == 'both' }}
run: |
C:\Users\runneradmin\tools\BuildPatchTool\Engine\Binaries\Win64\BuildPatchTool.exe `
-OrganizationId="${{ secrets.EPIC_STORE_ORG_ID }}" `
-ProductId="${{ secrets.EPIC_STORE_PRODUCT_ID }}" `
-ArtifactId="${{ secrets.EPIC_STORE_ARTIFACT_ID }}" `
-ClientId="${{ secrets.EPIC_STORE_CLIENT_ID }}" `
-ClientSecret="${{ secrets.EPIC_STORE_CLIENT_SECRET }}" `
-mode=UploadBinary `
-BuildRoot="C:\Users\runneradmin\tools\BuildPatchTool\BuildRoot_Windows" `
-CloudDir="C:\Users\runneradmin\tools\BuildPatchTool\CloudDir_Windows" `
-BuildVersion="${{ steps.get_release.outputs.version }}-win" `
-AppLaunch="Decentraland.exe" `
-AppArgs=""
- name: Upload macOS artifact
if: ${{ github.event.inputs.platform == 'mac' || github.event.inputs.platform == 'both' }}
run: |
C:\Users\runneradmin\tools\BuildPatchTool\Engine\Binaries\Win64\BuildPatchTool.exe `
-OrganizationId="${{ secrets.EPIC_STORE_ORG_ID }}" `
-ProductId="${{ secrets.EPIC_STORE_PRODUCT_ID }}" `
-ArtifactId="${{ secrets.EPIC_STORE_ARTIFACT_ID }}" `
-ClientId="${{ secrets.EPIC_STORE_CLIENT_ID }}" `
-ClientSecret="${{ secrets.EPIC_STORE_CLIENT_SECRET }}" `
-mode=UploadBinary `
-BuildRoot="C:\Users\runneradmin\tools\BuildPatchTool\BuildRoot_Mac\build" `
-CloudDir="C:\Users\runneradmin\tools\BuildPatchTool\CloudDir_Mac" `
-BuildVersion="${{ steps.get_release.outputs.version }}-mac" `
-AppLaunch="Decentraland.app/Contents/MacOS/Explorer" `
-AppArgs="" `
-Platform="Mac"
- name: Log BuildPatchTool log if upload fails
if: failure()
run: |
if (Test-Path "C:\Users\runneradmin\AppData\Local\BuildPatchTool\Saved\Logs\BuildPatchTool.log") {
Write-Host "Contents of BuildPatchTool.log:"
Get-Content -Path "C:\Users\runneradmin\AppData\Local\BuildPatchTool\Saved\Logs\BuildPatchTool.log" -Tail 100
} else {
Write-Host "BuildPatchTool.log not found."
}
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,11 @@ MonoBehaviour:
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: a39f0a305be6be143aabcbf7ebb59d62
m_Address: RoomIndicator
m_ReadOnly: 0
m_SerializedLabels: []
FlaggedDuringContentUpdateRestriction: 0
- m_GUID: aabac5666448b4345a76347f94ea32a4
m_Address: BackpackItem
m_ReadOnly: 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,34 +37,20 @@ protected override void Update(float t)
return;

foreach (RemoteEmoteIntention remoteEmoteIntention in emoteIntentions.Collection())
{
Entity entity = EntityOrNull(remoteEmoteIntention.WalletId);

// The entity was not created yet, so we wait until its created to be able to consume the intent
if (entity == Entity.Null)
{ // The entity was not created yet, so we wait until its created to be able to consume the intent
if (!entityParticipantTable.TryGet(remoteEmoteIntention.WalletId, out IReadOnlyEntityParticipantTable.Entry entry))
{
savedIntentions!.Add(remoteEmoteIntention);
continue;
}

ref CharacterEmoteIntent intention = ref World!.AddOrGet<CharacterEmoteIntent>(entity);
ref CharacterEmoteIntent intention = ref World!.AddOrGet<CharacterEmoteIntent>(entry.Entity);
intention.UpdateRemoteId(remoteEmoteIntention.EmoteId);
}
}

foreach (RemoteEmoteIntention savedIntention in savedIntentions!)
emotesMessageBus.SaveForRetry(savedIntention);
}

private Entity EntityOrNull(string walletId)
{
if (identityCache.Identity!.Address.Equals(walletId))
return playerEntity;

if (entityParticipantTable.Has(walletId))
return entityParticipantTable.Entity(walletId);

return Entity.Null;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@ public enum DecentralandEnvironment
{
Org,
Zone,
Today
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ namespace DCL.Browser.DecentralandUrls
public class DecentralandUrlsSource : IDecentralandUrlsSource
{
private const string ENV = "{ENV}";
private static string ASSET_BUNDLE_URL;
private static string GENESIS_URL;

private const string ASSET_BUNDLE_URL_TEMPLATE = "https://ab-cdn.decentraland.{0}";
private const string GENESIS_URL_TEMPLATE = "https://realm-provider-ea.decentraland.{0}/main";


private readonly Dictionary<DecentralandUrl, string> cache = new ();
private readonly string environmentDomainLowerCase;
Expand All @@ -17,6 +23,27 @@ public class DecentralandUrlsSource : IDecentralandUrlsSource
public DecentralandUrlsSource(DecentralandEnvironment environment)
{
environmentDomainLowerCase = environment.ToString()!.ToLower();

switch (environment)
{
case DecentralandEnvironment.Org:
case DecentralandEnvironment.Zone:
ASSET_BUNDLE_URL = string.Format(ASSET_BUNDLE_URL_TEMPLATE, environmentDomainLowerCase);
GENESIS_URL = string.Format(GENESIS_URL_TEMPLATE, environmentDomainLowerCase);
break;
case DecentralandEnvironment.Today:

//The today environemnt is a mixture of the org and today enviroments.
//We want to fetch pointers from org, but asset bundles from today
//Thats because how peer-testing.decentraland.org works.
//Its a catalyst that replicates the org environment and eth network, but doesnt propagate back to the production catalysts
environmentDomainLowerCase = DecentralandEnvironment.Org.ToString()!.ToLower();
ASSET_BUNDLE_URL = "https://ab-cdn.decentraland.today";

//On staging, we hardcode the catalyst because its the only valid one with a valid comms configuration
GENESIS_URL = "https://peer-testing.decentraland.org";
break;
}
}

public string Url(DecentralandUrl decentralandUrl)
Expand All @@ -41,23 +68,26 @@ private static string RawUrl(DecentralandUrl decentralandUrl) =>
DecentralandUrl.AuthSignature => $"https://decentraland.{ENV}/auth/requests",
DecentralandUrl.POI => $"https://dcl-lists.decentraland.{ENV}/pois",
DecentralandUrl.ContentModerationReport => $"https://places.decentraland.{ENV}/api/report",
DecentralandUrl.GateKeeperSceneAdapter => $"https://comms-gatekeeper.decentraland.{ENV}/get-scene-adapter",
DecentralandUrl.GateKeeperSceneAdapter =>
$"https://comms-gatekeeper.decentraland.{ENV}/get-scene-adapter",
DecentralandUrl.OpenSea => $"https://opensea.decentraland.{ENV}",
DecentralandUrl.Host => $"https://decentraland.{ENV}",
DecentralandUrl.PeerAbout => $"https://peer.decentraland.{ENV}/about",
DecentralandUrl.DAO => $"https://decentraland.{ENV}/dao/",
DecentralandUrl.Notification => $"https://notifications.decentraland.{ENV}/notifications",
DecentralandUrl.NotificationRead => $"https://notifications.decentraland.{ENV}/notifications/read",
DecentralandUrl.NotificationRead =>
$"https://notifications.decentraland.{ENV}/notifications/read",
DecentralandUrl.FeatureFlags => $"https://feature-flags.decentraland.{ENV}",
DecentralandUrl.Help => $"https://decentraland.{ENV}/help/",
DecentralandUrl.Market => $"https://market.decentraland.{ENV}",
DecentralandUrl.AssetBundlesCDN => $"https://ab-cdn.decentraland.{ENV}",
DecentralandUrl.AssetBundlesCDN => ASSET_BUNDLE_URL,
DecentralandUrl.ArchipelagoStatus => $"https://archipelago-ea-stats.decentraland.{ENV}/status",
DecentralandUrl.GatekeeperStatus => $"https://comms-gatekeeper.decentraland.{ENV}/status",
DecentralandUrl.Genesis => $"https://realm-provider-ea.decentraland.{ENV}/main",
DecentralandUrl.Genesis => GENESIS_URL,
DecentralandUrl.Badges => $"https://badges.decentraland.{ENV}",
DecentralandUrl.CameraReelUsers => $"https://camera-reel-service.decentraland.{ENV}/api/users",
DecentralandUrl.CameraReelImages => $"https://camera-reel-service.decentraland.{ENV}/api/images",
DecentralandUrl.CameraReelUsers => $"https://camera-reel-service.decentraland.{ENV}/api/users",
DecentralandUrl.CameraReelImages =>
$"https://camera-reel-service.decentraland.{ENV}/api/images",
_ => throw new ArgumentOutOfRangeException(nameof(decentralandUrl), decentralandUrl, null!)
};
}
Expand Down
4 changes: 2 additions & 2 deletions Explorer/Assets/DCL/Chat/ChatController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -458,9 +458,9 @@ private void OnMessageAdded(ChatMessage chatMessage)

private void CreateChatEntry(ChatMessage chatMessage)
{
if (chatMessage.SentByOwnUser == false && entityParticipantTable.Has(chatMessage.WalletAddress))
if (chatMessage.SentByOwnUser == false && entityParticipantTable.TryGet(chatMessage.WalletAddress, out IReadOnlyEntityParticipantTable.Entry entry))
{
Entity entity = entityParticipantTable.Entity(chatMessage.WalletAddress);
Entity entity = entry.Entity;
GenerateChatBubbleComponent(entity, chatMessage);
UIAudioEventsBus.Instance.SendPlayAudioEvent(viewInstance!.ChatReceiveMessageAudio);
}
Expand Down
2 changes: 2 additions & 0 deletions Explorer/Assets/DCL/FeatureFlags/FeatureFlagsStrings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,7 @@ public static class FeatureFlagsStrings
public const string WALLETS_VARIANT = "wallet";
public const string ONBOARDING = "onboarding";
public const string ONBOARDING_ENABLED_VARIANT = "enabled";
public const string SKYBOX_SETTINGS = "alfa-skybox-settings";
public const string SKYBOX_SETTINGS_VARIANT = "settings";
}
}
Loading

0 comments on commit bf90c01

Please sign in to comment.