diff --git a/gpt4all-chat/CMakeLists.txt b/gpt4all-chat/CMakeLists.txt index f3a6c7755a45..5addc937f988 100644 --- a/gpt4all-chat/CMakeLists.txt +++ b/gpt4all-chat/CMakeLists.txt @@ -427,6 +427,10 @@ if (LLMODEL_CUDA) LIBRARY DESTINATION lib COMPONENT ${COMPONENT_NAME_MAIN} # .so/.dylib RUNTIME DESTINATION lib COMPONENT ${COMPONENT_NAME_MAIN} # .dll ) + if (APPLE AND GPT4ALL_SIGN_INSTALL) + sign_target_osx(llamamodel-mainline-cuda) + sign_target_osx(llamamodel-mainline-cuda-avxonly) + endif() if (WIN32) install( RUNTIME_DEPENDENCY_SET llama-cuda-deps @@ -435,6 +439,11 @@ if (LLMODEL_CUDA) DIRECTORIES "${CUDAToolkit_BIN_DIR}" DESTINATION lib COMPONENT ${COMPONENT_NAME_MAIN} ) + if (GPT4ALL_SIGN_INSTALL) + sign_target_windows(llamamodel-mainline-cuda) + sign_target_windows(llamamodel-mainline-avxonly) + sign_target_windows(llama-cuda-deps) + endif() endif() endif() @@ -444,85 +453,4 @@ if (NOT APPLE) COMPONENT ${COMPONENT_NAME_MAIN}) endif() -set(CPACK_GENERATOR "IFW") -set(CPACK_VERBATIM_VARIABLES YES) -set(CPACK_IFW_VERBOSE ON) - -if(${CMAKE_SYSTEM_NAME} MATCHES Linux) - find_program(LINUXDEPLOYQT linuxdeployqt HINTS "$ENV{HOME}/dev/linuxdeployqt/build/tools/linuxdeployqt" "$ENV{HOME}/project/linuxdeployqt/bin") - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/deploy-qt-linux.cmake.in" - "${CMAKE_BINARY_DIR}/cmake/deploy-qt-linux.cmake" @ONLY) - set(CPACK_PRE_BUILD_SCRIPTS ${CMAKE_BINARY_DIR}/cmake/deploy-qt-linux.cmake) - set(CPACK_IFW_ROOT "~/Qt/Tools/QtInstallerFramework/4.6") - set(CPACK_PACKAGE_FILE_NAME "${COMPONENT_NAME_MAIN}-installer-linux") - set(CPACK_IFW_TARGET_DIRECTORY "@HomeDir@/${COMPONENT_NAME_MAIN}") -elseif(${CMAKE_SYSTEM_NAME} MATCHES Windows) - find_program(WINDEPLOYQT windeployqt HINTS ${_qt_bin_dir}) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/deploy-qt-windows.cmake.in" - "${CMAKE_BINARY_DIR}/cmake/deploy-qt-windows.cmake" @ONLY) - set(CPACK_PRE_BUILD_SCRIPTS ${CMAKE_BINARY_DIR}/cmake/deploy-qt-windows.cmake) - set(CPACK_IFW_ROOT "C:/Qt/Tools/QtInstallerFramework/4.6") - set(CPACK_IFW_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.ico") - set(CPACK_PACKAGE_FILE_NAME "${COMPONENT_NAME_MAIN}-installer-win64") - set(CPACK_IFW_TARGET_DIRECTORY "@HomeDir@\\${COMPONENT_NAME_MAIN}") -elseif(${CMAKE_SYSTEM_NAME} MATCHES Darwin) - find_program(MACDEPLOYQT macdeployqt HINTS ${_qt_bin_dir}) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/deploy-qt-mac.cmake.in" - "${CMAKE_BINARY_DIR}/cmake/deploy-qt-mac.cmake" @ONLY) - set(CPACK_PRE_BUILD_SCRIPTS ${CMAKE_BINARY_DIR}/cmake/deploy-qt-mac.cmake) - set(CPACK_IFW_ROOT "~/Qt/Tools/QtInstallerFramework/4.6") - set(CPACK_IFW_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.icns") - set(CPACK_PACKAGE_FILE_NAME "${COMPONENT_NAME_MAIN}-installer-darwin") - set(CPACK_IFW_TARGET_DIRECTORY "@ApplicationsDir@/${COMPONENT_NAME_MAIN}") - set(CPACK_BUNDLE_NAME ${COMPONENT_NAME_MAIN}) - set(CPACK_BUNDLE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.icns") -endif() - -set(CPACK_PACKAGE_INSTALL_DIRECTORY ${COMPONENT_NAME_MAIN}) -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://www.nomic.ai/gpt4all") -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") -set(CPACK_CREATE_DESKTOP_LINKS "GPT4All") -set(CPACK_IFW_PACKAGE_NAME "GPT4All") -set(CPACK_IFW_PACKAGE_TITLE "GPT4All Installer") -set(CPACK_IFW_PACKAGE_PUBLISHER "Nomic, Inc.") -set(CPACK_IFW_PRODUCT_URL "https://www.nomic.ai/gpt4all") -set(CPACK_IFW_PACKAGE_WIZARD_STYLE "Aero") -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) -set(CPACK_IFW_PACKAGE_CONTROL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/installer_control.qs") - -include(InstallRequiredSystemLibraries) -include(CPack) -include(CPackIFW) -if(GPT4ALL_OFFLINE_INSTALLER) - cpack_add_component(${COMPONENT_NAME_MAIN}) -else() - cpack_add_component(${COMPONENT_NAME_MAIN} DOWNLOADED) -endif() -cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} ESSENTIAL FORCED_INSTALLATION) -cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} VERSION ${APP_VERSION}) -cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} LICENSES "MIT LICENSE" ${CPACK_RESOURCE_FILE_LICENSE}) -cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/installer_component.qs") -cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} REPLACES "gpt4all-chat") #Was used in very earliest prototypes - -if (GPT4ALL_LOCALHOST) - cpack_ifw_add_repository("GPT4AllRepository" URL "http://localhost/repository") -elseif(GPT4ALL_OFFLINE_INSTALLER) - add_compile_definitions(GPT4ALL_OFFLINE_INSTALLER) -else() - if(${CMAKE_SYSTEM_NAME} MATCHES Linux) - cpack_ifw_add_repository("GPT4AllRepository" URL "https://gpt4all.io/installer_repos/linux/repository") - elseif(${CMAKE_SYSTEM_NAME} MATCHES Windows) - #To sign the target on windows have to create a batch script add use it as a custom target and then use CPACK_IFW_EXTRA_TARGETS to set this extra target - cpack_ifw_add_repository("GPT4AllRepository" URL "https://gpt4all.io/installer_repos/windows/repository") - elseif(${CMAKE_SYSTEM_NAME} MATCHES Darwin) - cpack_ifw_add_repository("GPT4AllRepository" URL "https://gpt4all.io/installer_repos/mac/repository") - endif() -endif() +include(${CMAKE_SOURCE_DIR}/cmake/Gpt4allCPack.cmake) diff --git a/gpt4all-chat/cmake/Gpt4allCPack.cmake b/gpt4all-chat/cmake/Gpt4allCPack.cmake new file mode 100644 index 000000000000..98515d0144bb --- /dev/null +++ b/gpt4all-chat/cmake/Gpt4allCPack.cmake @@ -0,0 +1,101 @@ +# Setup Generic CPack options +include(InstallRequiredSystemLibraries) +set(CPACK_VERBATIM_VARIABLES YES) + +set(CPACK_PACKAGE_NAME "gpt4all") +set(CPACK_PACKAGE_VERSION ${APP_VERSION_BASE}) +set(CPACK_PACKAGE_VERSION_MAJOR ) +set(CPACK_PACKAGE_VERSION_MINOR ) +set(CPACK_PACKAGE_VERSION_PATCH ) +set(CPACK_PACKAGE_VENDOR "nomic") +set(CPACK_PACKAGE_DESCRIPTION + "GPT4All runs large language models (LLMs) privately on everyday desktops & laptops.") +set(CPACK_PACKAGE_INSTALL_DIRECTORY ${COMPONENT_NAME_MAIN}) +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://www.nomic.ai/gpt4all") +set(CPACK_PACKAGE_EXECUTABLES chat;gpt4all) +set(CPACK_CREATE_DESKTOP_LINKS "gpt4all") +# TODO: Is there another intro message we want? +set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/../README.md") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/../LICENSE.txt") +# TODO: ask Adam if there's a better email to use here +set(CPACK_PACKAGE_CONTACT "adam@nomic.ai") + +# Why are we creating components here? There's only one... gpt4all is installed monolithically +# unless we want to start vendoring models for the downloaded version? +if(GPT4ALL_OFFLINE_INSTALLER) + cpack_add_component(${COMPONENT_NAME_MAIN}) +else() + cpack_add_component(${COMPONENT_NAME_MAIN} DOWNLOADED) +endif() + +# Setup platform specific CPack options + +if(${CMAKE_SYSTEM_NAME} MATCHES Linux) + find_program(LINUXDEPLOYQT linuxdeployqt HINTS "$ENV{HOME}/dev/linuxdeployqt/build/tools/linuxdeployqt" "$ENV{HOME}/project/linuxdeployqt/bin") + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/deploy-qt-linux.cmake.in" + "${CMAKE_BINARY_DIR}/cmake/deploy-qt-linux.cmake" @ONLY) + set(CPACK_PRE_BUILD_SCRIPTS ${CMAKE_BINARY_DIR}/cmake/deploy-qt-linux.cmake) + # Still using IFW on Linux + set(CPACK_GENERATOR "IFW") + set(CPACK_IFW_VERBOSE ON) + set(CPACK_IFW_PACKAGE_NAME "GPT4All") + set(CPACK_IFW_PACKAGE_TITLE "GPT4All Installer") + set(CPACK_IFW_PACKAGE_PUBLISHER "Nomic, Inc.") + set(CPACK_IFW_PRODUCT_URL "https://www.nomic.ai/gpt4all") + set(CPACK_IFW_PACKAGE_WIZARD_STYLE "Aero") + 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) + set(CPACK_IFW_PACKAGE_CONTROL_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/installer_control.qs") + set(CPACK_IFW_ROOT "~/Qt/Tools/QtInstallerFramework/4.6") + set(CPACK_PACKAGE_FILE_NAME "${COMPONENT_NAME_MAIN}-installer-linux") + set(CPACK_IFW_TARGET_DIRECTORY "@HomeDir@/${COMPONENT_NAME_MAIN}") +elseif(${CMAKE_SYSTEM_NAME} MATCHES Windows) + find_program(WINDEPLOYQT windeployqt HINTS ${_qt_bin_dir}) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/deploy-qt-windows.cmake.in" + "${CMAKE_BINARY_DIR}/cmake/deploy-qt-windows.cmake" @ONLY) + set(CPACK_PRE_BUILD_SCRIPTS ${CMAKE_BINARY_DIR}/cmake/deploy-qt-windows.cmake) + set(CPACK_PACKAGE_FILE_NAME "${COMPONENT_NAME_MAIN}-installer-win64") + set(CPACK_GENERATOR "INNOSETUP") + set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-48.bmp") + # Todo - extend this to all languages we want to support + set(GPT4ALL_DIST_LANGUAGES english) + set(GPT4ALL_ICON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-48.ico") + if (CMAKE_SIZEOF_VOID_P GREATER 4) + set(GPT4ALL_INSTALLER_ARCH x64) + else() + set(GPT4ALL_INSTALLER_ARCH x86) + endif() +elseif(${CMAKE_SYSTEM_NAME} MATCHES Darwin) + find_program(MACDEPLOYQT macdeployqt HINTS ${_qt_bin_dir}) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/deploy-qt-mac.cmake.in" + "${CMAKE_BINARY_DIR}/cmake/deploy-qt-mac.cmake" @ONLY) + set(CPACK_PRE_BUILD_SCRIPTS ${CMAKE_BINARY_DIR}/cmake/deploy-qt-mac.cmake) + set(CPACK_PACKAGE_FILE_NAME "${COMPONENT_NAME_MAIN}-installer-darwin") + set(CPACK_GENERATOR "DragNDrop") + set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.icns") + set(CPACK_PACKAGING_INSTALL_PREFIX "/gpt4all") + set(CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK OFF) + # set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON) + # set(CPACK_COMPONENTS_GROUPING ALL_IN_ONE) +endif() + +# Setup vars for CPack option config + +# Configure CPack options file (this sets up generator specfic behavior) +configure_file(${CMAKE_SOURCE_DIR}/cmake/gpt4allCPackOptions.cmake.in ${CMAKE_BINARY_DIR}/gpt4allCPackOptions.cmake) +set(CPACK_PROJECT_CONFIG_FILE ${CMAKE_BINARY_DIR}/gpt4allCPackOPtions.cmake) + +# Setup Cpack +include(CPack) +if(LINUX) + include(CPackIFW) + cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} ESSENTIAL FORCED_INSTALLATION) + cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} VERSION ${APP_VERSION}) + cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} LICENSES "MIT LICENSE" ${CPACK_RESOURCE_FILE_LICENSE}) + cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/installer_component.qs") + cpack_ifw_configure_component(${COMPONENT_NAME_MAIN} REPLACES "gpt4all-chat") #Was used in very earliest prototypes +endif() diff --git a/gpt4all-chat/cmake/deploy-qt-mac.cmake.in b/gpt4all-chat/cmake/deploy-qt-mac.cmake.in index d9458aa32c40..83ba8c67736f 100644 --- a/gpt4all-chat/cmake/deploy-qt-mac.cmake.in +++ b/gpt4all-chat/cmake/deploy-qt-mac.cmake.in @@ -5,16 +5,16 @@ set(GPT4ALL_SIGNING_ID "@MAC_SIGNING_IDENTITY@") if (GPT4ALL_SIGNING_ID) set(MAC_NOTARIZE -sign-for-notarization=${GPT4ALL_SIGNING_ID}) endif() -execute_process(COMMAND ${MACDEPLOYQT} ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app -qmldir=${CMAKE_CURRENT_SOURCE_DIR} -verbose=2 ${MAC_NOTARIZE}) -file(GLOB MYLLAMALIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/libllama*) -file(GLOB MYLLMODELLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/lib/libllmodel.*) +execute_process(COMMAND ${MACDEPLOYQT} ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${COMPONENT_NAME_MAIN}/bin/gpt4all.app -qmldir=${CMAKE_CURRENT_SOURCE_DIR} -verbose=2 ${MAC_NOTARIZE}) +file(GLOB MYLLAMALIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${COMPONENT_NAME_MAIN}/lib/libllama*) +file(GLOB MYLLMODELLIBS ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${COMPONENT_NAME_MAIN}/lib/libllmodel.*) file(COPY ${MYLLAMALIBS} - DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks) + DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${COMPONENT_NAME_MAIN}/bin/gpt4all.app/Contents/Frameworks) file(COPY ${MYLLMODELLIBS} - DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data/bin/gpt4all.app/Contents/Frameworks) + DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${COMPONENT_NAME_MAIN}/bin/gpt4all.app/Contents/Frameworks) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-32.png" - DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data) + DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${COMPONENT_NAME_MAIN}) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/icons/gpt4all-48.png" - DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data) + DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${COMPONENT_NAME_MAIN}) file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/resources/gpt4all.icns" - DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/packages/${COMPONENT_NAME_MAIN}/data) + DESTINATION ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${COMPONENT_NAME_MAIN}) diff --git a/gpt4all-chat/cmake/generate_gpt4all_alias.cmake b/gpt4all-chat/cmake/generate_gpt4all_alias.cmake new file mode 100644 index 000000000000..cab06e4caf03 --- /dev/null +++ b/gpt4all-chat/cmake/generate_gpt4all_alias.cmake @@ -0,0 +1,4 @@ +execute_process( + COMMAND ln -s bin/gpt4all.app gpt4all + WORKING_DIRECTORY ${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE +) \ No newline at end of file diff --git a/gpt4all-chat/cmake/gpt4allCPackOptions.cmake.in b/gpt4all-chat/cmake/gpt4allCPackOptions.cmake.in new file mode 100644 index 000000000000..0cdce392c4f7 --- /dev/null +++ b/gpt4all-chat/cmake/gpt4allCPackOptions.cmake.in @@ -0,0 +1,34 @@ + + +# Configure Windows Installer Options + +#Setup innosetup +if(CPACK_GENERATOR ) + # Should be one of x86, x64, arm64, ia64 + set(CPACK_INNOSETUP_ARCHITECTURE @GPT4ALL_INSTALLER_ARCH@) + + # TODO (john): ask adam about this + set(CPACK_INNOSETUP_INSTALL_ROOT {%USERPROFILE}) + set(CPACK_INNOSETUP_ALLOW_CUSTOM_DIRECTORY ON) + set(CPACK_INNOSETUP_PROGRAM_MENU_FOLDER "gpt4all") + # ask adam if we want to support all options gpt4all supports + set(CPACK_INNOSETUP_LANGUAGES @GPT4ALL_DIST_LANGUAGES@) + set(CPACK_INNOSETUP_IGNORE_LICENSE_PAGE OFF) + set(CPACK_INNOSETUP_USE_MODERN_WIZARD ON) + set(CPACK_INNOSETUP_ICON_FILE @GPT4ALL_ICON_FILE@) + set(CPACK_INNOSETUP_CREATE_UNINSTALL_LINK ON) + set(CPACK_INNOSETUP_RUN_EXECUTABLES gpt4all) + set(CPACK_INNOSETUP_VERIFY_DOWNLOADS ON) +endif() + +# Configure MacOs installer Options + +# Setup DragNDrop (preferred) +if(CPACK_GENERATOR MATCHES "DragNDrop") + set(CPACK_DMG_FORMAT "UDBZ") + set(VERSION "${CPACK_PACKAGE_VERSION}") + # TODO: uncomment the line below when we have an image + # maybe we want an applescript to mange ths instead? + # set(CPACK_DMG_BACKGROUND_IMAGE @CMAKE_SOURCE_DIR@/icons/) +endif() + diff --git a/gpt4all-chat/icons/gpt4all-48.bmp b/gpt4all-chat/icons/gpt4all-48.bmp new file mode 100644 index 000000000000..34e6041a5c4b Binary files /dev/null and b/gpt4all-chat/icons/gpt4all-48.bmp differ diff --git a/gpt4all-chat/icons/gpt4all-48.ico b/gpt4all-chat/icons/gpt4all-48.ico new file mode 100644 index 000000000000..1af4647fa895 Binary files /dev/null and b/gpt4all-chat/icons/gpt4all-48.ico differ