Files
Kareer/CONTRIBUTING.md
T
austinandClaude Fable 5 170129feec
Lint / REUSE compliance (push) Failing after 3s
Build and Test / Build and run tests (push) Failing after 1s
Lint / clang-format (push) Failing after 5s
Fix the Lint CI workflow (broken since v0.1.2)
clang-format job: the flatpak CI image has no ECM on the host, so the
configure step that generated .clang-format could never run. Commit the
ECM-generated .clang-format instead (it is MIT, LICENSES/MIT.txt added),
drop the container, pin clang-format 22.1.8 from PyPI to match the
version the tree is formatted with, and reformat the sources to match.

REUSE job: add the missing CC0-1.0 license text, a copyright line for
the metainfo, REUSE.toml coverage for README/CONTRIBUTING/.gitignore,
and REUSE-Ignore markers around CONTRIBUTING.md's SPDX example so the
parser stops reading prose as a license declaration. reuse lint now
passes locally (54/54 files).

Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_019FXfh48mASRsE1WEhy9jcM
2026-08-31 19:23:01 -05:00

1.8 KiB

Contributing to Kareer

Build

Kareer is a KDE/Kirigami application (C++20 + QML) built with CMake and Extra CMake Modules. See the README for the full list of system packages to install, then:

cmake -B build -G Ninja
cmake --build build
./build/bin/kareer

Every GUI action is also available from the kareer CLI (add|list|show|update|stage|delete|stats|stages) — run ./build/bin/kareer --help to see the subcommands.

Test

ctest --test-dir build --output-on-failure

Tests live in autotests/ and link the core logic directly out of src/ (see autotests/CMakeLists.txt). CI runs the same suite on every pull request via .github/workflows/test.yml, using flatpak-builder's run-tests option so the run happens inside the same KDE SDK sandbox as release builds.

Conventions

  • Every source file starts with SPDX-License-Identifier: GPL-3.0-or-later (in whatever comment syntax fits the file type). Files that can't carry an inline header — .desktop, keys/*.asc — are covered instead by REUSE.toml.
  • src/ is intentionally flat: one class per concern, no models/, controllers/, or viewmodels/ subfolders.
  • C++ backend classes are exposed to QML via QML_ELEMENT; QML views are meant to stay thin renderers over that state, not hold logic themselves.
  • JobsDatabase is the only class that touches the SQLite database directly — route all persistence changes through it.

Releasing

.github/workflows/build.yml builds, signs, and publishes a Flatpak bundle whenever a v* tag is pushed. To cut a release: bump project(... VERSION ...) in CMakeLists.txt, add a matching <release> entry to the metainfo file, update the manifest's pinned tag:, then tag and push.