Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
206 commits
Select commit Hold shift + click to select a range
d691619
Burn everything and start fresh
loucass003 Mar 17, 2026
e060bc7
Trying to get the basic shape of the state system out. Testing it wit…
loucass003 Mar 17, 2026
01b7b8d
basic handshake
loucass003 Mar 18, 2026
6eb63ce
Tracker data
loucass003 Mar 19, 2026
4fd4997
Logger test
loucass003 Mar 19, 2026
4c1e469
Solarxr start
loucass003 Mar 19, 2026
334be5f
Solaxr datafeed out
loucass003 Mar 20, 2026
a42ed79
Basic config system
loucass003 Mar 23, 2026
af4665e
IPC interface for linux (tested) and windows (untested) - Solarxr / d…
loucass003 Mar 24, 2026
e37a37b
Small optimisations / fixes to make sure couroutines do well and prev…
loucass003 Mar 24, 2026
2235b81
Join datafeed timers on separate coroutine
ImSapphire Mar 24, 2026
ad9bc91
Basic codestyle doc + rename stuff to match it
loucass003 Mar 24, 2026
8531556
Small design guidelines update
loucass003 Mar 25, 2026
8ffd00e
Serial + Serial Flasher
loucass003 Mar 25, 2026
d46fb01
Unit tests + Fix start datafeed behaviour
loucass003 Mar 26, 2026
86dbdbd
OTA updates + Packet processing optimisations + code cleanup
loucass003 Mar 26, 2026
1001b7f
Cleanup
loucass003 Mar 26, 2026
6c4fded
Make ota and serial check for the device status
loucass003 Mar 26, 2026
5946ca1
Better udp and feeder connection handling
loucass003 Mar 26, 2026
fc476a1
Proper handling of the reconnect on ota and serial
loucass003 Mar 26, 2026
ea92fb4
Basic HID support
loucass003 Mar 26, 2026
8168e13
VRC settings (Non tested on windows)
loucass003 Mar 27, 2026
fa1d201
Make vrc config save mute settings to config
loucass003 Mar 27, 2026
9d1e776
Re organise project
loucass003 Mar 27, 2026
38743dc
organise more stuff
loucass003 Mar 27, 2026
df4569f
Format
loucass003 Mar 27, 2026
f65f41a
User height calibration (Non tested)
loucass003 Mar 29, 2026
71b7491
Better logs and ping id sequence for udp devices
loucass003 Mar 30, 2026
e07ef04
batch dispatch together
loucass003 Mar 30, 2026
0ab8052
More position data for devices
loucass003 Mar 30, 2026
dd6c1e7
Lint
loucass003 Mar 30, 2026
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
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
  •  
  •  
  •  
20 changes: 11 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,23 +84,25 @@ 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
uses: actions/checkout@v6
with:
submodules: recursive
- name: Set up JDK 17
- name: Set up JDK 24
uses: actions/setup-java@v5
with:
java-version: '17'
java-version: '24'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
- name: Java Spotless Check
- name: Server Spotless Check
run: ./gradlew spotlessCheck --build-cache
- name: Server Detekt Lint
run: ./gradlew :server:detekt --build-cache


build-server-jar:
Expand All @@ -113,10 +115,10 @@ jobs:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
- name: Set up JDK 24
uses: actions/setup-java@v5
with:
java-version: '17'
java-version: '24'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
Expand Down Expand Up @@ -260,10 +262,10 @@ jobs:
submodules: recursive
- name: Get tags
run: git fetch --tags origin --recurse-submodules=no --force
- name: Set up JDK 17
- name: Set up JDK 24
uses: actions/setup-java@v5
with:
java-version: '17'
java-version: '24'
distribution: 'adopt'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6
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
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.

64 changes: 64 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# OpenCode Agent Instructions

