Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
5a3373a
feat: redesign driver workflow and monitoring shell
Sopwit Mar 16, 2026
ba137f2
feat: update desktop entry and metainfo for ro-Control with new namin…
Sopwit Mar 18, 2026
7822dab
docs: add Fedora bootstrap and runtime guidance
Sopwit Mar 22, 2026
7bf8d6a
chore: Add dev-watch.sh script for continuous development monitoring.
Sopwit Mar 22, 2026
e405784
refactor: Normalize Turkish characters in comments and log messages a…
Sopwit Mar 22, 2026
906d10c
feat: Automatically configure the Qt render backend in the dev-watch …
Sopwit Mar 22, 2026
ca069c1
Refactor QML layouts to utilize QtQuick.Layouts for improved responsi…
Sopwit Mar 22, 2026
ed21c75
Refactor: Centralize session type detection into a new `SessionUtil` …
Sopwit Mar 22, 2026
aaaf73a
build: update test build configuration.
Sopwit Mar 22, 2026
b04a2f5
docs: Add development setup instructions to README and update archite…
Sopwit Mar 22, 2026
a0a06b5
chore: update test build configuration.
Sopwit Mar 22, 2026
a774304
refactor: Adjust component layouts by refining implicit heights, anch…
Sopwit Mar 22, 2026
037d44e
refactor: Update QML layouts by replacing anchor-based positioning wi…
Sopwit Mar 22, 2026
35311ea
feat: Introduce system capability probing and enhance command runner …
Sopwit Mar 22, 2026
cfa3d81
feat: Add dynamic language selection and management with a new backen…
Sopwit Mar 22, 2026
f1c352f
feat: Add support for initial NVIDIA driver installation from remote …
Sopwit Mar 22, 2026
0c76ab1
feat: Centralize DNF transaction argument construction for driver upd…
Sopwit Mar 22, 2026
08bcdeb
feat: Enhance driver operations with detailed progress logging, elaps…
Sopwit Mar 22, 2026
24a0ce1
feat: Add unit tests for DriverPage, refactor operation state, improv…
Sopwit Mar 22, 2026
781a384
feat: Implement CPU and RAM monitoring, and display installed and lat…
Sopwit Mar 22, 2026
d2be68c
feat: Add ActionButton and DetailRow components, refine UI styling fo…
Sopwit Mar 22, 2026
37995a8
feat: harden distro UX, driver flows, and localization
Sopwit Mar 22, 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
6 changes: 6 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
* @Project-Ro-ASD

/src/backend/ @Project-Ro-ASD
/src/qml/ @Project-Ro-ASD
/docs/ @Project-Ro-ASD
/packaging/ @Project-Ro-ASD
10 changes: 7 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,12 @@ jobs:
build:
name: Build & Test
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
fedora: [41, 42]
container:
image: fedora:41
image: fedora:${{ matrix.fedora }}

steps:
- name: Checkout repository
Expand Down Expand Up @@ -52,7 +56,7 @@ jobs:
run: cmake --build build --parallel

- name: Run tests
run: cd build && ctest --output-on-failure
run: ctest --test-dir build --output-on-failure

- name: Check formatting (clang-format)
run: |
Expand All @@ -63,7 +67,7 @@ jobs:
name: RPM Build Check
runs-on: ubuntu-latest
container:
image: fedora:41
image: fedora:42

steps:
- name: Checkout repository
Expand Down
81 changes: 76 additions & 5 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,36 @@ on:
workflow_dispatch:

jobs:
release:
name: Create GitHub Release
artifacts:
name: Build Release Artifacts
runs-on: ubuntu-latest
container:
image: fedora:42

permissions:
contents: write
contents: read

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Install packaging dependencies
run: |
dnf install -y \
git \
rpm-build \
cmake \
extra-cmake-modules \
gcc-c++ \
ninja-build \
qt6-qtbase-devel \
qt6-qtbase-private-devel \
qt6-qtdeclarative-devel \
qt6-qttools-devel \
qt6-qtwayland-devel \
kf6-qqc2-desktop-style \
polkit-devel

