Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
fa7cc7c
feat: Initial set
nlogozzo Apr 30, 2026
fb1071a
Merge branch 'main' into 2026.5.0
nlogozzo Apr 30, 2026
d045a99
feat: Start filesystem module
nlogozzo Apr 30, 2026
6f83695
feat: Filesystem namespace
nlogozzo Apr 30, 2026
d34f0f8
Update user_directories_linux.cpp
nlogozzo Apr 30, 2026
a3aa77e
feat: Start notification module
nlogozzo Apr 30, 2026
c7b0061
feat: Add notification tests
nlogozzo Apr 30, 2026
95c3abe
chore: Cleanup
nlogozzo Apr 30, 2026
c0b6ced
feat: Add deps
nlogozzo May 1, 2026
7f22956
feat: Start update module
nlogozzo May 1, 2026
3467f89
feat: Rule of 5
nlogozzo May 1, 2026
5f6acda
feat: Better test program
nlogozzo May 1, 2026
d6b26ad
feat: More update stuff
nlogozzo May 1, 2026
d65dd98
feat: Add helpers
nlogozzo May 1, 2026
daa8f6a
Update app_info.cpp
nlogozzo May 1, 2026
37bcdb9
Update string_manip.cpp
nlogozzo May 1, 2026
f9dfaae
feat: Start other services
nlogozzo May 2, 2026
ac384db
feat: `power_service` implementation
nlogozzo May 2, 2026
ce4734b
feat: Secret service
nlogozzo May 3, 2026
b15609c
feat: More tests
nlogozzo May 3, 2026
376e2db
Update secret_service_linux.cpp
nlogozzo May 3, 2026
0fb5938
feat: Use gtest
nlogozzo May 3, 2026
94cc9a1
feat: Add CI/CD
nlogozzo May 3, 2026
842ac52
feat: Add tests
nlogozzo May 3, 2026
02eedb9
feat: Add more tests
nlogozzo May 3, 2026
ea1c476
feat: Better CI/CD
nlogozzo May 3, 2026
630c7c5
feat: Add tests
nlogozzo May 3, 2026
c203a60
feat: More tests
nlogozzo May 3, 2026
a1ea549
Update test_services.cpp
nlogozzo May 3, 2026
f5bc3cf
feat: Environment header
nlogozzo May 3, 2026
156977b
feat: Build sqlcipher
nlogozzo May 3, 2026
8bcb2dd
feat: Add db service
nlogozzo May 3, 2026
73812a0
chore: Cleanup
nlogozzo May 3, 2026
b28a6a2
chore: Cleanup
nlogozzo May 3, 2026
ab7ae8c
chore: Cleanup
nlogozzo May 3, 2026
eec18c9
feat: Use app_info in host
nlogozzo May 3, 2026
4ee68db
feat: Add config service
nlogozzo May 4, 2026
d6a914c
feat: Better json
nlogozzo May 4, 2026
da1b3a2
Update version.h
nlogozzo May 4, 2026
cd4c253
feat: Config service mutex
nlogozzo May 4, 2026
3a0095b
fix: mutex cleanup
nlogozzo May 4, 2026
632d928
feat: Add window geometry
nlogozzo May 4, 2026
bdfa473
feat: Better db api
nlogozzo May 5, 2026
f8b020d
Update database_value.h
nlogozzo May 5, 2026
d02c3b2
chore: Cleanup
nlogozzo May 5, 2026
74bc1c8
feat: Better API consistency
nlogozzo May 5, 2026
bc60043
feat: Clang formatting
nlogozzo May 5, 2026
c1377d4
feat: Better workflows
nlogozzo May 5, 2026
2546309
Update CMakeLists.txt
nlogozzo May 5, 2026
53ce2ea
feat: Start clang tidy
nlogozzo May 5, 2026
52f509a
chore: Cleanup
nlogozzo May 5, 2026
0b37e6c
chore: Cleanup
nlogozzo May 5, 2026
a377b39
chore: Cleanup
nlogozzo May 5, 2026
152bee0
chore: Cleanup
nlogozzo May 6, 2026
c34689b
chore: Clean headers
nlogozzo May 6, 2026
ac7cd34
chore: Cleanup
nlogozzo May 6, 2026
d8a46b3
chore: Cleanup
nlogozzo May 6, 2026
0607446
chore: Cleanup
nlogozzo May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 57 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
---
Language: Cpp
Standard: c++20
BasedOnStyle: LLVM

