Skip to content

Releases: silviuk/Lunifier

Lunifier 2.2.2

Choose a tag to compare

@silviuk silviuk released this 29 Sep 12:18

Lunifier 2.2.2 Release Notes

Lunifier 2.2.2 resolves intermittent mouse cursor jitter/stutter during normal PC usage by eliminating Bluetooth baseband radio contention through intelligent exponential backoff, cursor activity gating, strict bt_p2p_enabled enforcement, and Linux X11 display caching optimizations across Windows and Linux.


Highlights & Fixes in v2.2.2

1. Mouse Jitter Elimination via Radio Paging Contention Fix

  • Exponential Reconnection Backoff: Replaced the previous fixed 5-second reconnect loop with an intelligent exponential backoff:
    $$5\text{s} \longrightarrow 10\text{s} \longrightarrow 20\text{s} \longrightarrow 40\text{s} \longrightarrow \text{capped at } 60\text{s}$$
    This slashes Bluetooth baseband radio paging duty cycle from ~50% of uptime down to under 1.5%, preventing Bluetooth HID packet starvation and 2.4 GHz co-channel RF interference on both Bluetooth mice and USB dongles (Bolt / Unifying).
  • Cursor Activity-Gated Reconnection: EdgeDetector continuously tracks cursor displacement. If the mouse is actively moving ($\ge 4\text{ px}$ displacement within the last 600ms), background RFCOMM connect() calls are deferred by 1 second until the mouse is stationary, guaranteeing that radio paging never coincides with active mouse manipulation.
  • Instant Backoff Reset: Backoff automatically resets back to 5.0s whenever you trigger a screen border switch (NotifySwitchOut), pair with a new host, or start the service, ensuring immediate sync with zero latency.

2. Strict Enforcement of bt_p2p_enabled

  • Fixed a bug on both Windows and Linux where background Bluetooth reconnect loops would start even if "Enable Bluetooth Link" was toggled off, provided a peer MAC address was saved in configuration.
  • The background Bluetooth client and server now strictly require bt_p2p_enabled: true and a valid peer MAC address before initializing.

3. Linux Input Polling & X11 Display Hardening

  • Persistent X11 Display Caching: Avoids opening and closing ephemeral X11 display connections on every 15ms poll iteration, eliminating X server socket queue latency.
  • Throttled Subprocess Fallback: In environments without native X11 libraries, fallback xdotool queries are throttled to 20 Hz (50ms interval) to eliminate process-fork storms and CPU hitching.

Package Checksums (SHA-256)

Standard Edition (Full Features including Bluetooth Inter-Host Link)

Asset Size SHA-256 Checksum
Lunifier-Setup-2.2.2.exe 6.00 MB AFD2259B7BF4DC65666201493FFB61F5E3FBE25236BFFA1429ED2A4C86206CD3
Lunifier-Windows-2.2.2.zip 6.43 MB A0A4C7126F8AA1D7C31E81BA3B01AE147FEF411EE1460673EBA3508310219C18
Lunifier-2.2.2.0.msix 6.73 MB F65C2C619FD19CA22C5D4EFB8EFEB09566B6C495B5978955A8228403A67099AA
Lunifier-2.2.2.msix 6.73 MB F65C2C619FD19CA22C5D4EFB8EFEB09566B6C495B5978955A8228403A67099AA
lunifier_2.2.2_all.deb 178.7 KB 30732C0C7234D5C9E739E9A11BBA67ECA63A20DFB700BE15A8C778FB4D5EA667
Lunifier-Linux-2.2.2.tar.gz 246.8 KB 88330352A35616ECB8C3A62D7FC9D96FCB389E82781BC531722ED395499CA6DC

Standalone No-BtSync Edition (No RFCOMM Inter-Host Sync)

Asset Size SHA-256 Checksum
Lunifier-Setup-2.2.2-nobtsync.exe 6.00 MB 0A80DEBA4C55F9E143D6FC6A1B7A9025374B355A42E5443C83969712A0425A4C
Lunifier-Windows-2.2.2-nobtsync.zip 6.43 MB C02431F68BCAA0281CA47B8642BFB04318B9EBA89E53EC297ECA9393FA5AFB87
Lunifier-2.2.2.0-nobtsync.msix 6.73 MB D26261539332125A4C71D660CC1D28301BD0D87CF98F0E0F59B71B2D214A9563
Lunifier-2.2.2-nobtsync.msix 6.73 MB D26261539332125A4C71D660CC1D28301BD0D87CF98F0E0F59B71B2D214A9563
lunifier_2.2.2-nobtsync_all.deb 179.1 KB 1CA73F3FE0190929A2288EC4A87AE69761D0EC2C7A31EF71BB81D9BB2E69624D
Lunifier-Linux-2.2.2-nobtsync.tar.gz 246.8 KB D844D31D383A81F6B00545A29879B4415F0282844ACDCE43ABF177FB77CD8633

Note

MSIX Package Naming (2.2.2 vs 2.2.2.0):
Lunifier-2.2.2.0.msix and Lunifier-2.2.2.msix (as well as their respective -nobtsync counterparts) are bit-for-bit identical binary packages with matching SHA-256 checksums. The 4-part quad version 2.2.2.0 is strictly mandated by the Windows AppX/MSIX packaging specification (AppxManifest.xml) and Microsoft Partner Center / Windows Store upload validation (Major.Minor.Build.Revision). The 3-part 2.2.2 filename is provided as an alias matching standard semantic versioning and GitHub release tag conventions. Either package can be installed interchangeably.

