Skip to content

Commit 49b90e3

Browse files
authored
Merge pull request #34 from Project-Ro-ASD/feat/fedora-x86-build-support
Feat/fedora x86 build support
2 parents 76a7233 + 66955ae commit 49b90e3

16 files changed

Lines changed: 321 additions & 49 deletions

.github/workflows/ci.yml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: CI
22

33
on:
44
push:
5-
branches: [main, dev, feature/**, fix/**]
5+
branches: [main, dev, feat/**, feature/**, fix/**, hotfix/**, chore/**]
66
pull_request:
77
branches: [main, dev]
88

@@ -42,7 +42,9 @@ jobs:
4242
kf6-qqc2-desktop-style \
4343
polkit-devel \
4444
clang-tools-extra \
45-
qt6-qtbase-private-devel
45+
qt6-qtbase-private-devel \
46+
desktop-file-utils \
47+
appstream
4648
4749
- name: Configure (CMake)
4850
run: |
@@ -58,6 +60,11 @@ jobs:
5860
- name: Run tests
5961
run: ctest --test-dir build --output-on-failure
6062

63+
- name: Validate desktop metadata
64+
run: |
65+
desktop-file-validate data/icons/io.github.projectroasd.rocontrol.desktop
66+
appstreamcli validate --no-net data/icons/io.github.projectroasd.rocontrol.metainfo.xml
67+
6168
- name: Check formatting (clang-format)
6269
run: |
6370
find src \( -name "*.cpp" -o -name "*.h" \) -print0 | \
@@ -92,12 +99,14 @@ jobs:
9299
polkit-devel
93100
94101
- name: Prepare source tarball
102+
id: prep
95103
run: |
96104
VERSION="$(sed -n 's/^[[:space:]]*VERSION[[:space:]]\([0-9.][0-9.]*\)$/\1/p' CMakeLists.txt | head -n1)"
97105
if [[ -z "${VERSION}" ]]; then
98106
echo "Failed to read project version from CMakeLists.txt" >&2
99107
exit 1
100108
fi
109+
echo "version=${VERSION}" >> "${GITHUB_OUTPUT}"
101110
ARCHIVE_BASENAME="ro-control-${VERSION}"
102111
mkdir -p ~/rpmbuild/SOURCES ~/rpmbuild/SPECS
103112
STAGE_DIR="$(mktemp -d)"
@@ -113,7 +122,7 @@ jobs:
113122
run: |
114123
rpmbuild -ba "${HOME}/rpmbuild/SPECS/ro-control.spec" \
115124
--define "_topdir ${HOME}/rpmbuild" \
116-
--define "upstream_version ${VERSION}"
125+
--define "upstream_version ${{ steps.prep.outputs.version }}"
117126
118127
- name: Lint built RPMs
119128
run: |

.github/workflows/release.yml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,9 @@ jobs:
128128
qt6-qttools-devel \
129129
qt6-qtwayland-devel \
130130
kf6-qqc2-desktop-style \
131-
polkit-devel
131+
polkit-devel \
132+
desktop-file-utils \
133+
appstream
132134
133135
- name: Build RPM artifacts
134136
env:
@@ -164,6 +166,12 @@ jobs:
164166
165167
rpm -qp --info "${RPM_FILE}" > "dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-info.txt"
166168
rpm -qp --requires "${RPM_FILE}" | sort > "dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-requires.txt"
169+
rpm -qlp "${RPM_FILE}" | sort > "dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-files.txt"
170+
171+
- name: Validate desktop metadata
172+
run: |
173+
desktop-file-validate data/icons/io.github.projectroasd.rocontrol.desktop
174+
appstreamcli validate --no-net data/icons/io.github.projectroasd.rocontrol.metainfo.xml
167175
168176
- name: Install and smoke-test RPM
169177
env:
@@ -201,6 +209,7 @@ jobs:
201209
RPM_FILE="$(find dist/rpm -maxdepth 1 -type f -name "*.${RPM_ARCH}.rpm" | head -n1)"
202210
INFO_FILE="dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-info.txt"
203211
REQUIRES_FILE="dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-requires.txt"
212+
FILES_FILE="dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-files.txt"
204213
CHECKSUM_FILE="dist/rpm/ro-control-${VERSION}-${RPM_ARCH}-SHA256SUMS.txt"
205214
BUNDLE_DIR="dist/release/ro-control-${VERSION}-${RPM_ARCH}"
206215
BUNDLE_NAME="ro-control-${VERSION}-${RPM_ARCH}-fedora42.tar.gz"
@@ -214,6 +223,7 @@ jobs:
214223
cp "${RPM_FILE}" "${BUNDLE_DIR}/"
215224
cp "${INFO_FILE}" "${BUNDLE_DIR}/"
216225
cp "${REQUIRES_FILE}" "${BUNDLE_DIR}/"
226+
cp "${FILES_FILE}" "${BUNDLE_DIR}/"
217227
cp "${CHECKSUM_FILE}" "${BUNDLE_DIR}/"
218228
219229
tar -C dist/release -czf "dist/release/${BUNDLE_NAME}" "ro-control-${VERSION}-${RPM_ARCH}"
@@ -254,4 +264,5 @@ jobs:
254264
dist/*SHA256SUMS.txt
255265
dist/*-requires.txt
256266
dist/*-info.txt
267+
dist/*-files.txt
257268
dist/*-fedora42.tar.gz

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
## [Unreleased]
1111

12+
## [0.2.0] - 2026-03-30
13+
14+
### Changed
15+
- KDE desktop preferences now apply at runtime, including saved theme mode selection
16+
- Fedora CI now validates desktop/AppStream metadata and follows `feat/*` branches
17+
- Release packaging now records installed RPM file manifests for smoke validation
18+
19+
### Fixed
20+
- Installed builds now resolve the privileged helper from the correct libexec path
21+
- RPM CI now propagates the detected project version correctly into `rpmbuild`
22+
- System integration tests no longer depend on executable `/tmp` mounts
23+
1224
### Added
1325
- NVIDIA detection pipeline with driver/module verification report
1426
- Secure Boot detection and session type (Wayland/X11) detection

CMakeLists.txt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.22)
22

33
project(ro-control
4-
VERSION 0.1.0
4+
VERSION 0.2.0
55
DESCRIPTION "Smart NVIDIA Driver Manager & System Monitor for Linux"
66
HOMEPAGE_URL "https://github.com/Project-Ro-ASD/ro-Control"
77
LANGUAGES CXX
@@ -83,6 +83,16 @@ set(APP_SOURCES
8383
src/cli/cli.cpp
8484
)
8585

86+
# ─── Install Paths ────────────────────────────────────────────────────────────
87+
include(GNUInstallDirs)
88+
89+
set(RO_CONTROL_HELPER_INSTALL_PATH
90+
"${CMAKE_INSTALL_FULL_LIBEXECDIR}/${RO_CONTROL_HELPER_NAME}"
91+
)
92+
set(RO_CONTROL_POLICY_BUILD_PATH
93+
"${CMAKE_CURRENT_BINARY_DIR}/io.github.ProjectRoASD.rocontrol.policy"
94+
)
95+
8696
# ─── QML Resources ────────────────────────────────────────────────────────────
8797
add_library(ro-control-backend STATIC ${BACKEND_SOURCES})
8898

@@ -173,16 +183,6 @@ target_compile_options(ro-control PRIVATE
173183
$<$<CONFIG:Release>:-O2>
174184
)
175185

176-
# ─── Install Targets ──────────────────────────────────────────────────────────
177-
include(GNUInstallDirs)
178-
179-
set(RO_CONTROL_HELPER_INSTALL_PATH
180-
"${CMAKE_INSTALL_FULL_LIBEXECDIR}/${RO_CONTROL_HELPER_NAME}"
181-
)
182-
set(RO_CONTROL_POLICY_BUILD_PATH
183-
"${CMAKE_CURRENT_BINARY_DIR}/io.github.ProjectRoASD.rocontrol.policy"
184-
)
185-
186186
# ─── Include Directories ──────────────────────────────────────────────────────
187187
target_include_directories(ro-control PRIVATE
188188
${CMAKE_CURRENT_SOURCE_DIR}/src
@@ -191,6 +191,7 @@ target_include_directories(ro-control PRIVATE
191191

192192
target_compile_definitions(ro-control PRIVATE
193193
RO_CONTROL_POLICY_ID="${RO_CONTROL_POLICY_ID}"
194+
RO_CONTROL_APP_VERSION="${PROJECT_VERSION}"
194195
)
195196

196197
configure_file(

data/icons/io.github.projectroasd.rocontrol.metainfo.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
</categories>
3939

4040
<releases>
41-
<release version="0.1.0" date="2026-03-06" />
41+
<release version="0.2.0" date="2026-03-30" />
4242
</releases>
4343

4444
<screenshots>

docs/man/ro-control.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.TH RO-CONTROL 1 "March 2026" "ro-control 0.1.0" "User Commands"
1+
.TH RO-CONTROL 1 "March 2026" "ro-control 0.2.0" "User Commands"
22
.SH NAME
33
ro-control \- NVIDIA driver management and diagnostics CLI
44
.SH SYNOPSIS

packaging/rpm/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ macro explicitly:
4040

4141
```bash
4242
rpmbuild -ba packaging/rpm/ro-control.spec \
43-
--define "upstream_version 0.1.0"
43+
--define "upstream_version 0.2.0"
4444
```
4545

4646
If you build from a Git checkout instead of a published source archive, create

packaging/rpm/ro-control.spec

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
%global upstream_version %{!?upstream_version:0.1.0}%{?upstream_version}
1+
%global upstream_version %{!?upstream_version:0.2.0}%{?upstream_version}
22
%global debug_package %{nil}
33

44
Name: ro-control
@@ -76,6 +76,11 @@ tar -xzf %{SOURCE0} --strip-components=1
7676
%{_datadir}/polkit-1/actions/io.github.ProjectRoASD.rocontrol.policy
7777

7878
%changelog
79+
* Mon Mar 30 2026 ro-Control Maintainers <noreply@github.com> - 0.2.0-1
80+
- Fix installed helper path resolution for privileged operations on system installs
81+
- Activate saved KDE-friendly interface preferences and theme switching in the UI
82+
- Harden Fedora CI and release validation for metadata and RPM packaging
83+
7984
* Sun Mar 22 2026 ro-Control Maintainers <noreply@github.com> - 0.1.0-1
8085
- Prepare first GitHub Release RPMs for i686, x86_64, and aarch64
8186
- Add explicit Fedora runtime command dependencies and recommendations

src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ void configureGuiGraphicsEnvironment() {
193193
int main(int argc, char *argv[]) {
194194
constexpr auto kApplicationName = "ro-control";
195195
constexpr auto kDisplayName = "ro-Control";
196-
constexpr auto kApplicationVersion = "0.1.0";
196+
constexpr auto kApplicationVersion = RO_CONTROL_APP_VERSION;
197197
const QString applicationDescription =
198198
QStringLiteral("ro-Control GPU driver manager and diagnostics CLI.");
199199

src/qml/Main.qml

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,53 @@ ApplicationWindow {
1212
title: qsTr("ro-Control")
1313
font.family: "Noto Sans"
1414

15-
readonly property string themeMode: "light"
16-
readonly property bool darkMode: false
15+
SystemPalette {
16+
id: systemPalette
17+
colorGroup: SystemPalette.Active
18+
}
19+
20+
function isColorDark(colorValue) {
21+
return ((0.2126 * colorValue.r) + (0.7152 * colorValue.g) + (0.0722 * colorValue.b)) < 0.5;
22+
}
23+
24+
readonly property string themeMode: uiPreferences.themeMode
25+
readonly property bool darkMode: themeMode === "dark"
26+
|| (themeMode === "system" && root.isColorDark(systemPalette.window))
1727
readonly property bool compactMode: uiPreferences.compactMode
1828
readonly property bool showAdvancedInfo: uiPreferences.showAdvancedInfo
19-
readonly property var theme: ({
29+
readonly property var theme: darkMode ? ({
30+
window: "#141922",
31+
shell: "#10151d",
32+
card: "#1b2330",
33+
cardStrong: "#212b3a",
34+
border: "#2c3748",
35+
text: "#edf3ff",
36+
textMuted: "#b2bdd1",
37+
textSoft: "#8f9bb1",
38+
accentA: "#7e90ff",
39+
accentB: "#34c7a1",
40+
accentC: "#ffbf47",
41+
success: "#36c691",
42+
warning: "#f2ae2d",
43+
danger: "#f17575",
44+
successBg: "#173529",
45+
warningBg: "#3a2e12",
46+
dangerBg: "#3d2024",
47+
infoBg: "#1c2941",
48+
sidebarBg: "#111722",
49+
sidebarText: "#eef3ff",
50+
sidebarMuted: "#95a3bb",
51+
sidebarAccent: "#7e90ff",
52+
sidebarActive: "#1d2940",
53+
sidebarHover: "#182131",
54+
sidebarBorder: "#253141",
55+
sidebarHint: "#8898b0",
56+
topbarBg: "#171e29",
57+
topbarChip: "#222c3a",
58+
topbarValue: "#eef3ff",
59+
contentBg: "#121822",
60+
contentGlow: "#182131"
61+
}) : ({
2062
window: "#f3f6fb",
2163
shell: "#edf2f8",
2264
card: "#ffffff",

0 commit comments

Comments
 (0)