## Environment & Tooling
- **Server (Kotlin/Java)**: Use `gradle` (`./gradlew`).
- Run: `./gradlew run`
- Build: `./gradlew shadowJar`
- Format: `./gradlew spotlessApply`
- **GUI (Electron/TS)**: Use `pnpm`.
- Install: `pnpm i`
- Dev: `pnpm gui`
- Build: `pnpm package:build`
- Format: `pnpm run lint:fix`
- **SolarXR Protocol (Submodule)**: Use `bash` and `pnpm`.
- Edit: Only `schema/` files.
- Generate: `./generate-flatbuffer.sh` (Linux/macOS).
- Sync: Run `pnpm i` in root after generation.

## Architecture: The Reducer/Behaviour Pattern
The server uses a reactive reducer pattern for thread safety and observability.

- **Core Primitives**:
- `Context<S, A>`: Holds `StateFlow<S>`, `CoroutineScope`, and `Behaviour`s.
- `Behaviour<S, A, C>`:
- `reduce(state, action)`: **Pure function**. No side effects.
- `observe(receiver)`: **Side effects**. Launch coroutines using `receiver.context.scope`.
- **Lifecycle**: `Module.create()` (inert construction) $\rightarrow$ `module.startObserving()` (side-effect activation).
- **DI**: Uses `Phase1ContextProvider` $\rightarrow$ `AppContextProvider` hierarchy.
- **Communication**: Modules communicate via `dispatch(action)` or by observing another module's `StateFlow`.

## Design & Coding Preferences
- **Function over Class**: Prefer plain functions or `object` over classes for single-purpose logic.
- **Function over Extension**: Use plain functions instead of extension functions unless the receiver is the primary subject.
- **Action Selection**:
- Use `Update` (with a lambda) for internal state changes that require no external reaction.
- Use **Named Actions** when multiple behaviours must react to a specific event.
- **State Management**: Only include data in `StateFlow` if it is required for observation by other modules.
- **Communication**: Decouple modules by using `dispatch` or observing `StateFlow` rather than direct method calls.

## Agent Workflow
- **Phase 1: Discovery**: Use the `Glob` $\rightarrow$ `Grep` $\rightarrow$ `Read` pattern. Never guess file paths or contents.
- **Phase 2: Planning**: For complex tasks, use `todowrite` to create a checklist. Present the plan to the user before implementation.
- **Phase 3: Implementation**: Use `edit` for existing files; `write` for new files.
- **Phase 4: Verification**: Always run the relevant linting or testing tools before marking a task as complete.

## Common Pitfalls
- **Coroutine Leaks**: Never launch coroutines in `observe` using a global scope; **always** use `receiver.context.scope`.
- **Direct State Mutation**: Never attempt to mutate state properties directly. Always use `dispatch(action)`.
- **Incomplete Cleanup**: Ensure any module owning a `Context` implements a `dispose()` method.

## Conventions
- **Files**: `module.kt` (Class/State/Actions) and `behaviours.kt` (Implementations).
- **Actions**: Use `sealed interface`.
- **State**: Data classes must use `val` only.
- **Cleanup**: We use a direct `dispose()` method on modules instead of a `Disposable` interface.
- **Detailed Conventions**: See `server/README.md` for full coding style and architecture details.

## Testing
- **Reducers**: Test by creating a `Context` with specific `Behaviour`s.
- **Modules**: Use `TestAppContext` and `buildTest...` helpers from `TestServer.kt`.

