diff --git a/.clang-format b/.clang-format
new file mode 100644
index 000000000..bb47648f4
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,30 @@
+Language: Cpp
+BasedOnStyle: Microsoft
+Standard: c++20
+AccessModifierOffset: -4
+AlignAfterOpenBracket: DontAlign
+AlignConsecutiveAssignments: false
+AlignConsecutiveDeclarations: false
+AlignOperands: AlignAfterOperator
+AlignTrailingComments: true
+AllowAllConstructorInitializersOnNextLine: false
+AllowAllParametersOfDeclarationOnNextLine: false
+AllowShortFunctionsOnASingleLine: InlineOnly
+AllowShortIfStatementsOnASingleLine: true
+AlwaysBreakTemplateDeclarations: Yes
+BraceWrapping:
+ AfterUnion: true
+BreakBeforeBinaryOperators: All
+BreakBeforeTernaryOperators: false
+BreakConstructorInitializers: BeforeComma
+ColumnLimit: 0
+ConstructorInitializerAllOnOneLineOrOnePerLine: true
+Cpp11BracedListStyle: false
+IndentCaseBlocks: true
+IndentPPDirectives: BeforeHash
+KeepEmptyLinesAtTheStartOfBlocks: false
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: All
+PointerAlignment: Left
+SortIncludes: true
+SpaceAfterTemplateKeyword: false
\ No newline at end of file
diff --git a/.github/workflows/clang-format-check.yml b/.github/workflows/clang-format-check.yml
new file mode 100644
index 000000000..60f10a421
--- /dev/null
+++ b/.github/workflows/clang-format-check.yml
@@ -0,0 +1,13 @@
+name: clang-format Check
+on: [push, pull_request]
+jobs:
+ formatting-check:
+ name: Formatting Check
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Run clang-format style check
+ uses: jidicula/clang-format-action@v4.13.0
+ with:
+ clang-format-version: '13'
+ check-path: 'src'
\ No newline at end of file
diff --git a/INSTALL.md b/INSTALL.md
index b97d2fe60..7cb0abe51 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -33,7 +33,7 @@ Please refer to [Deployment](#deployment) for further configuration options.
__Note__: this installation process and the default values of the configuration files have been written for _Debian Bookworm_. Therefore, you may have to adapt commands and/or paths in order to fit to your distribution.
### Build dependencies
__Notes__:
-* a C++17 compiler is needed
+* a C++20 compiler is needed
* ffmpeg version 4 minimum is required
```sh
apt-get install g++ cmake libboost-program-options-dev libboost-system-dev libavutil-dev libavformat-dev libstb-dev libconfig++-dev ffmpeg libtag1-dev libpam0g-dev libgtest-dev libarchive-dev
@@ -41,7 +41,7 @@ apt-get install g++ cmake libboost-program-options-dev libboost-system-dev libav
__Notes__:
* libpam0g-dev is optional (only for using PAM authentication)
* libstb-dev can be replaced by libgraphicsmagick++1-dev (the latter will likely use more RAM)
-You also need _Wt4_, which is not packaged yet on _Debian_. See [installation instructions](https://www.webtoolkit.eu/wt/doc/reference/html/InstallationUnix.html).
+You also need _Wt4_, which is not packaged on _Debian_. See [installation instructions](https://www.webtoolkit.eu/wt/doc/reference/html/InstallationUnix.html).
No optional requirement is needed, except openSSL if you plan not to deploy behind a reverse proxy (which is not recommended).
### Build
Get the latest stable release and build it:
diff --git a/approot/admin-scansettings.xml b/approot/admin-scansettings.xml
index 0e760a7a7..17c244af9 100644
--- a/approot/admin-scansettings.xml
+++ b/approot/admin-scansettings.xml
@@ -36,35 +36,39 @@