Commit Graph

4379 Commits

Author SHA1 Message Date
b02077550c Expand BSD sockets poll tests and remove legacy-poll code (#7414)
* Move integ test to corredt place and re-enable tests

* Depend on `poll.h` (removes support for non-POSIX systems)

* Only build tests for each arch

* Move back to unit tests (poll is mocked)

* Better error message for valgrind not found

* Simplify dependency injection for BSD sockets poll test

* Improve test readability for BSD net poll

* Split out 2-in-1 test for `isAnyAddr`

* Stub out sleep function

* Improve coverage for pollSocket

* Use gmock ON_CALL instead of manual mock

* Remove unused function signature

* Use conventional deps struct instead of std functional

* Add test for socket data FD set to -1

* Add assertation for adding unblock pipe

* Use older style array alloc

* Less precision around `getNetworkDataForThread` value

* Use `ssize_t` for `ignore`

* Remove unused var

* Update ChangeLog
2024-07-29 18:04:17 +01:00
cdb6dcd597 Create CONTRIBUTING.md 2024-07-27 00:03:54 +01:00
9315b089c8 Improve UI design and reduce over-use of #ifdef (#7413)
* Rename `LicenseManager` to `License`

* Rename `LicenseManager` to `License`

* Move License class to gui lib

* Rename license related classes

* Refactor serial key parsing

* Don't fail fast on containers

* Move licensed product name from config to code

* Fixed formatting

* Update code coverage generator and fixed args

* WIP: Converting license to chrono

* WIP: Fixed compile errors, tests failing

* Fixed all serial key and license tests

* Disable verbose logging

* Add missing </p>

* Add missing include

* Revert code coverage config

* Handle parse errors

* Move more classes into the new gui lib and improve license/serial object ownership

* WIP: Fixing signal/slots in MainWindow

* Fixed slot for about to quit

* Rename manual slots to solve auto-connection warnings

* Fixed logging issue

* By default, don't close to tray

* Add .env support and furthe refactor license code, also fixed some copyright dates

* Remove test code

* Fixed memory error in .env parser and refactor more licensing display code

* Fixed color inconsistencies

* Fixed link colors and made log view expand

* Disable server components rather than hiding

* Reset years of blind UI layout fiddling

* Fixed clean Qt task

* Only show notice when time limited

* Fixed main window layout

* Show connected clients

* Set 15 spacing

* Auto connect on start

* More intentional screen size

* Fixed tests related to license

* Tests for expiry notifications

* Reorg tests and remove death test

* Update gtest

* Tests for dotenv parser

* Test command process

* What the heck is that doing there?

* Merge constants headers

* Fixed magic includes

* Remove helper function

* Remove comment

* Remove extern decl

* Update ChangeLog
2024-07-26 23:53:52 +01:00
ce3f8869e7 Reduce GUI compile time by building a GUI library (#7412)
* Call ensure_in_venv before all imports

* Create `gui` lib and link to `synergy` and test bins

* Move GUI IPC code to GUI lib

* Improve `AppConfig` members and change `minimizeOnClose` to `closeToTray`

* Group getters and setters

* Add missing `m_CloseToTray` load

* Fixed lint issue

* Add TODO comment for main window integ test

* Remove redundant comments and add override

* Remove dead code

* Update ChangeLog

* Fixed activation related compile errors

* Disable concurrency cancel jobs

* Disable fail-fast for matrix
2024-07-23 20:17:40 +01:00
a117b2ca93 Update .github/ISSUE_TEMPLATE/config.yml 2024-07-23 11:44:19 +01:00
a9cfd405e0 Add .github/ISSUE_TEMPLATE/config.yml file 2024-07-23 11:42:38 +01:00
65e6a40295 Fixed typos in README.md and clarify links 2024-07-23 10:29:57 +01:00
bce4e4078c Improve README wording relating to community edition (#7411) 2024-07-23 10:28:49 +01:00
9e302b37e5 Move quality gate badge to front of badges (#7410) 2024-07-23 10:24:47 +01:00
273bc65994 Add SonarCloud quality badge to README (#7409) 2024-07-23 10:23:51 +01:00
85b8b83a53 Implement safer memory use, improve dev env, fixed GUI bugs (#7407)
* Improve dev script for daemon

* Ignore `.user` files created by Qt

* Add `FORCE_DESKTOP_PROCESS` option

* Catch errors related to getting profile dir

* Disable IPC entirely if forced desktop

* Use in-class init for AppConfig members

* Refactor config to use safer memory management

* Improve launch config to make OS-specific debugger usage clearer

* Re-enable MainWindowTests on Windows, further refactor for memory safety, fixed some include orders

* Remove dead singleton code

* Swap order of tests

* Use HTTPs for URLs

* Fixed compile errors for `SYNERGY_ENABLE_LICENSING` compile path

* Restore exec function call

* Remove extra link in cancel dialog

* Fixed broken link on activation cancel UI

* Close dialog if activated

* Fixed macOS enum ref to kCurrentProcess

* Improve wording on cancel activation dialog

* WIP - Test timeout (compile error)

* Finished timeout logic (with smart pointer)

* Include string_view

* Switch to thread from jthread (maybe not supported by macOS compiler?)

* Improve comment

* Disable test on Windows

* Add TODO related to jthread on macOS

* Refactor settings and paths on Windows

* Launch in desktop mode on Windows

* Remove arg quote wraps which break desktop mode

* Fixed qFatal on Linux

* Remove test value

* Follow original `AppConfig` accessor convention

* Disable service checkbox if not Windows

* Simplify TLS control enable logic

* Update command and Git ignore

* Fixed code style

* Fixed include consistency

* Fixed includes in validator

* Fixed lint errors

* Update ChangeLog

* Use smart pointer for core process

* Remove unneccesary default operators

* Don't halt on stderr
2024-07-22 17:48:02 +01:00
f81901f633 Migrate scripts from requirements.txt to pyproject.toml (#7406)
* Migrate from `requirements.txt` to `pyproject.toml`

* Lower Python to 3.9 for GitHub Windows runner

* Increase timeout for valgrind

* Update ChangeLog
2024-07-19 10:35:10 +01:00
6f411e4ab8 Restore integtests and add to CI as warning comment on failure (#7404)
* Add coverage for both targets

* Use var for test bins

* Disable cmake-format comment fiddling

* Refactor GUI source config

* Use bin var for tests

* Remove unused member

* Add integration tests to CI

* Use modern cmake args

* Use max threads for build

* Use better var name for CPU core count

* Split build and configure steps

* Combine tests into action and add a PR comment

* Fixed yaml indentation in action

* Pass GITHUB_TOKEN

* Update coverage paths for SonarCloud

* Don't ignore return codes

* Add shell

* Run Valgrind on integ tests

* Use header for tests

* Save test results in table

* Move setup step outside of action

* Change logic of creating PR comment

* Remove header formatting

* Use emojis for simplicity

* Run build wrapper in build dir

* Use default make target

* Pass secrets

* Fixed SonarScanner warnings

* Don't allow unit tests to fail

* Fixed typo

* Update sonar scanner paths

* Fixed line endings

* Use step output

* Improve exclusion glob

* Exclude files from coverage

* Restore simpler pattern

* Set temp file path

* Coverage tests

* Re-create comment at start of job

* Append table header

* Add setup action

* Checkout before action

* Re-add projectBaseDir

* Restore original sonar scanner

* Use bash syntax for if

* Remove unused `shell`

* Add missing shell for valgrind action

* Restore new sonar scanner config

* Add missing shell

* Run only MainWindowTests

* Test with big change

* More changes

* Move to correct dir

* Remove test code

* Disable broken integ tests

* Switch coverage to front of filename

* Remove filter

* Refactor status step

* Disable segfault test

* Fixed: No status showing

* Add link to workflows

* Add test code for coverage

* Revert "Add test code for coverage"

This reverts commit c42309349b64f7828f2ca89149b30c5b0f93478a.

* Get workflow run URL

* Add missing shell

* Use dynamic URL in valgrind comment

* Revert "Revert "Add test code for coverage""

This reverts commit 9cff58b7ea5c581681ae6d6660c073bd76ba99aa.

* Test with commented out code

* Reintroduce 6 lines for coverage

* Test code to pass scanner

* Test code to pass scanner (take 2)

* Simplify to 2 new lines

* Add another line

* Trim changes to only 3 lines

* Add task for all tests

* Surface warning on failure

* Simplify build-wrapper step and move settings from web UI to CI

* Add missing line delims

* Also run tests action on Windows and macOS

* Add names to action steps

* Add timeout for test steps

* Add failure warning for integ tests

* Remove space

* Disable failing test on macOS

* Disable problem matcher

* Simplify names

* Disable freezing test on Windows

* Disable failing integ test on Windows

* Add build-kill task

* Ignore kill result on Windows

* Delete test code

* Update ChangeLog

* Move timeout to workflow step
2024-07-18 17:51:06 +01:00
6399feb324 Solve low hanging reliability and maintainability issues (#7403)
* Add missing atom ctor init

* Init members with `None`

* Use in-class init and delcare getter inside if init

* Temp revert of changes ahead of unit test repair

* Move IPC header to shared, restore X clipboard test, simplify test cmake, new X clipboard unit test

* Suppress sonar for undefs

* Remove base dir include

* Revert "Temp revert of changes ahead of unit test repair"

This reverts commit 8f84b6ea5d5828f1be1362de3809279bcacb8cc8.

* Use new accessor

* Use default dtor

* Beef up to 32 core

* Use enum class

* Make IPC protocol headers const at all levels

* Use enum class and const char for better type safety

* Use unique_ptr for m_clipboard

* Use `-j` instead of `-j8` to utilize full parallelism

* Increase thread count for sonar-scanner

* Use 32 threads

* Use in-class init for IpcClientProxy members

* Use const instead of #define

* Remove ctor member inits

* Use unique_ptr on win

* Implement temp bin dir for windows with more robust post-build copy

* Fixed missing iostream

* Add warning about copy errors

* Only run clean-gcda on Linux

* Use in-class init for IPC mutex

* Do no-op on Windows

* Hide clean-gcda task

* Move flakey test to integtests

* Delete dead code

* Test

* Temp disable post_config_all

* Disable post config step

* Revert "Disable post config step"

This reverts commit 2f956a7714ba9bedacd4b39d4ae00940c3d565d6.

* Revert "Temp disable post_config_all"

This reverts commit b44ed72e44f838bfe1309f6e9672d2f1c6f21b75.

* Restore -j8

* Simplify error handling

* Use const for test port

* Remove python check

* Update changelog

* Fixed order

* Fixed bad issue number

* Fixed bin copy source path

* Remove redundant except
2024-07-18 08:04:39 +01:00
47849db4d9 Run Valgrind on unit tests in CI to detect memory leaks (#7401)
* Move QApplication out of main to reduce memory impact when running individual tests

* Add --valgrind arg and colorize output when command returns non-zero exit code

* Fixed: colorama not always available

* Test multiple Qt tests

* Fixed: Windows Qt test failing due to missing QCoreApplication

* Simplify fake args for Qt

* Use --ci-env arg

* Create Valgrind analysis workflow

* Rename vars for fake args

* Parse and output valgrind summary

* Add build mode to comment

* Use GITHUB_OUTPUT to output summary

* Merge valgrind comment

* Improve comment

* Use `tee` instead of `--log-file` to also print stdout

* Improve comment about debug and release

* Simplify output writing in parse step

* Improve step name

* Correct comment about summaries

* Remove commented out code

* Better var name

* Missing copyright

* Rename global to shared

* Remove space

* Revert change to ConfigTests.cpp
2024-07-17 09:22:46 +01:00
cbecaa8bce Merge branch 'master' of github.com:symless/synergy-core 2024-07-16 19:38:37 +01:00
c89eba0a23 Make release workflow conditional 2024-07-16 19:38:33 +01:00
a068a69750 Create stub workflow for Valgrind (#7402) 2024-07-16 17:38:49 +01:00
e435953af7 Make Clang param and arg alignment more readable (#7387)
* Turn off alignment of params

* Apply Clang format

* Change AlignAfterOpenBracket to AlwaysBreak and add extra bin pack settings

* Restore default bin packing

* Apply format
2024-07-16 14:36:44 +01:00
f82c6716bb Empty options to force selection with defaults 2024-07-16 14:26:51 +01:00
ab0c0e3e86 Add empty option for user-type dropdown 2024-07-16 14:24:46 +01:00
5b12b16732 Remove default selections on issue templates 2024-07-16 14:23:10 +01:00
4056c79a3f Add feature request issue template (#7399) 2024-07-16 14:21:59 +01:00
964e5f8128 Update README.md (#7398) 2024-07-16 10:27:21 +01:00
50d29edd05 Solve SonarCloud security hotspots and bugs (#7383)
* Test: allocLockCursorToScreenInfo_withState_setsState

* Merge remote-tracking branch 'origin/master' into S1-1717-sonarcloud-issues

* Remove header wrappers for gmock/gtest

* Convenience wrapper script for tests

* Use `std::copy` instead of `strcpy`

* Use `std::ranges::copy` instead of `stdcpy`

* Delete dead code

* Add guitests VS Code config and test wrapper

* Revert "Delete dead code"

This reverts commit aa40f5cd35a22b4b69acfd1876aceea053088060.

* Build guitests with CMake

* Run all tests

* Don't use --gtest_filter for Qt tests

* Undo skip for GUI tests

* Coverage for `IpcClient::sendCommand`

* Remove provider and proxy

* Use lamda for StreamProvider to reduce boilerplate

* Restore version checker tests

* Remove activation souces

* Tasks for current/all tests

* Change command for tasks

* Mock QNetworkAccessManager

* Create core app to satisfy Qt assertations

* Use `std::copy` instead of `std::ranges::copy`

* Remove integtests

* Merge guitests into unittests

* Use std::string::length

* Remove include (resolves to root)

* Fix memory leaks

* Disable sigsegv tests

* Fixed formatting

* Remove guitests from CI

* New MainWindowTests

* Passing test for MainWindowTests

* Use alternative to strlen in MainWindow::checkSecureSocket

* Passing test for Log::print

* Fixed dtor call order

* Fixed var name typo

* Use proxy instead of `#define protected public`

* Add args test for log

* Add license ctor

* Fixed log test for release

* Add error log test

* Init qt with -platform offscreen

* Back-out initQt function

* Use QT_QPA_PLATFORM

* Try QT_QPA_PLATFORM=offscreen

* Use more readable env node

* Set QT_QPA_PLATFORM in CI and CodeQL

* Remove env not needed

* Modernize Log::print

* Calculate the length of the format string fmt during the initial scan loop

* More direct and efficient alterative to `strlen`

* Fixed major maint issues in AppConfig

* New clang and cmake rules

* Set `max_pargs_hwrap` to 4

* Undo clang format for now

* Fix missing `Setting::`

* Fixed missing `m_S` on Windows

* Re-add accidental dep resolution (fix later)

* Fixed missing buffer position increment

* Turn on errors

* Fixed tests and improve error message

* Fixed segfault on log refactor

* Extract log time to function

* Copyright date

* Update ChangeLog
2024-07-16 08:30:35 +00:00
783afbe1c0 Use list format for bug report template placeholders (#7397) 2024-07-16 09:22:41 +01:00
a5c75b3a18 Improve bug report ticket description and other labels (#7396) 2024-07-16 09:19:46 +01:00
fc1bcdcedf Change bug report labels and add validation (#7395) 2024-07-16 09:10:34 +01:00
1b3b8f9865 Add description to bug report issue template (#7394) 2024-07-16 09:07:28 +01:00
75848a4597 Fixed options and add validations (#7393)
* Replace old bug report form

* Add placeholders

* Fixed options and add validations
2024-07-16 09:06:07 +01:00
6c1a0bc954 Use YAML for bug report issue template (#7392)
* Replace old bug report form

* Add placeholders
2024-07-16 08:58:17 +01:00
4d3f0c820e Correct Qt macOS target and drop Core5Compat lib (#7389)
* Remove Core5Compat

* Remove hack

* Update ChangeLog

* Revert "Remove hack"

This reverts commit dda3ad05818d346fdfcbb41944b9e731a4b547c0.

* Set `add_compile_definitions` for Qt

* Revert "Set `add_compile_definitions` for Qt"

This reverts commit 0258d2d226a76081068f4e565855f37993953be5.

* Use arm64_monterey bottle

* Revert "Use arm64_monterey bottle"

This reverts commit a46d743dc6883c925e2328b9628231189cb34367.

* Use aqt to install Qt on Mac

* Append env var instead of overwrite

* Fixed filename

* Use GITHUB_PATH

* Restore original GITHUB_ENV logic

* Use newer cache action

* Update ChangeLog
2024-07-15 12:57:39 +01:00
4fa863c3ea Use GitHub ARM64 runner for Linux (#7390)
* Use Ubuntu ARM64 runner

* Add Windows 11 8-core ARM64 and use 8-core for Linux

* Add bootstrap step

* Install and use choco

* Add git to path

* Split bootstrap steps

* Merge bootstrap steps

* Export path manually

* Install Python in bootstrap step

* Add Python to path

* Add choco to path

* Add C:\Python312\Scripts to path

* Back out ARM64 runner (perhaps only suitable for running programs)

* Use ARM64 for build containers
2024-07-14 23:20:32 +01:00
481680d072 Run install_deps.py script when building containers weekly (#7384)
* Don't run CodeQL in PR draft

* Speed up analysis workflows

* Run install deps on Debian

* Add badge to readme

* Fixed copy and use workdir

* Use mount instead of copy

* Fixed unwanted && and changed workdir

* Split deps and deps-full

* Fixed context

* Use /app dir

* Use copy instead

* Revert to --mount and use .py (not .sh)

* Test

* Add `./scripts/install_deps.py` to all platforms

* Add missing syntax

* Fixed Python dep for OpenSUSE

* Temp remove WORKDIR for OpenSUSE

* Re-add workdir

* Increase timeout

* Delete `zypper --non-interactive remove busybox-which`

* Restore python3

* Test

* Rename to `lint-source-code`

* Beef up analysis runners

* Fixed workflow runs-on

* Use deps script

* Try pipx for gcovr

* Use containers with deps

* Add -y arg

* Install curl

* Merge deps step

* Add unzip dep

* Make Git dir safe

* Add .local/bin to env

* Improve step name

* Use `pipx ensurepath`

* Install gcovr with apt

* Use Ubuntu 22 with pip

* Update ChangeLog

* Use 16-core for Windows

* Use choco cache

* Test

* Use 8-core for Windows (picked up quicker, more available?)
2024-07-11 15:26:38 +01:00
a4e1beb79d Re-run macdeployqt6 to copy missing Qt 6 dependencies (#7382)
* Remove bundle on build and back out install_name_tool

* Add hack to fix Qt bundle bug

* Improve comment

* Update ChangeLog
2024-07-11 14:03:17 +01:00
a6ac8a1946 Set macOS min version to macOS 12.0 (#7381)
* Set macOS min version to 12

* Update ChangeLog
2024-07-10 15:22:16 +00:00
d8acb36e8d Resolve Qt framework path with install_name_tool (#7379)
* Add comment about EXC_BAD_ACCESS

* Optional certificate install

* Improve log output

* Move team ID arg

* Change position of arg

* Set PATH in .zshrc and use bash command substitution

* Simplified macdeployqt find logic

* Formatting

* Minor tweaks to Qt cmake config

* Resolve framework path with install_name_tool

* Update ChangeLog
2024-07-10 15:11:32 +00:00
16c0472d4d Add qt6-qpa-plugins Qt dependency for Debian (#7380)
* Add qt6-qpa-plugins

* Update ChangeLog
2024-07-10 14:48:27 +01:00
1e63b64e63 Revert "Add qt6-qpa-plugins"
This reverts commit de3ea36b60.
2024-07-10 13:54:51 +01:00
de3ea36b60 Add qt6-qpa-plugins 2024-07-10 13:46:32 +01:00
e9557b8c19 Improve workflow triggers to ensure correct run time (#7378)
* Improve workflow triggers to ensure correct run time

* Update ChangeLog
2024-07-09 18:50:54 +01:00
4b3cb238d7 Disable debug for Arch package (#7377) 2024-07-09 18:37:00 +01:00
22d8ee9cd0 Automated weekly build of Docker images for Linux runners (#7376)
* Change tag name

* Change tag name

* Add ARM64 containers and Fedora 40

* Use dnf for Fedora

* Dist upgrade on Debian

* Upgrade and clean on Fedora

* Add name

* Fixed typo and use platform in Dockerfile

* Use matrix instead for arch

* Use config dir in matrix

* Fixed wrong var

* Specify base image in workflow

* Re-add platform

* Use slim images

* Run on Buildjet

* Use new images

* Add comment

* Remove QEMU (not needed because of Buildjet)

* Finish Dockerfile for Arch and OpenSUSE

* Use new containers

* Use correct config dir names

* Fixed config for Manjaro

* Missing zypper arg

* Clean Arch and OpenSUSE

* Update ChangeLog

* Elaborate on comment
2024-07-09 18:08:09 +01:00
00f9b8751f Add missing dependencies to Debian package (#7374)
* Use `CPACK_DEBIAN_PACKAGE_SHLIBDEPS`

* Fixed copyright

* Update ChangeLog

* Add file dep

* Move file dep to deb
2024-07-09 11:12:44 +01:00
0e07af6cf3 Automated weekly build of Docker images for Linux runners (#7375)
* Initial container builder for Debian 12 image

* Use containing dir as context
2024-07-08 21:29:54 +01:00
6e82f64ec8 Upgrade from Qt5 to Qt6 for more modern UI (#7373)
* Use Qt 6

* Fixed some Qt6 deps

* Fixed minor compile issues for Qt6

* Drop Debian 11 support (no Qt6 lib)

* Move Debian to top

* Delete expensive to maintain code that yeilds low UX gain

* Unpack all values

* Use %lld instead of %u

* Minor UI improvements

* Add deps for Fedora, OpenSUSE, and Arch

* Fixed CMake lint issue

* Use package name from build.opensuse.org

* Used `zypper search` to find correct package names
2024-07-08 15:37:51 +01:00
d1abddde84 Add Git SHA to about screen and --version (#7372)
* Add Git SHA to about screen

* Update ChangeLog

* Fixed formatting

* Use `GIT_SHA` for Git SHA

* Add `GIT_SHA` env var

* Use env var `GIT_SHA`

* Shorten the Git SHA to 8 chars for readability

* Shorten Git SHA to 8 chars

* Increase Linux timeout (Fedora 39 is always slow at deps)

* Update ChangeLog

* Revert "Update ChangeLog"

This reverts commit ac52777763571e9512e1c9b73b5cac23658d5ed2.
2024-07-08 11:40:22 +01:00
bfaea34291 Re-implement packaging for GitHub workflows (Linux ARM) (#7369)
* Debian 12 ARM64 target

* Fixed comments

* Don't check for server name when exiting because of args

* Exit with success when using `--version`, `--help`, etc

* Test Linux installation

* Add Windows ARM builder

* Extract magic string

* Use proper arch name

* Swap arch order

* Fixed test

* Bootstrap Windows ARM runner

* Install winget

* Conditionally install winget

* Winget take 2

* Use shell: pwsh

* Try `powershell`

* Try cmd to install winget

* Only build distro once

* Use enum for clarity

* Remove shell

* Back out Windows ARM testing

* Attempt arch matrix

* Add Fedora arm64

* Label all -amd64

* Special case for zypper

* Fixed bad var name on Windows

* Add missing /bin ignore

* Disable GPG check on OpenSUSE

* Fixed typo

* Update ChangeLog
2024-07-08 09:32:55 +00:00
51c7bcb138 Override stage of not release (#7371) 2024-07-07 22:16:45 +01:00
f85d1b8289 Rename action (#7370) 2024-07-07 20:22:20 +01:00