Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
f711d1d
Centralize EOCV-Sim's lifecycles into a central scope & rewrite Input…
serivesmejia Apr 15, 2026
724fc5b
Refactor the tunable field api into a cleaner implementation
serivesmejia Apr 16, 2026
27aae15
Improve CollapsiblePanelX by swapping label to a button
serivesmejia Apr 16, 2026
f890d60
Remove controversial witty comment in CrashReport
serivesmejia Apr 16, 2026
5e29bb2
Remove philosophical quotes in CrashReport
serivesmejia Apr 16, 2026
3d3a7a2
Refactor Visualizer class into kotlin & removed pleaseWaitDialog
serivesmejia Apr 21, 2026
409d7c9
Migrate to koin dependency injection & rewrite major classes into kotlin
serivesmejia Apr 22, 2026
f73436f
Redesign manager initialization into orchestrator to paralellize & de…
serivesmejia Apr 24, 2026
62042c7
Move lifecycle control away from the EOCVSim object into an Orchestra…
serivesmejia Apr 25, 2026
35f3a55
Support non-blocking cancellation of input sources
serivesmejia Apr 27, 2026
03d26c5
Reshape PhaseOrchestrable with external PhaseDependencies component &…
serivesmejia Apr 28, 2026
efca479
Implement individual apis for accessing controls on visualizer compon…
serivesmejia Apr 30, 2026
92ed92a
Fix issue where onDrawFrame was sometimes called before init & fix so…
serivesmejia May 9, 2026
0d3cc05
Remove test stage from webcam creation dialog
serivesmejia May 10, 2026
e743b27
Migrate to WPILib's opencv packaging & cscore for webcam handling
serivesmejia May 12, 2026
5d6f3d0
Migrate to jackson, get rid of gson
serivesmejia May 12, 2026
24a2532
Fix deserialization issues, add timeout settings in the gui for webcams
serivesmejia May 12, 2026
4a076b7
Shorten license headers & update github workflows to java 25
serivesmejia May 12, 2026
26c5e7b
Add multiplatform releases in actions
serivesmejia May 13, 2026
fdefb72
Fix CI build parameters & consolidate maven publish into single file
serivesmejia May 13, 2026
791df81
Fix build job & include all three platforms on dev release
serivesmejia May 13, 2026
768de59
Properly upload all artifacts to release
serivesmejia May 13, 2026
e155f60
Add Linux arm64 and Intel mac
serivesmejia May 13, 2026
8d90f4a
Fix broken spaces on workflow file
serivesmejia May 13, 2026
a8cf726
Fix runner images
serivesmejia May 13, 2026
2ccd3ba
Fix ubuntu arm image name
serivesmejia May 13, 2026
b2cfc2f
Add Bootstrap that checks for Java version instead of silently failing
serivesmejia May 13, 2026
0ae0590
Fix job names in workflow dependencies
serivesmejia May 13, 2026
fa6a660
Mention package platform in library loading crash dialog
serivesmejia May 13, 2026
8ef7bf4
Fix license headers for third-party files
serivesmejia May 13, 2026
c7bb09a
Fix license header of android files
serivesmejia May 13, 2026
cd1573a
Improve Bootstrap prompt UI
serivesmejia May 13, 2026
5527ada
Add ProgramFiles Java scanning on Bootstrap
serivesmejia May 13, 2026
85ff210
Put Continue button on top in Bootstrap UI
serivesmejia May 13, 2026
c215ac1
Remove natives and shadowJar from maven publications
serivesmejia May 13, 2026
2f17a31
Replace AprilTagPlugin with WPILib's apriltag support, keep backwards…
serivesmejia May 14, 2026
c6b140b
Fix testing to use WPILib's AprilTagJNI
serivesmejia May 14, 2026
08d35f6
Move from io.github.deltacv to org.deltacv & use Jackson for TOML
serivesmejia May 19, 2026
5b30084
Use jackson for TOML, improve camera creation dialog & update gradle …
serivesmejia May 19, 2026
fd0fbb9
Add changelog for 4.2.0
serivesmejia May 20, 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
  •  
  •  
  •  
250 changes: 237 additions & 13 deletions .github/workflows/build_ci.yml
Original file line number Diff line number Diff line change
@@ -1,49 +1,273 @@
name: Build and test with Gradle
name: Build, Test & Release

on:
push:
branches: [ master, dev ]
tags: ['v*']
pull_request:

on: [push, pull_request]

jobs:
test_linux:
runs-on: ubuntu-latest
build_linux:
runs-on: ubuntu-24.04
env:
BUILD_ENV: ${{ startsWith(github.ref, 'refs/tags/v') && 'release' || 'dev' }}

steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '17'
java-version: '25'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build and test with Gradle
run: ./gradlew test
run: ./gradlew -Penv=${{ env.BUILD_ENV }} clean build shadowJar
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: eocvsim-ubuntu-latest
path: |
EOCV-Sim/build/libs/*.jar

build_linux_arm:
runs-on: ubuntu-24.04-arm
env:
BUILD_ENV: ${{ startsWith(github.ref, 'refs/tags/v') && 'release' || 'dev' }}

test_windows:
steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '25'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build and test with Gradle
run: ./gradlew -Penv=${{ env.BUILD_ENV }} clean build shadowJar
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: eocvsim-ubuntu-arm64
path: |
EOCV-Sim/build/libs/*.jar

build_windows:
runs-on: windows-latest
env:
BUILD_ENV: ${{ startsWith(github.ref, 'refs/tags/v') && 'release' || 'dev' }}

steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '25'
- name: Build and test with Gradle (Windows)
shell: pwsh
run: .\gradlew.bat -Penv=${{ env.BUILD_ENV }} clean build shadowJar
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: eocvsim-windows-latest
path: |
EOCV-Sim/build/libs/*.jar

build_mac:
runs-on: macos-26
env:
BUILD_ENV: ${{ startsWith(github.ref, 'refs/tags/v') && 'release' || 'dev' }}

steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '17'
java-version: '25'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build and test with Gradle
run: ./gradlew test
run: ./gradlew -Penv=${{ env.BUILD_ENV }} clean build shadowJar
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: eocvsim-macos-latest
path: |
EOCV-Sim/build/libs/*.jar

test_mac:
runs-on: macos-latest
build_mac_intel:
runs-on: macos-26-intel
env:
BUILD_ENV: ${{ startsWith(github.ref, 'refs/tags/v') && 'release' || 'dev' }}

steps:
- uses: actions/checkout@v2
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '17'
java-version: '25'
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build and test with Gradle
run: ./gradlew test
run: ./gradlew -Penv=${{ env.BUILD_ENV }} clean build shadowJar
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: eocvsim-macos-13
path: |
EOCV-Sim/build/libs/*.jar

release:
needs: [build_linux, build_linux_arm, build_windows, build_mac, build_mac_intel]
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/checkout@v2

- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '25'

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Publish package to maven central
env:
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.JRELEASER_MAVENCENTRAL_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.JRELEASER_MAVENCENTRAL_PASSWORD }}
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.JRELEASER_GPG_PASSPHRASE }}
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.JRELEASER_GPG_SECRET_KEY }}
run: ./gradlew -Penv=release :Common:publishToMavenCentral :Vision:publishToMavenCentral :EOCV-Sim:publishToMavenCentral -x test -x :EOCV-Sim:shadowJar

- name: Build release shadow jar with Gradle
run: ./gradlew -Penv=release shadowJar -x test

- name: Download Linux artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-ubuntu-latest
path: artifacts/ubuntu

- name: Download Linux ARM64 artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-ubuntu-arm64
path: artifacts/ubuntu-arm64

- name: Download macOS artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-macos-latest
path: artifacts/macos

- name: Download Intel macOS artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-macos-13
path: artifacts/macos-intel

- name: Download Windows artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-windows-latest
path: artifacts/windows

- name: List downloaded artifacts
run: |
ls -la artifacts || true
ls -la artifacts/ubuntu || true
ls -la artifacts/ubuntu-arm64 || true
ls -la artifacts/macos || true
ls -la artifacts/macos-intel || true
ls -la artifacts/windows || true

- name: Select platform jars for release
run: |
mkdir -p release-jars
# Copy the first (and should be only) jar from each platform folder
cp artifacts/ubuntu/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No Linux jar found"
cp artifacts/ubuntu-arm64/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No Linux ARM64 jar found"
cp artifacts/windows/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No Windows jar found"
cp artifacts/macos/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No macOS jar found"
cp artifacts/macos-intel/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No Intel macOS jar found"
# Remove source jars if any were copied
rm -f release-jars/*-sources.jar
# Remove the generic jar (no platform suffix)
find release-jars -name "EOCV-Sim-*.jar" ! -name "*x86*" ! -name "*arm*" ! -name "*win*" -delete
echo "Release jars to upload:"
ls -la release-jars/

- name: Create GitHub Release and upload artifacts
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.ref_name }}
files: release-jars/*.jar
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

dev_release:
needs: [build_linux, build_linux_arm, build_windows, build_mac, build_mac_intel]
runs-on: ubuntu-latest
if: github.event_name == 'push' && github.ref != 'refs/heads/master' && !startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download Linux artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-ubuntu-latest
path: artifacts/dev/ubuntu

- name: Download Linux ARM64 artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-ubuntu-arm64
path: artifacts/dev/ubuntu-arm64

- name: Download macOS artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-macos-latest
path: artifacts/dev/macos

- name: Download Windows artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-windows-latest
path: artifacts/dev/windows

- name: Download Intel macOS artifacts
uses: actions/download-artifact@v4
with:
name: eocvsim-macos-13
path: artifacts/dev/macos-intel

- name: Select platform jars for dev release
run: |
mkdir -p release-jars
# Copy the first (and should be only) jar from each platform folder
cp artifacts/dev/ubuntu/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No Linux jar found"
cp artifacts/dev/ubuntu-arm64/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No Linux ARM64 jar found"
cp artifacts/dev/windows/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No Windows jar found"
cp artifacts/dev/macos/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No macOS jar found"
cp artifacts/dev/macos-intel/EOCV-Sim-*.jar release-jars/ 2>/dev/null || echo "No Intel macOS jar found"
# Remove source jars if any were copied
rm -f release-jars/*-sources.jar
# Remove the generic jar (no platform suffix)
find release-jars -name "EOCV-Sim-*.jar" ! -name "*x86*" ! -name "*arm*" ! -name "*win*" -delete
echo "Dev release jars to upload:"
ls -la release-jars/

- name: Create Dev Release and upload artifacts
uses: pyTooling/Actions/releaser@r0
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag: 'Dev'
rm: true
files: |
release-jars/*.jar
55 changes: 0 additions & 55 deletions .github/workflows/release_ci.yml

This file was deleted.

3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -113,4 +113,5 @@ fabric.properties

*.DS_Store

imgui.ini
imgui.ini
.vscode
Loading
Loading