## Verification Protocol
- **Linting**: Run `./gradlew spotlessApply` (Server) or `pnpm run lint:fix` (GUI).
- **Testing**: Identify and run the relevant test suite (e.g., `./gradlew test` or specific module tests).
- **Final Audit**: Perform a final `git diff` check to ensure no unintended changes were made.
11 changes: 7 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,24 @@ Now you can open the codebase in [IDEA](https://www.jetbrains.com/idea/download/

### Java (server)

Before contributing to the server, read [server/README.md](server/README.md) for an overview of its architecture and design guidelines.

The Java code is built with `gradle`, a CLI tool that manages java projects and their
dependencies.
- You can run the server by running `./gradlew run` in your IDE's terminal.
- To compile the code, run `./gradlew shadowJar`. The result will
be at `server/build/libs/slimevr.jar` (you can ignore `server.jar`).
be at `server/desktop/build/libs/slimevr.jar` (you can ignore `server.jar`).

(Note: Your IDE may be able to do all of the above for you.)

### Electron (gui)

- Activate corepack (included with Node.JS) via `corepack enable` (might require administrator permissions)
- Activate corepack (included with Node.js) via `corepack enable`
(might require launching Git Bash as administrator on Windows)
- Run `pnpm i` in your IDE's terminal to download and install dependencies.
- To launch the GUI in dev mode, run `pnpm gui`.
- Finally, to compile for production, run `pnpm package:build`. The result
will be at `dist/artifacts/` content will change depending of the platform.
- Finally, to compile for production, run `pnpm package:build`.
The result will be in `gui/dist/artifacts/`. Content will change depending on the platform.

## Code style

Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ Latest setup instructions are [in our docs](https://docs.slimevr.dev/server/inde
## Building & Contributing
For information on building and contributing to the codebase, see [CONTRIBUTING.md](CONTRIBUTING.md).

For an overview of the server architecture and design guidelines, see [server/README.md](server/README.md).

## Translating

Translation is done via Pontoon at [i18n.slimevr.dev](https://i18n.slimevr.dev/). Please join our [Discord translation forum](https://discord.com/channels/817184208525983775/1050413434249949235) to coordinate.
Expand Down
19 changes: 18 additions & 1 deletion flake.lock

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

17 changes: 14 additions & 3 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@

inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
# Pinned to a revision that still ships temurin jdk-24
nixpkgs-jdk24.url = "github:NixOS/nixpkgs/d0fc30899600b9b3466ddb260fd83deb486c32f1";
flake-parts.url = "github:hercules-ci/flake-parts";
};

outputs =
inputs@{
self,
nixpkgs,
nixpkgs-jdk24,
flake-parts,
...
}:
Expand All @@ -20,8 +23,15 @@
];

perSystem =
{ lib, pkgs, ... }:
{
system,
lib,
pkgs,
...
}:
let
java = (import nixpkgs-jdk24 { inherit system; }).jdk24;

runtimeLibs = [
pkgs.alsa-lib
pkgs.libpulseaudio
Expand Down Expand Up @@ -114,7 +124,8 @@
devShells.default = pkgs.mkShell {
packages = [
# for running the jar
pkgs.jdk17
java

# for build
pkgs.electron
pkgs.rpm
Expand All @@ -139,7 +150,7 @@
];
buildInputs = runtimeLibs;

JAVA_HOME = "${pkgs.jdk17}/lib/openjdk";
JAVA_HOME = "${java}/lib/openjdk";
USE_SYSTEM_FPM = "true";
ELECTRON_BUILDER_7ZIP_PATH = "${pkgs.p7zip}/bin/7za";
APPIMAGE_TOOLS_PATH = "${appImageTools}";
Expand Down
5 changes: 1 addition & 4 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,4 @@ kotlinVersion=2.3.10
spotlessVersion=8.2.1
shadowJarVersion=9.3.1
buildconfigVersion=6.0.7

# Fix gradle leaving multiple java processes running that accumulate and use multiple GBs of RAM
# This mostly seems to affect it when running from console, and then sending a SIGINT (Ctrl + C)
org.gradle.daemon.idletimeout=10000
wireVersion=5.3.1
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.4-bin.zip
distributionSha256Sum=f1771298a70f6db5a29daf62378c4e18a17fc33c9ba6b14362e0cdf40610380d
distributionSha256Sum=bbaeb2fef8710818cf0e261201dab964c572f92b942812df0c3620d62a529a01
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
9 changes: 4 additions & 5 deletions gradlew

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

4 changes: 2 additions & 2 deletions gradlew.bat

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

Loading
Loading