Compare commits

...

3 Commits

Author SHA1 Message Date
Green Sky
2353d57dd3 add wip about window to start and main screen
Some checks failed
ContinuousDelivery / linux-ubuntu (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android-23]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android-23]) (push) Has been cancelled
ContinuousDelivery / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android-23]) (push) Has been cancelled
ContinuousDelivery / windows (windows-2022, ) (push) Has been cancelled
ContinuousDelivery / windows (windows-2022, asan) (push) Has been cancelled
ContinuousIntegration / on ubuntu-24.04-arm (push) Has been cancelled
ContinuousIntegration / asan on ubuntu-24.04-arm (push) Has been cancelled
ContinuousIntegration / on ubuntu-latest (push) Has been cancelled
ContinuousIntegration / asan on ubuntu-latest (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:arm64-v8a vcpkg_toolkit:arm64-android-23]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:armeabi-v7a vcpkg_toolkit:arm-neon-android-23]) (push) Has been cancelled
ContinuousIntegration / android (map[ndk_abi:x86_64 vcpkg_toolkit:x64-android-23]) (push) Has been cancelled
ContinuousIntegration / macos (push) Has been cancelled
ContinuousIntegration / windows (push) Has been cancelled
ContinuousDelivery / dumpsyms (push) Has been cancelled
ContinuousDelivery / release (push) Has been cancelled
2025-08-06 20:50:03 +02:00
Green Sky
8e805522d5 cd windows matrix 2025-08-05 18:15:43 +02:00
Green Sky
5978a14224 refactor ci to use a build matrix for linux 2025-08-05 13:39:25 +02:00
8 changed files with 112 additions and 119 deletions

View File

@@ -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:

View File

@@ -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

View File

@@ -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
View 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
View File

@@ -0,0 +1,5 @@
#pragma once
// not a window, just the content
void ImGuiTomatoAbout(void);

View File

@@ -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;

View File

@@ -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};

View File

@@ -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();
}
}