Replace the tall ScrollView/license layout that crashed under KDE Dialog
with a compact layout matching the other dialogs. Inject BEARWAVE_GIT_HASH
into flatpak builds via manifest env (no .git in builder sandbox).
Replace QString.arg() with string concatenation in AboutDialog. Disable QML
disk cache so flatpak updates do not keep old compiled QML after qrc changes.
Move setApplicationVersion after QApplication construction.
Register MPRIS only after QML loads, always connect raiseRequested to the
main window (not only when the tray icon exists), and show or activate the
window explicitly on launch. Fix circular dialog property aliases.
HeaderNavigation and StationCard access dialogs via app.aboutDialog etc.,
but Main.qml never exported those ids as property aliases after the QML
module refactor. Align AboutDialog anchoring with the other dialogs.
Pass app version and build id explicitly from Main.qml to AboutDialog
instead of relying on context properties inside the QML module scope.
Remove the confusing "Public beta" label.
Make Flatpak updates unmistakable after clients were stuck on the
May 1.0.3 commit. Expose bearwaveVersion/bearwaveBuildId to QML and
set the flatpak manifest version explicitly.
The QML refactor in 1.0.4 used prefix /qml with file paths like
qml/Main.qml, embedding resources at qrc:/qml/qml/Main.qml while
main.cpp loads qrc:/qml/Main.qml. Use prefix / so paths match.
Also derive the displayed app version from CMake PROJECT_VERSION and
add a qrc_resources_test to prevent this regression in CI.
Validate manual stream URLs (http/https only), restrict notification
cover downloads to HTTPS, and add transfer timeouts for metadata and
cover fetches. Document playback, tray, MPRIS, and QML refactor changes
in CHANGELOG and AppStream metadata.
Move ScrollView/ListView/empty-state into StationListPanel and toast UI
into ToastPopup with show(). Main.qml is now ~271 lines; stationList
alias preserved for search debounce logic.
Phase 2 splits the remaining large Main.qml blocks into StationCard,
WorldCategories, WorldCategoryHeader, PlayerBar, and AboutDialog.
Main.qml is now ~414 lines (down from ~1240); behavior unchanged.
Split the duplicated desktop/compact header UI into reusable QML
components (HeaderNavigation, SearchToolbar, QuickFilters), centralize
colors and world tags in BearTheme singleton, and move flag emoji logic
to FlagUtils.js. Register modules via qrc import path qrc:/qml.
Main.qml shrinks from ~1816 to ~1240 lines; behavior unchanged.
- Correct history/resume next-previous context and list index resync after reload
- Abort stale RadioBrowser requests and suppress error banners when cache satisfies loads
- Reset local search filter on page changes and debounce compact-mode API search
- Move system tray to C++ (QSystemTrayIcon) for reliable Wayland context menus
- Harden MPRIS registration and metadata updates for Plasma media widgets
- Add playback and API race unit tests
- Drop unused KF6 Kirigami, I18n, and CoreAddons build dependencies
- Update packaging docs, CI, and PKGBUILD to match Qt-only requirements