Skip to content
Draft
Show file tree
Hide file tree
Changes from 170 commits
Commits
Show all changes
281 commits
Select commit Hold shift + click to select a range
17e8717
Remove some console warnings
loucass003 Mar 30, 2026
02ca403
More data for udp trackers
loucass003 Mar 30, 2026
2fc64b3
Lint
loucass003 Mar 30, 2026
2429203
Packets bundling support
loucass003 Mar 30, 2026
a171bc2
More udp tracker data
loucass003 Mar 31, 2026
ae5a8f4
Wifi provisioning V0
loucass003 Apr 8, 2026
4e69262
Wifi Provisioning - Unit tests
loucass003 Apr 8, 2026
bf3168a
Proper tps calculation
loucass003 Apr 8, 2026
5aaade2
Basic skeleton structure
ButterscotchV Apr 2, 2026
d1b96a5
Use body part map for skeleton
ButterscotchV Apr 8, 2026
6266802
Use BodyPart map to make skeleton
ButterscotchV Apr 8, 2026
9c7ca73
Fix naming
ButterscotchV Apr 8, 2026
c5d8968
Tracker tap detection - Basic
loucass003 Apr 8, 2026
ada2ee3
Skeleton experiments
loucass003 Apr 10, 2026
902ab1f
Improved structure for skeleton?
loucass003 Apr 11, 2026
ac07e65
Clenup dead code
loucass003 Apr 11, 2026
918f28d
Simple height calculation from proportions
loucass003 Apr 11, 2026
6db6668
Implement scaled proportions
loucass003 Apr 12, 2026
e2fa7c8
Remove random proportions
loucass003 Apr 12, 2026
4bf1e70
Started implementing checklist / refactored most ipc logic to have tw…
loucass003 Apr 13, 2026
2d6b250
Fix test code
loucass003 Apr 13, 2026
a43ba53
Tracker config + save
loucass003 Apr 13, 2026
b17624d
Fix tracker config not loading back properly + fligtlist checks
loucass003 Apr 13, 2026
a097c26
Implement rest calibration checklist warning
ImSapphire Apr 13, 2026
7d04273
Better readme
loucass003 Apr 13, 2026
fa46f7d
Better readme
loucass003 Apr 13, 2026
18c5d0d
Better readme
loucass003 Apr 13, 2026
db231f3
Send signal strength in datafeed
ImSapphire Apr 13, 2026
acde3a0
Get rid of all the redundant `== true`s
ImSapphire Apr 13, 2026
4113a09
Implement receiving and datafeed sending of tracker mag status
ImSapphire Apr 13, 2026
1775d54
better bootstraping
loucass003 Apr 15, 2026
94e34ca
Fix steps id
loucass003 Apr 15, 2026
984c98f
Cleanup of tests -> update readme in consequence
loucass003 Apr 15, 2026
1185825
Atempt at mag code (untested, incomplete)
loucass003 Apr 15, 2026
b7cd179
Progress on mag crap
loucass003 Apr 17, 2026
aa505d0
Working mag. That was awfull
loucass003 Apr 20, 2026
fa3ebf4
Cleaner actions for common dispatch
loucass003 Apr 21, 2026
943d51d
Debug tools + Spotless
loucass003 Apr 21, 2026
3336f6d
Consistency
loucass003 Apr 21, 2026
09724f1
Packet loss (untested on hid)
loucass003 Apr 22, 2026
951b96d
Fix tracker status HID
loucass003 Apr 22, 2026
428f2ba
Fix battery value HID
loucass003 Apr 22, 2026
791a358
Move back hid packet parsing to core. it will be needed for android
loucass003 Apr 22, 2026
a21e769
Context dispose / proper scope definition and naming
loucass003 Apr 29, 2026
834111c
Basic AI Agent stuff as test
loucass003 Apr 29, 2026
448f075
Remove extra import
loucass003 Apr 29, 2026
cdd47d8
Tracker allowlist
loucass003 Apr 29, 2026
14e77b6
Basic bvh
loucass003 Apr 29, 2026
b336897
RawBone
loucass003 May 1, 2026
3095ce4
Network profile detection basics (untested)
loucass003 May 5, 2026
04a26ec
Remove io for now. for consistency
loucass003 May 5, 2026
6087178
Better debug middleware init
loucass003 May 5, 2026
be34dc9
Better context management for dispose (allow for unit tests to work) …
loucass003 May 5, 2026
170c688
Basic osc parser
loucass003 May 5, 2026
ae4402b
VMC basics, no solarxr, need VMC space coordinates to be fixed
loucass003 May 5, 2026
3749b77
Diable VMC by default
loucass003 May 5, 2026
6fe10bf
Spotless format
ButterscotchV May 6, 2026
7ddb3e7
More dynamic body proportions
ButterscotchV May 6, 2026
3ae788e
Fix val order
ButterscotchV May 6, 2026
6c7d6ad
Fix flake
loucass003 May 6, 2026
4446b8d
VRM model loading + VMC settings in solarxr
loucass003 May 7, 2026
e657d97
Hip anchor + mirroring + better vrm loading
loucass003 May 7, 2026
d492061
Rename & cleanup proportions
ButterscotchV May 9, 2026
9d3afda
Current vrcosc progress
loucass003 May 9, 2026
6d625d1
VRC OSC gui changes and reorganisation of code
loucass003 May 9, 2026
4b7af0b
Start bindings provider automatically
ImSapphire May 9, 2026
0907fe5
Opencode skills sucks. Bye bye
loucass003 May 10, 2026
abc5c7b
solarxr upgrade
loucass003 May 10, 2026
f3de32a
Moved as much as possible to KMP
loucass003 May 11, 2026
b3e61a5
Bring back debug env var
loucass003 May 11, 2026
d804183
Add a note about behaviour list for later
loucass003 May 11, 2026
f2b540d
Solve regressions with KMP
loucass003 May 11, 2026
96998a6
Merge driver and feeder bridge
ImSapphire May 11, 2026
f59e5aa
Catch exceptions when reading from Unix sockets
ImSapphire May 11, 2026
945796d
Use battery info from SteamVR driver
ImSapphire May 11, 2026
a86a6fb
Make device battery info null by default
ImSapphire May 11, 2026
7645ff6
Don't set sensorType for devices from SteamVR
ImSapphire May 11, 2026
47a7067
Use device name and manufacturer from SteamVR
ImSapphire May 11, 2026
2f6cb0a
Make VRChat config warnings checklist step ignorable
ImSapphire May 11, 2026
c71bb3e
Use position from SteamVR
ImSapphire May 11, 2026
57c39c7
No more silent launch failures
loucass003 May 11, 2026
ddae53a
Only store tracker index in driver bridge
ImSapphire May 11, 2026
36f2398
Fix tracker state on SteamVR restart, only hold onto ID in AddTracker
ImSapphire May 11, 2026
cc68e0e
Fix typo in default manufacturer name for SteamVR devices
ImSapphire May 11, 2026
c5eda4b
Rework trackers init to have access to appContext
loucass003 May 12, 2026
3574130
Use offsets for bones
ButterscotchV May 12, 2026
22d1126
Add quaternion test utility functions
ButterscotchV May 16, 2026
7b80cb9
Add session calibration functions & tests
ButterscotchV May 16, 2026
412e182
Add calibration estimation functions
ButterscotchV May 19, 2026
cc387a6
Rename "acceleration" to "rawAcceleration"
ButterscotchV May 20, 2026
22cb14b
SessionCalibration type aliases
ButterscotchV May 20, 2026
f390347
Shorten variable names for SessionCalibrationTest
ButterscotchV May 20, 2026
6dbe872
Fix session calibration math
ButterscotchV May 20, 2026
cef72ee
Fix network profile checker callback param types
ImSapphire May 23, 2026
c10d536
Prevent network profile checker callback from being GC'd
ImSapphire May 23, 2026
c208b7c
Spotless
ImSapphire May 23, 2026
bdde772
Send names of the public network adapters in checklist step
ImSapphire May 23, 2026
feb3eae
oops
ImSapphire May 23, 2026
5a4ba1f
Fix address resolvig / avoid dns lookup
loucass003 May 25, 2026
256574d
Sync solarxr + apply back https://github.com/SlimeVR/SlimeVR-Server/p…
loucass003 May 26, 2026
11783de
Port https://github.com/SlimeVR/SlimeVR-Server/pull/1760
loucass003 May 26, 2026
3f7580a
Port https://github.com/SlimeVR/SlimeVR-Server/pull/1761
loucass003 May 26, 2026
e180298
Port https://github.com/SlimeVR/SlimeVR-Server/pull/1763
loucass003 May 26, 2026
67ae02a
HID battery runtime
loucass003 May 26, 2026
559c076
Fix OSCQuery unit test
ButterscotchV May 28, 2026
24da107
Make safeLaunch inherit CoroutineScope's handler
ButterscotchV May 28, 2026
83f48a7
safeLaunch forgotten
loucass003 May 28, 2026
16d2e0b
Apply session calibration to tracker
ButterscotchV May 28, 2026
d6e6926
Add "reset" tracker actions
ButterscotchV May 28, 2026
861a9fb
Android basics (not tested)
loucass003 May 29, 2026
95b6488
Fix HID not workey
loucass003 May 29, 2026
1ebd8a4
Code cleanup
loucass003 May 30, 2026
0c0aac0
More cleanup / consistency changes
loucass003 May 30, 2026
facce88
Slightly better context
loucass003 May 30, 2026
5f3b1fd
Make tests work
loucass003 May 30, 2026
c43b44c
Add mounting reset
ButterscotchV Jun 2, 2026
a4aa76a
Add session calibrations to SolarXR
ButterscotchV Jun 13, 2026
a75a1ad
Fix bodyParts condition
ButterscotchV Jun 13, 2026
1d55433
Update tracker datafeed
ButterscotchV Jun 13, 2026
fe2a7bf
Fix UDP tracker rotation
ButterscotchV Jun 13, 2026
2559cdf
Handle "null" yaw reset
ButterscotchV Jun 13, 2026
10df44e
Fix flashing error
loucass003 Jun 15, 2026
e85bb26
portObj -> port
Erimelowo Jun 15, 2026
40bb3d1
Remove reset else branch
ButterscotchV Jun 15, 2026
ba5660b
Hardcode enable ServerGuards
ButterscotchV Jun 15, 2026
cf46ca9
Don't localize ports in GUI OSC
Erimelowo Jun 15, 2026
0755413
Finish TapDetection logic with config
Erimelowo Jun 17, 2026
2f5b2ea
Move VMCConfig + TapDetection solarxr
Erimelowo Jun 17, 2026
431774b
tap setupMode wip
Erimelowo Jun 17, 2026
fe3bee2
Mute ConvertLongToDuration warning
Erimelowo Jun 17, 2026
791ae07
TrackerAssignment missing parameter and VRCOSC main
Erimelowo Jun 17, 2026
f6d662a
Sync main into server-rewrite
loucass003 Jun 17, 2026
1763fe9
Sync gui, pnpm and labels from main
loucass003 Jun 17, 2026
d9338dc
Sync solarxr
loucass003 Jun 17, 2026
837316b
Sync solarxr again
loucass003 Jun 17, 2026
9101112
Refactor TapDetector and tap to assign
Erimelowo Jun 17, 2026
710088e
ResetManager wip + refactoring TapReset
Erimelowo Jun 18, 2026
2cf6c0b
Refactor TapDetection flow
Erimelowo Jun 18, 2026
8c78f1c
Finish ResetsManager logic
Erimelowo Jun 18, 2026
25a066d
Remove unneeded data from tracker reset actions
Erimelowo Jun 19, 2026
150c064
Sync flake with main
ImSapphire Jun 19, 2026
1e92eaf
Bump electron-builder to 26.15.0, improve Nix flake
ImSapphire Jun 18, 2026
2996858
Fix JAVA_HOME to make IntelliJ happy
ImSapphire Jun 18, 2026
33d84f1
Fix HID in flake devshell
ImSapphire Jun 19, 2026
71391e7
Sync .github and bindings-provider with main
ImSapphire Jun 19, 2026
c0cf2af
Remove feeder from Steam install code
ImSapphire Jun 19, 2026
a69c10d
Fix socket getting placed in XDG_CONFIG_HOME on Steam
ImSapphire Jun 19, 2026
28bedc1
Sync .gitmodules with main
ImSapphire Jun 19, 2026
5681c35
Switch to JDK 24 in CI
ImSapphire Jun 19, 2026
d7bdeaa
Port #1785
ImSapphire Jun 19, 2026
dd198d2
Port #1859
ImSapphire Jun 19, 2026
066a73c
Fix up GUI after merge(s)
ImSapphire Jun 19, 2026
0757935
Fix Android compilation
ImSapphire Jun 19, 2026
47638cc
Fix GUI on Android/non-Electron
ImSapphire Jun 19, 2026
dc2b47a
Don't catch CancellationException in ComputedSkeletonBehaviour
ImSapphire Jun 19, 2026
aa0d2e8
Get rid of some stray files left behind by merge
ImSapphire Jun 19, 2026
f202f96
Run lint on GUI
ImSapphire Jun 19, 2026
d1b1195
Run spotless
ImSapphire Jun 19, 2026
4686e91
Remove unused launch import
ImSapphire Jun 19, 2026
0723625
Fix test build
ImSapphire Jun 19, 2026
98ccc7c
Use sensible min and max for smoothing
Erimelowo Jun 19, 2026
2299997
Resets settings + delay from GUI
Erimelowo Jun 19, 2026
d0b361a
Merge branch 'main' into server-rewrite
ImSapphire Jun 21, 2026
0530ceb
Get rid of grgit
ImSapphire Jun 21, 2026
0bbe35b
Upgrade Gradle and AGP
ImSapphire Jun 21, 2026
11669d4
Explicitly set abbrev for git describe
ImSapphire Jun 21, 2026
71895de
same thing but for vite lol
ImSapphire Jun 22, 2026
9edc747
Whitelist HID devices for serial access, send serial device type to GUI
ImSapphire Jun 22, 2026
6575a11
Merge branch 'main' into server-rewrite
ImSapphire Jun 22, 2026
cdc0e21
Update for SolarXR rewrite
Erimelowo Jun 22, 2026
70eda4f
Read mag vector from HID and send to the GUI
ImSapphire Jun 23, 2026
ce762ba
Spotless
ImSapphire Jun 23, 2026
67fbf0f
Improving GUI settings layout
Erimelowo Jun 23, 2026
8358ca1
Update packaging instructions
Erimelowo Jun 23, 2026
a2c4c0f
WIP leg tweaks
ButterscotchV Jun 25, 2026
c87b7ff
Update solarxr-protocol
Erimelowo Jun 24, 2026
234dabe
Make server work for solarxr rewrite 2nd pass
Erimelowo Jun 24, 2026
068a7a8
Nuke pub sub
Erimelowo Jun 24, 2026
d256506
ArmsResetMode
Erimelowo Jun 24, 2026
33d54b2
Fall back to config for solarxr null fields
Erimelowo Jun 24, 2026
9961cb4
Migrating the GUI for solarxr rewrite 2nd pass
Erimelowo Jul 2, 2026
ed211a9
Improving settings layout
Erimelowo Jul 2, 2026
d9edf9f
lint & format
Erimelowo Jul 2, 2026
67e5880
Fix steamvr -> output scrollTo
Erimelowo Jul 2, 2026
4ea0677
UserHeight/SkeletonHeight
Erimelowo Jul 2, 2026
396a049
Small GUI fixups
Erimelowo Jul 2, 2026
853db3f
TapDetectionSetupModeRequest missing []
Erimelowo Jul 2, 2026
9efc2b2
Rework electron build pipeline
loucass003 Jul 3, 2026
b7f87ab
Remove useless comments
loucass003 Jul 3, 2026
0c1ef06
Move configs out of states
Erimelowo Jul 3, 2026
a894b49
spotless
Erimelowo Jul 3, 2026
3afd737
Rewrite TapDetection into its own module
Erimelowo Jul 4, 2026
3da6efb
Tap detection over threshold shared
Erimelowo Jul 4, 2026
2fc891d
VRCOSC use_manual_network bool
Erimelowo Jul 4, 2026
4607616
Port #1825
ImSapphire Jul 6, 2026
f0667dc
Spotless
ImSapphire Jul 6, 2026
8b7ce00
Log found path of bindings provider
ImSapphire Jul 6, 2026
1ec0802
Log where we're creating IPC sockets on Linux
ImSapphire Jul 6, 2026
960647c
Fix bindings provider build after solarxr rework
ImSapphire Jul 6, 2026
0ff1bc9
Fix Android
ImSapphire Jul 6, 2026
006d8bb
actually fix Android lol
ImSapphire Jul 7, 2026
fdfbc35
Fix unit test compiler errors
ButterscotchV Jul 7, 2026
5f90983
Add acceleration calibration unit test
ButterscotchV Jul 7, 2026
e6e15a8
Calculate center of mass & clean up velocity state
ButterscotchV Jul 8, 2026
588c8d9
Update CONTRIBUTING.md
Erimelowo Jul 8, 2026
d99a0a7
Just placeholder of the brainstorming for IK
loucass003 Jul 9, 2026
0278968
Fix VMC/VRM solarxr communication
Erimelowo Jul 10, 2026
b379ebc
Also fix VRCOSC
Erimelowo Jul 10, 2026
deb0f1a
Fix h2 in h1
Erimelowo Jul 13, 2026
4add165
Remove extra name argument in VMCSettings
Erimelowo Jul 13, 2026
6d6492c
Add missing config and update solarxr
Erimelowo Jul 13, 2026
90706ac
Fix eslint
loucass003 Jul 13, 2026
8c49a7d
Skeleton Settings communication
Erimelowo Jul 13, 2026
6378eb3
OutputTrackerToggle
Erimelowo Jul 14, 2026
20be49e
Use OutputTrackerToggle for VRCOSC trackers
Erimelowo Jul 14, 2026
abec5ea
update solarxr
Erimelowo Jul 14, 2026
68545e5
Fix reset guards
Erimelowo Jul 14, 2026
fc7316c
Get rid of unused offsets and fix setting height
Erimelowo Jul 14, 2026
f7c821f
Better output trackers
loucass003 Jul 15, 2026
dbe0acd
Pause Tracking
loucass003 Jul 15, 2026
3452e2b
Fix Datafeed tests
loucass003 Jul 15, 2026
51fda0a
Fix wifi provisioning
loucass003 Jul 15, 2026
bb94364
Fix packet out of order error bc of heartbeat sending packet num 0
loucass003 Jul 15, 2026
47bd59b
Make proper check for canDoHeightCalibration
loucass003 Jul 15, 2026
12a5208
Nicer syntax
Erimelowo Jul 15, 2026
8c504bb
Add OutputTrackerToggle tests
Erimelowo Jul 15, 2026
527f5e0
Tests fix warnings
Erimelowo Jul 16, 2026
3517556
Add TapDetection tests
Erimelowo Jul 16, 2026
ff514fa
Use trackerRole as protocol serial
Erimelowo Jul 16, 2026
7d46e90
Brainstorming skeleton processors
Erimelowo Jul 17, 2026
a1c4de8
Fix filtering type switching
Erimelowo Jul 17, 2026
349666b
SpotlessApply
Erimelowo Jul 17, 2026
bf6d8eb
Fix trackerassignment and add default mountingOrientation
Erimelowo Jul 17, 2026
7433048
Fix null fallbacks when receiving from SolarXR
Erimelowo Jul 17, 2026
e401467
Use UPPER_CHEST instead of CHEST for chest output
Erimelowo Jul 17, 2026
01362ca
Keep SetStatus separate for debug
Erimelowo Jul 17, 2026
a6020ae
Handle driver tracker mapping more generously
Erimelowo Jul 17, 2026
5da133c
Fallback skeleton processor
Erimelowo Jul 18, 2026
577036e
Start CCD IK implementation
ButterscotchV Jul 20, 2026
b9776ab
Start constraint implementation
ButterscotchV Jul 20, 2026
f986f50
Rename RawBone to BoneInput
ButterscotchV Jul 20, 2026
5c4c64e
Add missing quaternion unitization to CCD IK
ButterscotchV Jul 20, 2026
9332ff8
Keybinds
loucass003 Jul 20, 2026
0e6e2d7
Keybinds properly working / rebindin
loucass003 Jul 20, 2026
7d213de
Split FallbackProcessor in 2
Erimelowo Jul 20, 2026
d0c2a27
Extract ImputeFingersProcessor from BoneLinkProcessor
Erimelowo Jul 20, 2026
74ee1bb
Impute spine WIP
Erimelowo Jul 20, 2026
56fcfe1
Finish ImputeSpineProcessor
Erimelowo Jul 21, 2026
44d9c68
Move processors into their own package
Erimelowo Jul 21, 2026
2ab148a
Rename a bunch of files to add - separators
Erimelowo Jul 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
9 changes: 5 additions & 4 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# Global code owner
* @Eirenliel

