Files
bearwave/CONTRIBUTING.md
Sebastian Palencsar 4806f9306a feat(ui): Mac-inspired layout with sidebar, details panel, and About page
Replace the modal About dialog with an embedded About page and introduce
a three-pane desktop layout: persistent sidebar navigation, flat station
list, right-side details panel, and compact player bar.

Load the GPLv3 license text from C++ and expose it to QML as context
data. Normalize i18n source strings to English, complete German and
Russian translations (133 strings each), and centralize page navigation
helpers in Main.qml. Simplify compact HeaderNavigation and extend
.gitignore for local build artifacts.
2026-06-27 13:21:55 +02:00

2.2 KiB

Contributing to BearWave

BearWave is a KDE-focused desktop internet radio app built with C++/Qt 6, QML, and QtMultimedia.

The project favors:

  • stability over feature churn
  • minimal dependencies
  • readable, conservative code
  • Plasma-friendly desktop behavior

Before You Contribute

  • Check existing issues before opening a new one.
  • Prefer focused pull requests over broad refactors.
  • Keep behavior predictable for desktop users.
  • Avoid adding dependencies unless there is a clear payoff.

Local Setup

Build from the repository root:

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j"$(nproc)"

Optional local install:

cmake --install build --prefix "$HOME/.local"

If you changed QML:

qmllint src/qml/Main.qml src/qml/components/*.qml src/qml/theme/BearTheme.qml

For UI layout work that should be tested separately from the default build tree:

cmake -S . -B build-maclayout -DCMAKE_BUILD_TYPE=Release
cmake --build build-maclayout -j"$(nproc)"
./build-maclayout/src/bearwave

Run unit tests after backend changes:

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

Change Guidelines

  • Follow the existing style in each file.
  • Keep changes minimal and scoped.
  • Do not block the UI thread.
  • Keep network operations asynchronous.
  • Preserve MPRIS behavior and user state compatibility.
  • When changing resources, register them in src/qml.qrc.
  • When changing the About page, keep the full GPL text resource visible and keep third-party technology notes accurate.

Manual Checks

Please smoke-test the area you changed when possible:

  • app launches successfully
  • station list loads
  • search and filtering behave correctly
  • play/pause/stop work
  • favorites persist across restart
  • resume restores last station and volume
  • tray and MPRIS behavior still work
  • About page opens from sidebar/compact navigation, social links work, and the GPL license text is scrollable

Pull Requests

Useful pull requests usually include:

  • a short description of the user-visible change
  • any relevant screenshots for UI changes
  • exact verification commands that were run
  • known limitations or follow-up work