Releases: ruizhi-lab/latte-dock-ng
Release list
Latte Dock NG v1.2.41
Fixed
- Guard lazy preview delegate initialization when window previews are disabled, eliminating the startup
main.qml:480null-object warning.
Performance
- Reduce idle task hover work when window previews and window highlighting are disabled, while preserving tooltip and task auto-scroll behavior.
- Reduce repeated task, PulseAudio, layout-import, and headless desktop integration work across the dock's active and startup paths.
Tests
- GCC and Clang autotest suites pass all 39 registered tests.
Gentoo
- The
latte-dock-ng-1.2.41.ebuildpackage is included as a release asset and has been added to the Gentoo overlay.
v1.2.40
Latte Dock NG v1.2.40
Fixed
-
Separator boundary jitter: the separator at the tasks/widgets boundary no
longer oscillates when the pointer rests or moves across it (macOS-style
fixed divider). At the boundary the top-most neighbour (e.g. an external
widget drawing above the tasks) can briefly own the junction, zoom the
adjacent task and then be pushed away by the resulting layout growth; its
onExitednullifies the current item immediately, so the parabolic restore
timer now keeps a 150 ms grace period that lets the task now covering the
cursor re-enter and cancel the zoom clear instead of producing a visible
blip. -
Separator line rendering: the separator line renders tight at its
boundary slot — the content container now uses the separator's preferred
length (falling back toseparatorLengthwhen the applet has not resolved
Layout.preferredWidth, which is always the case for freshly added
separators) instead of overflowing a full icon-sized slot into the
neighbouring applets. This also fixes a freshly added separator being
invisible. -
Trash widget default: the Trash widget now keeps its original full-color
icon by default in every dock configuration. Newly added trash applets are
automatically added touserBlocksColorizingApplets, and older layouts get
a one-time migration (trashKeepOriginalColorsDefaulted) that marks every
present trash widget, after which explicit user toggles are never
overwritten again.
Tests
- New source-contract tests lock the separator content-container fallback
(separatorContentContainerStaysTightWithFallback), the restore-timer grace
period that prevents the boundary zoom blip
(restoreZoomTimerGracePeriodPreventsBoundaryBlip), and the Trash
keep-original-colors default + migration
(trashKeepOriginalColorsDefaultsToCheckedForAllConfigs).
Full changelog: https://github.com/ruizhi-lab/latte-dock-ng/blob/main/CHANGELOG.md
Changes since v1.2.39: v1.2.39...v1.2.40
v1.2.39
Latte Dock NG v1.2.39
Changes since v1.2.38
Fixes
- Parabolic zoom during launcher bounce (issue #42): a delegate kept alive
byListView.delayRemoveduring a launcher→window conversion (index -1) is
now addressed througheffectiveIndex(index >= 0 ? index : taskItem.lastValidIndex), so it keeps tracking the pointer instead of being
frozen at its old zoom or snapped to zoom level 1 by the clear broadcast. - Icon scaling when entering the dock (issue #40): the zoom gate in
ParabolicEventsArea.onParabolicMovewas removed, so the parabolic effect
keeps updating during the zoom-in animation and no longer glitches from 1x. - Smoother zoom restore: zoom restore is delegated to the
Behavior on zoom, avoiding jarring jumps when previous animations have not finished. - Phantom separators: a window without launcher identity no longer renders
as a thin separator placeholder; the placeholder is only used for
launcher-type entries whose URL is still resolving asynchronously.
Features
- "Keep Original Icon Colors" for the Trash widget (issue #44): a new
context-menu option strips the-symbolicsuffix from the Trash icon so the
full-color icon from the icon theme shows, while the empty/full icon keeps
switching; disabling the toggle restores the original icon immediately.
Translations
- Translations are synced after the Dock/Panel → Dock migration: ~25 strings
inlatte-dockand the containment-actions context menu silently fell back
to English in every language; msgids are realigned and several strings
wrongly markednotr="true"in the Qt Designer dialogs are translatable
again.
Tests
- New source-contract tests cover the parabolic
effectiveIndexfallback, the
zoom restore path, the separator empty-URL guard, the Trash icon toggle, the
Qt Designernotrfixes, and the po translation sync.
Links
v1.2.38
Latte Dock NG v1.2.38
What's changed
Application Menu & cascading submenus
- Menu bar submenus no longer close when the pointer reaches them. The
dock previously reconfigured its window flags / plasma shell surface while
the Application Menu widget reportedNeedsAttentionStatus; on Wayland
that invalidated the QMenu's child popup surfaces, closing the menu as soon
as the pointer entered a submenu. - Cascading submenus (kicker, etc.) no longer stay stuck open after the
pointer leaves them. The submenu windows steal the keyboard focus when they
open, which breaks the widget's own mouse-leave close timer, so the dock
now closes the submenu tree event-driven when the pointer leaves the menu
windows (tracked via Enter/Leave events —QCursor::pos()is stale on
Wayland once the pointer leaves the dock's surfaces). - The first-level menu stays open on pointer-leave (matching the official
panel behaviour) and closes on click-outside (hideOnWindowDeactivate
restored to its default). - Fixed a segfault while interacting with a cascading menu: destroyed
popup/menu windows are now removed from the pointer tracker so the deferred
close check never dereferences a dangling pointer.
Tests
- New source-contract tests lock the
NeedsAttentionStatuswindow handling,
thehideOnWindowDeactivatedefault, the event-driven submenu close, and
the dangling-pointer guard.
Full changelog: https://github.com/ruizhi-lab/latte-dock-ng/blob/main/CHANGELOG.md
Diff: v1.2.37...v1.2.38
Latte Dock NG v1.2.37
Fixed
- The animation speed setting (Effects > Animations, x1/x2/x3) is now actually perceptible: the containment maps x1/x2/x3 to 1x/2x/3x animation durations matching the plasmoid's standalone semantics, and the inverted EffectsConfig buttons were corrected (issue #39).
- Transparent icons (e.g. the Colloid theme) no longer show a ghost of the original-size icon while a widget zooms: the applet drop shadow now fades out smoothly during the zoom instead of rendering a duplicated copy behind the scaled applet (issue #38).
- Widgets whose zoom is disabled no longer participate in the parabolic wave, so the task icon at the widget boundary restores its size immediately when the mouse leaves.
- Release builds no longer emit an unused-variable warning in the debug message filter.
Added
- New "Zoom widgets on hovering" option (Behavior > Items): when disabled, external widgets keep their original size on hover so their icons stay sharp, while task icons and launchers still zoom.
- The default layout templates no longer include the mail (Thunderbird) launcher.
Changed
- The durationTime config default is now x1 (normal) instead of x2.
Tests
- New source-contract tests cover the animation speed mapping, the EffectsConfig button values, the applet shadow fade, the widget-zoom option scope, and the default template launchers.
Full Changelog: v1.2.36...v1.2.37
v1.2.36
Latte Dock NG 1.2.36
Fixed
- Autostart no longer breaks silently when the XDG autostart desktop file disappears (e.g. removed by a package uninstall,
emerge --depcleanor a failed update): startup now restores it and logs a warning instead of leaving the dock unlaunched on every login. - Autostart updates are staged: the replacement file is copied next to the working entry and swapped in only after a successful copy, so a failed copy can never delete the existing entry.
- Autostart failures (missing system desktop file, failed copy) now log warnings instead of failing silently.
Tests
- New importer-logic and source-contract tests cover the autostart self-heal and staged-update behavior.
- The autostart copy-failure test is permission-independent so it behaves identically on user runs and root CI containers.
Packages
- Debian 13 (trixie):
latte-dock-ng_1.2.36-1+deb13u1_amd64.deb - Debian testing/sid:
latte-dock-ng_1.2.36-1_amd64.deb - Fedora:
latte-dock-ng-1.2.36-1.x86_64.rpm - Arch:
latte-dock-ng-1.2.36-1-x86_64.pkg.tar.zst
Full changelog: compare/v1.2.35...v1.2.36
v1.2.35
Fixed
- Fixed logout, reboot and shutdown hanging on Plasma 6.7: KWin's session shutdown waits for every xdg_toplevel window to close, and the dock views ignored the compositor close request until the session-ending flag was set. The views are now unmapped as soon as the logout is announced and restored if the user cancels.
- Filtered cosmetic Plasma theme SVG warnings from the debug log.
- Mirrored system Kirigami template qmldir files in the KNS compat overrides.
Build
- CI now builds and runs the full autotest suite (ctest) on every push, pull request and release tag.
- The Debian 13 (trixie) deb now carries the
+deb13u1revision marker, per the Debian convention for stable-specific builds; the testing/sid build keeps the plain-1name. - Documented the two deb variants in the README and installation docs.
Full changelog: v1.2.34...v1.2.35
Latte Dock NG v1.2.34
Fixes
-
Plasma 6.3 support: Lowered the minimum Plasma version to 6.3.0 (Debian 13 trixie is now verified as the minimum supported version; development happens on Plasma 6.5+ / Qt 6.11).
-
Dock indicators missing on Plasma 6.3: The org.kde.plasma.plasmoid QML module is only registered lazily by PlasmaQuick on that version, so indicator components are now created on first access instead of at View construction.
-
Icon stuck magnified after clicking a launcher (issue #35): The launcher bounce keeps the click-time zoom while direct rendering is disabled; leaving the item during the bounce left the icon magnified until the animation ended. The zoom now restores immediately when the pointer leaves the item.
-
Latte/Indicator package structure unresolvable on Qt 6.8: The latte_indicator plugin shipped without embedded metadata (moc macro expansion through the compat forwarding header); KPluginFactory is now included explicitly.
-
KNS dialog overrides never created on Kirigami 6.12+: org.kde.kirigami.controls was merged into the main module; the system QML root check accepts both layouts.
-
Infinite recursion in layouts settings (a
->typo inmodeIsChanged()) and a batch of warnings exposed by full GCC 15 / Clang rebuilds (initializer order, range-loop copies, unused captures and variables) — both compilers build warning-free.
Changed
- Concurrent parabolic zoom and launcher bounce animation (bounce replaced with a parabolic bounce).
Packages
Two .deb variants because the libplasma soname changed from 6 to 7 between Plasma 6.5 and 6.6 (libplasma6 → libplasma7), splitting the range into two binary-incompatible camps:
latte-dock-ng_1.2.34-1_amd64.deb(plain name) — built on Debian sid/forky, links libplasma7; for Debian testing / sid and Ubuntu 26.04+.latte-dock-ng_1.2.34-1_debian_amd64.deb— built on Debian 13 (trixie), links libplasma6; for Debian 13 (stable).latte-dock-ng-1.2.34-1.x86_64.rpm— Fedora / openSUSE / Mageia.latte-dock-ng-1.2.34-1-x86_64.pkg.tar.zst— Arch Linux.
Every package format is install-checked automatically before release: source install, package-manager install (apt / dnf / pacman) and a headless launch on each supported distro (Debian 13, Debian sid, Fedora 44, Arch).
What's Changed
- fix: create indicator QML components lazily for Plasma 6.3
- fix: include KPluginFactory in indicator package plugin
- fix: accept merged kirigami controls layout in KNS compat
- fix: restore zoom when pointer leaves item during launcher bounce
- fix: build latteLogging with position independent code
- fix: clear warnings exposed by GCC 15 and full Clang builds
- build: build deb on Debian 13 trixie with shlibdeps
- build: ship separate deb for the libplasma7 camp
- ci: verify install on every supported distro before release
- ci: plain deb name for testing/sid, debian suffix for trixie
- release: bump version to 1.2.34
Full Changelog: v1.2.33...v1.2.34
Latte Dock NG v1.2.32
Fixes
-
AutoSize infinite loop: Fixed a long-standing bug where icon sizes below 32px (that aren't multiples of 8 offset from 16) caused an infinite loop at ~100% CPU, making the dock invisible. The shrink/grow do-while loops now use inequality guards instead of strict equality.
-
Debian 13 LayerShellQt compatibility: Added setDesiredSize compatibility workaround for older LayerShellQt versions shipped by Debian 13. May work on Debian 13 but is not guaranteed — Debian's packaging lags behind upstream and full support depends on system library versions.
What's Changed
- fix: infinite loop in AutoSize when icon size is not aligned to step 8
- fix: add LayerShellQt setDesiredSize compatibility for Debian 13
- test: add contract test for AutoSize loop inequality guards
Full Changelog: v1.2.31...v1.2.32
Latte Dock NG v1.2.31
Changes
🔧 Autostart Reliability Fix
The autostart mechanism now reliably starts latte-dock on session startup:
- Desktop file:
X-KDE-autostart-phase=2delays startup until session restore is complete, avoiding Wayland compositor / DBus readiness races on cold boot - Runtime retry: retries 10 times at 500ms intervals if Wayland platform check sees transient failure
- Upgrade propagation:
enableAutostart()compares modification times and auto-replaces stale user autostart files so existing users get the fix without manual re-toggle
📦 Debian 13 Support
- Lower Plasma minimum version from 6.5.0 to 6.3.0 — Debian 13 (Trixie) ships Plasma 6.3.6, previously below the build requirement. No Plasma 6.4+ APIs are used — the codebase relies solely on core Plasma 6.0+ interfaces.