# Make everyone be able to approve SolarXR submodule changes
/solarxr-protocol @ButterscotchV @Erimelowo @loucass003

Expand All @@ -13,11 +16,11 @@

/gui/src/components/settings/ @Erimelowo @loucass003

# Electron part of the GUI
# Rust part of the GUI
/gui/electron/ @loucass003

# Some server code~
/server/ @ButterscotchV @loucass003 @Erimelowo
/server/ @ButterscotchV @Eirenliel @Erimelowo

/server/src/main/java/dev/slimevr/autobone/ @ButterscotchV
/server/src/main/java/dev/slimevr/poserecorder/ @ButterscotchV
Expand All @@ -27,8 +30,6 @@
/server/src/main/java/dev/slimevr/tracking/processor/ @Erimelowo
/server/src/main/java/dev/slimevr/filtering/ @Erimelowo

/bindings-provider/ @ImSapphire

# Linux files
*.nix @loucass003
/flake.lock @loucass003
Expand Down
123 changes: 24 additions & 99 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ jobs:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
matrix-cpp: ${{ steps.set-matrix.outputs.matrix-cpp }}
steps:
- id: set-matrix
shell: bash
Expand All @@ -26,44 +25,7 @@ jobs:
else
RESULT=$(echo "$BASE" | jq -c '.')
fi
RESULT_CPP=$(echo "$RESULT" | jq -c '[ .[] | select ( (.platform != "macos") and ( (.platform != "windows") or (.os | endswith("-arm") | not) ) ) ]')

