Skip to content

Commit 842ac1e

Browse files
authored
Merge pull request #4379 from secondlife/release/2025.06
Release/2025.06
2 parents 2867899 + 787b63f commit 842ac1e

File tree

281 files changed

+7754
-2418
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

281 files changed

+7754
-2418
lines changed

.github/pull_request_template.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Issue Link: <!-- e.g., closes #123 or relates to #456 -->
1919
Please ensure the following before requesting review:
2020

2121
- [ ] I have provided a clear title and detailed description for this pull request.
22+
- [ ] If useful, I have included media such as screenshots and video to show off my changes.
2223
- [ ] The PR is linked to a relevant issue with sufficient context.
2324
- [ ] I have tested the changes locally and verified they work as intended.
2425
- [ ] All new and existing tests pass.

.github/workflows/qatest.yaml

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,10 @@ jobs:
4646
runner: qa-dan-asus
4747
artifact: Windows-installer
4848
install-path: 'C:\viewer-automation-main'
49-
# Commented out until mac runner is available
50-
# - os: mac
51-
# runner: qa-mac-atlas
52-
# artifact: Mac-installer
53-
# install-path: '$HOME/Documents/viewer-automation'
49+
- os: mac
50+
runner: qa-mac-atlas
51+
artifact: macOS-installer
52+
install-path: '$HOME/Documents/viewer-automation'
5453
fail-fast: false
5554

5655
runs-on: [self-hosted, "${{ matrix.runner }}"]
@@ -498,30 +497,54 @@ jobs:
498497
mkdir -p "$MOUNT_POINT"
499498
500499
# Mount the DMG
501-
hdiutil attach "${{ env.INSTALLER_PATH }}" -mountpoint "$MOUNT_POINT" -nobrowse
500+
hdiutil attach "$INSTALLER_PATH" -mountpoint "$MOUNT_POINT" -nobrowse
502501
503502
echo "✅ DMG mounted at $MOUNT_POINT"
504503
505-
# Find the app in the mounted DMG
504+
echo "Installing application to default location from DMG..."
505+
506+
# Find the .app bundle in the DMG
506507
APP_PATH=$(find "$MOUNT_POINT" -name "*.app" -type d | head -1)
507508
508509
if [ -z "$APP_PATH" ]; then
509510
echo "❌ Error: No .app bundle found in the mounted DMG!"
510511
exit 1
511512
fi
512513
513-
echo "Installing application to Applications folder..."
514+
APP_NAME=$(basename "$APP_PATH")
515+
DEST_PATH="/Applications/$APP_NAME"
516+
517+
# Handle existing installation
518+
if [ -d "$DEST_PATH" ]; then
519+
echo "Found existing installation at: $DEST_PATH"
520+
echo "Moving existing installation to trash..."
521+
522+
# Move to trash instead of force removing
523+
TRASH_PATH="$HOME/.Trash/$(date +%Y%m%d_%H%M%S)_$APP_NAME"
524+
mv "$DEST_PATH" "$TRASH_PATH" || {
525+
echo "⚠️ Could not move to trash, trying direct removal..."
526+
rm -rf "$DEST_PATH" || {
527+
echo "❌ Could not remove existing installation"
528+
echo "Please manually remove: $DEST_PATH"
529+
exit 1
530+
}
531+
}
532+
533+
echo "✅ Existing installation handled successfully"
534+
fi
514535
515-
# Copy the app to the Applications folder (or specified install path)
516-
cp -R "$APP_PATH" "${{ matrix.install-path }}"
536+
# Copy the .app to /Applications
537+
echo "Copying app from: $APP_PATH"
538+
echo "To destination: /Applications/"
539+
cp -R "$APP_PATH" /Applications/
517540
518541
# Verify the app was copied successfully
519-
if [ ! -d "${{ matrix.install-path }}/$(basename "$APP_PATH")" ]; then
520-
echo "❌ Error: Failed to install application to ${{ matrix.install-path }}!"
542+
if [ ! -d "$DEST_PATH" ]; then
543+
echo "❌ Error: Failed to install application to /Applications!"
521544
exit 1
522545
fi
523546
524-
echo "✅ Application installed successfully to ${{ matrix.install-path }}"
547+
echo "✅ Application installed successfully to /Applications"
525548
526549
# Save mount point for cleanup
527550
echo "MOUNT_POINT=$MOUNT_POINT" >> $GITHUB_ENV

CONTRIBUTING.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ changes.
88
## Table of contents
99