AccessModifierOffset: -4
AllowShortBlocksOnASingleLine: Empty
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: None
AllowShortLoopsOnASingleLine: false
AlwaysBreakTemplateDeclarations: Yes
BraceWrapping:
AfterClass: true
AfterControlStatement: Always
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
BeforeCatch: true
BeforeElse: true
BreakBeforeBraces: Allman
BreakConstructorInitializers: BeforeColon
ColumnLimit: 160
ConstructorInitializerIndentWidth: 4
Cpp11BracedListStyle: false
FixNamespaceComments: false
IncludeBlocks: Merge
IncludeCategories:
- Regex: '^<windows\.h>'
Priority: 1
- Regex: '^<'
Priority: 2
- Regex: '^"'
Priority: 3
IncludeIsMainRegex: '([-_]|(/.*/)?)[A-Za-z0-9_]*$'
IndentCaseLabels: false
IndentRequiresClause: true
IndentWidth: 4
LambdaBodyIndentation: OuterScope
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
PackConstructorInitializers: Never
PointerAlignment: Left
ReferenceAlignment: Left
RequiresClausePosition: OwnLine
SortIncludes: CaseSensitive
SortUsingDeclarations: Lexicographic
SpaceAfterCStyleCast: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeParens: ControlStatements
SpaceInEmptyBlock: true
SpacesInAngles: Never
SpacesInParens: Never
TabWidth: 4
UseTab: ForIndentation
65 changes: 65 additions & 0 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
CheckOptions:
- key: readability-identifier-naming.ClassCase
value: lower_case
- key: readability-identifier-naming.EnumCase
value: lower_case
- key: readability-identifier-naming.EnumConstantCase
value: lower_case
- key: readability-identifier-naming.FunctionCase
value: lower_case
- key: readability-identifier-naming.LocalVariableCase
value: lower_case
- key: readability-identifier-naming.MethodCase
value: lower_case
- key: readability-identifier-naming.NamespaceCase
value: lower_case
- key: readability-identifier-naming.ParameterCase
value: lower_case
- key: readability-identifier-naming.PrivateMemberCase
value: lower_case
- key: readability-identifier-naming.PrivateMemberPrefix
value: m_
- key: readability-identifier-naming.ProtectedMemberCase
value: lower_case
- key: readability-identifier-naming.ProtectedMemberPrefix
value: m_
- key: readability-identifier-naming.PublicMemberCase
value: lower_case
- key: readability-identifier-naming.StructCase
value: lower_case
- key: readability-identifier-naming.TemplateParameterCase
value: CamelCase
- key: readability-identifier-naming.TypeAliasCase
value: lower_case

Checks: >
-*,
bugprone-*,
cppcoreguidelines-*,
modernize-*,
performance-*,
portability-*,
readability-*,
-cppcoreguidelines-avoid-c-arrays,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-owning-memory,
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
-cppcoreguidelines-pro-bounds-avoid-unchecked-container-access,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-cppcoreguidelines-pro-type-reinterpret-cast,
-cppcoreguidelines-pro-type-vararg,
-bugprone-easily-swappable-parameters,
-bugprone-empty-catch,
-modernize-use-trailing-return-type,
-performance-no-int-to-ptr,
-readability-identifier-length,
-readability-magic-numbers

HeaderFilterRegex: 'include/.*\.h'

WarningsAsErrors: >
bugprone-*,
performance-*,
portability-*,
readability-identifier-naming
13 changes: 13 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# These are supported funding model platforms