echo "matrix={\"include\":$RESULT}" >> "$GITHUB_OUTPUT"
echo "matrix-cpp={\"include\":$RESULT_CPP}" >> "$GITHUB_OUTPUT"

build-bindings-provider:
name: Build bindings provider for ${{ matrix.os }}
needs: [setup-matrix]
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix-cpp) }}
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive
- if: matrix.platform == 'linux'
name: Install GCC
uses: egor-tensin/setup-gcc@v2
with:
version: 16
- name: Get CMake
uses: lukka/get-cmake@latest
- name: Configure
run: cmake -S bindings-provider/ -B bindings-provider/build -DCMAKE_BUILD_TYPE=Release
- name: Build
run: cmake --build bindings-provider/build --config Release -j6
- name: Upload artifact
uses: actions/upload-artifact@v7
with:
name: bindings-provider-${{ matrix.platform }}-${{ matrix.os }}
path: |
bindings-provider/build/slimevr-bindings-provider
bindings-provider/build/libopenvr_api.so
bindings-provider/build/Release/SlimeVR-Bindings-Provider.exe
bindings-provider/build/openvr_api.dll

gui-checks:
name: Gui Checks
runs-on: ubuntu-latest
Expand All @@ -72,10 +34,8 @@ jobs:
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Setup PNPM
uses: pnpm/action-setup@v6
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v6
with:
Expand All @@ -84,8 +44,8 @@ jobs:
- name: GUI Lint
run: pnpm i && cd gui && pnpm run lint

