Compare commits
	
		
			3 Commits
		
	
	
		
			e27276bf65
			...
			2353d57dd3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 2353d57dd3 | ||
|  | 8e805522d5 | ||
|  | 5978a14224 | 
							
								
								
									
										100
									
								
								.github/workflows/cd.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										100
									
								
								.github/workflows/cd.yml
									
									
									
									
										vendored
									
									
								
							| @@ -165,7 +165,12 @@ jobs: | ||||
|   windows: | ||||
|     timeout-minutes: 15 | ||||
|  | ||||
|     runs-on: windows-2022 | ||||
|     runs-on: ${{matrix.os}} | ||||
|  | ||||
|     strategy: | ||||
|       matrix: | ||||
|         type: ['', 'asan'] | ||||
|         os: ['windows-2022'] | ||||
|  | ||||
|     permissions: | ||||
|       # vcpkg caching action | ||||
| @@ -199,7 +204,8 @@ jobs: | ||||
|     #- uses: ilammy/setup-nasm@v1 | ||||
|  | ||||
|     - name: Configure CMake | ||||
|       run: cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DTOMATO_DEP_LIBWEBP_USE_SYSTEM=ON -DSDLIMAGE_VENDORED=OFF -DSDLIMAGE_DEPS_SHARED=OFF -DSDLIMAGE_JXL=OFF -DSDLIMAGE_AVIF=OFF -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DTOMATO_BREAKPAD=ON -DTOMATO_TOX_AV=ON | ||||
|       # TODO: og asan had this -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded | ||||
|       run: cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DTOMATO_DEP_LIBWEBP_USE_SYSTEM=ON -DSDLIMAGE_VENDORED=OFF -DSDLIMAGE_DEPS_SHARED=OFF -DSDLIMAGE_JXL=OFF -DSDLIMAGE_AVIF=OFF -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DTOMATO_BREAKPAD=ON -DTOMATO_TOX_AV=ON -DTOMATO_ASAN=${{matrix.type == 'asan' && 'ON' || 'OFF'}} | ||||
|  | ||||
|     - name: Build | ||||
|       run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -t tomato | ||||
| @@ -223,82 +229,8 @@ jobs: | ||||
|       run: | | ||||
|         Remove-Item "${{github.workspace}}/build/bin/*.ilk" | ||||
|  | ||||
|     - name: Compress artifacts | ||||
|       shell: powershell | ||||
|       run: | | ||||
|         Compress-Archive -Path ${{github.workspace}}/build/bin/* -Destination ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-x86_64.zip | ||||
|  | ||||
|     - uses: actions/upload-artifact@v4 | ||||
|       with: | ||||
|         name: ${{github.event.repository.name}}-${{steps.tag.outputs.name}}-${{runner.os}}-msvc-x86_64 | ||||
|         # TODO: do propper packing | ||||
|         path: | | ||||
|           ${{github.workspace}}/${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-x86_64.zip | ||||
|  | ||||
|  | ||||
|   windows-asan: | ||||
|     timeout-minutes: 15 | ||||
|  | ||||
|     runs-on: windows-2022 | ||||
|  | ||||
|     permissions: | ||||
|       # vcpkg caching action | ||||
|       actions: read | ||||
|       contents: read | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4 | ||||
|       with: | ||||
|         submodules: recursive | ||||
|         fetch-depth: 0 | ||||
|  | ||||
|     - name: Restore vcpkg cache | ||||
|       id: vcpkg-cache | ||||
|       uses: TAServers/vcpkg-cache@v3 | ||||
|       with: | ||||
|         token: ${{secrets.GITHUB_TOKEN}} | ||||
|  | ||||
|     - name: Install Dependencies | ||||
|       env: | ||||
|         VCPKG_FEATURE_FLAGS: "binarycaching" | ||||
|         VCPKG_BINARY_SOURCES: "clear;files,${{steps.vcpkg-cache.outputs.path}},readwrite" | ||||
|       run: vcpkg install pkgconf:x64-windows libsodium:x64-windows-static pthreads:x64-windows-static opus:x64-windows-static libvpx:x64-windows-static zstd:x64-windows-static libwebp:x64-windows-static libpng:x64-windows-static libjpeg-turbo:x64-windows-static freetype:x64-windows-static | ||||
|  | ||||
|  | ||||
|     # setup vs env | ||||
|     - uses: ilammy/msvc-dev-cmd@v1 | ||||
|       with: | ||||
|         arch: amd64 | ||||
|  | ||||
|     ## sdl_image vendored needs nasm for dav1d | ||||
|     #- uses: ilammy/setup-nasm@v1 | ||||
|  | ||||
|     - name: Configure CMake | ||||
|       run: cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DTOMATO_ASAN=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DTOMATO_DEP_LIBWEBP_USE_SYSTEM=ON -DSDLIMAGE_VENDORED=OFF -DSDLIMAGE_DEPS_SHARED=OFF -DSDLIMAGE_JXL=OFF -DSDLIMAGE_AVIF=OFF -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DTOMATO_TOX_AV=ON | ||||
|  | ||||
|     - name: Build | ||||
|       run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4 -t tomato | ||||
|  | ||||
|     - name: Determine tag name | ||||
|       id: tag | ||||
|       shell: bash | ||||
|       # taken from llama.cpp | ||||
|       run: | | ||||
|         SHORT_HASH="$(git rev-parse --short=7 HEAD)" | ||||
|         if [[ "${{ env.BRANCH_NAME }}" == "master" ]]; then | ||||
|           echo "name=dev-${SHORT_HASH}" >> $GITHUB_OUTPUT | ||||
|         else | ||||
|           SAFE_NAME=$(echo "${{ env.BRANCH_NAME }}" | tr '/' '-') | ||||
|           echo "name=dev-${SAFE_NAME}-${SHORT_HASH}" >> $GITHUB_OUTPUT | ||||
|         fi | ||||
|  | ||||
|     - name: Clean temporary artifacts | ||||
|       # msvc sometimes produces .ilk files, which are used for linking only | ||||
|       shell: powershell | ||||
|       run: | | ||||
|         Remove-Item "${{github.workspace}}/build/bin/*.ilk" | ||||
|  | ||||
|     - name: Add asan runtime deps | ||||
|       if: ${{matrix.type == 'asan'}} | ||||
|       # msvc redist does not ship them | ||||
|       shell: powershell | ||||
|       run: | | ||||
| @@ -307,14 +239,18 @@ jobs: | ||||
|     - name: Compress artifacts | ||||
|       shell: powershell | ||||
|       run: | | ||||
|         Compress-Archive -Path ${{github.workspace}}/build/bin/* -Destination ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-asan-x86_64.zip | ||||
|         Compress-Archive -Path ${{github.workspace}}/build/bin/* -Destination ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc${{matrix.type == 'asan' && '-asan' || ''}}-x86_64.zip | ||||
|  | ||||
|     - uses: actions/upload-artifact@v4 | ||||
|       with: | ||||
|         name: ${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-asan-x86_64 | ||||
|         name: ${{github.event.repository.name}}-${{steps.tag.outputs.name}}-${{runner.os}}-msvc${{matrix.type == 'asan' && '-asan' || ''}}-x86_64 | ||||
|         # TODO: do propper packing | ||||
|         path: | | ||||
|           ${{github.workspace}}/${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc-asan-x86_64.zip | ||||
|           ${{github.workspace}}/${{ github.event.repository.name }}-${{ steps.tag.outputs.name }}-${{ runner.os }}-msvc${{matrix.type == 'asan' && '-asan' || ''}}-x86_64.zip | ||||
|  | ||||
|   #  - name: Configure CMake | ||||
|   #    run: cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DTOMATO_ASAN=ON -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded -DTOMATO_DEP_LIBWEBP_USE_SYSTEM=ON -DSDLIMAGE_VENDORED=OFF -DSDLIMAGE_DEPS_SHARED=OFF -DSDLIMAGE_JXL=OFF -DSDLIMAGE_AVIF=OFF -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe -DTOMATO_TOX_AV=ON | ||||
|  | ||||
|  | ||||
|   dumpsyms: | ||||
|     runs-on: ubuntu-latest | ||||
| @@ -323,7 +259,7 @@ jobs: | ||||
|       - linux-ubuntu | ||||
|       - android | ||||
|       - windows | ||||
|       - windows-asan | ||||
|       #- windows-asan | ||||
|  | ||||
|     permissions: | ||||
|       contents: write | ||||
| @@ -394,7 +330,7 @@ jobs: | ||||
|       - linux-ubuntu | ||||
|       - android | ||||
|       - windows | ||||
|       - windows-asan | ||||
|       #- windows-asan | ||||
|       - dumpsyms | ||||
|  | ||||
|     permissions: | ||||
|   | ||||
							
								
								
									
										49
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										49
									
								
								.github/workflows/ci.yml
									
									
									
									
										vendored
									
									
								
							| @@ -7,13 +7,21 @@ on: | ||||
|     branches: [ master ] | ||||
|  | ||||
| env: | ||||
|   # maybe pull into matrix? | ||||
|   BUILD_TYPE: Debug | ||||
|  | ||||
| jobs: | ||||
|   linux: | ||||
|     timeout-minutes: 10 | ||||
|  | ||||
|     runs-on: ubuntu-latest | ||||
|     runs-on: ${{matrix.os}} | ||||
|     name:  ${{matrix.type}} on ${{matrix.os}} | ||||
|  | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         type: ['', 'asan'] | ||||
|         os: ['ubuntu-latest', 'ubuntu-24.04-arm'] | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4 | ||||
| @@ -21,39 +29,15 @@ jobs: | ||||
|         submodules: recursive | ||||
|  | ||||
|     - name: Install Dependencies | ||||
|       run: sudo apt update && sudo apt -y install libsodium-dev cmake libx11-dev libxext-dev libxrandr-dev  | ||||
|       run: sudo apt update && sudo apt -y install libsodium-dev cmake libx11-dev libxext-dev libxrandr-dev | ||||
|  | ||||
|     - name: ccache | ||||
|       uses: hendrikmuhs/ccache-action@v1.2 | ||||
|       with: | ||||
|         key: ${{github.event.repository.name}}-${{github.job}} | ||||
|         key: ${{github.event.repository.name}}-${{github.job}}-${{matrix.os}}-${{matrix.type}} | ||||
|  | ||||
|     - name: Configure CMake | ||||
|       run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache | ||||
|  | ||||
|     - name: Build | ||||
|       run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4 -t tomato | ||||
|  | ||||
|   linux-arm: | ||||
|     timeout-minutes: 10 | ||||
|  | ||||
|     runs-on: ubuntu-24.04-arm | ||||
|  | ||||
|     steps: | ||||
|     - uses: actions/checkout@v4 | ||||
|       with: | ||||
|         submodules: recursive | ||||
|  | ||||
|     - name: Install Dependencies | ||||
|       run: sudo apt update && sudo apt -y install libsodium-dev cmake libx11-dev libxext-dev libxrandr-dev  | ||||
|  | ||||
|     - name: ccache | ||||
|       uses: hendrikmuhs/ccache-action@v1.2 | ||||
|       with: | ||||
|         key: ${{github.event.repository.name}}-${{github.job}} | ||||
|  | ||||
|     - name: Configure CMake | ||||
|       run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache | ||||
|       run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DTOMATO_ASAN=${{matrix.type == 'asan' && 'ON' || 'OFF'}} | ||||
|  | ||||
|     - name: Build | ||||
|       run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4 -t tomato | ||||
| @@ -194,15 +178,6 @@ jobs: | ||||
|       with: | ||||
|         arch: amd64 | ||||
|  | ||||
|     ## sdl_image vendored needs nasm for dav1d | ||||
|     #- uses: ilammy/setup-nasm@v1 | ||||
|  | ||||
|     #- name: ccache | ||||
|     #  uses: hendrikmuhs/ccache-action@v1.2 | ||||
|     #  with: | ||||
|     #    variant: sccache | ||||
|     #    key: ${{github.event.repository.name}}-${{github.job}} | ||||
|  | ||||
|     - name: Configure CMake | ||||
|       run: cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static -DTOMATO_DEP_LIBWEBP_USE_SYSTEM=ON -DSDLIMAGE_VENDORED=OFF -DSDLIMAGE_DEPS_SHARED=OFF -DSDLIMAGE_JXL=OFF -DSDLIMAGE_AVIF=OFF -DPKG_CONFIG_EXECUTABLE=C:/vcpkg/installed/x64-windows/tools/pkgconf/pkgconf.exe | ||||
|  | ||||
|   | ||||
| @@ -82,6 +82,8 @@ target_sources(tomato PUBLIC | ||||
| 	./sys_tray.cpp | ||||
|  | ||||
| 	./string_formatter_utils.hpp | ||||
| 	./chat_gui/about.hpp | ||||
| 	./chat_gui/about.cpp | ||||
| 	./chat_gui/theme.hpp | ||||
| 	./chat_gui/theme.cpp | ||||
| 	./chat_gui/icons/direct.hpp | ||||
|   | ||||
							
								
								
									
										54
									
								
								src/chat_gui/about.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								src/chat_gui/about.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | ||||
| #include "./about.hpp" | ||||
|  | ||||
| #include "./version.hpp" | ||||
|  | ||||
| #include <imgui.h> | ||||
|  | ||||
| #include <string> | ||||
|  | ||||
| void ImGuiTomatoAbout(void) { | ||||
| 	if (ImGui::BeginTabBar("about")) { | ||||
| 		if (ImGui::BeginTabItem("tomato")) { | ||||
| 			std::string tomato_version_string {"tomato " TOMATO_VERSION_STR}; | ||||
| 			if (TOMATO_GIT_DEPTH != 0) { | ||||
| 				tomato_version_string += "-" + std::to_string(TOMATO_GIT_DEPTH); | ||||
| 			} | ||||
| 			if (std::string_view{TOMATO_GIT_COMMIT} != "UNK") { | ||||
| 				tomato_version_string += "+git."; | ||||
| 				tomato_version_string += TOMATO_GIT_COMMIT; | ||||
| 			} | ||||
|  | ||||
| 			ImGui::TextUnformatted(tomato_version_string.c_str()); | ||||
|  | ||||
| 			ImGui::SameLine(); | ||||
| 			if (ImGui::SmallButton("click to copy")) { | ||||
| 				ImGui::SetClipboardText(tomato_version_string.c_str()); | ||||
| 			} | ||||
|  | ||||
| 			ImGui::Separator(); | ||||
|  | ||||
| 			ImGui::TextUnformatted("TODO: tomato license"); | ||||
|  | ||||
| 			ImGui::EndTabItem(); | ||||
| 		} | ||||
|  | ||||
| 		if (ImGui::BeginTabItem("imgui")) { | ||||
| 			ImGui::ShowAboutWindow(); | ||||
| 			ImGui::EndTabItem(); | ||||
| 		} | ||||
|  | ||||
| 		if (ImGui::BeginTabItem("others")) { | ||||
| 			ImGui::TextUnformatted("TODO: list all the other libs and their licenses"); | ||||
| 			ImGui::EndTabItem(); | ||||
| 		} | ||||
|  | ||||
| 		if (ImGui::BeginTabItem("funding")) { | ||||
| 			ImGui::TextWrapped("Your Help is needed, to keep the project alive, expand it's features and to inspire new features!"); | ||||
| 			ImGui::TextLinkOpenURL("https://github.com/sponsors/Green-Sky"); | ||||
| 			ImGui::TextUnformatted("Contact Me for more ways to help the project. :)"); | ||||
| 			ImGui::EndTabItem(); | ||||
| 		} | ||||
|  | ||||
| 		ImGui::EndTabBar(); | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										5
									
								
								src/chat_gui/about.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								src/chat_gui/about.hpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| #pragma once | ||||
|  | ||||
| // not a window, just the content | ||||
| void ImGuiTomatoAbout(void); | ||||
|  | ||||
| @@ -5,6 +5,8 @@ | ||||
|  | ||||
| #include <solanaceae/contact/components.hpp> | ||||
|  | ||||
| #include "./chat_gui/about.hpp" | ||||
|  | ||||
| #include "./frame_streams/sdl/sdl_audio2_frame_stream2.hpp" | ||||
| #include "./frame_streams/sdl/sdl_video_frame_stream2.hpp" | ||||
|  | ||||
| @@ -433,6 +435,9 @@ Screen* MainScreen::render(float time_delta, bool&) { | ||||
|  | ||||
| 					ImGui::EndMenu(); | ||||
| 				} | ||||
| 				if (ImGui::MenuItem("About", nullptr, _show_about)) { | ||||
| 					_show_about = !_show_about; | ||||
| 				} | ||||
| 				ImGui::EndMenuBar(); | ||||
| 			} | ||||
|  | ||||
| @@ -467,6 +472,13 @@ Screen* MainScreen::render(float time_delta, bool&) { | ||||
| 		ImGui::ShowDemoWindow(&_show_tool_demo); | ||||
| 	} | ||||
|  | ||||
| 	if (_show_about) { | ||||
| 		if (ImGui::Begin("About", &_show_about, ImGuiWindowFlags_AlwaysAutoResize)) { | ||||
| 			ImGuiTomatoAbout(); | ||||
| 		} | ||||
| 		ImGui::End(); | ||||
| 	} | ||||
|  | ||||
| 	_compute_lower_limit_hit_rendered = true; | ||||
|  | ||||
| 	float tc_unfinished_queue_interval; | ||||
|   | ||||
| @@ -117,6 +117,7 @@ struct MainScreen final : public Screen { | ||||
| 	bool _show_tool_debug_log {false}; | ||||
| 	bool _show_tool_id_stack {false}; | ||||
| 	bool _show_tool_demo {false}; | ||||
| 	bool _show_about {false}; | ||||
|  | ||||
| 	bool _window_focused {true}; | ||||
| 	bool _window_hidden {false}; | ||||
|   | ||||
| @@ -4,6 +4,8 @@ | ||||
|  | ||||
| #include "./json_to_config.hpp" | ||||
|  | ||||
| #include "./chat_gui/about.hpp" | ||||
|  | ||||
| #include <nlohmann/json.hpp> | ||||
|  | ||||
| #include <imgui.h> | ||||
| @@ -393,6 +395,12 @@ Screen* StartScreen::render(float, bool&) { | ||||
|  | ||||
| 				ImGui::EndTabItem(); | ||||
| 			} | ||||
|  | ||||
| 			if (ImGui::BeginTabItem("about")) { | ||||
| 				ImGuiTomatoAbout(); | ||||
| 				ImGui::EndTabItem(); | ||||
| 			} | ||||
|  | ||||
| 			ImGui::EndTabBar(); | ||||
| 		} | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user