Lunifier 2.2.1

Choose a tag to compare

@silviuk silviuk released this 25 Sep 10:14

Lunifier 2.2.1 Release Notes

Lunifier 2.2.1 provides official Windows Store / Partner Center-compliant MSIX packages built with Microsoft's MakeAppx tool, including authentic Open Packaging Conventions (AppxBlockMap.xml, [Content_Types].xml), distinct package identities for the Standard and No-BtSync editions, High-DPI visual tile/logo scale variants (scale-100, scale-200, targetsize-44, targetsize-24), and updated packages across Windows and Linux.


Highlights & Fixes in v2.2.1

1. Official Windows Store / Partner Center MSIX Compliance

  • Genuine MakeAppx Packaging: Replaced fallback archive packaging with official Microsoft MakeAppx.exe, generating required cryptographic block maps (AppxBlockMap.xml) and Open Packaging Conventions manifests ([Content_Types].xml).
  • Fixed Manifest Versioning: Corrected manifest generation to strictly update <Identity Version="..." /> while preserving standard XML declarations (<?xml version="1.0"?>) and OS dependencies (TargetDeviceFamily MinVersion="10.0.17763.0"), passing Microsoft Partner Center schema validation.
  • Distinct Identity for No-BtSync Edition: Configured SilviuVlasceanu.LunifierNoBtSync and DisplayName="Lunifier (No-BtSync Edition)" to allow seamless separate Windows Store submission without identity or package conflicts.
  • High-DPI Visual Assets: Added comprehensive scale and target-size variants (Square44x44Logo, Square150x150Logo, Wide310x150Logo, StoreLogo at 100% and 200% scale plus unplated 44px/24px taskbar icons) ensuring crisp visuals and passing Windows App Certification Kit (WACK) asset tests.

2. Linux System Tray Icon & Desktop Integration Fix

  • GNOME AppIndicator & Ubuntu System Tray: Fixed missing indicator icon fallback ("three dots") on Ubuntu 24.04/26.04 by exporting direct ARGB32 pixmaps over D-Bus (IconPixmap), setting Freedesktop-compliant IconThemePath, and installing multi-resolution status/panel icons across all standard theme contexts.

3. Ubuntu App Center & GNOME Software AppStream Integration

  • AppStream Metainfo Specification: Included Freedesktop AppStream metainfo manifests (io.github.silviuk.lunifier.metainfo.xml and io.github.silviuk.lunifier-nobtsync.metainfo.xml), furnishing Ubuntu App Center and GNOME Software with rich app titles, summaries, developer info, homepage/issue tracker URLs, and OARS 1.1 content ratings.
  • Store Screenshots & Visuals: Embedded native Libadwaita interface screenshots and high-resolution icons into package metadata for graphical software center presentation.
  • Package Metadata & Control Enhancements: Added Homepage upstream links, structured feature lists in DEBIAN/control, desktop window associations (StartupWMClass=lunifier, lunifier-nobtsync.desktop), and comprehensive icon aliases across /usr/share/pixmaps/ and /usr/share/icons/hicolor/.

Package Checksums (SHA-256)

Standard Edition (Full Features including Bluetooth Inter-Host Link)

Asset Size SHA-256 Checksum
Lunifier-Setup-2.2.1.exe 6.00 MB EA83B768AFB4B517B377C7181B37B7BE68DDAB0F311D39562BEF028F60DF2701
Lunifier-Windows-2.2.1.zip 6.43 MB C6B99179AC2428F7F12EC33D66E8D2809A87266FA7F13A9B382B7B3A33AE96F6
Lunifier-2.2.1.0.msix 6.74 MB 7BEDE1CAF82D967673657E75A01DC1A7A10C25157C456CFDFFC791C5D3575F39
Lunifier-2.2.1.msix 6.74 MB 7BEDE1CAF82D967673657E75A01DC1A7A10C25157C456CFDFFC791C5D3575F39
lunifier_2.2.1_all.deb 178.0 KB BC0401CE652399DE633F123365DC97315ACBA79C117F4334823F3FA50D7F07F7
Lunifier-Linux-2.2.1.tar.gz 246.2 KB 4D42E6AF304415287BC270F80E35E90D1423E5E71A7261CDADC47CCC55D8EF78

Standalone No-BtSync Edition (No RFCOMM Inter-Host Sync)

Asset Size SHA-256 Checksum
Lunifier-Setup-2.2.1-nobtsync.exe 6.01 MB 5C9663E10382A860E7FAF81DA721A0A0ED0F057626AD3F0573E7F71FEA47D0A7
Lunifier-Windows-2.2.1-nobtsync.zip 6.42 MB 39ED1BA13F1D960CB86BF9DF6385258DA03B1F6A7DCA3F27828391E2197478FE
Lunifier-2.2.1.0-nobtsync.msix 6.74 MB B4F63F17905E3CAD3B8EBDEB6F616C53BCFE7BD775FDC8BC982742F7216C2B02
Lunifier-2.2.1-nobtsync.msix 6.74 MB B4F63F17905E3CAD3B8EBDEB6F616C53BCFE7BD775FDC8BC982742F7216C2B02
lunifier_2.2.1-nobtsync_all.deb 178.4 KB 9E7C621BE63A7B1F322B2CF154BDCBC8368CDAB258FE60FF0914DF72A74FABA6
Lunifier-Linux-2.2.1-nobtsync.tar.gz 246.2 KB DB25BD2E13F4B76CA84503F2D4E7A011B93E87438861F244FC3515CA53F182AB

Note

MSIX Package Naming (2.2.1 vs 2.2.1.0):
Lunifier-2.2.1.0.msix and Lunifier-2.2.1.msix (as well as their respective -nobtsync counterparts) are bit-for-bit identical binary packages with matching SHA-256 checksums. The 4-part quad version 2.2.1.0 is strictly mandated by the Windows AppX/MSIX packaging specification (AppxManifest.xml) and Microsoft Partner Center / Windows Store upload validation (Major.Minor.Build.Revision). The 3-part 2.2.1 filename is provided as an alias matching standard semantic versioning and GitHub release tag conventions. Either package can be installed interchangeably.

Lunifier 1.0.10

Choose a tag to compare

@silviuk silviuk released this 25 Sep 10:20

Lunifier v1.0.10 Release Notes

Lunifier v1.0.10 delivers official Windows Store / Partner Center-compliant MSIX packaging for the v1.x Python runtime series, built with Microsoft's MakeAppx tool with Open Packaging Conventions (AppxBlockMap.xml, [Content_Types].xml), complete High-DPI visual tile/logo scale variants (scale-100, scale-200, targetsize-44, targetsize-24), cleaned application staging free of macOS .DS_Store metadata, and updated Linux Debian packages.


Highlights in v1.0.10

  • Windows Store / Partner Center Compliance: Built with Microsoft MakeAppx.exe, generating genuine block map files (AppxBlockMap.xml) and [Content_Types].xml required by Microsoft Partner Center.
  • Manifest Schema Fixes: Properly maintained standard XML declarations and OS dependency version constraints (TargetDeviceFamily MinVersion="10.0.17763.0").
  • High-DPI Visual Assets: Generated complete scaling suites (100% and 200% scale for Square44x44Logo, Square150x150Logo, Wide310x150Logo, StoreLogo, and unplated 44px/24px taskbar icons).
  • Cleaned Packaging: Stripped development and macOS metadata files (.DS_Store) from the packaged distribution.

Package Checksums (SHA-256)

Asset Size SHA-256 Checksum
Lunifier-Setup-1.0.10.exe 16.84 MB A4DD49757FB019C5EEDDB973F7B9907323600C6DC324521FF2FC70F6F2732791
Lunifier-Windows-1.0.10.zip 21.78 MB CCF5FBC2A0C31146B912BB46709A3C95706CE69D239AC86233A9652A302BAB1E
Lunifier-1.0.10.0.msix 23.27 MB AEC00DCD402C735D105726F87955C33104E8F1FF7790BDAB43CCB2EF1F15C4C3
Lunifier-1.0.10.msix 23.27 MB AEC00DCD402C735D105726F87955C33104E8F1FF7790BDAB43CCB2EF1F15C4C3
lunifier_1.0.10_all.deb 186.2 KB A6A793FC7B0AC9933DB1E31EA73EC488F423DE0F7CC1AB9B208CE9B351DB1749
Lunifier-Linux-1.0.10.tar.gz 327.3 KB 7BEF29E34C127B491A72B5D1FB6DB2851D72E8349BD1FB5C776B2CA4E10A179B

Lunifier 2.2.0

Choose a tag to compare

@silviuk silviuk released this 24 Sep 09:47

Lunifier 2.2.0 Release Notes

Lunifier 2.2.0 resolves mouse switching failures and memory leaks on Windows, introduces the new Standalone No-BtSync Edition (-nobtsync) for both Windows and Linux, brings a redesigned centered tab bar to the Linux Libadwaita interface for crystal-clear readability, adds an integrated logging level selector and "Copy Logs" button directly into the Live Logs tab, and makes the log viewer dynamically scale to fill the full window space.


Highlights & Fixes in v2.2.0

1. Windows Mouse Switching & Receiver Endpoint Resolution (Top Priority)

  • WPID Table & Dongle Key Matching: Fixed inverted WPID table mappings (identifying MX Master 3 as 0x4082, MX Master 3S as 0x4090, MX Master 2S as 0x4086, and Craft Keyboard as 0x4069). Standardized endpoint grouping per physical USB receiver dongle by stripping OS collection suffixes, correctly pairing short (col01) and long (col02) report handles.
  • Instant Receiver NVRAM Decoding: Implements pre-query endpoint queue draining and decodes the internal receiver pairing table (0x10 0xFF 0x83 0xB5), retrieving paired WPIDs with 0ms latency even when devices are in low-power sleep mode.
  • Candidate Feature Bursting: When devices are sleeping or their Change Host feature index is not yet resolved, sends candidate feature indices (0x08, 0x09, 0x0A) with short spacing without premature loop break, guaranteeing mice (which use feature index 0x08) switch reliably.
  • Switch Concurrency Guard: Added switch concurrency protection to ensure rapid screen border crossings do not launch overlapping switch operations or race on receiver USB handles.