java-checks:
name: Java Checks
server-checks:
name: Server Checks
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -98,9 +58,11 @@ jobs:
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
- name: Java Spotless Check
uses: gradle/actions/setup-gradle@v5
- name: Server Spotless Check
run: ./gradlew spotlessCheck --build-cache
- name: Server Detekt Lint
run: ./gradlew :server:detekt --build-cache


build-server-jar:
Expand All @@ -111,21 +73,19 @@ jobs:
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
uses: gradle/actions/setup-gradle@v5
- name: Build ShadowJar
run: ./gradlew :server:desktop:shadowJar --build-cache
- name: Test with Gradle
run: ./gradlew :server:desktop:test
- name: Upload Server Jar
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v6
with:
name: server-jar
path: |
Expand All @@ -140,10 +100,8 @@ jobs:
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Setup PNPM
uses: pnpm/action-setup@v6
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v6
with:
Expand All @@ -156,14 +114,14 @@ jobs:
- name: Tar GUI Dist
run: tar -czf slimevr-gui-dist.tar.gz -C gui/out .
- name: Upload GUI Dist
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v6
with:
name: gui-dist
path: slimevr-gui-dist.tar.gz

package-desktop:
name: Package Desktop (${{ matrix.platform }} - ${{ matrix.os }})
needs: [setup-matrix, build-server-jar, build-gui-frontend, build-bindings-provider]
needs: [setup-matrix, build-server-jar, build-gui-frontend]
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
Expand All @@ -173,28 +131,20 @@ jobs:
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Setup PNPM
uses: pnpm/action-setup@v6
uses: pnpm/action-setup@v4
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version-file: '.node-version'
cache: 'pnpm'
- name: Download Server Jar
uses: actions/download-artifact@v8
uses: actions/download-artifact@v6
with:
name: server-jar
path: server
- if: contains(fromJson(needs.setup-matrix.outputs.matrix-cpp).include.*.os, matrix.os)
name: Download bindings provider artifact
uses: actions/download-artifact@v8
with:
name: bindings-provider-${{ matrix.platform }}-${{ matrix.os }}
path: bindings-provider/build/${{ matrix.platform == 'windows' && 'win' || 'linux' }}-${{ endsWith(matrix.os, '-arm') && 'arm64' || 'x64' }}
- name: Download GUI Dist
uses: actions/download-artifact@v8
uses: actions/download-artifact@v6
with:
name: gui-dist
- name: Extract GUI for Electron
Expand All @@ -208,15 +158,10 @@ jobs:
mkdir -p gui/dist/artifacts/linux/ \
gui/dist/artifacts/win \
gui/dist/artifacts/mac
VERSION=$(git --no-pager tag --sort -taggerdate --points-at HEAD | head -1)
[ -z "$VERSION" ] && VERSION="0.0.0"
VERSION="${VERSION#v}"
echo "Building version: $VERSION"
pnpm i
cd gui
pnpm i
pnpm exec electron-builder --${{ matrix.platform }} \
${{ matrix.platform == 'macos' && '--universal' || '' }} \
--config.extraMetadata.version="$VERSION" \
--publish never
- name: Collect and Rename Artifacts
shell: bash
Expand Down Expand Up @@ -244,7 +189,7 @@ jobs:
echo "Collected files:"
ls -lh "$DEST_DIR"
- name: Upload For Release
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v6
with:
name: release-${{ matrix.platform }}-${{ matrix.os }}
path: release-out/*
Expand All @@ -258,17 +203,15 @@ jobs:
uses: actions/checkout@v6
with:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
uses: gradle/actions/setup-gradle@v5
- name: Download GUI Dist
uses: actions/download-artifact@v8
uses: actions/download-artifact@v6
with:
name: gui-dist
- name: Extract GUI for Android
Expand All @@ -285,52 +228,34 @@ jobs:
- name: Prepare APK
run: cp server/android/build/outputs/apk/release/*.apk ./SlimeVR-android.apk
- name: Upload APK
uses: actions/upload-artifact@v7
uses: actions/upload-artifact@v6
with:
name: release-android
path: SlimeVR-android.apk

- name: Build Google Play release bundle
if: startsWith(github.ref, 'refs/tags/')
run: ./gradlew :server:android:bundleRelease
env:
ANDROID_STORE_FILE: ${{ secrets.ANDROID_GPLAY_STORE_FILE }}
ANDROID_STORE_PASSWD: ${{ secrets.ANDROID_GPLAY_STORE_PASSWD }}
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_GPLAY_KEY_ALIAS }}
ANDROID_KEY_PASSWD: ${{ secrets.ANDROID_GPLAY_KEY_PASSWD }}

- name: Upload the Google Play artifact
uses: actions/upload-artifact@v7
if: startsWith(github.ref, 'refs/tags/')
with:
# Artifact name
name: 'SlimeVR-Android-GPDev' # optional, default is artifact
# A file, directory or wildcard pattern that describes what to upload
path: server/android/build/outputs/bundle/release/*

create-release:
name: Finalize Release Draft
needs: [package-desktop, bundle-android, build-server-jar, build-gui-frontend]
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- name: Download All Release Artifacts
uses: actions/download-artifact@v8
uses: actions/download-artifact@v6
with:
pattern: release-*
path: release-out
merge-multiple: true
- name: Download Server Jar
uses: actions/download-artifact@v8
uses: actions/download-artifact@v6
with:
name: server-jar
path: server
- name: Download GUI Dist
uses: actions/download-artifact@v8
uses: actions/download-artifact@v6
with:
name: gui-dist
- name: Create GitHub Release
uses: softprops/action-gh-release@v3
uses: softprops/action-gh-release@v2
with:
draft: true
generate_release_notes: true
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/generate-update-manifest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ jobs:
run: |
npx @slimevr/update-manifest-generator@latest

- uses: actions/upload-artifact@v7
- uses: actions/upload-artifact@v6
with:
name: "update-manifest.json"
path: ./update-manifest.json

- name: Upload update-manifest.json to release
uses: softprops/action-gh-release@v3
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ secrets.UPDATE_MANIFEST_RELEASE_TAG }}
files: ./update-manifest.json
Expand Down
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@
# Syncthing ignore file
.stignore

# Ignore .idea
.idea
# Ignore .idea, except shared project inspection profiles
.idea/*
!.idea/inspectionProfiles/
!.idea/inspectionProfiles/*.xml

# Ignore .fleet
.fleet
Expand Down
3 changes: 0 additions & 3 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
[submodule "solarxr-protocol"]
path = solarxr-protocol
url = https://github.com/SlimeVR/SolarXR-Protocol.git
[submodule "svr-bindings-provider/openvr"]
path = bindings-provider/openvr
url = https://github.com/ValveSoftware/openvr.git
30 changes: 30 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/inspectionProfiles/profiles_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading