diff --git a/.github/workflows/build-development.yml b/.github/workflows/build-development.yml index 11c6ed38..5aab56d2 100644 --- a/.github/workflows/build-development.yml +++ b/.github/workflows/build-development.yml @@ -20,7 +20,7 @@ jobs: - name: Setup NodeJS uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20.15 cache: npm - name: Initialize the project run: npm run ci @@ -32,6 +32,11 @@ jobs: run: npm run set-flavour DEV - name: Set build id run: npm run set-build-id + - name: Setup LLVM + uses: ZhongRuoyu/setup-llvm@v0 + with: + github-token: ${{ github.token }} + llvm-version: 17 - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 with: diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 02f8c8d6..e5a7fdc1 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -24,7 +24,7 @@ jobs: - name: Setup NodeJS uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20.15 cache: npm - name: Initialize the project run: npm run ci @@ -32,6 +32,11 @@ jobs: run: npm run set-flavour STANDALONE - name: Set build id run: npm run set-build-id + - name: Setup LLVM + uses: ZhongRuoyu/setup-llvm@v0 + with: + llvm-version: 17 + github-token: ${{ github.token }} - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 with: diff --git a/.github/workflows/build-steam-beta-release.yml b/.github/workflows/build-steam-beta-release.yml index d46e019c..4964f321 100644 --- a/.github/workflows/build-steam-beta-release.yml +++ b/.github/workflows/build-steam-beta-release.yml @@ -19,10 +19,15 @@ jobs: - name: Setup NodeJS uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20.15 cache: npm - name: Initialize the project run: npm run ci + - name: Setup LLVM + uses: ZhongRuoyu/setup-llvm@v0 + with: + llvm-version: 17 + github-token: ${{ github.token }} - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 with: diff --git a/.github/workflows/build-steam-release.yml b/.github/workflows/build-steam-release.yml index 68ec955e..06b5b0a4 100644 --- a/.github/workflows/build-steam-release.yml +++ b/.github/workflows/build-steam-release.yml @@ -23,10 +23,15 @@ jobs: - name: Setup NodeJS uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20.15 cache: npm - name: Initialize the project run: npm run ci + - name: Setup LLVM + uses: ZhongRuoyu/setup-llvm@v0 + with: + llvm-version: 17 + github-token: ${{ github.token }} - name: Install Rust stable toolchain uses: actions-rs/toolchain@v1 with: diff --git a/.github/workflows/pr-and-feature-check.yml b/.github/workflows/pr-and-feature-check.yml index 12b06d62..eca265c9 100644 --- a/.github/workflows/pr-and-feature-check.yml +++ b/.github/workflows/pr-and-feature-check.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - platform: [windows-latest] + platform: [ windows-latest ] runs-on: ${{ matrix.platform }} steps: @@ -22,44 +22,9 @@ jobs: - name: Setup NodeJS uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20.15 cache: npm - name: Initialize the project run: npm run ci - name: Lint Angular project run: npm run lint - - name: Set app version to DEV version - run: npm run set-version DEV - - name: Set flavour to DEV - run: npm run set-flavour DEV - - name: Set build id - run: npm run set-build-id - - name: Install Rust stable toolchain - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.77.2 - default: true - override: true - - name: Install Protoc - uses: arduino/setup-protoc@v2 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - - name: Configure Rust cache - uses: Swatinem/rust-cache@v2 - with: - workspaces: | - src-shared-rust - src-elevated-sidecar - src-core -# - name: Install development Tauri CLI -# run: cargo install --git https://github.com/tauri-apps/tauri --branch 1.x tauri-cli - - name: Test if OyasumiVR compiles - uses: tauri-apps/tauri-action@v0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: -# tauriScript: cargo-tauri - includeDebug: true - includeRelease: false - includeUpdaterJson: false - args: -b "{\"tauri\":{\"bundle\":{\"active\":false}}}" diff --git a/CHANGELOG.md b/CHANGELOG.md index 7beba274..baed526c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,39 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.14.0] + +### Added + +- Display color temperature control for native SteamVR headsets (e.g. Vive (Pro), Valve Index, Bigscreen Beyond) +- Automations for display color temperature +- Sunset/Sunrise based automations for brightness and color temperature. +- Support for V1 Lighthouses (Vive Base stations) +- Option for the shutdown sequence to only trigger for being alone in your instance while the sleep mode is enabled +- Option for audio volume automations to apply on start +- Support for VRChat parameters in OSC scripts that have been automatically renamed by VRCFury or Modular Avatar +- Event log filters +- Workaround for VRChat not automatically reloading your avatar after all trackers have been turned off +- German language support (thanks to community contributions by [Nicer Dicer](https://github.com/XNicerDicerX) and [Aron](https://github.com/imaron85)) +- Exposed HMD activity level over MQTT + +### Changed + +- Automations for brightness/CCT, render resolution, chaperone fade distance, BSB fan speed and BSB led color now automatically apply their set values when a HMD is connected. +- (Headset specific) brightness and color temperature settings were moved to their own settings page. +- OSC scripts will automatically convert spaces in addresses to underscores to match VRChat behaviour for parameter renaming. +- Various notification sounds + +### Removed + +- Option for the brightness automations based on sleep mode to run on SteamVR launch. This now happens automatically when a HMD is connected. + +### Fixed + +- Duration inputs for shutdown sequence triggers being broken on systems using a 12-hour clock. +- Shutdown sequence being triggered over and over by the sleep mode trigger, when not using it to shut down or reboot the PC. +- Issue where leave notifications would trigger for every other player when leaving a world. + ## [1.13.3] ### Fixed @@ -13,6 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Certain types of selection in input fields (e.g. Ctrl+A) being blocked ### Changed + - Window titlebar icons ## [1.13.2] diff --git a/angular.json b/angular.json index c57f27a8..7746e374 100644 --- a/angular.json +++ b/angular.json @@ -14,7 +14,8 @@ "projectType": "application", "schematics": { "@schematics/angular:component": { - "style": "scss" + "style": "scss", + "standalone": false } }, "root": "", @@ -22,12 +23,17 @@ "prefix": "app", "architect": { "build": { - "builder": "@angular-devkit/build-angular:browser", + "builder": "@angular/build:application", "options": { - "outputPath": "dist/oyasumivr", + "outputHashing": "media", + "outputPath": { + "base": "dist/oyasumivr", + "browser": "" + }, "index": "src-ui/index.html", - "main": "src-ui/main.ts", - "polyfills": "src-ui/polyfills.ts", + "polyfills": [ + "src-ui/polyfills.ts" + ], "tsConfig": "tsconfig.app.json", "inlineStyleLanguage": "scss", "assets": [ @@ -44,7 +50,8 @@ ], "stylePreprocessorOptions": { "includePaths": [ - "src-ui/styles" + "src-ui/styles", + "." ] }, "allowedCommonJsDependencies": [ @@ -54,7 +61,8 @@ "cookie", "set-cookie-parser", "typescript-debounce-decorator" - ] + ], + "browser": "src-ui/main.ts" }, "configurations": { "production": { @@ -68,9 +76,7 @@ "outputHashing": "all" }, "development": { - "buildOptimizer": false, "optimization": false, - "vendorChunk": true, "extractLicenses": false, "sourceMap": true, "namedChunks": true @@ -79,21 +85,21 @@ "defaultConfiguration": "production" }, "serve": { - "builder": "@angular-devkit/build-angular:dev-server", + "builder": "@angular/build:dev-server", "configurations": { "production": { - "browserTarget": "oyasumivr:build:production" + "buildTarget": "oyasumivr:build:production" }, "development": { - "browserTarget": "oyasumivr:build:development" + "buildTarget": "oyasumivr:build:development" } }, "defaultConfiguration": "development" }, "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", + "builder": "@angular/build:extract-i18n", "options": { - "browserTarget": "oyasumivr:build" + "buildTarget": "oyasumivr:build" } }, "lint": { diff --git a/docs/readmes/generated/README_CN.md b/docs/readmes/generated/README_CN.md index 833c017e..18bd40f8 100644 --- a/docs/readmes/generated/README_CN.md +++ b/docs/readmes/generated/README_CN.md @@ -104,17 +104,13 @@ OyasumiVR可以**检测你何时入睡**,并以各种方式帮助你,例如 除此之外,还可以看看"功能"部分,了解更多由OyasumiVR提供的功能。 -## Support OyasumiVR +## 赞助Oyasumi VR -OyasumiVR itself is completely free, and will always be free. However, if you want to support me and the development of OyasumiVR, here's a few places you can do so: +Oyasumi VR 完全且永久免费。不过,如果你愿意支持我继续开发 Oyasumi VR, 欢迎你在这些地方赞助我: Ko-fi Page Patreon Page -By supporting me, you help me dedicate more time to developing new features, improving the current functionality, offsetting some of the costs that come with the development process, and fueling my coffee addiction ☕. - -I'm not done with OyasumiVR anytime soon: **there is a lot more I want to work on!** - ## 功能 ### 💤 睡眠检测 @@ -179,21 +175,19 @@ OyasumiVR拥有自己的SteamVR叠加层界面,可以让你在VR里玩游戏 基站
-让OyasumiVR与SteamVR一起打开和关闭你的基站。有点像SteamVR自己的基站电源管理,但是它与任何HMD兼容!只要你的PC支持蓝牙并且在基站的信号范围内,这个功能就可以正常使用。 -

