Reserve side and bottom decoration borders for normal windows and draw a rounded decoration frame so windows match the convergence workspace shape. Add static guards for the decoration and existing workspace-frame corner geometry.
Keep one layout per output and virtual desktop. Move new windows to another existing desktop when the current page is full.
When a user moves a window onto a full page, replace the last focused window on that page and send it back to the source desktop. Use stable slot swaps instead of insert splits so the layout shape does not change during moves.
openSUSE Tumbleweed's plasma6-nm 6.6.4 does not ship the org.kde.plasma.networkmanagement.cellular QML submodule that SignalStrengthInfo.qml imports unconditionally. Without it the MobileShell QML namespace fails to load and preview boots to a black screen.
Keep a minimal fallback module under tools/preview-stubs and install it only for local .prefix preview installs by default, with SHIFT_INSTALL_PREVIEW_QML_STUBS=AUTO/ON/OFF for explicit control. Add a CTest guard so qmldir entries stay backed by real files and the fallback remains tied to the QML import tree.
Kirigami.Icon { isMask: true } flattens an SVG to its alpha, so when a quick-setting tile resolves to a colored preferences/scalable glyph the whole rounded background collapses into a solid square. Append -symbolic to the five icon names that collided with colored tiles and add symlink aliases where no real symbolic variant exists yet. Guard the regression with a check in tests/check-shift-icon-theme.sh.
Keep Breeze QQC2 as an intentional dependency until Shift ships a real QQC2 or widget style. Extend the theme identity test to reject fake Shift style selectors and require the fallback to stay documented in launch paths.
Provide the first real Shift Plasma desktop theme SVGs for panel and widget frames used directly by the shell. Cover dark and light modes, including solid panel backgrounds for opaque panel states.
Extend the theme identity test so the desktop themes cannot regress to metadata-only packages.
BusyBox find does not support GNU find's -xtype predicate, which
caused shift-icon-theme-coverage to fail in CI. Iterate symlinks with
portable find -type l -print0 and let Bash check whether each target
exists instead.
Point the mobile shell, navigation, and Waydroid KCM metadata at the Shift repository. Brand the KDED startup and APN autodetect module names and descriptions as SHIFT while keeping existing plasma-mobile plugin/library identifiers stable.
Add a guard for these metadata surfaces so upstream project URLs and translated Plasma Mobile overrides are not reintroduced.
Point homescreen and panel containment metadata at the Shift repository. Update the panel and task-panel descriptions from Plasma Mobile to SHIFT, and remove translated descriptions that would override the corrected base metadata.
Add a containment metadata guard while preserving the existing org.kde.plasma.mobile.* applet target IDs.
Update quick setting package metadata to use SHIFT-facing descriptions and repository links while preserving org.kde.plasma.quicksetting.* package IDs. Drop translated Description entries that could override the corrected base descriptions, update the Caffeine inhibition reason, and add a guard for future regressions.
Update first-run KPackage descriptions and websites so package-visible metadata points at SHIFT while keeping the existing mobileinitialstart package IDs stable. Remove localized Description entries that could override the new SHIFT-facing base descriptions. Add a CTest guard for the first-run module metadata.
Update session, AppStream, service, shell metadata, and initial setup about/defaults to use SHIFT-facing product metadata while keeping runtime package IDs and executable names stable. Install Shift AppStream metadata and remove stale upstream metainfo from existing prefixes. Add a guard for product metadata branding.
Install org.shift.icons as the look-and-feel icon theme while keeping the Plasma style on breeze-dark. Add the icon-theme coverage guard and CTest registration so shell, System Settings, KCM, and installed Plasma icon names do not silently fall back to missing Breeze-only assets.
Document the theme rules and add scoped REUSE metadata for the Phosphor-derived SVG glyphs.
Introduce shared dock height/reveal constants and use them in folio and taskpanel to keep overlay and exclusion zone aligned. Keep dock backing stationary while only content slides, and add a CTest invariant script to prevent regressions.
Update the package ID in metadata.json, the translation catalog
name in Messages.sh, the compile-time default in envmanager, and
the test suite --lookandfeel flag. Rename the 41 .po files from
the old org.kde.breeze.mobile catalog name.
The system tray has not been useful on mobile and isn't particularly
interactable due to its small size. Remove the system tray from the
status bar, if we need its functionality it would be more appropriate to
create a larger "tray UI" in the quicksettings area
Overlay the shell's status panel and quicksettings panel over the lockscreen, instead of rendering a second copy in the lockscreen theme. This will allow us to improve the lockscreen loading speed.
Key changes:
- Overlay quicksettings window and the status bar over the lockscreen when it is shown
- Refactor the top panel's showing logic to be cleaner (as it supports various overlay modes over fullscreen apps already)
- Implement lockscreen support to the status bar and quicksettings panel in the to panel
- Forward quicksettings panel requests for "unlock" over DBus to the lockscreen
- Add "raiselockscreen" QML plugin to easily request a window to be raised over the lockscreen
Notes:
- Now that we are sharing the quicksettings panel from the shell, notifications that are already there will be shown on the lockscreen (compared to right now, where only new notifications would be shown)
Depends on:
- https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2339
- https://invent.kde.org/plasma/kscreenlocker/-/merge_requests/283
- https://invent.kde.org/plasma/kwin/-/merge_requests/7839
Implements: https://invent.kde.org/plasma/plasma-mobile/-/issues/199

This merge request implements a more mobile optimized solution for popup notification.
-
The current controls are:
- Swipe up to move the notification to the notification center.
- Swipe left/right to dismiss the notification entirely.
- If multiple popup notifications are grouped together, tap on the bottom area to view them in a expanded view.
What still needs to be done:
- ~~For notification without a default action, tapping on them should probably open up the associated app.~~ Note: I think I will add this in a separate merge request as it probably should be the case regardless if the notification is a popup
- ~~Swiping down on a notification currently does nothing. Maybe we should map this to a notification action?~~ Note: I have some ideas I will try later, though for now, I will leave this action blank
- ~~The expanded view of notifications should be able to be dismissed by swiping up/down on the top/bottom of the list.~~ Note: Added
- Investigate further into how to remove the current desktop popup notifications.
- ~~Code clean up.~~ Note: The code is at least a bit better
Single popup notification:

Multiple popup notifications:

Multiple popup notifications in the expanded view:

Any feedback would be greatly appreciated.
This avoids having to completely load the quicksettings, status bar,
media widget, and notifications list from scratch when the view changes.
We now have a single instance of each component which is reparented to
the new view (portrait/landscape).
Fixes https://invent.kde.org/plasma/plasma-mobile/-/issues/406
BUG: 484054
This is a potential fix for the input to stop working. There was unused code for passwordless login that could cause the "waitingForAuth" variable to never be set to false after user input.