diff --git a/gpt4all-chat/CMakeLists.txt b/gpt4all-chat/CMakeLists.txt index 0e7bdb89..a03b057b 100644 --- a/gpt4all-chat/CMakeLists.txt +++ b/gpt4all-chat/CMakeLists.txt @@ -210,9 +210,9 @@ qt_add_qml_module(chat icons/twitter.svg icons/left_panel_closed.svg icons/left_panel_open.svg - icons/logo.svg - icons/logo-32.png - icons/logo-48.png + icons/gpt4all.svg + icons/gpt4all-32.png + icons/gpt4all-48.png icons/you.svg icons/alt_logo.svg ) @@ -405,7 +405,7 @@ set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR}) set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR}) SET(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH}) set(CPACK_PACKAGE_HOMEPAGE_URL "https://gpt4all.io") -set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-48.png") +set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-48.png") set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE) set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README.md) set(CPACK_PACKAGE_EXECUTABLES "GPT4All") @@ -415,8 +415,8 @@ set(CPACK_IFW_PACKAGE_TITLE "GPT4All Installer") set(CPACK_IFW_PACKAGE_PUBLISHER "Nomic, Inc.") set(CPACK_IFW_PRODUCT_URL "https://gpt4all.io") set(CPACK_IFW_PACKAGE_WIZARD_STYLE "Aero") -set(CPACK_IFW_PACKAGE_LOGO "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-48.png") -set(CPACK_IFW_PACKAGE_WINDOW_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-32.png") +set(CPACK_IFW_PACKAGE_LOGO "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-48.png") +set(CPACK_IFW_PACKAGE_WINDOW_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-32.png") set(CPACK_IFW_PACKAGE_WIZARD_SHOW_PAGE_LIST OFF) include(InstallRequiredSystemLibraries) diff --git a/gpt4all-chat/cmake/deploy-qt-linux.cmake.in b/gpt4all-chat/cmake/deploy-qt-linux.cmake.in index 97a2a4a9..646b9416 100644 --- a/gpt4all-chat/cmake/deploy-qt-linux.cmake.in +++ b/gpt4all-chat/cmake/deploy-qt-linux.cmake.in @@ -6,7 +6,7 @@ set(BIN_DIR ${DATA_DIR}/bin) set(Qt6_ROOT_DIR "@Qt6_ROOT_DIR@") set(ENV{LD_LIBRARY_PATH} "${BIN_DIR}:${Qt6_ROOT_DIR}/../lib/") execute_process(COMMAND ${LINUXDEPLOYQT} ${BIN_DIR}/chat -qmldir=${CMAKE_CURRENT_SOURCE_DIR} -bundle-non-qt-libs -qmake=${Qt6_ROOT_DIR}/bin/qmake -verbose=2 -exclude-libs=libcuda.so.1) -file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-32.png" +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-32.png" DESTINATION ${DATA_DIR}) -file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-48.png" +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-48.png" DESTINATION ${DATA_DIR}) diff --git a/gpt4all-chat/cmake/deploy-qt-mac.cmake.in b/gpt4all-chat/cmake/deploy-qt-mac.cmake.in index b16f0b34..b3e91ead 100644 --- a/gpt4all-chat/cmake/deploy-qt-mac.cmake.in +++ b/gpt4all-chat/cmake/deploy-qt-mac.cmake.in @@ -12,9 +12,9 @@ file(COPY ${MYLLAMALIBS} DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks) file(COPY ${MYLLMODELLIBS} DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks) -file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-32.png" +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-32.png" DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data) -file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-48.png" +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-48.png" DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.icns" DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data) diff --git a/gpt4all-chat/cmake/deploy-qt-windows.cmake.in b/gpt4all-chat/cmake/deploy-qt-windows.cmake.in index 7859474a..96d1a56c 100644 --- a/gpt4all-chat/cmake/deploy-qt-windows.cmake.in +++ b/gpt4all-chat/cmake/deploy-qt-windows.cmake.in @@ -2,9 +2,9 @@ set(WINDEPLOYQT "@WINDEPLOYQT@") set(COMPONENT_NAME_MAIN "@COMPONENT_NAME_MAIN@") set(CMAKE_CURRENT_SOURCE_DIR "@CMAKE_CURRENT_SOURCE_DIR@") execute_process(COMMAND ${WINDEPLOYQT} --qmldir ${CMAKE_CURRENT_SOURCE_DIR} ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin) -file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-32.png" +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-32.png" DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data) -file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/logo-48.png" +file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-48.png" DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.ico" DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data) diff --git a/gpt4all-chat/cmake/installerscript.qs b/gpt4all-chat/cmake/installerscript.qs index 15810c2f..658dc09a 100644 --- a/gpt4all-chat/cmake/installerscript.qs +++ b/gpt4all-chat/cmake/installerscript.qs @@ -44,7 +44,7 @@ Component.prototype.createOperations = function() homeDir + "/Desktop/GPT4All.desktop", "Type=Application\nTerminal=false\nExec=\"" + targetDirectory + "/bin/chat\"\nName=GPT4All\nIcon=" + targetDirectory + - "/logo-48.png\nName[en_US]=GPT4All"); + "/gpt4all-48.png\nName[en_US]=GPT4All"); } } } catch (e) { diff --git a/gpt4all-chat/icons/gpt4all-32.png b/gpt4all-chat/icons/gpt4all-32.png new file mode 100644 index 00000000..fd4dbf59 Binary files /dev/null and b/gpt4all-chat/icons/gpt4all-32.png differ diff --git a/gpt4all-chat/icons/gpt4all-48.png b/gpt4all-chat/icons/gpt4all-48.png new file mode 100644 index 00000000..e4fefed5 Binary files /dev/null and b/gpt4all-chat/icons/gpt4all-48.png differ diff --git a/gpt4all-chat/icons/gpt4all.svg b/gpt4all-chat/icons/gpt4all.svg new file mode 100644 index 00000000..9b293e84 --- /dev/null +++ b/gpt4all-chat/icons/gpt4all.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gpt4all-chat/icons/logo-1024.png b/gpt4all-chat/icons/logo-1024.png deleted file mode 100644 index 2fb7cbdc..00000000 Binary files a/gpt4all-chat/icons/logo-1024.png and /dev/null differ diff --git a/gpt4all-chat/icons/logo-128.png b/gpt4all-chat/icons/logo-128.png deleted file mode 100644 index 81c52374..00000000 Binary files a/gpt4all-chat/icons/logo-128.png and /dev/null differ diff --git a/gpt4all-chat/icons/logo-16.png b/gpt4all-chat/icons/logo-16.png deleted file mode 100644 index 344ac9b1..00000000 Binary files a/gpt4all-chat/icons/logo-16.png and /dev/null differ diff --git a/gpt4all-chat/icons/logo-256.png b/gpt4all-chat/icons/logo-256.png deleted file mode 100644 index 291f3003..00000000 Binary files a/gpt4all-chat/icons/logo-256.png and /dev/null differ diff --git a/gpt4all-chat/icons/logo-32.png b/gpt4all-chat/icons/logo-32.png deleted file mode 100644 index 06628744..00000000 Binary files a/gpt4all-chat/icons/logo-32.png and /dev/null differ diff --git a/gpt4all-chat/icons/logo-48.png b/gpt4all-chat/icons/logo-48.png deleted file mode 100644 index 4d53f9f7..00000000 Binary files a/gpt4all-chat/icons/logo-48.png and /dev/null differ diff --git a/gpt4all-chat/icons/logo-512.png b/gpt4all-chat/icons/logo-512.png deleted file mode 100644 index 4f70fbb4..00000000 Binary files a/gpt4all-chat/icons/logo-512.png and /dev/null differ diff --git a/gpt4all-chat/icons/logo-64.png b/gpt4all-chat/icons/logo-64.png deleted file mode 100644 index fbffe619..00000000 Binary files a/gpt4all-chat/icons/logo-64.png and /dev/null differ diff --git a/gpt4all-chat/icons/logo.svg b/gpt4all-chat/icons/logo.svg deleted file mode 100644 index e7084ec0..00000000 --- a/gpt4all-chat/icons/logo.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - GPT - 4All - diff --git a/gpt4all-chat/main.qml b/gpt4all-chat/main.qml index 2e3da744..dda8b795 100644 --- a/gpt4all-chat/main.qml +++ b/gpt4all-chat/main.qml @@ -498,7 +498,7 @@ Window { Image { id: image anchors.centerIn: parent - sourceSize: Qt.size(60, 40) + sourceSize: Qt.size(48 * theme.fontScale, 32 * theme.fontScale) fillMode: Image.PreserveAspectFit mipmap: true visible: false diff --git a/gpt4all-chat/qml/AddCollectionView.qml b/gpt4all-chat/qml/AddCollectionView.qml index d13585b3..ba734329 100644 --- a/gpt4all-chat/qml/AddCollectionView.qml +++ b/gpt4all-chat/qml/AddCollectionView.qml @@ -32,7 +32,7 @@ Rectangle { anchors.top: parent.top anchors.bottom: parent.bottom anchors.margins: 30 - spacing: 50 + spacing: 20 RowLayout { Layout.fillWidth: true @@ -61,10 +61,30 @@ Rectangle { } } - ColumnLayout { + Text { + id: addDocBanner + Layout.alignment: Qt.AlignBottom | Qt.AlignHCenter + horizontalAlignment: Qt.AlignHCenter + text: qsTr("Add Document Collection") + font.pixelSize: theme.fontSizeBanner + color: theme.titleTextColor + } + + Text { + Layout.alignment: Qt.AlignTop | Qt.AlignHCenter + Layout.maximumWidth: addDocBanner.width + wrapMode: Text.WordWrap + horizontalAlignment: Text.AlignJustify + text: qsTr("Add a folder containing plain text files, PDFs, or Markdown. Configure additional extensions in Settings.") + font.pixelSize: theme.fontSizeLarger + color: theme.titleInfoTextColor + } + + GridLayout { id: root - Layout.alignment: Qt.AlignTop | Qt.AlignCenter - spacing: 50 + Layout.alignment: Qt.AlignTop | Qt.AlignHCenter + rowSpacing: 50 + columnSpacing: 20 property alias collection: collection.text property alias folder_path: folderEdit.text @@ -80,17 +100,20 @@ Rectangle { folderDialog.open(); } - Text { - horizontalAlignment: Qt.AlignHCenter - text: qsTr("New Local Doc\nCollection") - font.pixelSize: theme.fontSizeBanner - color: theme.titleTextColor + Label { + Layout.row: 2 + Layout.column: 0 + text: qsTr("Name") + font.bold: true + font.pixelSize: theme.fontSizeLarger } MyTextField { id: collection - Layout.alignment: Qt.AlignCenter + Layout.row: 2 + Layout.column: 1 Layout.minimumWidth: 400 + Layout.alignment: Qt.AlignRight horizontalAlignment: Text.AlignJustify color: theme.textColor font.pixelSize: theme.fontSizeLarge @@ -109,10 +132,20 @@ Rectangle { } } + Label { + Layout.row: 3 + Layout.column: 0 + text: qsTr("Folder") + font.bold: true + font.pixelSize: theme.fontSizeLarger + } + RowLayout { - Layout.alignment: Qt.AlignCenter + Layout.row: 3 + Layout.column: 1 Layout.minimumWidth: 400 Layout.maximumWidth: 400 + Layout.alignment: Qt.AlignRight spacing: 10 MyDirectoryField { id: folderEdit @@ -143,8 +176,9 @@ Rectangle { } MyButton { - Layout.alignment: Qt.AlignCenter - Layout.minimumWidth: 400 + Layout.row: 4 + Layout.column: 1 + Layout.alignment: Qt.AlignRight text: qsTr("Create Collection") onClicked: { var isError = false; diff --git a/gpt4all-chat/qml/ChatDrawer.qml b/gpt4all-chat/qml/ChatDrawer.qml index 3720d379..26c5f1c5 100644 --- a/gpt4all-chat/qml/ChatDrawer.qml +++ b/gpt4all-chat/qml/ChatDrawer.qml @@ -46,7 +46,7 @@ Rectangle { font.pixelSize: theme.fontSizeLarger topPadding: 24 bottomPadding: 24 - text: qsTr("\uFF0B New chat") + text: qsTr("\uFF0B New Chat") Accessible.description: qsTr("Create a new chat") onClicked: { ChatListModel.addChat() diff --git a/gpt4all-chat/qml/ChatView.qml b/gpt4all-chat/qml/ChatView.qml index ec718a25..d9fe4ea6 100644 --- a/gpt4all-chat/qml/ChatView.qml +++ b/gpt4all-chat/qml/ChatView.qml @@ -503,7 +503,12 @@ Rectangle { background: Rectangle { radius: collectionsButton.backgroundRadius - color: collectionsButton.toggled ? collectionsButton.backgroundColorHovered : collectionsButton.backgroundColor + // TODO(jared): either use collectionsButton-specific theming, or don't - this is inconsistent + color: conversation.state == "expanded" ? ( + collectionsButton.hovered ? theme.lightButtonBackgroundHovered : theme.lightButtonBackground + ) : ( + collectionsButton.hovered ? theme.lighterButtonBackground : theme.lighterButtonBackgroundHovered + ) } Accessible.name: qsTr("Add documents") diff --git a/gpt4all-chat/qml/LocalDocsSettings.qml b/gpt4all-chat/qml/LocalDocsSettings.qml index 30fef7b3..6e6e4bac 100644 --- a/gpt4all-chat/qml/LocalDocsSettings.qml +++ b/gpt4all-chat/qml/LocalDocsSettings.qml @@ -124,40 +124,6 @@ MySettingsTab { } } - RowLayout { - MySettingsLabel { - id: deviceLabel - text: qsTr("Embeddings Device") - helpText: qsTr('The compute device used for embeddings. "Auto" uses the CPU. Requires restart.') - } - MyComboBox { - id: deviceBox - enabled: !useNomicAPIBox.checked - Layout.minimumWidth: 400 - Layout.maximumWidth: 400 - Layout.fillWidth: false - Layout.alignment: Qt.AlignRight - model: MySettings.embeddingsDeviceList - Accessible.name: deviceLabel.text - Accessible.description: deviceLabel.helpText - function updateModel() { - deviceBox.currentIndex = deviceBox.indexOfValue(MySettings.localDocsEmbedDevice); - } - Component.onCompleted: { - deviceBox.updateModel(); - } - Connections { - target: MySettings - function onDeviceChanged() { - deviceBox.updateModel(); - } - } - onActivated: { - MySettings.localDocsEmbedDevice = deviceBox.currentText; - } - } - } - RowLayout { MySettingsLabel { id: apiKeyLabel @@ -193,6 +159,40 @@ MySettingsTab { } } + RowLayout { + MySettingsLabel { + id: deviceLabel + text: qsTr("Embeddings Device") + helpText: qsTr('The compute device used for embeddings. "Auto" uses the CPU. Requires restart.') + } + MyComboBox { + id: deviceBox + enabled: !useNomicAPIBox.checked + Layout.minimumWidth: 400 + Layout.maximumWidth: 400 + Layout.fillWidth: false + Layout.alignment: Qt.AlignRight + model: MySettings.embeddingsDeviceList + Accessible.name: deviceLabel.text + Accessible.description: deviceLabel.helpText + function updateModel() { + deviceBox.currentIndex = deviceBox.indexOfValue(MySettings.localDocsEmbedDevice); + } + Component.onCompleted: { + deviceBox.updateModel(); + } + Connections { + target: MySettings + function onDeviceChanged() { + deviceBox.updateModel(); + } + } + onActivated: { + MySettings.localDocsEmbedDevice = deviceBox.currentText; + } + } + } + ColumnLayout { spacing: 10 Label { diff --git a/gpt4all-chat/qml/LocalDocsView.qml b/gpt4all-chat/qml/LocalDocsView.qml index e7f6b8bf..fc9960b5 100644 --- a/gpt4all-chat/qml/LocalDocsView.qml +++ b/gpt4all-chat/qml/LocalDocsView.qml @@ -68,7 +68,7 @@ Rectangle { MyButton { Layout.alignment: Qt.AlignTop | Qt.AlignRight - text: qsTr("\uFF0B Add Doc Collection") + text: qsTr("\uFF0B Add Collection") onClicked: { addCollectionViewRequested() } @@ -399,30 +399,35 @@ Rectangle { RowLayout { Layout.fillWidth: true spacing: 30 - Layout.leftMargin: 15 - Layout.rightMargin: 15 - Layout.topMargin: 15 - MyTextButton { + MySettingsButton { text: qsTr("Remove") - color: theme.red500 - onClick: LocalDocs.removeFolder(collection, folder_path) + textColor: theme.red500 + onClicked: LocalDocs.removeFolder(collection, folder_path) + backgroundColor: "transparent" + backgroundColorHovered: theme.lighterButtonBackgroundHoveredRed } Item { Layout.fillWidth: true } - MyTextButton { + MySettingsButton { + id: rebuildButton visible: !model.forceIndexing && !model.indexing && model.currentEmbeddingsToIndex === 0 text: qsTr("Rebuild") - color: theme.green500 - onClick: { LocalDocs.forceRebuildFolder(folder_path); } - tooltip: qsTr("Reindex this folder from scratch. This is slow and usually not needed.") + textColor: theme.green500 + onClicked: LocalDocs.forceRebuildFolder(folder_path) + toolTip: qsTr("Reindex this folder from scratch. This is slow and usually not needed.") + backgroundColor: "transparent" + backgroundColorHovered: theme.lighterButtonBackgroundHovered } - MyTextButton { + MySettingsButton { + id: updateButton visible: model.forceIndexing text: qsTr("Update") - color: theme.green500 - onClick: { LocalDocs.forceIndexing(collection); } - tooltip: qsTr("Update the collection to the new version. This is a slow operation.") + textColor: theme.green500 + onClicked: LocalDocs.forceIndexing(collection) + toolTip: qsTr("Update the collection to the new version. This is a slow operation.") + backgroundColor: "transparent" + backgroundColorHovered: theme.lighterButtonBackgroundHovered } } } diff --git a/gpt4all-chat/qml/ModelsView.qml b/gpt4all-chat/qml/ModelsView.qml index b7e34f00..7a3b8427 100644 --- a/gpt4all-chat/qml/ModelsView.qml +++ b/gpt4all-chat/qml/ModelsView.qml @@ -295,23 +295,12 @@ Rectangle { color: theme.dividerColor } - RowLayout { - Layout.fillWidth: true - spacing: 30 - Layout.leftMargin: 15 - Layout.topMargin: 15 - Text { - text: qsTr("Remove") - elide: Text.ElideRight - color: theme.red500 - font.bold: true - font.pixelSize: theme.fontSizeSmall - TapHandler { - onTapped: { - Download.removeModel(filename); - } - } - } + MySettingsButton { + text: qsTr("Remove") + textColor: theme.red500 + onClicked: Download.removeModel(filename) + backgroundColor: "transparent" + backgroundColorHovered: theme.lighterButtonBackgroundHoveredRed } } } diff --git a/gpt4all-chat/qml/MySettingsButton.qml b/gpt4all-chat/qml/MySettingsButton.qml index 35b1aa2f..18de21af 100644 --- a/gpt4all-chat/qml/MySettingsButton.qml +++ b/gpt4all-chat/qml/MySettingsButton.qml @@ -9,13 +9,14 @@ Button { padding: 10 rightPadding: 18 leftPadding: 18 - property color textColor: theme.lightButtonText - property color mutedTextColor: theme.lightButtonMutedText - property color backgroundColor: theme.lightButtonBackground - property color backgroundColorHovered: enabled ? theme.lightButtonBackgroundHovered : backgroundColor - property real borderWidth: 0 - property color borderColor: "transparent" - property real fontPixelSize: theme.fontSizeLarge + property color textColor: theme.lightButtonText + property color mutedTextColor: theme.lightButtonMutedText + property color backgroundColor: theme.lightButtonBackground + property color backgroundColorHovered: enabled ? theme.lightButtonBackgroundHovered : backgroundColor + property real borderWidth: 0 + property color borderColor: "transparent" + property real fontPixelSize: theme.fontSizeLarge + property string toolTip contentItem: Text { text: myButton.text @@ -34,5 +35,7 @@ Button { } Accessible.role: Accessible.Button Accessible.name: text + ToolTip.text: toolTip + ToolTip.visible: toolTip !== "" && myButton.hovered ToolTip.delay: Qt.styleHints.mousePressAndHoldInterval } diff --git a/gpt4all-chat/qml/NetworkDialog.qml b/gpt4all-chat/qml/NetworkDialog.qml index 1bcd55ea..c9d01b64 100644 --- a/gpt4all-chat/qml/NetworkDialog.qml +++ b/gpt4all-chat/qml/NetworkDialog.qml @@ -30,7 +30,7 @@ MyDialog { anchors.left: parent.left width: 60 height: 60 - source: "qrc:/gpt4all/icons/logo.svg" + source: "qrc:/gpt4all/icons/gpt4all.svg" } Text { anchors.left: img.right diff --git a/gpt4all-chat/qml/Theme.qml b/gpt4all-chat/qml/Theme.qml index 1220c23c..eab8aece 100644 --- a/gpt4all-chat/qml/Theme.qml +++ b/gpt4all-chat/qml/Theme.qml @@ -467,6 +467,17 @@ QtObject { } } + property color lighterButtonBackgroundHoveredRed: { + switch (MySettings.chatTheme) { + case "LegacyDark": + return buttonBackgroundHovered; + case "Dark": + return buttonBackgroundHovered; + default: + return red50; + } + } + property color sourcesBackground: { switch (MySettings.chatTheme) { case "LegacyDark": diff --git a/gpt4all-chat/resources/gpt4all.icns b/gpt4all-chat/resources/gpt4all.icns index 38638c7a..8eda0942 100644 Binary files a/gpt4all-chat/resources/gpt4all.icns and b/gpt4all-chat/resources/gpt4all.icns differ diff --git a/gpt4all-chat/resources/gpt4all.ico b/gpt4all-chat/resources/gpt4all.ico index d7c27c4b..4ec24deb 100644 Binary files a/gpt4all-chat/resources/gpt4all.ico and b/gpt4all-chat/resources/gpt4all.ico differ