From 112bd816ecf0a2a196233b7c23874fa761760e3d Mon Sep 17 00:00:00 2001 From: Armored Dragon Date: Tue, 9 Jul 2024 13:37:20 -0500 Subject: [PATCH 01/17] Sanitize notification text. Signed-off-by: Armored Dragon --- scripts/communityScripts/notificationCore/notificationCore.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/communityScripts/notificationCore/notificationCore.js b/scripts/communityScripts/notificationCore/notificationCore.js index 51e1eadde1..aea94da5d7 100644 --- a/scripts/communityScripts/notificationCore/notificationCore.js +++ b/scripts/communityScripts/notificationCore/notificationCore.js @@ -21,6 +21,8 @@ var DEFAULT_SIZE = 30; var DEFAULT_OFFSET = 10; var FLOOF_NOTIFICATION_CHANNEL = "Floof-Notif"; var MAIN_CHAT_APP_CHANNEL = "Chat"; +var ARROW_REGEX = /\= 0; i--) { if (i === 0) { From e56ea656f6730552fcf58ae532da6edcd013edc1 Mon Sep 17 00:00:00 2001 From: Armored Dragon Date: Wed, 10 Jul 2024 10:24:20 -0500 Subject: [PATCH 02/17] Also check sender name. Signed-off-by: Armored Dragon --- scripts/communityScripts/notificationCore/notificationCore.js | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/communityScripts/notificationCore/notificationCore.js b/scripts/communityScripts/notificationCore/notificationCore.js index aea94da5d7..f7ab6e73cd 100644 --- a/scripts/communityScripts/notificationCore/notificationCore.js +++ b/scripts/communityScripts/notificationCore/notificationCore.js @@ -64,6 +64,7 @@ var notificationCore = { }, add: function (text, sender, colour) { sender = sender ? sender : "NoName"; + sender = sender.replace(ARROW_REGEX, "<"); colour = colour ? colour : {}; colour.text = colour.text ? colour.text : {red: 255, green: 255, blue: 255}; colour.bg = colour.bg ? colour.bg : {red: 10, green: 10, blue: 10}; From a5858c359748f9633ff6d224f61cb338e8e8b63f Mon Sep 17 00:00:00 2001 From: Armored Dragon Date: Sat, 13 Jul 2024 15:20:11 -0500 Subject: [PATCH 03/17] Change the 'open in new window' character. Signed-off-by: Armored Dragon --- scripts/communityScripts/armored-chat/armored_chat.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/communityScripts/armored-chat/armored_chat.qml b/scripts/communityScripts/armored-chat/armored_chat.qml index 13506c226a..1a335d0bba 100644 --- a/scripts/communityScripts/armored-chat/armored_chat.qml +++ b/scripts/communityScripts/armored-chat/armored_chat.qml @@ -510,7 +510,7 @@ Rectangle { mess = mess.replace(arrow, "<"); var link = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/g; - mess = mess.replace(link, (match) => {return "" + match + " "}); + mess = mess.replace(link, (match) => {return "" + match + " 🗗"}); var newline = /\n/gi; mess = mess.replace(newline, "
"); From ffe6e3a323be8631c04dea2d215b82081580ce34 Mon Sep 17 00:00:00 2001 From: Armored Dragon Date: Thu, 18 Jul 2024 15:04:35 -0500 Subject: [PATCH 04/17] Remove onFirstRun.js Signed-off-by: Armored Dragon --- scripts/defaultScripts.js | 1 - scripts/system/onFirstRun.js | 35 ----------------------------------- 2 files changed, 36 deletions(-) delete mode 100644 scripts/system/onFirstRun.js diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index a9bc2be591..31afd6e2db 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -37,7 +37,6 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/inspect.js", "system/keyboardShortcuts/keyboardShortcuts.js", "system/onEscape.js", - "system/onFirstRun.js", "system/places/places.js" //"developer/debugging/scriptMemoryReport.js" ]; diff --git a/scripts/system/onFirstRun.js b/scripts/system/onFirstRun.js deleted file mode 100644 index e7052c0e3a..0000000000 --- a/scripts/system/onFirstRun.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; - -// -// onFirstRun.js -// -// Created by Kalila L. on Oct 5 2020. -// Copyright 2020 Vircadia contributors. -// -// This script triggers on first run to perform bootstrapping actions. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -(function() { // BEGIN LOCAL_SCOPE - // Check to see if we should run this script or bail... - var SETTING_TO_CHECK = 'firstRun'; - var DEFAULT_DISPLAY_NAME = ''; - - if (!Settings.getValue(SETTING_TO_CHECK, false)) { - return; - } - - // If this is our first run, then proceed... - - if (MyAvatar.displayName === '') { - var selectedDisplayName = Window.prompt('Enter a display name.', MyAvatar.displayName); - - if (selectedDisplayName === '') { - MyAvatar.displayName = DEFAULT_DISPLAY_NAME; - } else { - MyAvatar.displayName = selectedDisplayName; - } - } -}()); From a93e1591d6e56369b30f3cfbaae103cd533916a2 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sat, 27 Jul 2024 21:12:58 -0400 Subject: [PATCH 05/17] Add Paste Url button to UI This adds "Paste" buttons in "Create Model", "Create Material" and "Create Voxels" to help pasting url (which was totally disfunctional in VR) --- .../system/create/qml/NewMaterialDialog.qml | 22 ++++++- scripts/system/create/qml/NewModelDialog.qml | 22 +++++-- .../system/create/qml/NewPolyVoxDialog.qml | 59 ++++++++++++++++--- 3 files changed, 88 insertions(+), 15 deletions(-) diff --git a/scripts/system/create/qml/NewMaterialDialog.qml b/scripts/system/create/qml/NewMaterialDialog.qml index e08ca868b6..4378077ee1 100644 --- a/scripts/system/create/qml/NewMaterialDialog.qml +++ b/scripts/system/create/qml/NewMaterialDialog.qml @@ -2,9 +2,10 @@ // NewMaterialDialog.qml // qml/hifi // -// Created by Sam Gondelman on 1/17/18 +// Created by Sam Gondelman on January 17th, 2018 // Copyright 2018 High Fidelity, Inc. // Copyright 2020 Vircadia contributors +// Copyright 2024 Overte e.V. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -55,17 +56,32 @@ Rectangle { Text { id: text1 - text: qsTr("Material URL (Optional)") + text: qsTr("Material URL (Optional)   ") color: "#ffffff" font.pixelSize: 12 } + Button { + id: pasteBtn + text: "Paste" + font.pixelSize: 11 + height: 16 + width: 40 + radius: 4 + anchors.top: text1.top + anchors.left: text1.right + anchors.bottom: text1.bottom + onClicked: { + materialURL.paste() + } + } + TextInput { id: materialURL height: 20 text: qsTr("") color: "white" - anchors.top: text1.bottom + anchors.top: pasteBtn.bottom anchors.topMargin: 5 anchors.left: parent.left anchors.leftMargin: 0 diff --git a/scripts/system/create/qml/NewModelDialog.qml b/scripts/system/create/qml/NewModelDialog.qml index c03e7c1c35..07c46280af 100644 --- a/scripts/system/create/qml/NewModelDialog.qml +++ b/scripts/system/create/qml/NewModelDialog.qml @@ -2,9 +2,10 @@ // NewModelDialog.qml // qml/hifi // -// Created by Seth Alves on 2017-2-10 +// Created by Seth Alves on February 10th, 2017 // Copyright 2017 High Fidelity, Inc. // Copyright 2020 Vircadia contributors +// Copyright 2024 Overte e.V. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -55,17 +56,30 @@ Rectangle { Text { id: text1 - text: qsTr("Model URL (.fbx, .fst, .glb, .gltf, .obj, .gz)") + text: qsTr("Model URL (.fbx, .fst, .glb, .gltf, .obj, .gz)   ") color: "#ffffff" font.pixelSize: 12 } - + Button { + id: pasteBtn + text: "Paste" + font.pixelSize: 11 + height: 16 + width: 40 + radius: 4 + anchors.top: text1.top + 10 + anchors.left: text1.right + anchors.bottom: text1.bottom + onClicked: { + modelURL.paste() + } + } TextInput { id: modelURL height: 20 text: qsTr("") color: "white" - anchors.top: text1.bottom + anchors.top: pasteBtn.bottom anchors.topMargin: 5 anchors.left: parent.left anchors.leftMargin: 0 diff --git a/scripts/system/create/qml/NewPolyVoxDialog.qml b/scripts/system/create/qml/NewPolyVoxDialog.qml index 0f8ab5541d..67c0a76bf7 100644 --- a/scripts/system/create/qml/NewPolyVoxDialog.qml +++ b/scripts/system/create/qml/NewPolyVoxDialog.qml @@ -1,12 +1,12 @@ // // NewPolyVoxDialog.qml -// Created by dr Karol Suprynowicz on 2022.05.17. +// Created by dr Karol Suprynowicz on May 17th, 2022 // based on NewModelDialog.qml // qml/hifi // // Copyright 2017 High Fidelity, Inc. // Copyright 2020 Vircadia contributors -// Copyright 2022 Overte e.V. +// Copyright 2022-2024 Overte e.V. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html @@ -117,17 +117,32 @@ Rectangle { id: text1 anchors.top: texturePreset.bottom anchors.topMargin: 5 - text: qsTr("X Texture URL") + text: qsTr("X Texture URL    ") color: "#ffffff" font.pixelSize: 12 } + Button { + id: pasteBtn1 + text: "Paste" + font.pixelSize: 11 + height: 16 + width: 40 + radius: 4 + anchors.top: text1.top + anchors.left: text1.right + anchors.bottom: text1.bottom + onClicked: { + xTextureURL.paste() + } + } + TextInput { id: xTextureURL height: 20 text: qsTr("") color: "white" - anchors.top: text1.bottom + anchors.top: pasteBtn1.bottom anchors.topMargin: 5 anchors.left: parent.left anchors.leftMargin: 0 @@ -167,19 +182,33 @@ Rectangle { Text { id: text2 - text: qsTr("Y Texture URL") + text: qsTr("Y Texture URL    ") color: "#ffffff" font.pixelSize: 12 anchors.top: textInputBox1.bottom anchors.topMargin: 5 } + Button { + id: pasteBtn2 + text: "Paste" + font.pixelSize: 11 + height: 16 + width: 40 + radius: 4 + anchors.top: text2.top + anchors.left: text2.right + anchors.bottom: text2.bottom + onClicked: { + yTextureURL.paste() + } + } TextInput { id: yTextureURL height: 20 text: qsTr("") color: "white" - anchors.top: text2.bottom + anchors.top: pasteBtn2.bottom anchors.topMargin: 5 anchors.left: parent.left anchors.leftMargin: 0 @@ -219,19 +248,33 @@ Rectangle { Text { id: text3 - text: qsTr("Z Texture URL") + text: qsTr("Z Texture URL    ") color: "#ffffff" font.pixelSize: 12 anchors.top: textInputBox2.bottom anchors.topMargin: 5 } + Button { + id: pasteBtn3 + text: "Paste" + font.pixelSize: 11 + height: 16 + width: 40 + radius: 4 + anchors.top: text3.top + anchors.left: text3.right + anchors.bottom: text3.bottom + onClicked: { + zTextureURL.paste() + } + } TextInput { id: zTextureURL height: 20 text: qsTr("") color: "white" - anchors.top: text3.bottom + anchors.top: pasteBtn3.bottom anchors.topMargin: 5 anchors.left: parent.left anchors.leftMargin: 0 From f987bbca4f3e120ca7492b01975d25690934d968 Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Thu, 15 Aug 2024 14:41:11 -0700 Subject: [PATCH 06/17] add a setting to workaround the GLES colorspace conversion issue --- interface/src/Menu.cpp | 8 ++++++++ interface/src/Menu.h | 3 ++- .../Basic2DWindowOpenGLDisplayPlugin.cpp | 8 -------- .../Basic2DWindowOpenGLDisplayPlugin.h | 2 -- .../src/display-plugins/OpenGLDisplayPlugin.cpp | 16 +++++++++++++++- .../src/display-plugins/OpenGLDisplayPlugin.h | 7 +++++++ 6 files changed, 32 insertions(+), 12 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index c1d7c05f79..e3661b2189 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -46,6 +46,7 @@ #include "avatar/AvatarManager.h" #include "avatar/AvatarPackager.h" #include "AvatarBookmarks.h" +#include #include "DomainAccountManager.h" #include "MainWindow.h" #include "render/DrawStatus.h" @@ -549,6 +550,13 @@ Menu::Menu() { drawStatusConfig, SLOT(setShowFade(bool))); } + { + action = addCheckableActionToQMenuAndActionHash(renderOptionsMenu, MenuOption::ExtraLinearTosRGBConversion, 0, OpenGLDisplayPlugin::getExtraLinearToSRGBConversion()); + connect(action, &QAction::triggered, [action] { + OpenGLDisplayPlugin::setExtraLinearToSRGBConversion(action->isChecked()); + }); + } + // Developer > Assets >>> // Menu item is not currently needed but code should be kept in case it proves useful again at some stage. //#define WANT_ASSET_MIGRATION diff --git a/interface/src/Menu.h b/interface/src/Menu.h index e0cdfdf4fd..717c81d57c 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -237,7 +237,8 @@ namespace MenuOption { const QString ComputeBlendshapes = "Compute Blendshapes"; const QString HighlightTransitions = "Highlight Transitions"; const QString MaterialProceduralShaders = "Enable Procedural Materials"; -} + const QString ExtraLinearTosRGBConversion = "Extra Linear to sRGB Conversion"; + } #endif // hifi_Menu_h diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp index 024d9a0ab6..97c73603e1 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.cpp @@ -112,14 +112,6 @@ bool Basic2DWindowOpenGLDisplayPlugin::internalActivate() { return Parent::internalActivate(); } -gpu::PipelinePointer Basic2DWindowOpenGLDisplayPlugin::getRenderTexturePipeline() { -#if defined(Q_OS_ANDROID) - return _linearToSRGBPipeline; -#else - return _drawTexturePipeline; -#endif -} - void Basic2DWindowOpenGLDisplayPlugin::compositeExtra() { #if defined(Q_OS_ANDROID) auto& virtualPadManager = VirtualPad::Manager::instance(); diff --git a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h index 68301ff8b4..cc304c19c2 100644 --- a/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/Basic2DWindowOpenGLDisplayPlugin.h @@ -37,8 +37,6 @@ public: virtual void pluginUpdate() override {}; - virtual gpu::PipelinePointer getRenderTexturePipeline() override; - protected: mutable bool _isThrottled = false; diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp index 03a463c82a..6ea10f6327 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -57,6 +58,8 @@ using namespace shader::gpu::program; extern QThread* RENDER_THREAD; +Setting::Handle OpenGLDisplayPlugin::_extraLinearToSRGBConversionSetting("extraLinearToSRGBConversion", false); + class PresentThread : public QThread, public Dependency { using Mutex = std::mutex; using Condition = std::condition_variable; @@ -956,5 +959,16 @@ void OpenGLDisplayPlugin::copyTextureToQuickFramebuffer(NetworkTexturePointer ne } gpu::PipelinePointer OpenGLDisplayPlugin::getRenderTexturePipeline() { - return _drawTexturePipeline; +#ifdef USE_GLES + if (!_extraLinearToSRGBConversionSetting.isSet()) { + const gl::ContextInfo &contextInfo = gl::ContextInfo::get(); + _extraLinearToSRGBConversionSetting.set(std::find(contextInfo.extensions.cbegin(), contextInfo.extensions.cend(), "GL_EXT_framebuffer_sRGB") == contextInfo.extensions.cend()); + } +#endif + + if (getExtraLinearToSRGBConversion()) { + return _linearToSRGBPipeline; + } else { + return _drawTexturePipeline; + } } diff --git a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h index 15cebf7e3a..0df0d9ac3e 100644 --- a/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h +++ b/libraries/display-plugins/src/display-plugins/OpenGLDisplayPlugin.h @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -86,6 +87,9 @@ public: QOpenGLFramebufferObject* target, GLsync* fenceSync) override; + static void setExtraLinearToSRGBConversion(bool value) { _extraLinearToSRGBConversionSetting.set(value); } + static bool getExtraLinearToSRGBConversion() { return _extraLinearToSRGBConversionSetting.get(); }; + protected: friend class PresentThread; @@ -201,4 +205,7 @@ protected: QImage getScreenshot(float aspectRatio); QImage getSecondaryCameraScreenshot(); + +private: + static Setting::Handle _extraLinearToSRGBConversionSetting; }; From f222323ef04584c33dc17c96b89a5dace28a02d6 Mon Sep 17 00:00:00 2001 From: Armored Dragon Date: Sat, 17 Aug 2024 04:28:24 -0500 Subject: [PATCH 07/17] Remove message appending. Signed-off-by: Armored Dragon --- .../armored-chat/armored_chat.qml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/scripts/communityScripts/armored-chat/armored_chat.qml b/scripts/communityScripts/armored-chat/armored_chat.qml index ede60fca71..91018502dd 100644 --- a/scripts/communityScripts/armored-chat/armored_chat.qml +++ b/scripts/communityScripts/armored-chat/armored_chat.qml @@ -487,13 +487,17 @@ Rectangle { var last_item_index = channel.count - 1; var last_item = channel.get(last_item_index); - if (last_message_user === username && elapsed_minutes < 1 && last_item){ - message = "
" + message - last_item.text = last_item.text += "\n" + message; - scrollToBottom() - last_message_time = new Date(); - return; - } + // FIXME: When adding a new message this would check to see if we could append the incoming message + // to the bottom of the last message. This current implimentation causes issues with scrollToBottom() + // Specifically, scrolling to the bottom does not like image embeds. + // This needs to be reworked entirely before it can be reimplimented + // if (last_message_user === username && elapsed_minutes < 1 && last_item){ + // message = "
" + message + // last_item.text = last_item.text += "\n" + message; + // scrollToBottom() + // last_message_time = new Date(); + // return; + // } last_message_user = username; last_message_time = new Date(); From 0f123d7d95c80b6643f8287ceb58204d83314c4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Gro=C3=9F?= Date: Mon, 2 Sep 2024 12:38:46 +0200 Subject: [PATCH 08/17] Fix Windows master build uploads. --- .github/workflows/master_build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/master_build.yml b/.github/workflows/master_build.yml index 3d87061b09..b8c29c94e4 100644 --- a/.github/workflows/master_build.yml +++ b/.github/workflows/master_build.yml @@ -248,7 +248,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: ${{ env.ARTIFACT_PATTERN }} - path: ./build/${{ env.ARTIFACT_PATTERN }} + path: ${{runner.workspace}}/build/${{ env.ARTIFACT_PATTERN }} if-no-files-found: error #- name: Archive symbols From a142f7de7211abd0fc22da8cce3f3da1446b6a60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Gro=C3=9F?= Date: Mon, 2 Sep 2024 17:15:49 +0200 Subject: [PATCH 09/17] Try fixing master build uploads. --- .github/workflows/master_build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/master_build.yml b/.github/workflows/master_build.yml index b8c29c94e4..499f317f80 100644 --- a/.github/workflows/master_build.yml +++ b/.github/workflows/master_build.yml @@ -13,13 +13,13 @@ on: env: APP_NAME: interface BUILD_TYPE: Release - BUILD_NUMBER: ${{ github.run_number }} + BUILD_NUMBER: ${{ github.event.number }}_${{ github.sha }} CI_BUILD: Github GIT_COMMIT: ${{ github.sha }} # VCPKG did not build well on OSX disabling HIFI_VCPKG_BOOTSTRAP, which invokes a download to a working version of vcpkg # HIFI_VCPKG_BOOTSTRAP: true RELEASE_TYPE: PRODUCTION - RELEASE_NUMBER: ${{ github.run_number }} + RELEASE_NUMBER: ${{ github.event.number }}_${{ github.sha }} STABLE_BUILD: 0 UPLOAD_BUCKET: overte-public UPLOAD_REGION: fra1 @@ -108,7 +108,7 @@ jobs: # Build type variables if [ "${{ matrix.build_type }}" = "full" ]; then echo "CLIENT_ONLY=FALSE" >> $GITHUB_ENV - echo "INSTALLER=Overte-master$BUILD_NUMBER-${{ steps.buildenv1.outputs.github_sha_short }}.$INSTALLER_EXT" >> $GITHUB_ENV + echo "INSTALLER=Overte-${{ github.event.number }}_${{ github.sha }}.$INSTALLER_EXT" >> $GITHUB_ENV else echo "CLIENT_ONLY=TRUE" >> $GITHUB_ENV echo "INSTALLER=Overte-Interface-master$BUILD_NUMBER-${{ steps.buildenv1.outputs.github_sha_short }}.$INSTALLER_EXT" >> $GITHUB_ENV @@ -247,8 +247,8 @@ jobs: - name: Upload artifact to GitHub uses: actions/upload-artifact@v4 with: - name: ${{ env.ARTIFACT_PATTERN }} - path: ${{runner.workspace}}/build/${{ env.ARTIFACT_PATTERN }} + name: ${{ env.INSTALLER }} + path: ${{runner.workspace}}/build/${{ env.INSTALLER }} if-no-files-found: error #- name: Archive symbols From ff130095b96908b3019471ca4f0b408c95c81b88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20Gro=C3=9F?= Date: Sat, 7 Sep 2024 22:53:38 +0200 Subject: [PATCH 10/17] Add CLion-style build directories to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index c3cb03f201..90ff187027 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ cmake-build-release-visual-studio/ cmake-build-relwithdebinfo-visual-studio/ cmake-build-debug-visual-studio/ cmake-build-debug/ +/cmake-build-*/ /release*/ /debug*/ /gprof*/ From 79cfa68edf62642c48828b32a69c98db91957aec Mon Sep 17 00:00:00 2001 From: HifiExperiments Date: Mon, 9 Sep 2024 14:58:41 -0700 Subject: [PATCH 11/17] fix accidentally clearing url fields when you don't have view permission --- .../create/entityProperties/html/js/entityProperties.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index f94f6d2ffc..d2cff1ef91 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -2365,6 +2365,11 @@ function updateMultiDiffProperties(propertiesMapToUpdate, onlyUpdateEntity) { function createEmitTextPropertyUpdateFunction(property) { return function() { + // If we don't have canViewAssetURLs permissions, ignore clearing URLs + if (!canViewAssetURLs && property.data.placeholder === "URL" && this.value === "") { + return; + } + property.elInput.classList.remove('multi-diff'); updateProperty(property.name, this.value, property.isParticleProperty); }; From 637968eceb35f5fa8dd6666e4e306ecde5b5817f Mon Sep 17 00:00:00 2001 From: armored-dragon Date: Thu, 19 Sep 2024 06:20:44 -0500 Subject: [PATCH 12/17] Update icons. --- .../resources/icons/tablet-icons/avatar-a.svg | 86 ++++++++++++--- .../resources/icons/tablet-icons/avatar-i.svg | 102 +++++++++++++++--- .../images/avatarapp/guy-in-circle.svg | 90 ++++++++++++---- 3 files changed, 227 insertions(+), 51 deletions(-) diff --git a/interface/resources/icons/tablet-icons/avatar-a.svg b/interface/resources/icons/tablet-icons/avatar-a.svg index 065ad4fc6f..8cb3b4d342 100644 --- a/interface/resources/icons/tablet-icons/avatar-a.svg +++ b/interface/resources/icons/tablet-icons/avatar-a.svg @@ -1,14 +1,72 @@ - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/interface/resources/icons/tablet-icons/avatar-i.svg b/interface/resources/icons/tablet-icons/avatar-i.svg index 2d3f80cbf8..20e2709257 100644 --- a/interface/resources/icons/tablet-icons/avatar-i.svg +++ b/interface/resources/icons/tablet-icons/avatar-i.svg @@ -1,17 +1,85 @@ - - - - - - - - - + + + + + + + + + + + + + + + + + diff --git a/interface/resources/images/avatarapp/guy-in-circle.svg b/interface/resources/images/avatarapp/guy-in-circle.svg index 78cbf5186b..ebeb09392e 100644 --- a/interface/resources/images/avatarapp/guy-in-circle.svg +++ b/interface/resources/images/avatarapp/guy-in-circle.svg @@ -1,20 +1,70 @@ - - - - - - - + + + + + + + + From 9442559f9de321a99897c879f295a24af0e20270 Mon Sep 17 00:00:00 2001 From: armored-dragon Date: Thu, 19 Sep 2024 07:27:52 -0500 Subject: [PATCH 13/17] Say less, JulianGro. --- .../resources/qml/hifi/avatarapp/AvatarAppHeader.qml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/interface/resources/qml/hifi/avatarapp/AvatarAppHeader.qml b/interface/resources/qml/hifi/avatarapp/AvatarAppHeader.qml index d3c9cd1d5f..bf8282f947 100644 --- a/interface/resources/qml/hifi/avatarapp/AvatarAppHeader.qml +++ b/interface/resources/qml/hifi/avatarapp/AvatarAppHeader.qml @@ -20,16 +20,6 @@ ShadowRectangle { color: style.colors.lightGrayBackground - HiFiGlyphs { - id: avatarIcon - anchors.left: parent.left - anchors.leftMargin: 23 - anchors.verticalCenter: header.verticalCenter - - size: 38 - text: "<" - } - // TextStyle6 RalewaySemiBold { id: title From b2137adde051e83e1f9d2d0f14d1c4139ef93d06 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sun, 29 Sep 2024 20:51:04 -0400 Subject: [PATCH 14/17] Adding Avatar Entity Highlighting Adding Avatar Entity Highlighting --- scripts/system/html/css/edit-style.css | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/scripts/system/html/css/edit-style.css b/scripts/system/html/css/edit-style.css index 667d057839..356f75d556 100644 --- a/scripts/system/html/css/edit-style.css +++ b/scripts/system/html/css/edit-style.css @@ -175,6 +175,28 @@ tr:focus { outline: none; } +tr.avatarEntity { + color: #7fdb98; +} + +tr.selAvatarEntity { + color: #000000; + background-color: #7fdb98; +} + +tr.selAvatarEntity + tr.selAvatarEntity { + border-top: 1px solid #2e2e2e; +} + +tr.lastSelAvatarEntity { + color: #000000; + background-color: #06c73a; +} + +tr.lastSelAvatarEntity + tr.lastSelAvatarEntity { + border-top: 1px solid #2e2e2e; +} + tr.selected { color: #000000; background-color: #00b4ef; From 151546619d40a4fd3c20773f31074c57125ed161 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sun, 29 Sep 2024 20:51:43 -0400 Subject: [PATCH 15/17] Adding Avatar Entity Highlighting Adding Avatar Entity Highlighting --- scripts/system/create/entityList/entityList.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/system/create/entityList/entityList.js b/scripts/system/create/entityList/entityList.js index b8cb3bba33..01196c61fe 100644 --- a/scripts/system/create/entityList/entityList.js +++ b/scripts/system/create/entityList/entityList.js @@ -211,7 +211,7 @@ var EntityListTool = function(shouldUseEditTabletApp, selectionManager) { PROFILE("getMultipleProperties", function () { var multipleProperties = Entities.getMultipleEntityProperties(ids, ['position', 'name', 'type', 'locked', 'visible', 'renderInfo', 'modelURL', 'materialURL', 'imageURL', 'script', 'serverScripts', - 'skybox.url', 'ambientLight.url', 'created', 'lastEdited']); + 'skybox.url', 'ambientLight.url', 'created', 'lastEdited', 'entityHostType']); for (var i = 0; i < multipleProperties.length; i++) { var properties = multipleProperties[i]; @@ -256,7 +256,8 @@ var EntityListTool = function(shouldUseEditTabletApp, selectionManager) { hasScript: (properties.script !== "" || properties.serverScripts !== ""), parentState: parentState, created: formatToStringDateTime(properties.created), - lastEdited: formatToStringDateTime(properties.lastEdited) + lastEdited: formatToStringDateTime(properties.lastEdited), + entityHostType: properties.entityHostType }); } } From 652bb6f6da55fc8c646db9b6679dc9b4e19b65bb Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sun, 29 Sep 2024 20:52:07 -0400 Subject: [PATCH 16/17] Adding Avatar Entity Highlighting Adding Avatar Entity Highlighting --- .../create/entityList/html/js/entityList.js | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/scripts/system/create/entityList/html/js/entityList.js b/scripts/system/create/entityList/html/js/entityList.js index dbe3465c7a..06425cde66 100644 --- a/scripts/system/create/entityList/html/js/entityList.js +++ b/scripts/system/create/entityList/html/js/entityList.js @@ -987,6 +987,7 @@ function loaded() { parentState: entity.parentState, created: entity.created, lastEdited: entity.lastEdited, + entityHostType: entity.entityHostType, elRow: null, // if this entity has a visible row element assigned to it selected: false // if this entity is selected for edit regardless of having a visible row }; @@ -1183,7 +1184,11 @@ function loaded() { if (entity !== undefined) { entity.selected = false; if (entity.elRow) { - entity.elRow.className = ""; + if (entity.entityHostType === "avatar") { + entity.elRow.className = "avatarEntity"; + } else { + entity.elRow.className = ""; + } } } }); @@ -1197,9 +1202,17 @@ function loaded() { entity.selected = true; if (entity.elRow) { if (id === lastSelectedEntity) { - entity.elRow.className = "last-selected"; + if (entity.entityHostType === "avatar") { + entity.elRow.className = "lastSelAvatarEntity"; + } else { + entity.elRow.className = "last-selected"; + } } else { - entity.elRow.className = "selected"; + if (entity.entityHostType === "avatar") { + entity.elRow.className = "selAvatarEntity"; + } else { + entity.elRow.className = "selected"; + } } } } else { @@ -1270,12 +1283,24 @@ function loaded() { // if this entity was previously selected flag it's row as selected if (itemData.selected) { if (itemData.id === lastSelectedEntity) { - elRow.className = "last-selected"; + if (itemData.entityHostType === "avatar") { + elRow.className = "lastSelAvatarEntity"; + } else { + elRow.className = "last-selected"; + } } else { - elRow.className = "selected"; + if (itemData.entityHostType === "avatar") { + elRow.className = "selAvatarEntity"; + } else { + elRow.className = "selected"; + } } } else { - elRow.className = ""; + if (itemData.entityHostType === "avatar") { + elRow.className = "avatarEntity"; + } else { + elRow.className = ""; + } } // if this row previously had an associated entity ID that wasn't the new entity ID then clear From 1deab129d2adcb49e8d46c973e2ace6b7cb42732 Mon Sep 17 00:00:00 2001 From: Alezia Kurdis <60075796+AleziaKurdis@users.noreply.github.com> Date: Sun, 29 Sep 2024 23:00:03 -0400 Subject: [PATCH 17/17] Add Avatar and Local Entities Highlighting Add Avatar and Local Entities Highlighting for Name and ID properties --- .../html/js/entityProperties.js | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/scripts/system/create/entityProperties/html/js/entityProperties.js b/scripts/system/create/entityProperties/html/js/entityProperties.js index d2cff1ef91..ab7c7ba54a 100644 --- a/scripts/system/create/entityProperties/html/js/entityProperties.js +++ b/scripts/system/create/entityProperties/html/js/entityProperties.js @@ -15,6 +15,10 @@ var currentTab = "base"; const DEGREES_TO_RADIANS = Math.PI / 180.0; +const ENTITY_HOST_TYPE_COLOR_DOMAIN = "#afafaf"; +const ENTITY_HOST_TYPE_COLOR_AVATAR = "#7fdb98"; +const ENTITY_HOST_TYPE_COLOR_LOCAL = "#f0d769"; + const NO_SELECTION = ","; const PROPERTY_SPACE_MODE = Object.freeze({ @@ -4219,6 +4223,8 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { disableProperties(); } else { + let entityHostType = selections[0].properties.entityHostType; + if (!isPropertiesToolUpdate && !hasSelectedEntityChanged && document.hasFocus()) { // in case the selection has not changed and we still have focus on the properties page, // we will ignore the event. @@ -4303,9 +4309,31 @@ function handleEntitySelectionUpdate(selections, isPropertiesToolUpdate) { property.elInput.classList.add('multi-diff'); property.elInput.value = ""; } + if (propertyName === "id") { + property.elInput.style.color = ENTITY_HOST_TYPE_COLOR_DOMAIN; + } } else { property.elInput.classList.remove('multi-diff'); property.elInput.value = propertyValue; + if (propertyName === "name" || propertyName === "id") { + if (selections.length === 1) { + switch (entityHostType) { + case "domain": + property.elInput.style.color = ENTITY_HOST_TYPE_COLOR_DOMAIN; + break; + case "avatar": + property.elInput.style.color = ENTITY_HOST_TYPE_COLOR_AVATAR; + break; + case "local": + property.elInput.style.color = ENTITY_HOST_TYPE_COLOR_LOCAL; + break; + default: + property.elInput.style.color = ENTITY_HOST_TYPE_COLOR_DOMAIN; + } + } else { + property.elInput.style.color = ENTITY_HOST_TYPE_COLOR_DOMAIN; + } + } } break; }