diff --git a/.github/workflows/all-builds.yml b/.github/workflows/all-builds.yml
index fbc3abe..65e24a4 100644
--- a/.github/workflows/all-builds.yml
+++ b/.github/workflows/all-builds.yml
@@ -10,6 +10,7 @@ env:
 
 jobs:
   Qtk:
+    name: Qtk Applications
     env:
       CONFIG: -DQTK_SUBMODULES=ON -DQTK_DEBUG=OFF -DQTK_CCACHE=OFF -DQTK_GUI=ON -DQTK_PLUGINS=OFF -DQTK_EXAMPLE=ON
     strategy:
@@ -29,10 +30,10 @@ jobs:
 
     runs-on: ${{ matrix.os }}
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: Install Qt
-        uses: jurplel/install-qt-action@v2
+        uses: jurplel/install-qt-action@v4
         with:
           version: ${{ env.QT_VERSION }}
 
@@ -82,7 +83,7 @@ jobs:
 
       - name: Upload package artifacts (DEB)
         if: matrix.os == 'ubuntu-latest'
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: qtk-gui-${{ matrix.os }}
           path: |
@@ -97,7 +98,7 @@ jobs:
 
       - name: Upload package artifacts (WIN)
         if: matrix.os == 'windows-latest'
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: qtk-gui-${{ matrix.os }}
           path: |
@@ -112,14 +113,14 @@ jobs:
 
       - name: Upload package artifacts (OSX)
         if: matrix.os == 'macos-latest'
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: qtk-gui-${{ matrix.os }}
           path: |
             build/packages/*.tar.gz
 
       - name: Upload Qtk install directory
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: qtk-gui-${{ matrix.os }}-install
           path: install/*
@@ -132,7 +133,7 @@ jobs:
 #          cmake --build build/ --target package_source
 #
 #      - name: Upload package artifacts
-#        uses: actions/upload-artifact@v3
+#        uses: actions/upload-artifact@v4
 #        with:
 #          name: qtk-${{ matrix.os }}-packages
 #          path: |
@@ -140,6 +141,7 @@ jobs:
 #            !build/packages/_CPack_Packages/*
 
   Qtk-Library:
+    name: Qtk library
     env:
       CONFIG: -DQTK_SUBMODULES=ON -DQTK_DEBUG=OFF -DQTK_CCACHE=OFF -DQTK_GUI=OFF -DQTK_PLUGINS=OFF -DQTK_EXAMPLE=OFF
     strategy:
@@ -159,10 +161,10 @@ jobs:
 
     runs-on: ${{ matrix.os }}
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: Install Qt
-        uses: jurplel/install-qt-action@v2
+        uses: jurplel/install-qt-action@v4
         with:
           version: ${{ env.QT_VERSION }}
 
@@ -201,7 +203,7 @@ jobs:
 
       - name: Upload package artifacts (DEB)
         if: matrix.os == 'ubuntu-latest'
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: libqtk-${{ matrix.os }}
           path: |
@@ -216,7 +218,7 @@ jobs:
 
       - name: Upload package artifacts (WIN)
         if: matrix.os == 'windows-latest'
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: qtk-${{ matrix.os }}
           path: |
@@ -231,20 +233,21 @@ jobs:
 
       - name: Upload package artifacts (OSX)
         if: matrix.os == 'macos-latest'
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         with:
           name: qtk-${{ matrix.os }}
           path: |
             build/packages/*.tar.gz
 
       - name: Upload libqtk install
-        uses: actions/upload-artifact@v3
+        uses: actions/upload-artifact@v4
         if: always()
         with:
           name: libqtk-${{ matrix.os }}-install
           path: install/*
 
   Qtk-Plugins:
+    name: Qtk Qt Designer Plugins
     env:
       CONFIG: -DQTK_SUBMODULES=ON -DQTK_DEBUG=OFF -DQTK_CCACHE=OFF -DQTK_GUI=OFF -DQTK_PLUGINS=ON -DQTK_EXAMPLE=OFF
     strategy:
@@ -264,10 +267,10 @@ jobs:
 
     runs-on: ${{ matrix.os }}
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: Install Qt
-        uses: jurplel/install-qt-action@v2
+        uses: jurplel/install-qt-action@v4
         with:
           version: ${{ env.QT_VERSION }}
 
@@ -292,6 +295,7 @@ jobs:
         run: cmake --install build/ --config Release --component qtk_plugins
 
   Qtk-Assimp-Targets:
+    name: Qtk Assimp Platform Targets
     strategy:
       fail-fast: false
       matrix:
@@ -304,10 +308,10 @@ jobs:
 
     runs-on: ${{ matrix.os }}
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: Install Qt
-        uses: jurplel/install-qt-action@v2
+        uses: jurplel/install-qt-action@v4
         with:
           version: ${{ env.QT_VERSION }}
 
diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml
index fd01ba9..a0e4b3a 100644
--- a/.github/workflows/linting.yml
+++ b/.github/workflows/linting.yml
@@ -9,10 +9,10 @@ jobs:
   Tidy:
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: Install Qt
-        uses: jurplel/install-qt-action@v2
+        uses: jurplel/install-qt-action@v4
         with:
           version: '6.5.0'
 
@@ -59,7 +59,7 @@ jobs:
           - 'src'
           - 'app'
     steps:
-      - uses: actions/checkout@v3
+      - uses: actions/checkout@v4
 
       - name: clang-format Check
         uses: jidicula/clang-format-action@v4.9.0
diff --git a/tools/build-qt.sh b/tools/build-qt.sh
new file mode 100644
index 0000000..1329677
--- /dev/null
+++ b/tools/build-qt.sh
@@ -0,0 +1,3 @@
+#!/usr/bin/env bash
+
+
diff --git a/tools/format.sh b/tools/format.sh
new file mode 100755
index 0000000..914e7e5
--- /dev/null
+++ b/tools/format.sh
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+
+cd ..
+cmake -B build && cmake --build build -- -j $(nproc --ignore=1)
+clang-tidy -p build/ --fix --config-file=.clang-tidy \
+  src/**/*.cpp src/**/*.h example-app/*.cpp example-app/*.h
+clang-format -i --style=file:.clang-format \
+  src/**/*.cpp src/**/*.h example-app/*.cpp example-app/*.h