- name: Derive release version
run: |
VERSION="${GITHUB_REF_NAME#v}"
Expand All @@ -29,10 +48,62 @@ jobs:
git archive --format=tar.gz --prefix="${PREFIX}/" --output="${PREFIX}.tar.gz" "${GITHUB_SHA}"
git archive --format=zip --prefix="${PREFIX}/" --output="${PREFIX}.zip" "${GITHUB_SHA}"

- name: Build RPM artifacts
run: |
mkdir -p ~/rpmbuild/SOURCES ~/rpmbuild/SPECS
cp "ro-control-${VERSION}.tar.gz" "${HOME}/rpmbuild/SOURCES/"
cp packaging/rpm/ro-control.spec "${HOME}/rpmbuild/SPECS/ro-control.spec"
rpmbuild -ba "${HOME}/rpmbuild/SPECS/ro-control.spec" \
--define "_topdir ${HOME}/rpmbuild"
cp ~/rpmbuild/SRPMS/*.src.rpm .
cp ~/rpmbuild/RPMS/*/*.rpm .

- name: Generate checksums
run: |
sha256sum \
"ro-control-${VERSION}.tar.gz" \
"ro-control-${VERSION}.zip" \
*.rpm \
*.src.rpm > "ro-control-${VERSION}-SHA256SUMS.txt"

- name: Upload release artifacts
uses: actions/upload-artifact@v4
with:
name: ro-control-release-${{ env.VERSION }}
path: |
ro-control-${{ env.VERSION }}.tar.gz
ro-control-${{ env.VERSION }}.zip
*.rpm
*.src.rpm
ro-control-${{ env.VERSION }}-SHA256SUMS.txt

release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: artifacts

permissions:
contents: write

steps:
- name: Derive release version
run: |
VERSION="${GITHUB_REF_NAME#v}"
echo "VERSION=${VERSION}" >> "${GITHUB_ENV}"

- name: Download release artifacts
uses: actions/download-artifact@v4
with:
name: ro-control-release-${{ env.VERSION }}
path: dist

- name: Publish release
uses: softprops/action-gh-release@v2
with:
generate_release_notes: true
files: |
ro-control-${{ env.VERSION }}.tar.gz
ro-control-${{ env.VERSION }}.zip
dist/ro-control-${{ env.VERSION }}.tar.gz
dist/ro-control-${{ env.VERSION }}.zip
dist/*.rpm
dist/*.src.rpm
dist/ro-control-${{ env.VERSION }}-SHA256SUMS.txt
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# Build directories
build/
build-*/
src/build-*/
cmake-build-*/
out/

Expand Down Expand Up @@ -54,6 +55,9 @@ CMakeLists.txt.user
*.tar.gz
*.tar.xz
*.AppImage
packaging/rpm/.ccache/
packaging/rpm/rpmbuild/
packaging/rpm/rpmbuild-*/

# Logs
*.log
Expand Down
53 changes: 45 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ set(CMAKE_AUTOUIC ON)