2. Windows Performance & Memory Optimization

  • UI Log Ring Buffer: Implemented ring-buffered truncation in the WPF Live Logs viewer, capping character storage at 40,000 characters and preventing Dispatcher thread lockups and memory growth during extended background operation.
  • Cooldown Log Throttling: Throttled border cooldown debug logging to at most once per 500ms, eliminating high-frequency dispatcher flooding.
  • Automatic Log File Rotation: Added 5 MB file size bounding and automatic .old log rotation to prevent unbounded disk growth.

3. Standalone No-BtSync Edition (-nobtsync) for Windows & Linux

  • Dedicated Packages: For users who want screen-edge Logitech Easy-Switching without computer-to-computer Bluetooth RFCOMM communication.
  • Clean UI & Zero RFCOMM Overhead: Omits the "Bluetooth Inter-Host Link" tab entirely and disables all background RFCOMM discovery and listener threads.
  • Full Logitech Bluetooth Peripheral Support Maintained: Direct Bluetooth Logitech mice and keyboards switch natively via OS HID++ pipes; only inter-computer P2P sync is excluded.
  • Packaged as .exe, .zip, .msix (Windows) and .deb, .tar.gz (Linux).

4. Linux UI Redesign: Centered Tab Bar & Clean Spacing

  • Moved the Adw.ViewSwitcher tab navigation out of the congested header bar into a dedicated, centered horizontal container one level lower.
  • Full tab labels and icons are cleanly spaced, completely visible, and never crowded by window buttons or header controls.

5. Linux Live Logs: Copy Logs, Compact Font & Dynamic Scaling

  • Added a dedicated "Copy Logs" button in the Live Logs header bar with clipboard copy and instant visual feedback ("Copied!").
  • Reduced log display font size by one size (compact 8.5pt monospace) for clean, readable, high-density diagnostic output.
  • Added an integrated "Logging Level" dropdown selector directly in the Live Logs controls bar, bidirectionally synchronized with the Advanced tab.
  • Replaced the constrained preferences group layout with a dynamic Gtk.Box container, allowing the log viewer (Gtk.ScrolledWindow + Gtk.TextView) to dynamically expand and fill all remaining window space.

Package Checksums (SHA-256)

Standard Edition (Full Features including Bluetooth Inter-Host Link)

Asset Size SHA-256 Checksum
Lunifier-Setup-2.2.0.exe 6.01 MB FD5F75E0F0DDD3470F547F133B5E2EAB7FF7B980F58275D5A4139DD057F9A62E
Lunifier-Windows-2.2.0.zip 6.43 MB A7FFBC302F760545FC6F50C956404116D50061695B6467222F6150B56466C48F
Lunifier-2.2.0.0.msix 6.47 MB C7EC59CF1722500F01C73021D4A4795B99FB13669663BEA866F005EF88A182FC
lunifier_2.2.0_all.deb 170.7 KB 5E6F58D8DC7ED8A998D41B04A4AA9B869A3804B4F03AF8AEEA39BF8E7E0C29EA
Lunifier-Linux-2.2.0.tar.gz 239.1 KB 3A8AFC1CD6433768E5FCDE5EDFBFE02D85386C383AEA40772CA1C25B2DA5018B

Standalone No-BtSync Edition (No RFCOMM Inter-Host Sync)

Asset Size SHA-256 Checksum
Lunifier-Setup-2.2.0-nobtsync.exe 6.00 MB 619D3DA0211C61048BB3DF686A9F4F8879D0EC8B52E14EEC854DDBEA6A87AE05
Lunifier-Windows-2.2.0-nobtsync.zip 6.42 MB 781F79788953B1CCFA9DA2C887660988534C5E81EC4BA414970303573248681A
Lunifier-2.2.0.0-nobtsync.msix 6.47 MB B44780749AFDD4379E34CF953D8E8623C6C70B515BD35382BBCA74C42DDBCD57
lunifier_2.2.0-nobtsync_all.deb 170.7 KB 83D23E55BCD470DAFEE3D88F8981A26C2B049CDC8A1D6825781E492352D9009A
Lunifier-Linux-2.2.0-nobtsync.tar.gz 239.1 KB 6B4FAE8CD568A312F0084D607B5B47BE1B9B2C13A76ACD9E0B03A45E6DC9D5CA

Lunifier 2.1.9

Choose a tag to compare

@silviuk silviuk released this 24 Sep 09:23

Lunifier 2.1.9 Release Notes

Lunifier 2.1.9 addresses critical edge dwell triggering reliability across Windows and Linux, fixes multiple monitor border overlay rendering and resolution scaling, introduces dynamic accent color support with vector-smooth rounded convex border indicators, and adds an integrated "Start minimized to system tray" option.


Highlights & Fixes in v2.1.9

1. Screen Border Dwell Hold & Switching Fix (Top Priority)

  • Continuous Cursor History: Eliminated premature history bypasses so mouse motion is continuously recorded leading up to border contact.
  • Reliable Dwell Hold Triggering: Holding the cursor against a configured screen border for the configured dwell duration (HoldDelayMs, default 250ms) now directly and reliably triggers the hardware switch sequence across Windows and Linux.
  • Return Guard & Cooldown Synchronized: Cleaned state resets so return guards and cooldown timers do not block intentional switching.

