Skip to content

Diverse Refactoring, error fixing and new features #1849

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 121 commits into from
Apr 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
121 commits
Select commit Hold shift + click to select a range
c9d9a02
Thread Refactoring & SmartPointers
Lord-Grey Dec 3, 2024
8fbdd18
Further refactor
Lord-Grey Dec 6, 2024
62a360b
Fix LED Buffer and Layout might get out of sync.
Lord-Grey Dec 6, 2024
36a3f77
Remove colons from backup filename to work on Windows
Lord-Grey Dec 9, 2024
1d9cdec
Merge remote-tracking branch 'upstream/master' into Refactor
Lord-Grey Dec 9, 2024
a369ccd
Force set CMAKE_OSX_DEPLOYMENT_TARGET to 10.15
Paulchen-Panther Nov 30, 2024
ccf68d7
MacOS Remove Temporarily downgrade CMake to 3.28.3
Lord-Grey Dec 9, 2024
e2c685c
Updates
Lord-Grey Dec 13, 2024
f948bb7
Config requests do not require a running instance
Lord-Grey Dec 13, 2024
e72a6ae
Thread affinity
Lord-Grey Dec 13, 2024
ebbcef0
workaround to default effect path
Lord-Grey Dec 30, 2024
56b39a1
Decouple Effect definitions from Instance
Lord-Grey Dec 30, 2024
b1a8ade
Systray -Support multiple instances
Lord-Grey Dec 30, 2024
904ba55
Fix Settings are not updated
Lord-Grey Jan 1, 2025
02d375f
Update database classes to handle global settings
Lord-Grey Jan 1, 2025
3414640
Remove debug statement
Lord-Grey Jan 1, 2025
4d8ba7b
Move effects settings to global
Lord-Grey Jan 1, 2025
9a8b394
Merge remote-tracking branch 'origin/master' into Refactor
Lord-Grey Jan 1, 2025
3917e7e
Fix Windows Build
Lord-Grey Jan 1, 2025
21de3c1
Fix Linux build
Lord-Grey Jan 1, 2025
5748e87
Allow empty forwarder targets
Lord-Grey Jan 2, 2025
08e4af4
Correct formatting
Lord-Grey Jan 2, 2025
46a7ba1
Add IDs
Lord-Grey Jan 2, 2025
b6accda
Remove hard dependency on the first instance
Lord-Grey Jan 11, 2025
3679a3e
Fix JSON modifications
Lord-Grey Jan 12, 2025
48f0c5d
Pass instance name when stopping all instances
Lord-Grey Jan 12, 2025
d77503b
Fixes
Lord-Grey Jan 14, 2025
37e0409
Fix #1824
Lord-Grey Jan 14, 2025
bafdb91
Ensure Flat- & ProtoBuffer client connections are stopped in the corr…
Lord-Grey Jan 17, 2025
20f91f1
Fix empty cgi args
Lord-Grey Jan 20, 2025
39683de
Fix Preview when no instance is running. Hide respective Nav buttons
Lord-Grey Jan 20, 2025
b4cf3e2
Remove debug statement
Lord-Grey Jan 20, 2025
c42ff25
Decouple WebServer and SSDPHandler, Fixing threading
Lord-Grey Jan 20, 2025
220e76c
Systray - Do not show setting with left-click
Lord-Grey Jan 20, 2025
664a877
Ensure LED available device list is populated without an LedDeviceWra…
Lord-Grey Jan 20, 2025
956ed23
Fix Dashboard, if no instance available
Lord-Grey Jan 21, 2025
bd371cc
Fix that grabbers are not saved when no instance
Lord-Grey Jan 21, 2025
7667723
Fix - Wrong ID was used showing/hiding the streamer menu entry
Lord-Grey Jan 21, 2025
3c61c0d
Fix - Instance menu was not shown when first instance created
Lord-Grey Jan 21, 2025
0ec27e6
Start/Stop Flat-& ProtoBuffers only when minimum 1 instance is running
Lord-Grey Jan 25, 2025
cef753d
Refactor FlatBufferConnection
Lord-Grey Jan 25, 2025
0209e67
Report running application name generically
Lord-Grey Jan 25, 2025
45d8ca0
Add ErrorManager to handle errorOccured signal
Lord-Grey Jan 25, 2025
975573e
Standalone Qt grabber - only capture when connected
Lord-Grey Jan 25, 2025
54e3eb2
FlatbufferClient to send register request
Lord-Grey Jan 26, 2025
197289c
Ensure downward compatibility
Lord-Grey Jan 26, 2025
599cdce
Fixed: Provide custom forwarding targets is not possible (#1713)
Lord-Grey Jan 31, 2025
09352de
Fix isMediaStreamingSupported if http session
Lord-Grey Feb 14, 2025
cc48b42
Correct InstanceManager connections
Lord-Grey Feb 14, 2025
a0cd9f6
Handle logging if no instance is linked
Lord-Grey Feb 14, 2025
d23cfab
Store currentInstance in API
Lord-Grey Feb 14, 2025
6674471
Rework Flatbufferclient
Lord-Grey Feb 14, 2025
07c6fca
Handle changed stetting even, if no instance is running
Lord-Grey Feb 14, 2025
bfde57f
Enable Forwarder to work with selected source and target instances
Lord-Grey Feb 16, 2025
c2024e5
Fixed: Create a proper API response, when Effects are not part of a b…
Lord-Grey Feb 16, 2025
197162c
Correctly stop Forwarder when not started
Lord-Grey Feb 16, 2025
c55a83c
Add missing include
Lord-Grey Feb 16, 2025
b2150e5
Small updates
Lord-Grey Feb 18, 2025
617b891
Fix - Show Token panel, if Internet access is enabled
Lord-Grey Feb 18, 2025
c4365f8
Message Forwarder: log parsing errors
Lord-Grey Feb 24, 2025
7323197
Rework hyperion-remote, remove try catch blocks
Lord-Grey Feb 24, 2025
0d07fe8
FlatbufferConnection, avoid QHostAdress->QString->QHostAdress mappings
Lord-Grey Feb 24, 2025
e51bd48
Rework standalone grabber
Lord-Grey Feb 24, 2025
b1d475e
Revert selected changes in JsonAPI.cpp
Lord-Grey Feb 24, 2025
4912ca1
Fix some includes
Lord-Grey Mar 1, 2025
4e24f07
Further corrections and compatibility for Qt lower than Qt 5.15
Lord-Grey Mar 1, 2025
a10ed57
Correct typo
Lord-Grey Mar 8, 2025
a1c7c54
Fix if no WLED found
Lord-Grey Mar 13, 2025
476d080
Fixed mDNS Browser deadlock, run in own thread
Lord-Grey Mar 13, 2025
a7497fb
Add resiliance
Lord-Grey Mar 14, 2025
65f491a
Updates on standalone grabbers
Lord-Grey Mar 14, 2025
97c8c8a
Fix typo
Lord-Grey Mar 14, 2025
4268d71
Merge remote-tracking branch 'origin/Refactor' into Refactor
Lord-Grey Mar 14, 2025
d864f52
Merge remote-tracking branch 'origin/master' into Refactor
Lord-Grey Mar 14, 2025
3a94546
Dies behebt die QtCore Warnmeldungen (You might be loading two sets o…
Paulchen-Panther Mar 15, 2025
430747d
Correct build guards
Lord-Grey Mar 15, 2025
d79f763
Fix Thread affinity
Lord-Grey Mar 15, 2025
dbbc942
Fix object destruction order
Lord-Grey Mar 15, 2025
5251b9f
Fix object destruction order
Lord-Grey Mar 15, 2025
184ec45
Merge branch 'Refactor' of https://github.com/Lord-Grey/hyperion.ng i…
Lord-Grey Mar 15, 2025
e7b58f8
Fix InfoSummary when no insatnce is running or existing
Lord-Grey Mar 15, 2025
b47886b
Maked code more resilliant, if no instance is available
Lord-Grey Mar 16, 2025
424cf46
Allow to import configurations without instance configs
Lord-Grey Mar 16, 2025
b47aadc
Separate gloabl and insatnce config in clipboard
Lord-Grey Mar 16, 2025
1a42411
Allo grabber save when no insatnce is available
Lord-Grey Mar 16, 2025
68255c1
Start JSON-Server after WebServers
Lord-Grey Mar 16, 2025
05b1f5b
UI: Validate that key ports do not overlap across editors and pages
Lord-Grey Mar 18, 2025
1a6a8e7
Update Change Log
Lord-Grey Mar 18, 2025
51a5148
Correct typos
Lord-Grey Mar 18, 2025
1f60f30
Update correct error message context
Lord-Grey Mar 19, 2025
1488d3f
CodeQL findings
Lord-Grey Mar 19, 2025
f1dfb09
Fix with Qt 6.9.0
Lord-Grey Mar 19, 2025
ccf835d
CodeQL Finding
Lord-Grey Mar 19, 2025
cec490c
Fix that initializeDeviceMap is called at the right point
Lord-Grey Mar 22, 2025
1d4c620
Move getInfo to separate function
Lord-Grey Mar 22, 2025
1d3e506
Correct qRegisterMetaType registrations
Lord-Grey Mar 22, 2025
cef88dc
CodeQL finding - ForwarderHelper was not descructed
Lord-Grey Mar 22, 2025
3db5f88
Merge remote-tracking branch 'origin/master' into Refactor
Lord-Grey Mar 22, 2025
02c9046
Handle Global Instance ID as no instance provided
Lord-Grey Mar 22, 2025
acf401d
Fixing Forwarder
Lord-Grey Mar 27, 2025
5ae9045
Add new instance-data to API overview doc
Lord-Grey Mar 27, 2025
80d1048
Update to 2025
Lord-Grey Mar 27, 2025
e1753e5
Align rgbByteOrderWizard to API
Lord-Grey Mar 27, 2025
0d72480
Fix building adjustment requests
Lord-Grey Mar 28, 2025
537d623
Update CPack workaround for macOS 13
Lord-Grey Mar 29, 2025
e466e35
Handle the various API calls along their prerequisites
Lord-Grey Mar 29, 2025
3e0474f
Merge remote-tracking branch 'origin/master' into Refactor
Lord-Grey Mar 29, 2025
7c5b3d6
Update CPack workaround for macOS 13
Lord-Grey Mar 30, 2025
0a6584d
Address CodeQL findings
Lord-Grey Mar 30, 2025
73b692c
Always show Token Management panel in Expert mode
Lord-Grey Mar 30, 2025
6dd1d47
Remove legacy scripts
Lord-Grey Mar 30, 2025
ad64219
Remove Python release type workaround
Lord-Grey Apr 4, 2025
6a9ff04
Minor Cleanups
Lord-Grey Apr 6, 2025
fac9d28
Merge branch 'Refactor' of https://github.com/Lord-Grey/hyperion.ng i…
Lord-Grey Apr 6, 2025
2a8fee0
Merge branch 'hyperion-project:master' into Refactor
Lord-Grey Apr 6, 2025
93852d6
Reverts #ad64219ae6c181932f6a5d5120aa83d732d17298
Paulchen-Panther Apr 6, 2025
795e135
set ENV 'GITHUB_ACTIONS' on GitHub Actions Workflow
Paulchen-Panther Apr 6, 2025
000790e
Add build type in SysInfo
Lord-Grey Apr 6, 2025
0fcdfa6
Correct text
Lord-Grey Apr 6, 2025
16a72c0
Ensure stable response
Lord-Grey Apr 6, 2025
938cbad
Switch instance always when the index is default
Lord-Grey Apr 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions .github/workflows/qt5_6.yml
Original file line number Diff line number Diff line change
Expand Up @@ -146,15 +146,25 @@ jobs:
- name: 👷 Build ${{ env.HINT }}
shell: bash
run: |
# Remove once issue with hombrew cache action is fixed
# Remove once issue with Homebrew cache action is fixed
brew reinstall --formula cmake
# Build
cmake --preset macos-${{ env.BUILD_TYPE }} ${{ steps.dependencies.outputs.cmakeArgs }}
cmake --build --preset macos-${{ env.BUILD_TYPE }}
# CPack workaround for macOS 13
echo killing...; sudo pkill -9 XProtect >/dev/null || true;
echo waiting...; while pgrep XProtect; do sleep 3; done;
cd build; cpack
attempt=0
max_attempts=5
while [ $attempt -lt $max_attempts ]; do
if cd build && cpack; then
echo "Package created successfully"
break
else
echo "Failed to create package, retrying..."
sleep 10
fi
attempt=$((attempt + 1))
done
env:
BUILD_TYPE: ${{ inputs.event_name == 'pull_request' && 'debug' || 'release' }}
HINT: ${{ steps.dependencies.outputs.cmakeArgs != '' && '(with pre-built dependencies)' || '(full build)' }}
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,7 @@ CMakeUserPresets.json

#Configurations created under config for testing
/configs

#Config database & backups created for testing
HyperionBackup_*
hyperion.db
2 changes: 1 addition & 1 deletion .version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2.0.17-beta.2
2.0.17-beta.3
26 changes: 21 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Support gaps on Matrix Layout (#1696)
- Support a configurable grabber inactive detection time interval (#1740)
- Windows: Added a new grabber that uses the DXGI DDA (Desktop Duplication API). This has much better performance than the DX grabber as it does more of its work on the GPU.

- Support to freely select source and target instances to be used by forwarder
- Support to import, export and backup Hyperion's full configuration via the UI, JSON-API and commandline (`--importConfig, --exportConfig`) (#804)
- Allow to force starting Hyperion in read-only mode (`--readonlyMode`)
- JSON-API: Support to query for a dedicated set of configuration items for a set of instances
- JSON-API: Support to save a dedicated set of configuration items for a set of instances
- JSON-API: Limit update emission frequency: Images (25Hz), raw LED-Colors (40Hz) & LED-Device data (200Hz)
- Effects: Limit the maximum update rate to 200Hz
- Systray: Support multiple instances
- UI: Validate that key ports do not overlap across editors and pages

**JSON-API**
- New subscription support for event updates, i.e. `Suspend, Resume, Idle, idleResume, Restart, Quit`.
- Support direct or multiple instance addressing via single requests (#809)
- Support of `serverinfo` subcommands: `getInfo, subscribe, unsubscribe, getSubscriptions, getSubscriptionCommands`
- [Overview](https://github.com/hyperion-project/hyperion.ng/blob/API_Auth/doc/development/JSON-API%20_Commands_Overview.md) of API commands and subscription updates
- Support to query for a dedicated set of configuration items for a set of instances
- Support to save a dedicated set of configuration items for a set of instances
- Limit update emission frequency: Images (25Hz), raw LED-Colors (40Hz) & LED-Device data (200Hz)
- Support for requesting instance-data via JSON-API. Implemented requesting the current image in different formats or led colors.

### Changed

- Removed hard dependency on the first instance. All instances can now be freely created/removed, started or stopped
- Fixed: Cross Site Scripting Vulnerability (CVE-2024-4174, CVE-2024-4175)
- Fixed: hyperion-v4l2 taking screenshot failed (#1722)
- Nanoleaf: Support new devices and do not restore ExtControl state
Expand All @@ -46,17 +49,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Refactored: Database access layer
- Refactored: Hyperion's configuration database is validated before start-up (and migrated, if required)
- Refactored: Python to enable parallel effect processing under Python 3.12
- Refactored: Forwarder
- Refactored: Flatbuffer connection- and client handling
- Refactored: Decouple Effect definitions from Instance
- Refactored: Decouple WebServer and SSDPHandler
- Refactored: Corrected thread affinity across various classes
- Refactored: Improved code resilience and error handling
- Standalone grabber do not capture screens when no connection to remote host
- Fixed: Python 3.12 crashes (#1747)
- osX Grabber: Use ScreenCaptureKit under macOS 15 and above
- Removed maximum LED number constraint from Matrix layout schema which was not synced with the UI behaviour (#1804)
- Fixed bespoke WebSocket implementation by using of QWebSockets (#1816, #1448, #1247, #1130)
- Fixed mDNS Browser deadlock, plus run in own thread now
- Fixed that LED Buffer and Layout might get out of sync.
- Fixed Screen capture error (#1824)
- Fixed Provide custom forwarding targets is not possible (#1713)

**JSON-API**
- Refactored JSON-API to ensure consistent authorization behaviour across sessions and single requests with token authorization.
- Provide additional error details with API responses, esp. on JSON parsing, validation or token errors.
- Generate random TANs for every API request from the Hyperion UI
- Fixed: Handling of IP4 addresses wrapped in IPv6 for external network connections-
- Configuration requests do not any longer require a running instance
- Fixed: Handling of IP4 addresses wrapped in IPv6 for external network connections
- Fixed: Local Admin API Authentication rejects valid tokens (#1251)
- Fixed: Create a proper API response, when Effects are not part of a build

### Removed

Expand Down
14 changes: 11 additions & 3 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,17 @@
}
},
{
"name": "clang",
"name": "ninja-base",
"hidden": true,
"generator": "Ninja",
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
}
},
{
"name": "clang",
"hidden": true,
"inherits": [ "ninja-base" ],
"cacheVariables": {
"CMAKE_C_COMPILER": "/usr/bin/clang",
"CMAKE_CXX_COMPILER": "/usr/bin/clang++"
Expand All @@ -110,7 +118,7 @@
{
"name": "msvc",
"hidden": true,
"generator": "Ninja",
"inherits": [ "ninja-base" ],
"cacheVariables": {
"CMAKE_C_COMPILER": "cl.exe",
"CMAKE_CXX_COMPILER": "cl.exe"
Expand All @@ -119,7 +127,7 @@
{
"name": "gcc",
"hidden": true,
"generator": "Ninja",
"inherits": [ "ninja-base" ],
"cacheVariables": {
"CMAKE_C_COMPILER": "/usr/bin/gcc",
"CMAKE_CXX_COMPILER": "/usr/bin/g++"
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2014-2024 Hyperion Project
Copyright (c) 2014-2025 Hyperion Project

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
6 changes: 3 additions & 3 deletions assets/webconfig/content/effects_configurator.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ <h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_me

<div id="intro_effc">
</div>
<div class="row">
<div class="row" id="effect_table">
<div class="col-lg-6">
<div class="panel panel-default">
<div class="panel-heading">
Expand All @@ -44,15 +44,15 @@ <h3 class="page-header"><i class="fa fa-cogs fa-fw"></i><span data-i18n="main_me
</div>
</div>
</div>
<div class="col-lg-6">
<div class="col-lg-6" id="effect_delload">
<div class="panel panel-default">
<div class="panel-heading">
<label for="effectsdellist" data-i18n="effectsconfigurator_editdeleff"></label>
<select id="effectsdellist" class="form-control" style="color:black;width:auto;margin-left:10px;display:inline-block"></select>
</div>
<div class="panel-body">
<button class="btn btn-primary" id='btn_delete' data-i18n="effectsconfigurator_button_deleffect">Delete Effect</button>
<button class="btn btn-primary" id='btn_edit' data-i18n="effectsconfigurator_button_editeffect"></button>
<button class="btn btn-primary" id='btn_load' data-i18n="effectsconfigurator_button_loadeffect"></button>
</div>
</div>
</div>
Expand Down
13 changes: 11 additions & 2 deletions assets/webconfig/content/remote.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ <h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_me
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_color_label">Colors/Effects</span></div>
<div class="panel-body" id="color_intro">
<table class="table borderless">
<table class="table borderless" id="color_effect_table">
<tbody>
<tr>
<td style="vertical-align:middle"><label for="cpeff" data-i18n="remote_color_label_color"></label></td>
Expand All @@ -66,9 +66,18 @@ <h3 class="page-header"><i class="fa fa-wifi fa-fw"></i><span data-i18n="main_me
</td>
</tr>
<tr>
<td style="vertical-align:middle"><label for="remote_duration" data-i18n="remote_input_duration"></label></td>
<td style="vertical-align:middle">
<label for="remote_duration" data-i18n="remote_input_duration"></label>
</td>
<td class="input-group">
<input id="remote_duration" type="number" class="form-control" value="0" min="0" />
<style>
#remote_duration::placeholder {
color: #000000;
opacity: 1;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); /*Add subtle shadow */
}
</style>
<span class="input-group-addon" data-i18n="edt_append_s"></span>
</td>
</tr>
Expand Down
Loading
Loading