find_package(Qt6 REQUIRED COMPONENTS
Core
Qml
Quick # Qt Quick / QML engine
QuickControls2 # QML controls (Button, Slider, etc.)
Widgets # QApplication base
Expand Down Expand Up @@ -70,15 +71,45 @@ set(BACKEND_SOURCES
src/backend/system/polkit.cpp
src/backend/system/dnfmanager.cpp
src/backend/system/commandrunner.cpp
src/backend/system/sessionutil.cpp
src/backend/system/capabilityprobe.cpp
src/backend/system/languagemanager.cpp
src/backend/system/uipreferencesmanager.cpp
)

set(APP_SOURCES
src/main.cpp
src/cli/cli.cpp
${BACKEND_SOURCES}
)

# ─── QML Resources ────────────────────────────────────────────────────────────
add_library(ro-control-backend STATIC ${BACKEND_SOURCES})

target_link_libraries(ro-control-backend PUBLIC
Qt6::Core
Qt6::DBus
Qt6::Qml
)

target_compile_options(ro-control-backend PRIVATE
-Wall
-Wextra
-Wpedantic
$<$<CONFIG:Debug>:-g -O0>
$<$<CONFIG:Release>:-O2>
)

target_include_directories(ro-control-backend PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src
${CMAKE_CURRENT_SOURCE_DIR}/src/backend
)

target_compile_definitions(ro-control-backend PUBLIC
RO_CONTROL_POLICY_ID="${RO_CONTROL_POLICY_ID}"
RO_CONTROL_HELPER_BUILD_PATH="${RO_CONTROL_HELPER_BUILD_PATH}"
RO_CONTROL_HELPER_INSTALL_PATH="${RO_CONTROL_HELPER_INSTALL_PATH}"
)

qt_add_executable(ro-control ${APP_SOURCES})

set_source_files_properties(src/qml/assets/ro-control-logo.svg PROPERTIES
Expand All @@ -97,6 +128,11 @@ qt_add_qml_module(ro-control
src/qml/pages/DriverPage.qml
src/qml/pages/MonitorPage.qml
src/qml/pages/SettingsPage.qml
src/qml/components/InfoBadge.qml
src/qml/components/ActionButton.qml
src/qml/components/DetailRow.qml
src/qml/components/SectionPanel.qml
src/qml/components/StatusBanner.qml
src/qml/components/StatCard.qml
src/qml/components/SidebarMenu.qml
RESOURCES
Expand All @@ -105,8 +141,11 @@ qt_add_qml_module(ro-control
)

if(Qt6LinguistTools_FOUND)
# English strings ship directly from source code. Keep the English TS file
# for catalog maintenance, but only compile non-source locales into .qm.
set(TS_FILES
i18n/ro-control_en.ts
i18n/ro-control_de.ts
i18n/ro-control_es.ts
i18n/ro-control_tr.ts
)

Expand All @@ -118,11 +157,10 @@ endif()

# ─── Link Qt Libraries ────────────────────────────────────────────────────────
target_link_libraries(ro-control PRIVATE
Qt6::Core
Qt6::Quick
Qt6::QuickControls2
Qt6::Widgets
Qt6::DBus
ro-control-backend
)

# ─── Compiler Warnings ────────────────────────────────────────────────────────
Expand Down Expand Up @@ -152,8 +190,6 @@ target_include_directories(ro-control PRIVATE

target_compile_definitions(ro-control PRIVATE
RO_CONTROL_POLICY_ID="${RO_CONTROL_POLICY_ID}"
RO_CONTROL_HELPER_BUILD_PATH="${RO_CONTROL_HELPER_BUILD_PATH}"
RO_CONTROL_HELPER_INSTALL_PATH="${RO_CONTROL_HELPER_INSTALL_PATH}"
)

configure_file(
Expand All @@ -162,6 +198,7 @@ configure_file(
@ONLY
NEWLINE_STYLE UNIX
)
execute_process(COMMAND chmod +x ${RO_CONTROL_HELPER_BUILD_PATH})

configure_file(
data/polkit/io.github.ProjectRoASD.rocontrol.policy.in
Expand All @@ -179,7 +216,7 @@ install(PROGRAMS ${RO_CONTROL_HELPER_BUILD_PATH}
RENAME ${RO_CONTROL_HELPER_NAME}
)

install(FILES data/icons/ro-control.desktop
install(FILES data/icons/io.github.projectroasd.rocontrol.desktop
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
)

Expand All @@ -193,7 +230,7 @@ install(FILES
DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/256x256/apps
)

install(FILES data/icons/ro-control.metainfo.xml
install(FILES data/icons/io.github.projectroasd.rocontrol.metainfo.xml
DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo
)

Expand Down
10 changes: 10 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,14 @@ cd build && ctest --output-on-failure

**PRs to `main` will be rejected.** All contributions go through `dev` first.

Recommended PR checklist:

- Keep scope focused to one feature/fix/theme
- Update docs when user-visible behavior changes
- Update translations when adding or changing UI strings
- Include before/after screenshots for UI changes
- Run `ctest --test-dir build --output-on-failure` locally

---

## Translations
Expand Down Expand Up @@ -186,3 +194,5 @@ Use the [bug report template](.github/ISSUE_TEMPLATE/bug_report.md) and include:
- Steps to reproduce
- Expected vs actual behavior
- Relevant terminal output, `coredumpctl info ro-control`, or recent journal entries

For general setup questions, diagnostics help, or uncertainty about whether something is a bug, start with [SUPPORT.md](SUPPORT.md).
Loading
Loading