2. Multi-Monitor Border Overlay & Resolution Fix

  • Eliminated Phantom Bars on Disabled Screens: In multi-monitor configurations where only one screen is enabled for border switching, secondary and disabled monitors no longer display extraneous border bars when adjusting settings.
  • Per-Monitor Overlay Windows: Replaced virtual desktop spanning with dedicated per-monitor overlay window positioning, completely eliminating cross-monitor DPI distortion and misplaced bars in the middle of screens.
  • Strict Active Channel Filter: Overlays are exclusively displayed for monitors that have active channels assigned.

3. Dynamic Accent Colors & Vector-Smooth Convex Bars

  • Windows Accent Color: Border indicator bars now dynamically inherit your Windows personal accent color (HKCU\Software\Microsoft\Windows\DWM\AccentColor / SystemParameters.WindowGlassBrush), falling back to vibrant Logitech orange (#FF5722).
  • Linux GNOME Accent Color: Linux indicators query GNOME accent colors via gsettings, falling back to #FF5722.
  • Rounded & Convex Geometry: Border indicators feature rounded corners (R=3px) and a subtle convex bulge (B=3.5px) towards the screen center, rendered using DirectX vector PathGeometry with sub-pixel anti-aliasing (completely free of jagged edges).

4. "Start Minimized to System Tray" Option

  • Added an explicit "Start minimized to system tray" setting in both Windows WPF and Linux Adwaita user interfaces and saved persistently in config.json (start_minimized).
  • When enabled, Lunifier starts directly into the system tray without flashing or showing the main window on startup.

Understanding Dwell Hold Delay vs. Switch Cooldown

  • Dwell Hold Delay (HoldDelayMs, default 250ms):

    • What it is: The minimum amount of continuous time your mouse cursor must remain pressed against a configured screen border before a switch is triggered.
    • Why it is necessary: Without a hold delay (delay = 0ms), touching the screen boundary triggers an immediate switch. This causes accidental switches when interacting with window title bars, tabs, corner buttons, or scrollbars near screen edges. Dwell holding verifies deliberate intent to leave the screen.
    • How it affects switching: Lower values (50–100ms) make switching feel instantaneous; higher values (300–500ms) require deliberate pressure against the screen edge.
  • Switch Cooldown (CooldownMs, default 500ms):

    • What it is: The lockout/grace period after a switch successfully completes, during which the screen borders are temporarily inactive.
    • Why it is necessary: Prevents "ping-pong" bounceback loops where moving into the new screen immediately trips a border on the target machine and bounces right back. Also gives Bluetooth and RF receivers time to complete packet transmission without RF collisions.
    • How it affects switching: After switching, borders are safely locked for 500ms so you can move your cursor inward on the target screen. Once 500ms elapses, normal border switching is re-armed.

Package Hashes (SHA-256)

File Size SHA-256 Checksum
Lunifier-Setup-2.1.9.exe 6.27 MB EA8BEB9FF4F9B0F6255C4A99B3BF164619978687AB7AA5C315F38670609184A8
Lunifier-Windows-2.1.9.zip 6.73 MB 8FF2078457B51C04B99DB7B5167BD8DE3D8707F721237D2C499D410FB55D16E0
Lunifier-2.1.9.0.msix 6.77 MB 309E0112794CF8764ADD58981CF1E324BFA003612856907A25C2AB554DB292D3
lunifier_2.1.9_all.deb 174.1 KB CD4D89B18AC097BF47E71A2D42AA13B8097F3D8ACC327E4DB9423C946574A4FE
Lunifier-Linux-2.1.9.tar.gz 244.3 KB 0E6DD3BBFD8575A76F8DE73A378B1177D312E564686FF1AF6B2BAD51E9F563B7

Lunifier 2.1.8

Choose a tag to compare

@silviuk silviuk released this 24 Sep 08:25

Lunifier 2.1.8 Release Notes

Lunifier 2.1.8 delivers comprehensive size optimizations, zero-allocation ring buffer edge tracking, fast-path CPU skipping, visual theme brush synchronization, and runtime dependency checks across Windows and Linux.


Highlights & Fixes in v2.1.8

1. Size Optimizations & Codebase Cleanups

  • Removed Legacy Codebase: Purged obsolete root Tkinter v1.x packages and stale build manifests, stripping over 6,100 lines of dead code and unreferenced assets.
  • Streamlined Dependencies: Removed redundant System.Text.Json NuGet dependency from the Windows engine by leveraging the runtime's native assembly.
  • Stripped Debug Symbols: Excluded .pdb symbol files from all distribution packages, saving user disk space and network bandwidth.
  • Reduced Final Footprints: The Windows Inno Setup installer executable is reduced to 6.27 MB and the MSIX package to 6.77 MB.

2. Performance & CPU Optimizations

  • Zero-Allocation Ring Buffer: Replaced dynamic queue allocations in Windows EdgeDetector.cs with a pre-allocated 64-item ring buffer and reusable lock, eliminating GC pressure during mouse tracking.
  • Fast-Path Interior Bounding Box: Screen collision logic now immediately skips all edge vector math whenever the mouse pointer is safely inside the screen interior.
  • Linux Process Spawning Hazard Removed: Cached xdotool executable discovery to prevent repeated 15ms subprocess lookups.
  • Calibrated Cursor Repositioning: Standardized inward cursor repositioning displacement to 60px across Windows and Linux, eliminating cursor jump jank while maintaining border bounceback prevention.

3. Visual Polish & Dynamic Theming

  • Dynamic Version Resolution: About and footer labels across Windows WPF and Linux Adwaita resolve the active version dynamically via reflection/package metadata.
  • Dynamic Theme Brush References: Converted device lists and Bluetooth peer lists to SetResourceReference, ensuring instantaneous contrast updates when toggling between Windows Dark and Light modes.
  • Flexible Button Geometry: Applied responsive minimum widths and symmetric padding to prevent button clipping.

4. Packaging & Runtime Dependency Checks

  • .NET 9 Desktop Runtime Checker: Inno Setup installer now verifies whether Microsoft .NET 9 Desktop Runtime (x64) is present. If missing, it prompts the user and offers to launch the official Microsoft download URL.
  • Enhanced Debian Package: Updated Linux package metadata with python3-evdev and bluez recommendations, and configured the systemd user service to launch with --minimized.
  • Automated Test Suite: Verified 100% pass rate across all 52 unit tests.

Package Hashes (SHA-256)

File Size SHA-256 Checksum
Lunifier-Setup-2.1.8.exe 6.27 MB DB856741A6C4BCFC128843E40682404D006C5A24D2AE826B869B6CF91676487F
Lunifier-Windows-2.1.8.zip 6.73 MB C7B259D62AAF844B2A66FF602C181438EC07B5A88FE7DBACB35E08381641FEB0
Lunifier-2.1.8.0.msix 6.77 MB 44236D03AD8D7DB527E70D47421CC9CE29940F30307A397EC991C4580F6AFFA7
lunifier_2.1.8_all.deb 173.5 KB 4245532040253756299A79534899B8550016470368B73FFA6B6920C26A81FD86
Lunifier-Linux-2.1.8.tar.gz 243.3 KB 392CCF8F752A1E97D5E251F106F296E653511A29B10DD25A92397299011BA091

Lunifier 2.1.7

Choose a tag to compare

@silviuk silviuk released this 24 Sep 07:08

Lunifier 2.1.7 Release Notes

Lunifier 2.1.7 introduces major reliability enhancements for peripheral switching, eliminates cursor stutter/jank during screen boundary tracking, refines light mode visual contrast across all controls and device lists, and ensures the Linux service persists in the background with system tray integration.


Highlights & Fixes in v2.1.7

1. Keyboard Switching Reliability

  • Multi-Burst Wake Transmission: Battery-saving keyboards (MX Keys, Craft, ERGO K860, etc.) often sleep between keystrokes. When switching, Lunifier now emits 3 successive burst packets spaced 25ms apart to wake the peripheral's RF transceiver and guarantee acknowledgement.
  • Keyboard-First Switching Order: When multiple devices share a Unifying or Logi Bolt USB receiver, keyboards are now commanded before the active mouse, preventing RF queue bottlenecks.
  • Dongle NVRAM Pairing Pre-Scan: Reads the receiver internal pairing table (0x10, 0xFF, 0x83, 0xB5) to detect paired slots and WPIDs without RF timeouts, ensuring sleeping devices are permanently retained across rescans.

2. Default Cooldown Reduced to 500ms

  • Lowered default switch cooldown from 2500ms to 500ms across Windows and Linux.
  • Enables responsive and prompt re-switching without annoying delays when touching border boundaries. Slider range expanded to 200ms–5000ms.

3. Eliminated Mouse Pointer Jank & Stutter

  • Changed background edge tracking thread priority from AboveNormal to Normal to prevent scheduler preemption of Windows DWM and mouse driver polling.
  • Tightened edge tolerance from 5px to 2px, preventing cursor encounters with scrollbars and window edges from falsely triggering boundary hits.
  • Removed the arbitrary 300ms hold bypass that caused unintended switches while scrolling or dragging windows.
  • Decreased inward cursor stepback from 160px to 60px, eliminating jarring cursor repositioning.

4. Light Mode Contrast & Styling Overhaul

  • Permanently eliminated black text on blue accent buttons by scoping an explicit white TextBlock style within Button.ContentPresenter.Resources.
  • Replaced low-contrast light sky blue (#38BDF8) and light gray (#94A3B8) in device and peer lists with dynamic theme-aware colors (#0284C7 and #334155 in light mode).
  • Improved overall light theme palette: secondary text (#334155), section headers (#0369A1), and live logs (#0F172A) for high WCAG AAA readability.

5. Linux Background Service Persistence & System Tray

  • Added native D-Bus StatusNotifierItem (SNI) and DBusMenu integration (tray.py).
  • Closing the Linux main window now hides the window and keeps the Lunifier service running smoothly in the background.
  • System tray menu allows restoring/presenting the main window or cleanly quitting the application.

Package Hashes (SHA-256)

File SHA-256 Checksum
Lunifier-Setup-2.1.7.exe 47D191A9D1C56A1351D624BCC4A0E77AF16503C086B57EC28289190DFCB69067
Lunifier-Windows-2.1.7.zip 73D9D40DBBAF7D5EF44B4755FE23E990C92A4D95AE85698A7497CDE41BD6788F
Lunifier-2.1.7.0.msix DB46B13E0022C7CDEA916FF40505117F819FAD4E00074C1A3F9471E497ED968E
lunifier_2.1.7_all.deb 815614af9bea066ef534d3acbdf5c1eca7e66dfe35b040e1bf1509b76864a9e4
Lunifier-Linux-2.1.7.tar.gz 7b521cdbdce2601671f011aaa91b62afeb74a4c9ca208bc6ac9c2103bf8ba74d

v2.1.6 - Bluetooth Fixes, Receiver Reliability, Border Loop Guard & Start Minimized

Choose a tag to compare

@silviuk silviuk released this 23 Sep 06:34

Lunifier 2.1.6 Release Notes

Lunifier v2.1.6 brings comprehensive feature parity, critical reliability fixes, and layout synchronization across Windows and Linux.

What's New & Improved in v2.1.6 (Windows & Linux)

1. Bluetooth Low Energy & Direct Bluetooth Device Switching

  • Windows: Fixed device discovery by opening HID endpoints with query access (0) instead of exclusive access, eliminating ERROR_ACCESS_DENIED and ERROR_SHARING_VIOLATION from Windows hidbth.sys / mouhid.sys. Added full recognition of Bluetooth Low Energy GATT paths ({00001812-...}) and prioritized vendor TLCs (UsagePage 0xFF43). Implemented multi-tiered Win32 write fallback (Overlapped WriteFile -> synchronous WriteFile -> HidD_SetOutputReport -> HidD_SetFeature) and 20ms connection-interval repeat bursts.
  • Linux: Enhanced direct Bluetooth and /dev/hidraw device handling.
  • Both: Added friendly device PID name mapping (M720 Triathlon, MX Master 3/3S, MX Keys/Mini, K380, K780, Craft, Lift, etc.).

2. Edge Detector Border Bounceback Loop Prevention

  • Immediate Inward Stepping & Guard Arming: Cursor is immediately repositioned 160px inward and the return guard is armed as soon as the edge trigger fires before asynchronous hardware switching completes, preventing cursor pinning at border coordinates while hardware responds.
  • 50px Deliberate Return Threshold: Increased physical mouse movement detection threshold to 50px (dx² + dy² > 2500) to prevent sensor noise and hand tremors from accidentally disarming the return guard.

3. Unifying & Bolt Receiver Keyboard Switching Reliability

  • Sequential Dongle Switching: Replaced concurrent parallel packet transmission to the same receiver with serialized device switching and a 30ms inter-device pause, eliminating 2.4GHz RF packet collisions on single-radio USB dongles.
  • Dual-Report Wake Bursts: Sends both Long Report (0x11) and Short Report (0x10) on col01, waking sleeping battery-saving keyboards so they switch alongside the mouse every time.

4. Start Minimized at Boot / Login

  • Windows: Added --minimized command-line switch support to start Lunifier silently in the system tray without showing the main window. Updated autostart registry configuration and Inno Setup installer tasks.
  • Linux: Added --minimized and --daemon argument handling in launcher, and updated ~/.config/autostart/lunifier.desktop to launch minimized on desktop login.

5. Modern Native UI & Layout Synchronization

  • Advanced Tab Reorganization: Synchronized layout across Windows and Linux—renamed "Connected Devices" to "Advanced", moved "Edge Trigger Sensitivity" and "Hardware & Logging Options" into "Advanced", and added a dedicated "Save" button to the top header row.
  • Visual Screen Border Indicator: Implemented live orange border overlays (#FF5722, 6px thickness) with a 1.5-second auto-hide timer whenever adjusting the active zone percentage slider, changing border edge assignments, selecting a monitor, or saving configuration (WPF canvas overlay on Windows, non-blocking X11 override_redirect windows on Linux).
  • Package Version Parity: Synchronized all Windows (Lunifier.Windows.csproj, AppxManifest.xml, installer.iss) and Linux (pyproject.toml, lunifier/__init__.py, About window) project files to 2.1.6.

Artifact Checksums (SHA-256)

File Description SHA-256 Checksum
Lunifier-Setup-2.1.6.exe Windows Inno Setup Installer 61A57DD0371912EC2C8000CFAE7AD7494A1C773C7AEB1B9BB667D95BB7BA3F09
Lunifier-Windows-2.1.6.zip Windows Portable x64 44192E35CD7422392569E4AE7D3DBEC6F758C1F99E0B08B3C01036067A5F9C19
Lunifier-2.1.6.0.msix Windows Store / Enterprise MSIX CC0FBA98A08DC8FD79E4F1D8967569509E235EB0F8654D06B4EF2434667770BE
lunifier_2.1.6_all.deb Debian / Ubuntu Package EAF5BCD04989077C5D621BCC8DEABCEDC58E1A302DD2B61350C785AF03A6465E
Lunifier-Linux-2.1.6.tar.gz Linux Portable Tarball F3B138796711B62215E2EA9CA0139AA03E3CE9192D2E8710FAFAD900BFC7E03C

Lunifier 2.1.5 - UI Theming, Contrast & Tab Reorganization

Choose a tag to compare

@silviuk silviuk released this 23 Sep 06:13

Lunifier 2.1.5 Release Notes

Lunifier v2.1.5 delivers essential UI contrast and readability enhancements across Light and Dark themes, unified button and status badge dimensions, and an organized tab layout for Windows 11 native (.NET 9 WPF).

What's New & Improved in v2.1.5

  • High-Contrast Readability across Light & Dark Modes:
    • Fixed dark text appearing on blue buttons in Light mode by enforcing pure white text in the button control template resources.
    • Redesigned the service status badge (RUNNING / STOPPED) into a high-contrast solid pill (#16A34A vibrant green / #DC2626 crimson red) with bold pure white centered typography.
    • Replaced low-contrast light green on green and light red on red status labels with dynamic theme-aware high-contrast colors (#15803D / #DC2626 in light mode, #4ADE80 / #F87171 in dark mode).
  • Uniform Button & Status Badge Dimensions and Alignment:
    • Centered all button text both horizontally and vertically across the entire application.
    • Aligned running status badge and start/stop service button with identical dimensions (130x32px), matching corner radius (4px), and centered typography.
  • Tab Layout Reorganization:
    • Renamed "Connected Devices" tab to "Advanced" and wrapped contents in a smooth scroll viewer.
    • Relocated "Edge Trigger Sensitivity" and "Hardware & Logging Options" cards from "Screen & Switching" into the "Advanced" tab, keeping "Screen & Switching" focused exclusively on Host Identity and Display/Border configuration.
    • Relocated the "Save Configuration" button to the top header row alongside the service status badge and toggle button, removing the redundant footer button.

Artifact Checksums (SHA256)

Asset Description SHA256 Checksum
Lunifier-Setup-2.1.5.exe Windows Inno Setup Installer 107833C206E922C74D5A581C47F4D3C0054FBBB06A6D63E57C15A199B8C680E1
Lunifier-Windows-2.1.5.zip Windows Portable x64 A1BD1C005AE700CE78F472BCEFD15DFD0997B7EED2F232AA1381834126FACDC7
Lunifier-2.1.5.0.msix Windows Store / Enterprise MSIX 6215CD7F45915EEE735239C01EBF401F835ABB450DA1B9AF88A119FCB1B5538C
lunifier_2.1.5_all.deb Debian / Ubuntu Package BA1D7D6775A46E5C707408417B78EE21265BB1D2F2CA8F4AA6C80ED7E07E166C
Lunifier-Linux-2.1.5.tar.gz Linux Portable Tarball EDEB545AFFF6C60091D5B20CB571123489E98F663FA59B9FD7DC5F5598A861B7

Lunifier 2.1.4

Choose a tag to compare

@silviuk silviuk released this 23 Sep 05:58

Lunifier 2.1.4 Release Notes

Lunifier v2.1.4 delivers critical performance and reliability upgrades for Logitech hardware switching, non-blocking receiver device scanning, uniform UI controls layout, and Windows hostname resolution on Windows 11 native (.NET 9 WPF).

What's New & Fixed in v2.1.4

1. Non-Blocking HID++ Device Scanning & Hardware Switching

  • Fixed Device Scan Hang: Overhauled HidppEngine to use asynchronous Win32 Overlapped I/O with strict 75ms timeouts per slot when scanning receiver paired devices (MI_02&Col02). Eliminated synchronous blocking ReadFile kernel calls that previously froze the scanning and edge detector threads.
  • Dedicated HID++ Collection Routing: Receiver paired device queries now route exclusively to Logitech Long Report endpoints (UsagePage == 0xFF00 && Usage == 0x0002 / Col02). Short report commands are additionally sent to Col01. Non-HID++ collections (MI_00, MI_01) are safely filtered out.
  • Asynchronous Border Switch Dispatch: Hardware switching from OnEdgeTriggered is now dispatched in background threads (Task.Run), ensuring the screen border detection thread never stalls or misses cursor movements.
  • Smarter Return Guard Activation: The cursor park and return guard are now only engaged if at least one Logitech device confirms a successful switch, preventing user lockout if hardware switching fails.
  • Cooldown Clamping & Live Feedback: Return guard duration is clamped to a maximum of 1000ms upon mouse return, and border touches during cooldown are logged in Live Logs with remaining milliseconds for full diagnostic transparency.

2. Windows System Hostname Default

  • Automatic Hostname Resolution: The default hostname is now dynamically resolved from Windows (Environment.MachineName) instead of the hardcoded "Host" label, matching user expectations across P2P inter-host links.

3. Uniform UI Layout & Input Alignment

  • 32px Control Height Standard: Standardized all text fields (TextBox), dropdowns (ComboBox), and adjacent action buttons (Button) to a uniform height of 32px with centered vertical content alignment across all tabs.
  • Multiline Log Viewer Optimization: Preserved full adaptive scaling and text wrapping for the Live Logs box (LogsBox) while giving input controls clean, modern spacing.

Release Artifacts & Checksums

Package Platform / Target SHA-256 Checksum
Lunifier-Setup-2.1.4.exe Windows Inno Setup Installer 37A6C7133D144532500A33BC8287ABB92B6DB120535CF818EC809C08BC2927A5
Lunifier-Windows-2.1.4.zip Windows Portable x64 285BFBA456A4FA69E03F0B566ABEAF1170565029E874D71C28C0FBB4017E08F9
Lunifier-2.1.4.0.msix Windows Store / Enterprise MSIX C382F9FE7583813D975CF47A22A7B87854F752CDD0A3E4E90705994EA8CB3469
lunifier_2.1.4_all.deb Debian / Ubuntu Package 2F2F4557D1BB7A39CED346C2B63E607FDFA091891695CD767A739ACE64F82315
Lunifier-Linux-2.1.4.tar.gz Linux Portable Tarball 2A841928EF0D4E9D3AF7D9AB81B2B3E8D161AB0687D7E598DB834C39B15EC88E