-目前只支持V2版本的Lighthouse。 +让OyasumiVR与SteamVR一起打开和关闭你的基站。有点像SteamVR自己的基站电源管理,但是它与任何HMD兼容!只要你的PC支持蓝牙并且在基站的信号范围内,这个功能就可以正常使用。 -### 🎮 Device Control +### 🎮 设备控制 @@ -236,8 +230,8 @@ OyasumiVR可以检测你的睡眠姿势,并触发你模型上不同的动画

@@ -315,25 +299,25 @@ Useful if you have a specific avatar you use for sleeping.
-OyasumiVR can allow you to easily control many of your SteamVR devices, from controllers, to trackers, to base stations. +Oyasumi VR 可以让你轻松控制许多 SteamVR 设备,例如控制器、追踪器和基站。

-Easily read detailed battery level and charge status for your controllers and trackers, or turn your base stations on and off with a single click! +只需点击一次,你就可以轻松确认电池电量、充电状态,或者开关你的基站。
-🔵 Status Automations +🔵 自动化状态
-OyasumiVR offers multiple automations for controlling your VRChat visibility and status message, like when you fall asleep, or wake up! +Oyasumi VR 支持多种方式来控制你的 VRChat 状态以及在线签名,允许当你睡着或醒来时触发!

-Additionally, you can have OyasumiVR automatically switch your status based on the amount of people around you in VRChat. For example: Switch to blue when you are sleeping alone so your friends can join you, and switch to orange when there's enough people around! +或者,Oyasumi VR 也可以在房间内到达特定人数时触发更改状态。例如:当你独自睡觉时开启蓝灯,当房间超过指定人数时改为橙灯。
-🔔 Join Notifications -
-OyasumiVR can notify you when people join or leave your VRChat world. This is useful if you want to be woken up in certain situations. - -It can configured to only notify you in specific situations, like only: +🔔 加入通知
-
    -
  • For your friends
  • -
  • For certain specific players
  • -
  • When you're being left alone
  • -
  • When you're no longer alone
  • -
+Oyasumi VR 可以在他人加入或者退出时通知你。当你需要在特定情境醒来时可以使用。
-🏃 Avatar Automations +🏃 模型自动化
-You can have OyasumiVR automatically switch your avatar when you prepare for bed, when you fall asleep, or when you wake up! -Useful if you have a specific avatar you use for sleeping. +Oyasumi VR 支持在你准备睡觉时,或者检测到你睡着、睡醒时自动切换模型!如果你有专门睡觉用的模型,这应该很方便。
@@ -344,44 +328,45 @@ With the shutdown sequence configured, you can fall asleep soundly in VR, knowin
-Ever wanted to fall asleep in VR, but not stay in VR all night? The shutdown sequence has you covered! +想在VR里睡着,但是又不想整夜开着VR?我们支持自动关机序列!

-While you can trigger the shutdown sequence manually, there are several automated triggers you can configure: +你当然可以手动触发关机序列,不过也有一些自动的触发器供你设置:

    -
  • When you've been asleep for a certain amount of time.
  • -
  • When you're left alone in your VRChat world for a certain amount of time.
  • +
  • 当你睡着一定时间后
  • +
  • 当你一个人在房间一定时间后

-Depending on which actions you configure, it will do any of the following: +您也可以选择满足条件后的动作:

    -
  • Turn off your controllers and/or Trackers
  • -
  • Turn off your Base Stations
  • -
  • Quit SteamVR (And any running game or overlay along with it)
  • -
  • Shut down Windows
  • +
  • 关闭控制器 / 追踪器
  • +
  • 关闭基站
  • +
  • 关闭SteamVR (以及SteamVR游戏和覆盖层)
  • +
  • 关闭Windows

-With the shutdown sequence configured, you can fall asleep soundly in VR, knowing that everything will shut down when you don't need to be in VR anymore! +当设置好关机序列后,你就可以在VR里安心睡着而不需要担心你的电费了!
-Automate your brightness for when you sleep and wake up. OyasumiVR can smoothly transition your VR headset's brightness, so it falls down gradually as you sleep without waking you up. +你可以设置睡着和醒来时的亮度自动化。 +OyasumiVR 可以平滑地过渡您的头显亮度,在你睡着时渐渐调暗亮度而不会惊醒你。

