What's Changed
Features
- Remove the generic connection failure dialog by @sithlord48 in #9498
- Suggest also ipv6 by @sithlord48 in #9505
- Make a Status bar widget by @sithlord48 in #9507
- Disable screen rename when core is running by @sithlord48 in #9515
- Settings adjust by @sithlord48 in #9531
- Window settings by @sithlord48 in #9544
- Allow for run command on enter or exit by @sithlord48 in #9564
- fix: adjust command line size to allow expanding by @sithlord48 in #9589
- Timeout longer by @sithlord48 in #9607
- Have the Messages check settings on their own by @sithlord48 in #9637
- Replace
LOG_IPCwith actual IPC by @nbolton in #9458 - Closes core upon accessibility permissions revocation by @amagus in #9579
- Improve connection stability by @AlD in #9616
- Protocol settings in main settings only. by @sithlord48 in #9667
- feat: Print Qt logs same as other log lines by @nbolton in #9685
- feat: handle input capture session persistence by @whot in #9415
- Use QStrings for exceptions whats by @sithlord48 in #9713
- Log updates by @sithlord48 in #9726
- feat: add search evdev.xml path for NetBSD/OpenBSD by @jg1uaa in #9744
- refactor: include install info in about info by @sithlord48 in #9752
- Fix client network bind by @alizane in #9672
- Better local fingerprint preview by @sithlord48 in #9816
- Mv grid info outof server config by @sithlord48 in #9837
- Cleanup protocol remnents by @sithlord48 in #9838
- Move more to general settings by @sithlord48 in #9848
- Move more server options to new settings by @sithlord48 in #9859
- Clipboard support for Wayland (input capture and remote desktop portals) by @whot in #9431
- Move aliases to general config by @sithlord48 in #9879
- fix: defer client disconnect cleanup by @happys2333 in #9958
- fix(wayland): only add input-capture barriers on the outer desktop edge by @TSUMUGI-XE in #9976
- fix: release EIS emulation grab when idle so client screens can sleep by @ElCruncharino in #9894
- Better help by @sithlord48 in #10002
- Token in state by @sithlord48 in #10015
- feat(macos): preserve the left/right side of modifier keys on the client by @rNoz in #9916
- Accumulate smooth scroll into full wheel clicks on server by @neon12345 in #9975
- refactor: no need to call setAppId for gui as the App does it on its own by @sithlord48 in #10048
- fix(macos): build key map with UCKeyTranslate to honor keyboard type by @fruitriin in #10046
- fix(wayland): fix mouse scroll jitter and missing scroll events on a wayland host to a mac client by @sawicky in #9993
- Better readonly settings by @sithlord48 in #10058
- More updates to Server Config Dialog by @sithlord48 in #10067
- Default action for help dialog by @sithlord48 in #10075
- Prep for more items in general configuration by @sithlord48 in #10077
- ci: disable fedora h264 repo we do not need this by @sithlord48 in #10105
- Deletion of dead code, refactor and correcting logging messages by @KoljaFrahm in #10116
- Support a clean exit of the client by @KoljaFrahm in #10111
- feat: support link-local connections in Preferences dialog by @eean in #9566
- Portal Globalshortcuts implementation by @KoljaFrahm in #9858
- Move more screen options to the general config by @sithlord48 in #10161
- feat: Upgrade settings 1.26 -> 1.27 by @sithlord48 in #10186
- Use computer not Screen by @sithlord48 in #10195
Fixes
- fix: Read fingerprint data before applying the initial config to prev… by @sithlord48 in #9484
- fix: XWindowScreen, do not send a scroll delta for 0 by @sithlord48 in #9479
- fix: Settings dialog blocking return to Automatic by @sithlord48 in #9503
- Do not call showAndActivte for errors we don't plan to show a dialog for by @sithlord48 in #9517
- Fix tls icon for clients by @sithlord48 in #9525
- Misc fixes by @sithlord48 in #9527
- fix: properly handling infinite timeout for macOS on EventQueue by @amagus in #9530
- fix: do not reset network if old interface is missing by @sithlord48 in #9553
- fix: retry OpenClipboard() on Windows by @nbolton in #9563
- fix: kill core orphan on gui death (linux) by @nbolton in #9582
- fix: plus key as hotkey support by @jasonmit in #9585
- fix: prevent daemon ipc client from sending multiple messages at the same time by @amagus in #9591
- fixes AltGr for clients w/windows+finnish-layout. by @aalm in #9441
- Scroll log widget when appending a new line by @sithlord48 in #9628
- fix: clipboard buffer overrun using propose solution from kitknox by @sithlord48 in #9663
- Use Maximum for the high of the mode selection to prevent being cut off by @sithlord48 in #9669
- fix(tls): prevent DoS by removing blocking sleep by @nbolton in #9703
- feat(ipc): Stop bad version existing Core process by @nbolton in #9645
- fix: ensure correct screen name is set for switchToScreen by @ts-kang in #9707
- fix(macos): recognize brightness media keys by @k2patel in #9710
- fix(mac): prevent cursor warps from outside quartz event loop (if active) by @amagus in #9732
- fix(mac): protect TIS API calls with a mutex (they are not thread safe) by @amagus in #9733
- fix: do not use xdisplay to read locale on wayland by @sithlord48 in #9735
- Add Alt Gr modifier override to Screen Settings Dialog by @64johnlee in #9751
- fix: remove unneeded EVP_PKEY_new() (causes memory leak) by @jg1uaa in #9766
- Fix image copy/paste from macOS by @nbolton in #9728
- Windows misc fixes by @sithlord48 in #9777
- fix: change QString to QByteArray for exception message handling by @nbolton in #9786
- fix(macos): center cursor on primary leave to prevent first-move jump by @MomoyamaSawa in #9784
- fix: use Qt localized path for open cert by @sithlord48 in #9804
- fix: crash on windows if fixed font is missing by @sithlord48 in #9814
- fix(client): restore cursor positions locally In relative mouse mode by @MomoyamaSawa in #9789
- fix: remove ClipboardSending handler in proxy destructors (use-after-free) by @dreamingbinary in #9843
- Fix Windows start up warnings by @sithlord48 in #9868
- fix: do add existing aliases to the alias list correctly remove items on save by @sithlord48 in #9867
- Protect Clipboards with mutexes by @sithlord48 in #9874
- fix: [CVE-2026-63409] Check options array is always an even size by @sithlord48 in #9907
- fix: clamp mapped modifiers by @sithlord48 in #9935
- fix: revise scoped_lock to avoid deadlock for XWindowsClipboard by @jg1uaa in #9900
- Fix Portal IC thread cleanup on throw by @nbolton in #9952
- fix: prevent crash in fingerprint trust dialog by @nbolton in #9953
- fix: don't recenter cursor or notify server on transient EiScreen shape churn by @ElCruncharino in #9972
- fix bug of keystroke always sending the first hotkey shortcut by @tvidal-net in #9989
- fix(mac): preserve mouse event number during dragging - only affects macOS 27 by @ZeroSegFault in #9991
- fix(win): stop TLS sockets busy-spinning the socket poll loop by @ElCruncharino in #9977
- fix(macos): null-check the input source languages before counting them by @rNoz in #10009
- fix(mac): properly handle system initiated quit events by @amagus in #10005
- fix: handle top-down DIB images in clipboard bitmap converter by @mmustafasenoglu in #10023
- fix(wayland): Corrects the cursor coordinates mappings at primary desktop by @piterpunk in #10007
- fix(mac): invalidate event tap CFMachPort on disable by @MrMage in #10010
- fix: prevent modifier keys from being stuck (Windows) by @barrelltitor in #10041
- fix: prevent stuck keys on x11 client by @barrelltitor in #10044
- feat: using xkbregistry instead of manually parsing evdev.xml by @praharshaAdhikari in #9934
- fix(clipboard): check oob for clipboard before reading number of formats by @sithlord48 in #10104
- fix(wayland): Prevent clipboard causing portal reprompts if the backend is incorrectly reporting clipboard state of the previous token by @ElCruncharino in #10124
- fix(settings): keyword typo heatbeat -> heartbeat by @sithlord48 in #10144
- fix(macos): map F17-F20 keys by @sithlord48 in #10174
Build
- Require libportal 0.9.1 by @sithlord48 in #9522
- build: ensuring macOS codesign is triggered for changes in core by @amagus in #9545
- build: not using cache to store global state for macOS signing by @amagus in #9548
- Common include dir by @sithlord48 in #9651
- fix: enforce C locale in LogTests for decimal formatting by @alizane in #9665
- build(macos): remove unneeded setting for sysroot by @sithlord48 in #9698
- Remove uneeded QtGlobal include from deskflow-core by @sithlord48 in #9714
- fix: add #include to avoid 'unknown type name' error by @jg1uaa in #9757
- Fix FTBFS with OpenSSL 4.0.0 by @kenhys in #9812
- More cmake cleanup by @sithlord48 in #9985
- build: enable CMP0207 by @sithlord48 in #9979
- Remove googletest use by @sithlord48 in #9980
- Remove unneeded linux dependencies by @sithlord48 in #9981
- build: flatpak use kde platform 6.11 by @sithlord48 in #10012
- build(arch): adjust for libgcc package name by @sithlord48 in #10018
- Simplify our inner linkage by @sithlord48 in #10027
- build(win32): use zip for our portable windows release by @sithlord48 in #10177
Documentation
- repo: add an initial code of conduct by @sithlord48 in #9578
- docs: tidy up pr template by @nbolton in #9729
- chore(issue-template): improved bug report and feature request templates by @0Ky in #9748
- docs(issue-template): fix grammar in sanity checks within bug report template by @0Ky in #9767
- update gh_pages action by @sithlord48 in #9901
- docs: fix up broken screen option table and valid keys list in configuration.md by @sithlord48 in #10028
- docs: update config key list by @sithlord48 in #10031
- docs: update configuration to not include screen sections examples by @sithlord48 in #10208
CI Updates
- ci: remove winget publish step from our release job by @sithlord48 in #9489
- Ci update 3 by @sithlord48 in #9493
- ci: split build and package for mac os letting us retry dmg creation … by @sithlord48 in #9528
- ci: macos capture build package attempt do not let it write to stdout by @sithlord48 in #9535
- Add .github/release.yml by @sithlord48 in #9629
- ci(release.yml): remove stray label entry by @sithlord48 in #9631
- ci: Remove stale action by @sithlord48 in #9641
- ci: update upload-action to v7 by @sithlord48 in #9664
- CI: Node20 cleanup by @sithlord48 in #9670
- Use maintained MSVC action by @sithlord48 in #9671
- ci(bsd): pkg not found in cached VM image by @nbolton in #9691
- ci: remove fedora-42 for fedora-44 by @sithlord48 in #9704
- ci: use sonar action v8 by @sithlord48 in #9715
- Replace ubuntu 25.10 with rolling by @sithlord48 in #9749
- ci: remove ubuntu rolling package names are the as lts by @sithlord48 in #9750
- ci: use Qt 6.11.1 for windows and mac os (x86 mac is locked at 6.9.x) by @sithlord48 in #9799
- Update node20 actions by @sithlord48 in #9825
- ci: enable release note generation by @sithlord48 in #9827
- ci: update continuous tag on continuous releease by @sithlord48 in #9828
- Use custom git log format to make release comments for continuous by @sithlord48 in #9832
- ci: update sonar-cube-action/install-build-action to v8 by @sithlord48 in #9839
- ci: update flatpak to use libportal 0.10.0 by @sithlord48 in #9871
- ci: bump flatpak to use libei 1.6.0 by @sithlord48 in #9876
- ci: valgrind run ctests by @sithlord48 in #9995
- Ci adjust runner tags by @sithlord48 in #10019
- ci(mac): fix cmake retry on package by @amagus in #10072
- Update aqtinstall to allow Qt > 6.10 on windows, use Qt 6.11.2 by @sithlord48 in #10091
- ci: macOS artifacts are now signed and notarized by @amagus in #10070
- ci: bump qt to 6.11.3 by @sithlord48 in #10190
Commits
- i18n(ja): update Japanese(ja) translation by @ykasap in #9480
- Update the SettingsDialog by @sithlord48 in #9478
- i18n(ko): Update ko translation with bimppap's suggestions by @sithlord48 in #9495
- Allow daemon to have log levels + Move serverConfigFile to Settings by @amagus in #9512
- Move support files to .github by @sithlord48 in #9508
- Revert License Move by @sithlord48 in #9513
- Code cleanup 5 by @sithlord48 in #9516
- Failed client connections failues should cause its sockets to be deleted by @amagus in #9518
- Checking for server config files permissions upon start by @amagus in #9504
- i18n(es): fixing hostname field translation by @amagus in #9538
- Less defines by @sithlord48 in #9532
- docs: Update README.md include Copilot note by @sithlord48 in #9551
- doc: readme better clarify the note about model training by @sithlord48 in #9555
- refactor: port simpler KeyStateTest to QTest by @sithlord48 in #9595
- Small cleanup 4 by @sithlord48 in #9608
- Update readme 2 by @sithlord48 in #9614
- Sonar cleanup 26 by @sithlord48 in #9613
- fix: Use stale bread label by @nbolton in #9623
- Sonar cleanup 26 by @sithlord48 in #9644
- Fix privilege escalation vulnerabilities on Windows (CVE-2026-41477) by @nbolton in #9656
- doc: Adjust pr template by @sithlord48 in #9697
- Sonar cleanup 27 by @sithlord48 in #9722
- Use AbsoluteFilePath for all settings returned filepaths by @sithlord48 in #9742
- chore: remove old OpenSSL support by @jg1uaa in #9753
- Wayland per-barrier position mapping for multi monitor setup by @extra-salad in #9763
- chore: update 'Synergy App Ltd' copyright (company renamed) by @nbolton in #9836
- Move Default Lock to screen state to new settings by @sithlord48 in #9862
- move clipboard settings to Deskflow.conf by @sithlord48 in #9866
- fix: make QApp first in deskflow-core by @sithlord48 in #9875
- refactor: change server clipboard grab messages to DEBUG level by @sithlord48 in #9872
- Sonar cleanup 26 by @sithlord48 in #9873
- Correctly apply the values stored in the new settings to the server configuration by @sithlord48 in #9883
- Remove server dead corners by @sithlord48 in #9878
- refactor: replace use of insert for std::maps with try_emplace by @sithlord48 in #9884
- Remove undocumented hold modifiers to switch code by @sithlord48 in #9887
- Remove more unused Config methods by @sithlord48 in #9888
- upgrade server options section setting to new format by @sithlord48 in #9893
- i18n(ja): update Japanese(ja) translation by @ykasap in #9926
- i18n: make sure log levels text is translated by @sithlord48 in #9928
- Fix clipboard receive limits by @nbolton in #9936
- fix: restore client protocol downgrade message by @nbolton in #9941
- fix: simplify key translation logic by removing clamping by @nbolton in #9945
- fix(win32): close running Deskflow processes during MSI install by @Celant in #9794
- refactor: remove unused address option from old config by @sithlord48 in #9961
- fix(package): improve msvc runtime version check on Windows by @nbolton in #9965
- i18n(es): Change Abierto -> Abrir by @sithlord48 in #9966
- fix: capture the mouse on macOS while the cursor is on a client by @tehreet in #9963
- fix(mac): ensure background clicks work correctly on macOS 27 by @amagus in #9978
- fix: preserve locked modifiers in Wayland key state by @cjones26 in #10011
- fix(win): improve module name retrieval in findLoadedModule function by @nbolton in #10022
- refactor: replace qFatal with qCritical by @nbolton in #9833
- refactor: remove report issue link from menu users should find it via help by @sithlord48 in #10029
- Move server external config to advanced tab by @sithlord48 in #10032
- refactor: ensure tabwidgets start at index 0 by @sithlord48 in #10037
- refactor: remove unneeded includes from Core and Daemon IPC classes by @sithlord48 in #10035
- fix(macos): avoid non-selectable IME layouts for remote keys by @MomoyamaSawa in #9792
- Mv clear settings action to settings dialog by @sithlord48 in #10033
- Message rm settings message by @sithlord48 in #10034
- i18n(ja): update Japanese(ja) translation by @ykasap in #10074
- fix(win): normalise malformed macOS clipboard DIB by @zlkent in #10057
- fix(server): read boolean server options with toBool() by @AdvancedSorceryInstitute in #10096
- build(mac): enable options needed for the upcoming support of signed/notarized releases by @amagus in #10087
- ci(mac): fixing bad conflict resolution by @amagus in #10098
- fix(windows): send space for ctrl+space and shift+space with korean IME by @chmnoh in #10078
- fix(wayland): stop the cursor sticking to client screen edge by @nbolton in #10122
- fix: clear settings should wipe the state file too by @ElCruncharino in #10127
- docs: point security reports at private disclosure by @nbolton in #10145
- fix(client): validate LSYN payload length before parsing remote layouts by @wildoranges in #10110
- Only enable the screen after connecting to the client by @KoljaFrahm in #10117
- fix(wayland): track held mouse buttons in EiScreen by @drizzt in #10146
- fix(mac): run event queue events in autoreleasepool by @amagus in #10133
- fix(log): rotate the log instead of deleting it by @nbolton in #10157
- fix(wayland): sync locked modifiers from EI keyboard modifiers event by @OceanMan20 in #10152
- fix(protocol): key repeat format for pre-1.8 clients and servers by @nbolton in #10160
- fix(unix): register foreign threads in the cancel check by @nbolton in #10170
- fix(windows): correct garbled screen window name by @kv-chiu in #10165
- Move modifiers to the general configuration by @sithlord48 in #10175
- fix(gui): queue core ipc messages so modal dialogs don't block reads by @nbolton in #10182
- fix: refuse over-limit clipboard instead of disconnecting by @nbolton in #10193
- fix: use the server's clipboard limit when receiving by @nbolton in #10194
- fix(arch): preserve subsecond clock precision by @HanmiAsuka in #10180
- fix(client): default keyboard language sync to off again by @natkingsize2 in #10187
- fix(mac): wake client display on remote entry by @dfrysinger in #10024
- fix(win32): don't disable the screen twice on shutdown by @iamnotmili in #10197
- fix(win32): release thread mutex before testing for cancellation by @iamnotmili in #10200
- Release: 1.27.0 by @sithlord48 in #10212
New Contributors
- @jasonmit made their first contribution in #9585
- @aalm made their first contribution in #9441
- @alizane made their first contribution in #9665
- @AlD made their first contribution in #9616
- @ts-kang made their first contribution in #9707
- @k2patel made their first contribution in #9710
- @jg1uaa made their first contribution in #9744
- @0Ky made their first contribution in #9748
- @64johnlee made their first contribution in #9751
- @MomoyamaSawa made their first contribution in #9784
- @extra-salad made their first contribution in #9763
- @dreamingbinary made their first contribution in #9843
- @Celant made their first contribution in #9794
- @happys2333 made their first contribution in #9958
- @TSUMUGI-XE made their first contribution in #9976
- @ElCruncharino made their first contribution in #9972
- @tehreet made their first contribution in #9963
- @tvidal-net made their first contribution in #9989
- @ZeroSegFault made their first contribution in #9991
- @rNoz made their first contribution in #10009
- @mmustafasenoglu made their first contribution in #10023
- @piterpunk made their first contribution in #10007
- @cjones26 made their first contribution in #10011
- @MrMage made their first contribution in #10010
- @barrelltitor made their first contribution in #10041
- @neon12345 made their first contribution in #9975
- @praharshaAdhikari made their first contribution in #9934
- @fruitriin made their first contribution in #10046
- @sawicky made their first contribution in #9993
- @zlkent made their first contribution in #10057
- @AdvancedSorceryInstitute made their first contribution in #10096
- @chmnoh made their first contribution in #10078
- @KoljaFrahm made their first contribution in #10116
- @eean made their first contribution in #9566
- @wildoranges made their first contribution in #10110
- @drizzt made their first contribution in #10146
- @OceanMan20 made their first contribution in #10152
- @kv-chiu made their first contribution in #10165
- @HanmiAsuka made their first contribution in #10180
- @natkingsize2 made their first contribution in #10187
- @dfrysinger made their first contribution in #10024
- @iamnotmili made their first contribution in #10197
Full Changelog: v1.26.0...v1.27.0