diff --git a/.github/workflows/build_viewer.yml b/.github/workflows/build_viewer.yml index 040155945c..450eb091df 100644 --- a/.github/workflows/build_viewer.yml +++ b/.github/workflows/build_viewer.yml @@ -37,6 +37,8 @@ jobs: outputs: viewer_channel: ${{ steps.channel.outputs.viewer_channel }} viewer_version: ${{ steps.version.outputs.viewer_version }} + viewer_build: ${{ steps.version.outputs.viewer_build }} + viewer_release_type: ${{ steps.version.outputs.viewer_release_type }} steps: - name: Install Bash 4 and GNU sed on Mac if: runner.os == 'macOS' @@ -201,8 +203,19 @@ jobs: dependencies=("python3-setuptools" "mesa-common-dev" "libgl1-mesa-dev" "libxinerama-dev" "libxrandr-dev" "libpulse-dev" "libglu1-mesa-dev" "libfreetype6-dev" "libfontconfig1") sudo apt-get update sudo apt-get install -y "${dependencies[@]}" + sudo apt-get install -y wget apt-transport-https software-properties-common sudo apt-get autoremove --purge sudo apt-get clean + + - name: Install Microsoft repository GPG keys + if: runner.os == 'Linux' + run: | + wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb" -O packages-microsoft-prod.deb + sudo dpkg -i packages-microsoft-prod.deb + rm packages-microsoft-prod.deb + sudo apt-get update + sudo apt-get install -y powershell + pwsh -c '$PSVersionTable' - name: test macOS bundles are present if: runner.os == 'MacOS' @@ -289,15 +302,55 @@ jobs: id: build run: autobuild build -c ReleaseFS -A${{matrix.addrsize}} --no-configure shell: bash - # - name: Extract version number - # id: version - # shell: bash + - name: Extract version number + id: version + shell: bash + run: | + if [ -r "indra/newview/VIEWER_VERSION.txt" ] + then + viewer_version="$(<"indra/newview/VIEWER_VERSION.txt")" + echo "viewer_version=$viewer_version" >> "$GITHUB_OUTPUT" + fi + viewer_build=$(git rev-list --count HEAD) + echo "viewer_build=$viewer_build" >> "$GITHUB_OUTPUT" + echo "viewer_channel=${{ env.FS_RELEASE_CHAN }}" >> "$GITHUB_OUTPUT" + echo "viewer_release_type=${{ env.FS_RELEASE_TYPE }}" >> "$GITHUB_OUTPUT" + # - name: Install node-dump-syms + # if: runner.os == 'Linux' # run: | - # if [ -r "indra/newview/viewer_version.txt" ] - # then - # viewer_version="$(<"$build_dir/newview/viewer_version.txt")" - # echo "viewer_version=$viewer_version" >> "$GITHUB_OUTPUT" - # fi + # npm install -g node-pre-gyp + # npm install -g node-dump-syms + + - name: Post Bugsplat Symbols + uses: beqjanus/symbol-upload@main + with: + clientId: ${{ + steps.version.outputs.viewer_release_type == 'Release' && secrets.BUGSPLAT_RELEASE_ID || + steps.version.outputs.viewer_release_type == 'Nightly' && secrets.BUGSPLAT_NIGHTLY_ID || + steps.version.outputs.viewer_release_type == 'Manual' && secrets.BUGSPLAT_MANUAL_ID || + steps.version.outputs.viewer_release_type == 'Beta' && secrets.BUGSPLAT_PREVIEW_ID || + steps.version.outputs.viewer_release_type == 'Alpha' && secrets.BUGSPLAT_ALPHA_ID || + secrets.BUGSPLAT_DEFAULT_ID }} + clientSecret: ${{ + steps.version.outputs.viewer_release_type == 'Release' && secrets.BUGSPLAT_RELEASE_SECRET || + steps.version.outputs.viewer_release_type == 'Nightly' && secrets.BUGSPLAT_NIGHTLY_SECRET || + steps.version.outputs.viewer_release_type == 'Manual' && secrets.BUGSPLAT_MANUAL_SECRET || + steps.version.outputs.viewer_release_type == 'Beta' && secrets.BUGSPLAT_PREVIEW_SECRET || + steps.version.outputs.viewer_release_type == 'Alpha' && secrets.BUGSPLAT_ALPHA_SECRET || + secrets.BUGSPLAT_DEFAULT_SECRET }} + database: ${{ + steps.version.outputs.viewer_release_type == 'Release' && secrets.BUGSPLAT_RELEASE_DB || + steps.version.outputs.viewer_release_type == 'Nightly' && secrets.BUGSPLAT_NIGHTLY_DB || + steps.version.outputs.viewer_release_type == 'Manual' && secrets.BUGSPLAT_MANUAL_DB || + steps.version.outputs.viewer_release_type == 'Beta' && secrets.BUGSPLAT_PREVIEW_DB || + steps.version.outputs.viewer_release_type == 'Alpha' && secrets.BUGSPLAT_ALPHA_DB || + secrets.BUGSPLAT_DEFAULT_DB }} + application: "Firestorm-${{ steps.version.outputs.viewer_channel}}" + version: ${{ steps.version.outputs.viewer_version }}.${{ steps.version.outputs.viewer_build }} + files: ${{ runner.os == 'Windows' && '**/Release/*.{pdb,exe,dll}' || runner.os == 'macOS' && '**/*.xcarchive.zip' || '**/{do-not-run-directly-firestorm-bin,*.sym}' }} + directory: "build-*" + node-version: "20" + dumpSyms: false - name: Publish artifacts if: runner.os == 'Windows' uses: actions/upload-artifact@v4 @@ -324,31 +377,6 @@ jobs: path: | build-darwin-*/newview/*.dmg build-darwin-*/newview/*.bz2 - # post-windows-symbols: - # needs: build_matrix - # runs-on: ubuntu-latest - # steps: - # - name: Post Windows symbols - # uses: secondlife/viewer-build-util/post-bugsplat-windows@v1 - # with: - # username: ${{ secrets.BUGSPLAT_USER }} - # password: ${{ secrets.BUGSPLAT_PASS }} - # database: "firestorm_release" - # channel: ${{ needs.build_matrix.outputs.viewer_channel }} - # version: ${{ needs.build_matrix.outputs.viewer_version }} - - # post-mac-symbols: - # needs: build_matrix - # runs-on: ubuntu-latest - # steps: - # - name: Post Mac symbols - # uses: secondlife/viewer-build-util/post-bugsplat-mac@v1 - # with: - # username: ${{ secrets.BUGSPLAT_USER }} - # password: ${{ secrets.BUGSPLAT_PASS }} - # database: "firestorm_release" - # channel: ${{ needs.build_matrix.outputs.viewer_channel }} - # version: ${{ needs.build_matrix.outputs.viewer_version }} deploy: runs-on: ubuntu-latest needs: build_matrix diff --git a/indra/newview/app_settings/shaders/class1/post/exoVignetteF.glsl b/indra/newview/app_settings/shaders/class1/post/exoVignetteF.glsl index 1786e0c012..7b17cde7c2 100644 --- a/indra/newview/app_settings/shaders/class1/post/exoVignetteF.glsl +++ b/indra/newview/app_settings/shaders/class1/post/exoVignetteF.glsl @@ -18,7 +18,7 @@ in vec2 vary_fragcoord; void main () { vec4 diff = texture(diffuseRect, vary_fragcoord.xy); - vec2 tc = vary_fragcoord / screen_res - 0.5f; + vec2 tc = vary_fragcoord - 0.5f; float vignette_val = 1 - dot(tc, tc); diff.rgb *= clamp(pow(mix(1, vignette_val * vignette_val * vignette_val * vignette_val * vignette.z, vignette.x), vignette.y), 0, 1); frag_color = diff; diff --git a/indra/newview/llinventorymodelbackgroundfetch.cpp b/indra/newview/llinventorymodelbackgroundfetch.cpp index f2169ab0de..a8d7143f93 100644 --- a/indra/newview/llinventorymodelbackgroundfetch.cpp +++ b/indra/newview/llinventorymodelbackgroundfetch.cpp @@ -389,14 +389,14 @@ void LLInventoryModelBackgroundFetch::scheduleFolderFetch(const LLUUID& cat_id, if (mForceFetchSet.find(cat_id) == mForceFetchSet.end()) { mForceFetchSet.insert(cat_id); - mFetchItemQueue.push_front(FetchQueueInfo(cat_id, FT_FORCED)); + mFetchFolderQueue.emplace_front(FetchQueueInfo(cat_id, FT_FORCED)); } } else { // Specific folder requests go to front of queue. // version presence acts as dupplicate prevention for normal fetches - mFetchItemQueue.push_front(FetchQueueInfo(cat_id, FT_DEFAULT)); + mFetchFolderQueue.emplace_front(FetchQueueInfo(cat_id, FT_DEFAULT)); } gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL); @@ -414,13 +414,13 @@ void LLInventoryModelBackgroundFetch::scheduleItemFetch(const LLUUID& item_id, b if (mForceFetchSet.find(item_id) == mForceFetchSet.end()) { mForceFetchSet.insert(item_id); - mFetchItemQueue.push_front(FetchQueueInfo(item_id, FT_FORCED, false)); + mFetchItemQueue.emplace_front(FetchQueueInfo(item_id, FT_FORCED, false)); } } else { // 'isFinished' being set acts as dupplicate prevention for normal fetches - mFetchItemQueue.push_front(FetchQueueInfo(item_id, FT_DEFAULT, false)); + mFetchItemQueue.emplace_front(FetchQueueInfo(item_id, FT_DEFAULT, false)); } gIdleCallbacks.addFunction(&LLInventoryModelBackgroundFetch::backgroundFetchCB, NULL); @@ -1297,7 +1297,11 @@ void LLInventoryModelBackgroundFetch::bulkFetch() folder_count++; } } +#ifdef OPENSIM + if (LLViewerInventoryCategory::VERSION_UNKNOWN != cat->getVersion() || !LLGridManager::getInstance()->isInSecondLife()) +#else else +#endif { // May already have this folder, but append child folders to list. if (fetch_info.mFetchType >= FT_CONTENT_RECURSIVE) diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index cb971b2e50..0860143ad8 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -1459,6 +1459,12 @@ void LLPanelProfileSecondLife::fillAccountStatus(const LLAvatarData* avatar_data //childSetVisible("partner_spacer_layout", false); setBadge("Profile_Badge_Linden", "BadgeLinden"); } + // Add Firestorm team badge + else if (FSData::getInstance()->getAgentFlags(avatar_data->avatar_id) != -1) + { + setBadge("Profile_Badge_Team", "BadgeTeam"); + } + // else if (avatar_data->born_on < sl_release) { // Fix LL UI/UX design accident @@ -1504,12 +1510,6 @@ void LLPanelProfileSecondLife::fillAccountStatus(const LLAvatarData* avatar_data //childSetVisible("partner_spacer_layout", false); setBadge("Profile_Badge_Pplus_Lifetime", "BadgePremiumPlusLifetime"); } - // Add Firestorm team badge - else if (FSData::getInstance()->getAgentFlags(avatar_data->avatar_id) != -1) - { - setBadge("Profile_Badge_Team", "BadgeTeam"); - } - // else { childSetVisible("badge_layout", false); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 9337a9780d..90b575f951 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -13012,6 +13012,9 @@ void initialize_menus() view_listener_t::addMenu(new LLEnableEditParticleSource(), "Object.EnableEditParticles"); enable.add("Object.VisibleTake", boost::bind(&visible_take_object)); + enable.add("Object.VisibleTakeMultiple", boost::bind(&is_multiple_selection)); + enable.add("Object.VisibleTakeSingle", boost::bind(&is_single_selection)); + enable.add("Object.EnableTakeMultiple", boost::bind(&enable_take_objects)); enable.add("Object.VisibleBuy", boost::bind(&visible_buy_object)); commit.add("Object.Buy", boost::bind(&handle_buy)); diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml index 46c550c331..89b728e5f1 100644 --- a/indra/newview/skins/default/xui/de/menu_object.xml +++ b/indra/newview/skins/default/xui/de/menu_object.xml @@ -41,12 +41,14 @@ - - - - - - + + + + + + + + diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index 47b80a3362..9884b8f13e 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -125,7 +125,6 @@ - @@ -136,8 +135,9 @@ - - Rauschunterdrückung + + + Rauschunterdrückung: diff --git a/indra/newview/skins/default/xui/de/panel_settings_terrain_transform.xml b/indra/newview/skins/default/xui/de/panel_settings_terrain_transform.xml index 5b34396801..ecbd6fc54f 100644 --- a/indra/newview/skins/default/xui/de/panel_settings_terrain_transform.xml +++ b/indra/newview/skins/default/xui/de/panel_settings_terrain_transform.xml @@ -34,7 +34,7 @@ - Versatz y + Versatz u diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml index 0748989539..2124fc2deb 100644 --- a/indra/newview/skins/default/xui/en/menu_object.xml +++ b/indra/newview/skins/default/xui/en/menu_object.xml @@ -290,29 +290,32 @@ - + - - - - - + - - - - - + @@ -322,8 +325,8 @@ function="Object.VisibleTake"/> - - + @@ -333,8 +336,8 @@ function="Tools.EnableTakeCopy" /> - - + @@ -344,8 +347,8 @@ function="Object.EnableTakeMultiple"/> - - + @@ -355,7 +358,8 @@ function="Tools.EnableCopySeparate"/> - + + - + top_pad="7"/> + top_pad="2"/> + top_pad="2"/> + top_pad="7"/> + - Noise Suppression + Noise Suppression: + width="90"> - Offset y + Offset u + + + + diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml index c100ae8121..9a8ee48853 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml @@ -75,6 +75,7 @@ + @@ -86,10 +87,18 @@ - -