-It allows you to control both software brightness, as well as hardware brightness if your headset supports it (e.g. Valve Index or Bigscreen Beyond). In addition to providing you with several automations, you can easily control your brightness levels right from the SteamVR overlay menu! +OyasumiVR 支持调节软件和硬件亮度(如果你的头显支持,例如Valve Index或者Bigscreen Beyond)。除了一些预设以外,你也可以在SteamVR覆盖层上自定义具体的亮度等级。
-### 🎤 Microphone Mute Automations +### 🎤 麦克风自动化
-VRChat Microphone Mute Automations
-You can have OyasumiVR automatically mute or unmute your mic in VRChat when you go to sleep and wake up. -

Perfect if you'd like to prevent others from hearing you snore! +VRChat 麦克风自动化
+OyasumiVR 可以在你醒来或者睡着时自动开麦或者闭麦 +

如果你不想自己的呼噜吵到别人,这应该很有用。
-System Microphone Mute Automations
-OyasumiVR can also do the same, but on a system level, muting your Microphone's audio device instead. -With this, you can even switch between mute toggle mode and push-to-talk. +系统麦克风静音自动化
+OyasumiVR 也可以做到在系统级别静音你的麦克风。 +当然也可以做到按键切换静音和按住说话。

-This comes with an optional mute indicator in the VR overlay, and the option for binding a controller button so that you can have it completely replace the microphone muting functionality of VRChat or any other VR game you play. +此功能也可以开启一个VR的静音指示器覆盖层,以及绑定一个控制器按钮来完全替代VR游戏内的静音开关。
-### 🔉 Audio Volume Automations +### 🔉 音量自动化 @@ -416,17 +401,17 @@ OyasumiVR可以检测你的心率,如果你的心率持续升高,这可能
-Automatically change the volume of your audio devices when you fall asleep, or wake up! This can be useful if you want to prevent other players, or other applications from disturbing your sleep. +在你睡着或醒来时自动调节系统音量!这可以防止你被其他玩家或者应用程序吵醒。
-### 🚨 HMD Specific Automations +### 🚨 头显自动化 @@ -455,7 +440,7 @@ OyasumiVR has various automations for controlling certain features specific to c
-OyasumiVR has various automations for controlling certain features specific to certain VR Headsets. Currently, this includes the following: +OyasumiVR 支持控制多种头显的功能,目前包括:

Bigscreen Beyond
    -
  • RGB Led Control
  • -
  • Fan Speed Control
  • +
  • RGB灯控制
  • +
  • 风扇速度控制
-### 🏠 Home Assistant Integration +### 🏠 智能家庭控制 @@ -548,6 +533,7 @@ OyasumiVR目前支持以下语言: - Bahasa Indonesia (Indonesian): Community contribution by [a9ito](https://twitter.com/a9ito). - Українська (Ukrainian): Community contributions by [senkodev](https://x.com/senkodev) and [Fanyatsu](https://fanyat.su/). - Русский (Russian): Community contributions by [Kanjir0](https://twitter.com/Kanjiro_vrc), [Pacmard](https://github.com/pacmard) and Dimrical. +- Deutsch (German): Community contributions by [Nicer Dicer](https://github.com/XNicerDicerX) and [Aron](https://github.com/imaron85). - Nederlands (Dutch): by [Raphiiko](https://linktr.ee/raphii). - English: by [Raphiiko](https://linktr.ee/raphii). @@ -580,9 +566,7 @@ OyasumiVR针对显卡的功耗限制功能只支持NVIDIA显卡。AMD用户必 ### 亮度自动化 -Controlling the hardware brightness of the VR headset's display is currently only supported on the Valve Index, and the Bigscreen Beyond. - -Image brightness control is available on all headsets. +头显亮度控制功能目前只支持 Valve Index 和 Bigscreen Beyond。 ## 使用的技术和工具 diff --git a/docs/readmes/generated/README_EN.md b/docs/readmes/generated/README_EN.md index 55e980f8..391ace3b 100644 --- a/docs/readmes/generated/README_EN.md +++ b/docs/readmes/generated/README_EN.md @@ -178,9 +178,7 @@ Save some electricity by automatically setting Windows' Power Policy when you go @@ -235,8 +233,8 @@ There are built-in presets for popular locomotion assets, including:

@@ -235,8 +233,8 @@ Terdapat preset bawaan untuk aset locomotion yang populer, termasuk:

@@ -235,7 +233,7 @@ GPUの電力を制限してPCの消費電力を節約します。希望の消費

@@ -235,8 +233,8 @@ OyasumiVR은 사용자가 어떤 수면 자세를 취하고 있는지 감지하

@@ -235,8 +233,8 @@ OyasumiVR имеет встроенные пресеты для популярн

@@ -235,8 +233,8 @@ OyasumiVR 可以偵測你睡覺時的姿勢,並在你的角色上觸發相應

Base Stations
-Have OyasumiVR turn your base stations on and off together with SteamVR. A bit like SteamVR's own base station power management, but compatible with any HMD! As long as your PC supports Bluetooth and is in range of the base stations, you're good to go. -

-Currently only V2 Lighthouses are supported. +Have OyasumiVR turn your base stations on and off together with SteamVR. A bit like SteamVR's own base station power management, but compatible with any HMD! As long as your PC supports Bluetooth and is in range of the base stations, you're good to go.
Base Station
-Mintalah OyasumiVR untuk menghidupkan dan mematikan base station Anda bersama dengan SteamVR. Sedikit mirip dengan manajemen daya stasiun pangkalan SteamVR sendiri, tetapi kompatibel dengan HMD apa pun! Selama PC Anda mendukung Bluetooth dan berada dalam jangkauan base station, Anda siap menggunakannya. -

-Saat ini hanya V2 Lighthouse yang didukung. +Mintalah OyasumiVR untuk menghidupkan dan mematikan base station Anda bersama dengan SteamVR. Sedikit mirip dengan manajemen daya stasiun pangkalan SteamVR sendiri, tetapi kompatibel dengan HMD apa pun! Selama PC Anda mendukung Bluetooth dan berada dalam jangkauan base station, Anda siap menggunakannya.
ベースステーション
-SteamVRと共にベースステーションの電源を操作します。SteamVR独自の電源管理のようなものですが、どのHMDにも対応します!PCがBluetoothに対応し、ベースステーションの範囲にあれば機能します。 -

-現在はV2 Lighthouseのみがサポートされています。 +SteamVRと共にベースステーションの電源を操作します。SteamVR独自の電源管理のようなものですが、どのHMDにも対応します!PCがBluetoothに対応し、ベースステーションの範囲にあれば機能します。
베이스스테이션
-OyasumiVR이 SteamVR과 함께 베이스 스테이션을 키거나 끄도록 할 수 있어요. SteamVR의 자체 베이스스테이션 전원 관리와 비슷하지만 모든 HMD에 호환됩니다. PC가 블루투스를 지원하고 베이스스테이션의 범위 내에 있으면 바로 사용할 수 있습니다. -

-현재 V2 라이트하우스만 지원됩니다. +OyasumiVR이 SteamVR과 함께 베이스 스테이션을 키거나 끄도록 할 수 있어요. SteamVR의 자체 베이스스테이션 전원 관리와 비슷하지만 모든 HMD에 호환됩니다. PC가 블루투스를 지원하고 베이스스테이션의 범위 내에 있으면 바로 사용할 수 있습니다.
Базовые Станции
-OyasumiVR может включать и выключать Ваши базовые станции со SteamVR. Похоже на собственное управление питанием базовых станций SteamVR, но совместимо с любым шлемом! Если Ваш компьютер поддерживает Bluetooth и находится в зоне действия базовых станций, все готово к работе. -

-Сейчас поддерживаются только V2 Lighthouses (Базовые станции SteamVR v2.0). +OyasumiVR может включать и выключать Ваши базовые станции со SteamVR. Похоже на собственное управление питанием базовых станций SteamVR, но совместимо с любым шлемом! Если Ваш компьютер поддерживает Bluetooth и находится в зоне действия базовых станций, все готово к работе.
基地台
-讓 OyasumiVR 與 SteamVR 一起自動開關基地台。這有點像 SteamVR 自己的基地台電源管理,但**與任何 HMD 相容**!只要你的 PC 支援藍牙,並且處於基地台的範圍內,就可以使用。 -

-目前僅支援 V2 Lighthouse 基地台。 +讓 OyasumiVR 與 SteamVR 一起自動開關基地台。這有點像 SteamVR 自己的基地台電源管理,但**與任何 HMD 相容**!只要你的 PC 支援藍牙,並且處於基地台的範圍內,就可以使用。