1010
- [Communication](#communication)
11+
- [What to work on](#what-to-work-on)
1112
- [Reporting bugs and requesting features](#reporting-bugs-and-requesting-features)
1213
- [Contributing pull requests](#contributing-pull-requests)
1314

@@ -35,6 +36,16 @@ developer-to-developer or support.
3536
discussion between viewer maintainers.
3637
- Our [discord channel](https://discord.com/channels/677442248157167619/1357059883400167585) is available for real-time discussion.
3738

39+
## What to work on
40+
41+
If you're looking for ways to contribute code, here are some ways to get involved:
42+
43+
- Explore existing issues on the [GitHub issue tracker](https://github.com/secondlife/viewer/issues) to find known problems, bugs, or enhancement discussions.
44+
- File new issues if you’ve discovered a bug or have a specific idea to propose. If your idea is user-facing, consider submitting it through feedback.secondlife.com so it can reach a broader audience and be prioritized by Linden Lab staff.
45+
- Look for the [help wanted](https://github.com/secondlife/viewer/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%22) label. These are tasks the core maintainers have specifically identified as good candidates for community help.
46+
- Talk to maintainers before starting significant work. Even if an issue exists, discussing your approach first ensures alignment with ongoing efforts and increases the likelihood your pull request will be accepted.
47+
48+
Collaboration is essential. We encourage contributors to work closely with the Second Life engineering team and other developers to keep work consistent and maintainable.
3849

3950
## Reporting bugs and requesting features
4051

autobuild.xml

Lines changed: 70 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2332,59 +2332,33 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
23322332
</map>
23332333
<key>threejs</key>
23342334
<map>
2335+
<key>copyright</key>
2336+
<string>Copyright © 2010-2021 three.js authors</string>
2337+
<key>license</key>
2338+
<string>MIT</string>
2339+
<key>license_file</key>
2340+
<string>LICENSES/THREEJS_LICENSE.txt</string>
2341+
<key>name</key>
2342+
<string>threejs</string>
23352343
<key>platforms</key>
23362344
<map>
2337-
<key>darwin64</key>
2338-
<map>
2339-
<key>archive</key>
2340-
<map>
2341-
<key>hash</key>
2342-
<string>cfed00d8ea7265c035c2d86a234b28efb0b23756</string>
2343-
<key>hash_algorithm</key>
2344-
<string>sha1</string>
2345-
<key>url</key>
2346-
<string>https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-darwin64-b8f6746.tar.zst</string>
2347-
</map>
2348-
<key>name</key>
2349-
<string>darwin64</string>
2350-
</map>
2351-
<key>linux64</key>
2352-
<map>
2353-
<key>archive</key>
2354-
<map>
2355-
<key>hash</key>
2356-
<string>9de1295b157c9913c28be81ff933c73493ecc132</string>
2357-
<key>hash_algorithm</key>
2358-
<string>sha1</string>
2359-
<key>url</key>
2360-
<string>https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-linux64-b8f6746.tar.zst</string>
2361-
</map>
2362-
</map>
2363-
<key>windows64</key>
2345+
<key>common</key>
23642346
<map>
23652347
<key>archive</key>
23662348
<map>
23672349
<key>hash</key>
2368-
<string>4141710fccbd1ea2b3b53d00e189bdfa2ee9d441</string>
2350+
<string>982c0fa427458082ea9e3cb9603904210732b64e</string>
23692351
<key>hash_algorithm</key>
23702352
<string>sha1</string>
23712353
<key>url</key>
2372-
<string>https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-b8f6746/threejs-0.132.2-windows64-b8f6746.tar.zst</string>
2354+
<string>https://github.com/secondlife/3p-three_js/releases/download/v0.132.2-5da28d9/threejs-0.132.2-common-8454371083.tar.zst</string>
23732355
</map>
23742356
<key>name</key>
2375-
<string>windows64</string>
2357+
<string>common</string>
23762358
</map>
23772359
</map>
2378-
<key>license</key>
2379-
<string>MIT</string>
2380-
<key>license_file</key>
2381-
<string>LICENSES/THREEJS_LICENSE.txt</string>
2382-
<key>copyright</key>
2383-
<string>Copyright © 2010-2021 three.js authors</string>
23842360
<key>version</key>
23852361
<string>0.132.2</string>
2386-
<key>name</key>
2387-
<string>threejs</string>
23882362
</map>
23892363
<key>tinygltf</key>
23902364
<map>
@@ -2896,6 +2870,64 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors</string>
28962870
<key>version</key>
28972871
<string>1.0.9-5e8947c</string>
28982872
</map>
2873+
<key>discord_sdk</key>
2874+
<map>
2875+
<key>platforms</key>
2876+
<map>
2877+
<key>windows64</key>
2878+
<map>
2879+
<key>archive</key>
2880+
<map>
2881+
<key>creds</key>
2882+
<string>github</string>
2883+
<key>hash</key>
2884+
<string>e11571bf76b27d15c244069988ae372eaa5afae9</string>
2885+
<key>hash_algorithm</key>
2886+
<string>sha1</string>
2887+
<key>url</key>
2888+
<string>https://api.github.com/repos/secondlife/3p-discord-sdk/releases/assets/279333720</string>
2889+
</map>
2890+
<key>name</key>
2891+
<string>windows64</string>
2892+
</map>
2893+
<key>darwin64</key>
2894+
<map>
2895+
<key>archive</key>
2896+
<map>
2897+
<key>creds</key>
2898+
<string>github</string>
2899+
<key>hash</key>
2900+
<string>dc21df8b051c425163acf3eff8f06e32f407c9e0</string>
2901+
<key>hash_algorithm</key>
2902+
<string>sha1</string>
2903+
<key>url</key>
2904+
<string>https://api.github.com/repos/secondlife/3p-discord-sdk/releases/assets/279333706</string>
2905+
</map>
2906+
<key>name</key>
2907+
<string>darwin64</string>
2908+
</map>
2909+
</map>
2910+
<key>license</key>
2911+
<string>discord_sdk</string>
2912+
<key>license_file</key>
2913+
<string>LICENSES/discord_sdk.txt</string>
2914+
<key>copyright</key>
2915+
<string>Discord Inc.</string>
2916+
<key>version</key>
2917+
<string>1.4.9649.16733550144</string>
2918+
<key>name</key>
2919+
<string>discord_sdk</string>
2920+
<key>vcs_branch</key>
2921+
<string>main</string>
2922+
<key>vcs_revision</key>
2923+
<string>ef5c7c4a490ceac2df2b2f046788b1daf1bbb392</string>
2924+
<key>vcs_url</key>
2925+
<string>https://github.com/secondlife/3p-discord-sdk</string>
2926+
<key>canonical_repo</key>
2927+
<string>https://github.com/secondlife/3p-discord-sdk</string>
2928+
<key>description</key>
2929+
<string>Discord Social SDK</string>
2930+
</map>
28992931
</map>
29002932
<key>package_description</key>
29012933
<map>

indra/cmake/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ set(cmake_SOURCE_FILES
2020
Copy3rdPartyLibs.cmake
2121
DBusGlib.cmake
2222
DeploySharedLibs.cmake
23+
Discord.cmake
2324
DragDrop.cmake
2425
EXPAT.cmake
2526
FindAutobuild.cmake

indra/cmake/Copy3rdPartyLibs.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66

77
include(CMakeCopyIfDifferent)
88
include(Linking)
9+
if (USE_DISCORD)
10+
include(Discord)
11+
endif ()
912
include(OPENAL)
1013

1114
# When we copy our dependent libraries, we almost always want to copy them to
@@ -75,6 +78,10 @@ if(WINDOWS)
7578
endif(ADDRESS_SIZE EQUAL 32)
7679
endif (USE_BUGSPLAT)
7780

81+
if (TARGET ll::discord_sdk)
82+
list(APPEND release_files discord_partner_sdk.dll)
83+
endif ()
84+
7885
if (TARGET ll::openal)
7986
list(APPEND release_files openal32.dll alut.dll)
8087
endif ()
@@ -180,6 +187,10 @@ elseif(DARWIN)
180187
)
181188
endif()
182189

190+
if (TARGET ll::discord_sdk)
191+
list(APPEND release_files libdiscord_partner_sdk.dylib)
192+
endif ()
193+
183194
if (TARGET ll::openal)
184195
list(APPEND release_files libalut.dylib libopenal.dylib)
185196
endif ()

indra/cmake/Discord.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
include(Prebuilt)
2+
3+
include_guard()
4+
5+
add_library(ll::discord_sdk INTERFACE IMPORTED)
6+
target_compile_definitions(ll::discord_sdk INTERFACE LL_DISCORD=1)
7+
8+
use_prebuilt_binary(discord_sdk)
9+
10+
target_include_directories(ll::discord_sdk SYSTEM INTERFACE ${LIBS_PREBUILT_DIR}/include/discord_sdk)
11+
target_link_libraries(ll::discord_sdk INTERFACE discord_partner_sdk)

indra/llcharacter/llcharacter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ class LLCharacter
119119

120120
virtual void addDebugText( const std::string& text ) = 0;
121121

122+
virtual std::string getDebugName() const { return getID().asString(); }
123+
122124
virtual const LLUUID& getID() const = 0;
123125
//-------------------------------------------------------------------------
124126
// End Interface

indra/llcommon/llassettype.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "llassettype.h"
3030
#include "lldictionary.h"
3131
#include "llmemory.h"
32+
#include "llsd.h"
3233
#include "llsingleton.h"
3334

3435
///----------------------------------------------------------------------------
@@ -246,3 +247,19 @@ bool LLAssetType::lookupIsAssetIDKnowable(EType asset_type)
246247
}
247248
return false;
248249
}
250+
251+
LLSD LLAssetType::getTypeNames()
252+
{
253+
LLSD type_names;
254+
const LLAssetDictionary *dict = LLAssetDictionary::getInstance();
255+
for (S32 type = AT_TEXTURE; type < AT_COUNT; ++type)
256+
{
257+
const AssetEntry *entry = dict->lookup((LLAssetType::EType) type);
258+
// skip llassettype_bad_lookup
259+
if (entry)
260+
{
261+
type_names.append(entry->mTypeName);
262+
}
263+
}
264+
return type_names;
265+
}

indra/llcommon/llassettype.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,8 @@ class LL_COMMON_API LLAssetType
165165
static bool lookupIsAssetFetchByIDAllowed(EType asset_type); // the asset allows direct download
166166
static bool lookupIsAssetIDKnowable(EType asset_type); // asset data can be known by the viewer
167167

168+
static LLSD getTypeNames();
169+
168170
static const std::string BADLOOKUP;
169171

170172
protected:

0 commit comments

Comments
 (0)