github: nlogozzo
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
149 changes: 149 additions & 0 deletions .github/workflows/analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
types: [ "review_requested", "ready_for_review" ]
workflow_dispatch:
name: Analysis
permissions:
contents: read
env:
GITHUB_ACTIONS: true
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
jobs:
clang-format:
name: "clang-format"
runs-on: ubuntu-latest
steps:
- name: "Checkout"
uses: actions/checkout@v6
with:
submodules: recursive
- name: "Setup Environment"
run: sudo apt-get install -y clang-format
- name: "clang-format"
run: find include src tests -name '*.cpp' -o -name '*.h' | xargs clang-format --dry-run --Werror
clang-tidy-linux:
name: "clang-tidy on Linux"
strategy:
matrix:
variant:
- arch: x64
runner: ubuntu-latest
triplet: x64-linux
- arch: arm64
runner: ubuntu-24.04-arm
triplet: arm64-linux
runs-on: ${{ matrix.variant.runner }}
steps:
- name: "Checkout"
uses: actions/checkout@v6
with:
submodules: recursive
- name: "Setup Environment"
run: |
mkdir build
sudo apt-get update
sudo apt-get install -y clang-tidy libsqlcipher-dev gettext tzdata locales xdg-user-dirs libsecret-1-dev libglib2.0-dev
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8
- name: "Vcpkg"
uses: johnwason/vcpkg-action@v7
id: vcpkg
with:
pkgs: curl gettext-libintl maddy nlohmann-json
triplet: ${{ matrix.variant.triplet }}
revision: 522253caf47268c1724f486a035e927a42a90092
token: ${{ github.token }}
cache-key: ${{ matrix.variant.triplet }}
- name: "Configure"
working-directory: ${{github.workspace}}/build
run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=OFF
- name: "clang-tidy"
run: |
FAILED=0
while IFS= read -r file; do
clang-tidy -p build "$file" || FAILED=1
done < <(find src -name '*.cpp' | grep -Ev "_windows|_macos")
exit $FAILED
clang-tidy-macos:
name: "clang-tidy on macOS"
strategy:
matrix:
variant:
- arch: x64
runner: macos-15-intel
triplet: x64-osx
- arch: arm64
runner: macos-latest
triplet: arm64-osx
runs-on: ${{ matrix.variant.runner }}
steps:
- name: "Checkout"
uses: actions/checkout@v6
with:
submodules: recursive
- name: "Setup Environment"
run: |
mkdir build
brew install llvm
- name: "Vcpkg"
uses: johnwason/vcpkg-action@v7
id: vcpkg
with:
pkgs: curl gettext-libintl maddy nlohmann-json
triplet: ${{ matrix.variant.triplet }}
revision: 522253caf47268c1724f486a035e927a42a90092
token: ${{ github.token }}
cache-key: ${{ matrix.variant.triplet }}
- name: "Configure"
working-directory: ${{github.workspace}}/build
run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=OFF
- name: "clang-tidy"
run: |
FAILED=0
while IFS= read -r file; do
$(brew --prefix llvm)/bin/clang-tidy -p build "$file" || FAILED=1
done < <(find src -name '*.cpp' | grep -Ev "_windows|_unix")
exit $FAILED
clang-tidy-windows:
name: "clang-tidy on Windows"
strategy:
matrix:
variant:
- arch: x64
runner: windows-latest
triplet: x64-windows
- arch: arm64
runner: windows-11-arm
triplet: arm64-windows
runs-on: ${{ matrix.variant.runner }}
steps:
- name: "Checkout"
uses: actions/checkout@v6
with:
submodules: recursive
- name: "Setup Environment"
run: |
mkdir build
choco install llvm -y
- name: "Vcpkg"
uses: johnwason/vcpkg-action@v7
id: vcpkg
with:
pkgs: curl gettext-libintl maddy nlohmann-json
triplet: ${{ matrix.variant.triplet }}
revision: 522253caf47268c1724f486a035e927a42a90092
token: ${{ github.token }}
cache-key: ${{ matrix.variant.triplet }}
- name: "Configure"
working-directory: ${{github.workspace}}/build
run: cmake -G "Visual Studio 18 2026" .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=OFF
- name: "clang-tidy"
run: |
$failed = $false
Get-ChildItem -Path src -Recurse -Include *.cpp |
Where-Object { $_.Name -notmatch "_unix|_linux|_macos" } |
ForEach-Object { clang-tidy $_.FullName -p build; if ($LASTEXITCODE -ne 0) { $failed = $true } }
if ($failed) { exit 1 }
71 changes: 71 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
types: [ "review_requested", "ready_for_review" ]
workflow_dispatch:
name: Linux
permissions:
contents: read
env:
GITHUB_ACTIONS: true
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
jobs:
build:
name: "Build on Linux"
strategy:
matrix:
variant:
- arch: x64
runner: ubuntu-latest
triplet: x64-linux
- arch: arm64
runner: ubuntu-24.04-arm
triplet: arm64-linux
runs-on: ${{ matrix.variant.runner }}
steps:
- name: "Checkout"
uses: actions/checkout@v6
with:
submodules: recursive
- name: "Setup Environment"
run: |
mkdir build
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
sudo apt-get install xdg-user-dirs xdg-user-dirs-gtk gettext tzdata locales libsqlcipher-dev -y
brew install gcc@15 cmake
xdg-user-dirs-update
xdg-user-dirs-gtk-update
sudo locale-gen en_US.UTF-8
sudo update-locale LANG=en_US.UTF-8
sudo update-alternatives --install /usr/bin/gcc gcc /home/linuxbrew/.linuxbrew/bin/gcc-15 100
sudo update-alternatives --install /usr/bin/g++ g++ /home/linuxbrew/.linuxbrew/bin/g++-15 100
sudo update-alternatives --install /usr/bin/cmake cmake /home/linuxbrew/.linuxbrew/bin/cmake 100
- name: "Unlock Keyring"
uses: t1m0thyj/unlock-keyring@v1
- name: "Vcpkg"
uses: johnwason/vcpkg-action@v7
id: vcpkg
with:
pkgs: curl gettext-libintl gtest maddy
triplet: ${{ matrix.variant.triplet }}
revision: 522253caf47268c1724f486a035e927a42a90092
token: ${{ github.token }}
cache-key: ${{ matrix.variant.triplet }}
- name: "Build"
working-directory: ${{github.workspace}}/build
run: |
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/install
cmake --build . --parallel
- name: "Install"
working-directory: ${{github.workspace}}/build
run: cmake --install .
- name: "Test"
working-directory: ${{github.workspace}}/build
run: ctest --output-on-failure
- name: Upload
uses: actions/upload-artifact@v7
with:
path: ${{github.workspace}}/install
name: Linux-${{ matrix.variant.arch }}-Release
Loading