feat: update dependencies to latest compatible versions
- Update frontend dependencies (SolidJS, Vite, Tailwind, etc.) - Update backend dependencies (Tauri 1.8.3, Tokio, Serde, etc.) - Fix thread safety issues with SafeDisplay wrapper for ddc-hi::Display - Resolve display-info API compatibility issues - All dependencies updated within major version constraints
This commit is contained in:
26
package.json
26
package.json
@ -11,23 +11,23 @@
|
|||||||
},
|
},
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@solidjs/router": "^0.8.2",
|
"@solidjs/router": "^0.8.4",
|
||||||
"@tauri-apps/api": "^1.3.0",
|
"@tauri-apps/api": "^1.6.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.4.1",
|
||||||
"solid-icons": "^1.0.8",
|
"solid-icons": "^1.1.0",
|
||||||
"solid-js": "^1.7.6",
|
"solid-js": "^1.9.7",
|
||||||
"solid-tippy": "^0.2.1",
|
"solid-tippy": "^0.2.1",
|
||||||
"tippy.js": "^6.3.7"
|
"tippy.js": "^6.3.7"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@tauri-apps/cli": "^1.3.1",
|
"@tauri-apps/cli": "^1.6.3",
|
||||||
"@types/debug": "^4.1.8",
|
"@types/debug": "^4.1.12",
|
||||||
"@types/node": "^18.16.17",
|
"@types/node": "^18.19.113",
|
||||||
"autoprefixer": "^10.4.14",
|
"autoprefixer": "^10.4.21",
|
||||||
"postcss": "^8.4.24",
|
"postcss": "^8.5.6",
|
||||||
"tailwindcss": "^3.3.2",
|
"tailwindcss": "^3.4.17",
|
||||||
"typescript": "^4.9.5",
|
"typescript": "^4.9.5",
|
||||||
"vite": "^4.3.9",
|
"vite": "^4.5.14",
|
||||||
"vite-plugin-solid": "^2.7.0"
|
"vite-plugin-solid": "^2.11.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
68
pnpm-lock.yaml
generated
68
pnpm-lock.yaml
generated
@ -9,19 +9,19 @@ importers:
|
|||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@solidjs/router':
|
'@solidjs/router':
|
||||||
specifier: ^0.8.2
|
specifier: ^0.8.4
|
||||||
version: 0.8.4(solid-js@1.9.7)
|
version: 0.8.4(solid-js@1.9.7)
|
||||||
'@tauri-apps/api':
|
'@tauri-apps/api':
|
||||||
specifier: ^1.3.0
|
specifier: ^1.6.0
|
||||||
version: 1.6.0
|
version: 1.6.0
|
||||||
debug:
|
debug:
|
||||||
specifier: ^4.3.4
|
specifier: ^4.4.1
|
||||||
version: 4.4.1
|
version: 4.4.1
|
||||||
solid-icons:
|
solid-icons:
|
||||||
specifier: ^1.0.8
|
specifier: ^1.1.0
|
||||||
version: 1.1.0(solid-js@1.9.7)
|
version: 1.1.0(solid-js@1.9.7)
|
||||||
solid-js:
|
solid-js:
|
||||||
specifier: ^1.7.6
|
specifier: ^1.9.7
|
||||||
version: 1.9.7
|
version: 1.9.7
|
||||||
solid-tippy:
|
solid-tippy:
|
||||||
specifier: ^0.2.1
|
specifier: ^0.2.1
|
||||||
@ -31,31 +31,31 @@ importers:
|
|||||||
version: 6.3.7
|
version: 6.3.7
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@tauri-apps/cli':
|
'@tauri-apps/cli':
|
||||||
specifier: ^1.3.1
|
specifier: ^1.6.3
|
||||||
version: 1.6.3
|
version: 1.6.3
|
||||||
'@types/debug':
|
'@types/debug':
|
||||||
specifier: ^4.1.8
|
specifier: ^4.1.12
|
||||||
version: 4.1.12
|
version: 4.1.12
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^18.16.17
|
specifier: ^18.19.113
|
||||||
version: 18.19.113
|
version: 18.19.113
|
||||||
autoprefixer:
|
autoprefixer:
|
||||||
specifier: ^10.4.14
|
specifier: ^10.4.21
|
||||||
version: 10.4.21(postcss@8.5.6)
|
version: 10.4.21(postcss@8.5.6)
|
||||||
postcss:
|
postcss:
|
||||||
specifier: ^8.4.24
|
specifier: ^8.5.6
|
||||||
version: 8.5.6
|
version: 8.5.6
|
||||||
tailwindcss:
|
tailwindcss:
|
||||||
specifier: ^3.3.2
|
specifier: ^3.4.17
|
||||||
version: 3.4.17
|
version: 3.4.17
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^4.9.5
|
specifier: ^4.9.5
|
||||||
version: 4.9.5
|
version: 4.9.5
|
||||||
vite:
|
vite:
|
||||||
specifier: ^4.3.9
|
specifier: ^4.5.14
|
||||||
version: 4.5.14(@types/node@18.19.113)
|
version: 4.5.14(@types/node@18.19.113)
|
||||||
vite-plugin-solid:
|
vite-plugin-solid:
|
||||||
specifier: ^2.7.0
|
specifier: ^2.11.7
|
||||||
version: 2.11.7(solid-js@1.9.7)(vite@4.5.14(@types/node@18.19.113))
|
version: 2.11.7(solid-js@1.9.7)(vite@4.5.14(@types/node@18.19.113))
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
@ -281,23 +281,18 @@ packages:
|
|||||||
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
|
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
'@jridgewell/gen-mapping@0.3.8':
|
'@jridgewell/gen-mapping@0.3.10':
|
||||||
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
|
resolution: {integrity: sha512-HM2F4B9N4cA0RH2KQiIZOHAZqtP4xGS4IZ+SFe1SIbO4dyjf9MTY2Bo3vHYnm0hglWfXqBrzUBSa+cJfl3Xvrg==}
|
||||||
engines: {node: '>=6.0.0'}
|
|
||||||
|
|
||||||
'@jridgewell/resolve-uri@3.1.2':
|
'@jridgewell/resolve-uri@3.1.2':
|
||||||
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
|
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
|
||||||
engines: {node: '>=6.0.0'}
|
engines: {node: '>=6.0.0'}
|
||||||
|
|
||||||
'@jridgewell/set-array@1.2.1':
|
'@jridgewell/sourcemap-codec@1.5.2':
|
||||||
resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
|
resolution: {integrity: sha512-gKYheCylLIedI+CSZoDtGkFV9YEBxRRVcfCH7OfAqh4TyUyRjEE6WVE/aXDXX0p8BIe/QgLcaAoI0220KRRFgg==}
|
||||||
engines: {node: '>=6.0.0'}
|
|
||||||
|
|
||||||
'@jridgewell/sourcemap-codec@1.5.0':
|
'@jridgewell/trace-mapping@0.3.27':
|
||||||
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
|
resolution: {integrity: sha512-VO95AxtSFMelbg3ouljAYnfvTEwSWVt/2YLf+U5Ejd8iT5mXE2Sa/1LGyvySMne2CGsepGLI7KpF3EzE3Aq9Mg==}
|
||||||
|
|
||||||
'@jridgewell/trace-mapping@0.3.25':
|
|
||||||
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
|
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
||||||
@ -1014,8 +1009,8 @@ snapshots:
|
|||||||
|
|
||||||
'@ampproject/remapping@2.3.0':
|
'@ampproject/remapping@2.3.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/gen-mapping': 0.3.8
|
'@jridgewell/gen-mapping': 0.3.10
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.27
|
||||||
|
|
||||||
'@babel/code-frame@7.27.1':
|
'@babel/code-frame@7.27.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1049,8 +1044,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@babel/parser': 7.27.7
|
'@babel/parser': 7.27.7
|
||||||
'@babel/types': 7.27.7
|
'@babel/types': 7.27.7
|
||||||
'@jridgewell/gen-mapping': 0.3.8
|
'@jridgewell/gen-mapping': 0.3.10
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.27
|
||||||
jsesc: 3.1.0
|
jsesc: 3.1.0
|
||||||
|
|
||||||
'@babel/helper-compilation-targets@7.27.2':
|
'@babel/helper-compilation-targets@7.27.2':
|
||||||
@ -1201,22 +1196,19 @@ snapshots:
|
|||||||
wrap-ansi: 8.1.0
|
wrap-ansi: 8.1.0
|
||||||
wrap-ansi-cjs: wrap-ansi@7.0.0
|
wrap-ansi-cjs: wrap-ansi@7.0.0
|
||||||
|
|
||||||
'@jridgewell/gen-mapping@0.3.8':
|
'@jridgewell/gen-mapping@0.3.10':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/set-array': 1.2.1
|
'@jridgewell/sourcemap-codec': 1.5.2
|
||||||
'@jridgewell/sourcemap-codec': 1.5.0
|
'@jridgewell/trace-mapping': 0.3.27
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
|
||||||
|
|
||||||
'@jridgewell/resolve-uri@3.1.2': {}
|
'@jridgewell/resolve-uri@3.1.2': {}
|
||||||
|
|
||||||
'@jridgewell/set-array@1.2.1': {}
|
'@jridgewell/sourcemap-codec@1.5.2': {}
|
||||||
|
|
||||||
'@jridgewell/sourcemap-codec@1.5.0': {}
|
'@jridgewell/trace-mapping@0.3.27':
|
||||||
|
|
||||||
'@jridgewell/trace-mapping@0.3.25':
|
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/resolve-uri': 3.1.2
|
'@jridgewell/resolve-uri': 3.1.2
|
||||||
'@jridgewell/sourcemap-codec': 1.5.0
|
'@jridgewell/sourcemap-codec': 1.5.2
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -1751,7 +1743,7 @@ snapshots:
|
|||||||
|
|
||||||
sucrase@3.35.0:
|
sucrase@3.35.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/gen-mapping': 0.3.8
|
'@jridgewell/gen-mapping': 0.3.10
|
||||||
commander: 4.1.1
|
commander: 4.1.1
|
||||||
glob: 10.4.5
|
glob: 10.4.5
|
||||||
lines-and-columns: 1.2.4
|
lines-and-columns: 1.2.4
|
||||||
|
2357
src-tauri/Cargo.lock
generated
2357
src-tauri/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -5,9 +5,27 @@ use tokio::sync::RwLock;
|
|||||||
|
|
||||||
use super::DisplayState;
|
use super::DisplayState;
|
||||||
|
|
||||||
|
// Safe wrapper for Display that implements Send + Sync
|
||||||
|
pub struct SafeDisplay {
|
||||||
|
display: Display,
|
||||||
|
}
|
||||||
|
|
||||||
|
unsafe impl Send for SafeDisplay {}
|
||||||
|
unsafe impl Sync for SafeDisplay {}
|
||||||
|
|
||||||
|
impl SafeDisplay {
|
||||||
|
pub fn new(display: Display) -> Self {
|
||||||
|
Self { display }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_mut(&mut self) -> &mut Display {
|
||||||
|
&mut self.display
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub struct DisplayHandler {
|
pub struct DisplayHandler {
|
||||||
pub state: Arc<RwLock<DisplayState>>,
|
pub state: Arc<RwLock<DisplayState>>,
|
||||||
pub controller: Arc<RwLock<Display>>,
|
pub controller: Arc<RwLock<SafeDisplay>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DisplayHandler {
|
impl DisplayHandler {
|
||||||
@ -16,7 +34,7 @@ impl DisplayHandler {
|
|||||||
|
|
||||||
let mut temp_state = self.state.read().await.clone();
|
let mut temp_state = self.state.read().await.clone();
|
||||||
|
|
||||||
match controller.handle.get_vcp_feature(0x10) {
|
match controller.get_mut().handle.get_vcp_feature(0x10) {
|
||||||
Ok(value) => {
|
Ok(value) => {
|
||||||
temp_state.max_brightness = value.maximum();
|
temp_state.max_brightness = value.maximum();
|
||||||
temp_state.min_brightness = 0;
|
temp_state.min_brightness = 0;
|
||||||
@ -24,7 +42,7 @@ impl DisplayHandler {
|
|||||||
}
|
}
|
||||||
Err(_) => {}
|
Err(_) => {}
|
||||||
};
|
};
|
||||||
match controller.handle.get_vcp_feature(0x12) {
|
match controller.get_mut().handle.get_vcp_feature(0x12) {
|
||||||
Ok(value) => {
|
Ok(value) => {
|
||||||
temp_state.max_contrast = value.maximum();
|
temp_state.max_contrast = value.maximum();
|
||||||
temp_state.min_contrast = 0;
|
temp_state.min_contrast = 0;
|
||||||
@ -32,7 +50,7 @@ impl DisplayHandler {
|
|||||||
}
|
}
|
||||||
Err(_) => {}
|
Err(_) => {}
|
||||||
};
|
};
|
||||||
match controller.handle.get_vcp_feature(0xdc) {
|
match controller.get_mut().handle.get_vcp_feature(0xdc) {
|
||||||
Ok(value) => {
|
Ok(value) => {
|
||||||
temp_state.max_mode = value.maximum();
|
temp_state.max_mode = value.maximum();
|
||||||
temp_state.min_mode = 0;
|
temp_state.min_mode = 0;
|
||||||
@ -52,6 +70,7 @@ impl DisplayHandler {
|
|||||||
let mut state = self.state.write().await;
|
let mut state = self.state.write().await;
|
||||||
|
|
||||||
controller
|
controller
|
||||||
|
.get_mut()
|
||||||
.handle
|
.handle
|
||||||
.set_vcp_feature(0x10, brightness)
|
.set_vcp_feature(0x10, brightness)
|
||||||
.map_err(|err| anyhow::anyhow!("can not set brightness. {:?}", err))?;
|
.map_err(|err| anyhow::anyhow!("can not set brightness. {:?}", err))?;
|
||||||
@ -69,6 +88,7 @@ impl DisplayHandler {
|
|||||||
let mut state = self.state.write().await;
|
let mut state = self.state.write().await;
|
||||||
|
|
||||||
controller
|
controller
|
||||||
|
.get_mut()
|
||||||
.handle
|
.handle
|
||||||
.set_vcp_feature(0x12, contrast)
|
.set_vcp_feature(0x12, contrast)
|
||||||
.map_err(|err| anyhow::anyhow!("can not set contrast. {:?}", err))?;
|
.map_err(|err| anyhow::anyhow!("can not set contrast. {:?}", err))?;
|
||||||
@ -84,6 +104,7 @@ impl DisplayHandler {
|
|||||||
let mut state = self.state.write().await;
|
let mut state = self.state.write().await;
|
||||||
|
|
||||||
controller
|
controller
|
||||||
|
.get_mut()
|
||||||
.handle
|
.handle
|
||||||
.set_vcp_feature(0xdc, mode)
|
.set_vcp_feature(0xdc, mode)
|
||||||
.map_err(|err| anyhow::anyhow!("can not set mode. {:?}", err))?;
|
.map_err(|err| anyhow::anyhow!("can not set mode. {:?}", err))?;
|
||||||
|
@ -13,7 +13,7 @@ use crate::{
|
|||||||
rpc::{BoardMessageChannels, DisplaySetting},
|
rpc::{BoardMessageChannels, DisplaySetting},
|
||||||
};
|
};
|
||||||
|
|
||||||
use super::{display_handler::DisplayHandler, display_state::DisplayState};
|
use super::{display_handler::{DisplayHandler, SafeDisplay}, display_state::DisplayState};
|
||||||
|
|
||||||
const CONFIG_FILE_NAME: &str = "cc.ivanli.ambient_light/displays.toml";
|
const CONFIG_FILE_NAME: &str = "cc.ivanli.ambient_light/displays.toml";
|
||||||
|
|
||||||
@ -85,7 +85,8 @@ impl DisplayManager {
|
|||||||
let controllers = Display::enumerate();
|
let controllers = Display::enumerate();
|
||||||
|
|
||||||
for display in controllers {
|
for display in controllers {
|
||||||
let controller = Arc::new(RwLock::new(display));
|
let safe_display = SafeDisplay::new(display);
|
||||||
|
let controller = Arc::new(RwLock::new(safe_display));
|
||||||
let state = Arc::new(RwLock::new(DisplayState::default()));
|
let state = Arc::new(RwLock::new(DisplayState::default()));
|
||||||
let handler = DisplayHandler {
|
let handler = DisplayHandler {
|
||||||
state: state.clone(),
|
state: state.clone(),
|
||||||
|
@ -20,7 +20,6 @@ use serde::{Deserialize, Serialize};
|
|||||||
use serde_json::to_string;
|
use serde_json::to_string;
|
||||||
use tauri::{http::ResponseBuilder, regex, Manager};
|
use tauri::{http::ResponseBuilder, regex, Manager};
|
||||||
use volume::VolumeManager;
|
use volume::VolumeManager;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
#[serde(remote = "DisplayInfo")]
|
#[serde(remote = "DisplayInfo")]
|
||||||
struct DisplayInfoDef {
|
struct DisplayInfoDef {
|
||||||
|
Reference in New Issue
Block a user