From 837849b7dac6aef9fdd6a03c0cfeee4d58d3abb5 Mon Sep 17 00:00:00 2001 From: samfreund Date: Sun, 16 Nov 2025 21:44:37 -0600 Subject: [PATCH 01/10] bump wpilib to 2026 beta --- .github/pull_request_template.md | 2 +- build.gradle | 4 ++-- .../advanced-installation/sw_install/windows-pc.md | 2 +- photon-lib/py/setup.py | 10 +++++----- photonlib-cpp-examples/aimandrange/build.gradle | 6 +++--- photonlib-cpp-examples/aimattarget/build.gradle | 6 +++--- photonlib-cpp-examples/poseest/build.gradle | 6 +++--- photonlib-java-examples/aimandrange/build.gradle | 6 +++--- photonlib-java-examples/aimattarget/build.gradle | 6 +++--- photonlib-java-examples/poseest/build.gradle | 6 +++--- photonlib-python-examples/aimandrange/pyproject.toml | 2 +- photonlib-python-examples/aimattarget/pyproject.toml | 2 +- photonlib-python-examples/poseest/pyproject.toml | 2 +- 13 files changed, 30 insertions(+), 30 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 704a41b1ac..a2233f080c 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -13,6 +13,6 @@ Merge checklist: - [ ] The description documents the _what_ and _why_ - [ ] If this PR changes behavior or adds a feature, user documentation is updated - [ ] If this PR touches photon-serde, all messages have been regenerated and hashes have not changed unexpectedly -- [ ] If this PR touches configuration, this is backwards compatible with settings back to v2025.3.2 +- [ ] If this PR touches configuration, this is backwards compatible with settings back to v2026.1.1-beta-1 - [ ] If this PR touches pipeline settings or anything related to data exchange, the frontend typing is updated - [ ] If this PR addresses a bug, a regression test for it is added diff --git a/build.gradle b/build.gradle index 15de76bd39..878594de27 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { id "cpp" id "com.diffplug.spotless" version "6.24.0" id "edu.wpi.first.wpilib.repositories.WPILibRepositoriesPlugin" version "2020.2" - id "edu.wpi.first.GradleRIO" version "2025.3.2" + id "edu.wpi.first.GradleRIO" version "2026.1.1-beta-1" id 'edu.wpi.first.WpilibTools' version '1.3.0' id 'com.google.protobuf' version '0.9.3' apply false id 'edu.wpi.first.GradleJni' version '1.1.0' @@ -32,7 +32,7 @@ ext.allOutputsFolder = file("$project.buildDir/outputs") apply from: "versioningHelper.gradle" ext { - wpilibVersion = "2025.3.2" + wpilibVersion = "2026.1.1-beta-1" wpimathVersion = wpilibVersion openCVYear = "2025" openCVversion = "4.10.0-3" diff --git a/docs/source/docs/advanced-installation/sw_install/windows-pc.md b/docs/source/docs/advanced-installation/sw_install/windows-pc.md index 629b32fa74..b428790b4d 100644 --- a/docs/source/docs/advanced-installation/sw_install/windows-pc.md +++ b/docs/source/docs/advanced-installation/sw_install/windows-pc.md @@ -12,7 +12,7 @@ Bonjour provides more stable networking when using Windows PCs. Install [Bonjour ## Installing Java -PhotonVision requires a JDK installed and on the system path. **JDK 17 is needed. Windows Users must use the JDK that ships with WPILib.** [Download and install it from here.](https://github.com/wpilibsuite/allwpilib/releases/tag/v2025.3.2) Either ensure the only Java on your PATH is the WPILIB Java or specify it to gradle with `-Dorg.gradle.java.home=C:\Users\Public\wpilib\2025\jdk`: +PhotonVision requires a JDK installed and on the system path. **JDK 17 is needed. Windows Users must use the JDK that ships with WPILib.** [Download and install it from here.](https://github.com/wpilibsuite/allwpilib/releases/tag/2026.1.1-beta-1) Either ensure the only Java on your PATH is the WPILIB Java or specify it to gradle with `-Dorg.gradle.java.home=C:\Users\Public\wpilib\2025\jdk`: ``` > ./gradlew run "-Dorg.gradle.java.home=C:\Users\Public\wpilib\2025\jdk" diff --git a/photon-lib/py/setup.py b/photon-lib/py/setup.py index f2e3d278ab..41a550ca2f 100644 --- a/photon-lib/py/setup.py +++ b/photon-lib/py/setup.py @@ -61,11 +61,11 @@ version=versionString, install_requires=[ "numpy~=2.1", - "wpilib<2026,>=2025.3.2", - "robotpy-wpimath<2026,>=2025.3.2", - "robotpy-apriltag<2026,>=2025.3.2", - "robotpy-cscore<2026,>=2025.3.2", - "pyntcore<2026,>=2025.3.2", + "wpilib<2026,>=2026.1.1-beta-1", + "robotpy-wpimath<2026,>=2026.1.1-beta-1", + "robotpy-apriltag<2026,>=2026.1.1-beta-1", + "robotpy-cscore<2026,>=2026.1.1-beta-1", + "pyntcore<2026,>=2026.1.1-beta-1", "opencv-python;platform_machine!='roborio'", ], description=descriptionStr, diff --git a/photonlib-cpp-examples/aimandrange/build.gradle b/photonlib-cpp-examples/aimandrange/build.gradle index 0c20a5cddf..e00e0d0d71 100644 --- a/photonlib-cpp-examples/aimandrange/build.gradle +++ b/photonlib-cpp-examples/aimandrange/build.gradle @@ -1,7 +1,7 @@ plugins { id "cpp" id "google-test-test-suite" - id "edu.wpi.first.GradleRIO" version "2025.3.2" + id "edu.wpi.first.GradleRIO" version "2026.1.1-beta-1" } repositories { @@ -11,8 +11,8 @@ repositories { wpi.maven.useLocal = false wpi.maven.useDevelopment = false -wpi.versions.wpilibVersion = "2025.3.2" -wpi.versions.wpimathVersion = "2025.3.2" +wpi.versions.wpilibVersion = "2026.1.1-beta-1" +wpi.versions.wpimathVersion = "2026.1.1-beta-1" // Define my targets (RoboRIO) and artifacts (deployable files) // This is added by GradleRIO's backing project DeployUtils. diff --git a/photonlib-cpp-examples/aimattarget/build.gradle b/photonlib-cpp-examples/aimattarget/build.gradle index 0c20a5cddf..e00e0d0d71 100644 --- a/photonlib-cpp-examples/aimattarget/build.gradle +++ b/photonlib-cpp-examples/aimattarget/build.gradle @@ -1,7 +1,7 @@ plugins { id "cpp" id "google-test-test-suite" - id "edu.wpi.first.GradleRIO" version "2025.3.2" + id "edu.wpi.first.GradleRIO" version "2026.1.1-beta-1" } repositories { @@ -11,8 +11,8 @@ repositories { wpi.maven.useLocal = false wpi.maven.useDevelopment = false -wpi.versions.wpilibVersion = "2025.3.2" -wpi.versions.wpimathVersion = "2025.3.2" +wpi.versions.wpilibVersion = "2026.1.1-beta-1" +wpi.versions.wpimathVersion = "2026.1.1-beta-1" // Define my targets (RoboRIO) and artifacts (deployable files) // This is added by GradleRIO's backing project DeployUtils. diff --git a/photonlib-cpp-examples/poseest/build.gradle b/photonlib-cpp-examples/poseest/build.gradle index 0c20a5cddf..e00e0d0d71 100644 --- a/photonlib-cpp-examples/poseest/build.gradle +++ b/photonlib-cpp-examples/poseest/build.gradle @@ -1,7 +1,7 @@ plugins { id "cpp" id "google-test-test-suite" - id "edu.wpi.first.GradleRIO" version "2025.3.2" + id "edu.wpi.first.GradleRIO" version "2026.1.1-beta-1" } repositories { @@ -11,8 +11,8 @@ repositories { wpi.maven.useLocal = false wpi.maven.useDevelopment = false -wpi.versions.wpilibVersion = "2025.3.2" -wpi.versions.wpimathVersion = "2025.3.2" +wpi.versions.wpilibVersion = "2026.1.1-beta-1" +wpi.versions.wpimathVersion = "2026.1.1-beta-1" // Define my targets (RoboRIO) and artifacts (deployable files) // This is added by GradleRIO's backing project DeployUtils. diff --git a/photonlib-java-examples/aimandrange/build.gradle b/photonlib-java-examples/aimandrange/build.gradle index 274072eb01..9dc902a9b6 100644 --- a/photonlib-java-examples/aimandrange/build.gradle +++ b/photonlib-java-examples/aimandrange/build.gradle @@ -1,6 +1,6 @@ plugins { id "java" - id "edu.wpi.first.GradleRIO" version "2025.3.2" + id "edu.wpi.first.GradleRIO" version "2026.1.1-beta-1" } sourceCompatibility = JavaVersion.VERSION_17 @@ -13,8 +13,8 @@ repositories { } wpi.maven.useDevelopment = true -wpi.versions.wpilibVersion = "2025.3.2" -wpi.versions.wpimathVersion = "2025.3.2" +wpi.versions.wpilibVersion = "2026.1.1-beta-1" +wpi.versions.wpimathVersion = "2026.1.1-beta-1" // Define my targets (RoboRIO) and artifacts (deployable files) diff --git a/photonlib-java-examples/aimattarget/build.gradle b/photonlib-java-examples/aimattarget/build.gradle index 15409f7cd2..12719b0575 100644 --- a/photonlib-java-examples/aimattarget/build.gradle +++ b/photonlib-java-examples/aimattarget/build.gradle @@ -1,6 +1,6 @@ plugins { id "java" - id "edu.wpi.first.GradleRIO" version "2025.3.2" + id "edu.wpi.first.GradleRIO" version "2026.1.1-beta-1" } sourceCompatibility = JavaVersion.VERSION_17 @@ -9,8 +9,8 @@ targetCompatibility = JavaVersion.VERSION_17 def ROBOT_MAIN_CLASS = "frc.robot.Main" wpi.maven.useDevelopment = true -wpi.versions.wpilibVersion = "2025.3.2" -wpi.versions.wpimathVersion = "2025.3.2" +wpi.versions.wpilibVersion = "2026.1.1-beta-1" +wpi.versions.wpimathVersion = "2026.1.1-beta-1" // Define my targets (RoboRIO) and artifacts (deployable files) diff --git a/photonlib-java-examples/poseest/build.gradle b/photonlib-java-examples/poseest/build.gradle index b8ee5358ca..3b903edfcc 100644 --- a/photonlib-java-examples/poseest/build.gradle +++ b/photonlib-java-examples/poseest/build.gradle @@ -1,6 +1,6 @@ plugins { id "java" - id "edu.wpi.first.GradleRIO" version "2025.3.2" + id "edu.wpi.first.GradleRIO" version "2026.1.1-beta-1" } sourceCompatibility = JavaVersion.VERSION_17 @@ -9,8 +9,8 @@ targetCompatibility = JavaVersion.VERSION_17 def ROBOT_MAIN_CLASS = "frc.robot.Main" wpi.maven.useDevelopment = true -wpi.versions.wpilibVersion = "2025.3.2" -wpi.versions.wpimathVersion = "2025.3.2" +wpi.versions.wpilibVersion = "2026.1.1-beta-1" +wpi.versions.wpimathVersion = "2026.1.1-beta-1" // Define my targets (RoboRIO) and artifacts (deployable files) diff --git a/photonlib-python-examples/aimandrange/pyproject.toml b/photonlib-python-examples/aimandrange/pyproject.toml index 3fc8c5bded..4f8a37014b 100644 --- a/photonlib-python-examples/aimandrange/pyproject.toml +++ b/photonlib-python-examples/aimandrange/pyproject.toml @@ -6,7 +6,7 @@ [tool.robotpy] # Version of robotpy this project depends on -robotpy_version = "2025.3.2" +robotpy_version = "2026.1.1-beta-1" # Which extra RobotPy components should be installed # -> equivalent to `pip install robotpy[extra1, ...] diff --git a/photonlib-python-examples/aimattarget/pyproject.toml b/photonlib-python-examples/aimattarget/pyproject.toml index 3fc8c5bded..4f8a37014b 100644 --- a/photonlib-python-examples/aimattarget/pyproject.toml +++ b/photonlib-python-examples/aimattarget/pyproject.toml @@ -6,7 +6,7 @@ [tool.robotpy] # Version of robotpy this project depends on -robotpy_version = "2025.3.2" +robotpy_version = "2026.1.1-beta-1" # Which extra RobotPy components should be installed # -> equivalent to `pip install robotpy[extra1, ...] diff --git a/photonlib-python-examples/poseest/pyproject.toml b/photonlib-python-examples/poseest/pyproject.toml index 3fc8c5bded..4f8a37014b 100644 --- a/photonlib-python-examples/poseest/pyproject.toml +++ b/photonlib-python-examples/poseest/pyproject.toml @@ -6,7 +6,7 @@ [tool.robotpy] # Version of robotpy this project depends on -robotpy_version = "2025.3.2" +robotpy_version = "2026.1.1-beta-1" # Which extra RobotPy components should be installed # -> equivalent to `pip install robotpy[extra1, ...] From 2038e5fe48b70925470d954bcdc2f51452768078 Mon Sep 17 00:00:00 2001 From: Sam Freund Date: Sun, 16 Nov 2025 21:55:57 -0600 Subject: [PATCH 02/10] Discard changes to .github/pull_request_template.md --- .github/pull_request_template.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index a2233f080c..704a41b1ac 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -13,6 +13,6 @@ Merge checklist: - [ ] The description documents the _what_ and _why_ - [ ] If this PR changes behavior or adds a feature, user documentation is updated - [ ] If this PR touches photon-serde, all messages have been regenerated and hashes have not changed unexpectedly -- [ ] If this PR touches configuration, this is backwards compatible with settings back to v2026.1.1-beta-1 +- [ ] If this PR touches configuration, this is backwards compatible with settings back to v2025.3.2 - [ ] If this PR touches pipeline settings or anything related to data exchange, the frontend typing is updated - [ ] If this PR addresses a bug, a regression test for it is added From aa84533885dad514a10e76abd6464715620b8399 Mon Sep 17 00:00:00 2001 From: samfreund Date: Mon, 17 Nov 2025 01:21:27 -0600 Subject: [PATCH 03/10] pin robotpy versions --- photon-lib/py/setup.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/photon-lib/py/setup.py b/photon-lib/py/setup.py index 41a550ca2f..361f7b81c2 100644 --- a/photon-lib/py/setup.py +++ b/photon-lib/py/setup.py @@ -61,11 +61,11 @@ version=versionString, install_requires=[ "numpy~=2.1", - "wpilib<2026,>=2026.1.1-beta-1", - "robotpy-wpimath<2026,>=2026.1.1-beta-1", - "robotpy-apriltag<2026,>=2026.1.1-beta-1", - "robotpy-cscore<2026,>=2026.1.1-beta-1", - "pyntcore<2026,>=2026.1.1-beta-1", + "wpilib==2026.1.1-beta-1", + "robotpy-wpimath==2026.1.1-beta-1", + "robotpy-apriltag==2026.1.1-beta-1", + "robotpy-cscore==2026.1.1-beta-1", + "pyntcore==2026.1.1-beta-1", "opencv-python;platform_machine!='roborio'", ], description=descriptionStr, From b10f5c5eba823435ae32cf45b9338fd0d49b3802 Mon Sep 17 00:00:00 2001 From: samfreund Date: Mon, 17 Nov 2025 01:47:22 -0600 Subject: [PATCH 04/10] fix sleipnir api break --- .vscode/settings.json | 5 +++- .../wrap/casadi_wrapper.cpp | 23 ++++++++----------- .../photon/estimation/VisionEstimation.cpp | 5 ++-- .../wrap/casadi_wrapper.h | 4 ++-- .../native/jni/ConstrainedSolvepnpJNI.cpp | 5 ++-- 5 files changed, 19 insertions(+), 23 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 376e6c941c..3dee93dc6c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,8 @@ { "python.testing.unittestEnabled": false, "python.testing.pytestEnabled": true, - "python.testing.cwd": "photon-lib/py" + "python.testing.cwd": "photon-lib/py", + "files.associations": { + "bitset": "cpp" + } } \ No newline at end of file diff --git a/photon-targeting/src/main/native/cpp/photon/constrained_solvepnp/wrap/casadi_wrapper.cpp b/photon-targeting/src/main/native/cpp/photon/constrained_solvepnp/wrap/casadi_wrapper.cpp index ffe1bb9e47..ebe0ea589a 100644 --- a/photon-targeting/src/main/native/cpp/photon/constrained_solvepnp/wrap/casadi_wrapper.cpp +++ b/photon-targeting/src/main/native/cpp/photon/constrained_solvepnp/wrap/casadi_wrapper.cpp @@ -156,8 +156,7 @@ struct ProblemState { #undef MAKE_ARGV }; -wpi::expected +wpi::expected constrained_solvepnp::do_optimization( bool heading_free, int nTags, constrained_solvepnp::CameraCalibration cameraCal, @@ -173,7 +172,7 @@ constrained_solvepnp::do_optimization( if constexpr (VERBOSE) fmt::println("Got unexpected num cols!"); // TODO find a new error code return wpi::unexpected{ - sleipnir::SolverExitCondition::kNonfiniteInitialCostOrConstraints}; + slp::ExitStatus::NONFINITE_INITIAL_COST_OR_CONSTRAINTS}; } // rescale observations to homogenous pixel coordinates @@ -203,7 +202,7 @@ constrained_solvepnp::do_optimization( auto problemOpt = createProblem(nTags, heading_free); if (!problemOpt) { return wpi::unexpected{ - sleipnir::SolverExitCondition::kNonfiniteInitialCostOrConstraints}; + slp::ExitStatus::NONFINITE_INITIAL_COST_OR_CONSTRAINTS}; } ProblemState<3> pState{robot2camera, field2points, point_observations, @@ -233,7 +232,7 @@ constrained_solvepnp::do_optimization( // Check for diverging iterates if (x.template lpNorm() > 1e20 || !x.allFinite()) { - return wpi::unexpected{sleipnir::SolverExitCondition::kDivergingIterates}; + return wpi::unexpected{slp::ExitStatus::DIVERGING_ITERATES}; } GradMat g = pState.calculateGradJ(x); @@ -254,7 +253,7 @@ constrained_solvepnp::do_optimization( auto H_ldlt = H.ldlt(); if (H_ldlt.info() != Eigen::Success) { std::cerr << "LDLT decomp failed! H=" << std::endl << H << std::endl; - return wpi::unexpected{sleipnir::SolverExitCondition::kLocallyInfeasible}; + return wpi::unexpected{slp::ExitStatus::LOCALLY_INFEASIBLE}; } // Make sure H is positive definite (all eigenvalues are > 0) @@ -278,8 +277,7 @@ constrained_solvepnp::do_optimization( if (H_ldlt.info() != Eigen::Success) { std::cerr << "LDLT decomp failed! H=" << std::endl << H << std::endl; - return wpi::unexpected{ - sleipnir::SolverExitCondition::kLocallyInfeasible}; + return wpi::unexpected{slp::ExitStatus::LOCALLY_INFEASIBLE}; } // If our eigenvalues aren't positive definite, pick a new δ for next @@ -289,8 +287,7 @@ constrained_solvepnp::do_optimization( // If the Hessian perturbation is too high, report failure if (δ > 1e20) { - return wpi::unexpected{ - sleipnir::SolverExitCondition::kLocallyInfeasible}; + return wpi::unexpected{slp::ExitStatus::LOCALLY_INFEASIBLE}; } } else { // Done! @@ -301,8 +298,7 @@ constrained_solvepnp::do_optimization( } if (i_reg == MAX_REG_STEPS) { - return wpi::unexpected{ - sleipnir::SolverExitCondition::kLocallyInfeasible}; + return wpi::unexpected{slp::ExitStatus::LOCALLY_INFEASIBLE}; } } else { // std::printf("Already regularized\n"); @@ -345,8 +341,7 @@ constrained_solvepnp::do_optimization( // If our step size shrank too much, report local infesibility if (alpha < α_min_frac * γConstraint) { - return wpi::unexpected{ - sleipnir::SolverExitCondition::kLocallyInfeasible}; + return wpi::unexpected{slp::ExitStatus::LOCALLY_INFEASIBLE}; } } } diff --git a/photon-targeting/src/main/native/cpp/photon/estimation/VisionEstimation.cpp b/photon-targeting/src/main/native/cpp/photon/estimation/VisionEstimation.cpp index 2349a5831c..0ae99457b1 100644 --- a/photon-targeting/src/main/native/cpp/photon/estimation/VisionEstimation.cpp +++ b/photon-targeting/src/main/native/cpp/photon/estimation/VisionEstimation.cpp @@ -191,9 +191,8 @@ std::optional EstimateRobotPoseConstrainedSolvePNP( guess2.X().value(), guess2.Y().value(), guess2.Rotation().Radians().value()}; - wpi::expected - result = constrained_solvepnp::do_optimization( + wpi::expected result = + constrained_solvepnp::do_optimization( headingFree, knownTags.size(), cameraCal, robotToCamera, guessMat, field2points, pointObservations, gyroTheta.Radians().value(), gyroErrorScaleFac); diff --git a/photon-targeting/src/main/native/include/photon/constrained_solvepnp/wrap/casadi_wrapper.h b/photon-targeting/src/main/native/include/photon/constrained_solvepnp/wrap/casadi_wrapper.h index da966a87e0..c71629f730 100644 --- a/photon-targeting/src/main/native/include/photon/constrained_solvepnp/wrap/casadi_wrapper.h +++ b/photon-targeting/src/main/native/include/photon/constrained_solvepnp/wrap/casadi_wrapper.h @@ -18,7 +18,7 @@ #pragma once #include -#include +#include #include namespace constrained_solvepnp { @@ -40,7 +40,7 @@ using RobotStateMat = Eigen::Matrix; * to this. The number of columns in field2points and point_observations just be * exactly 4x nTags. */ -wpi::expected do_optimization( +wpi::expected do_optimization( bool heading_free, int nTags, CameraCalibration cameraCal, // Note that casadi is column major, apparently Eigen::Matrix robot2camera, diff --git a/photon-targeting/src/main/native/jni/ConstrainedSolvepnpJNI.cpp b/photon-targeting/src/main/native/jni/ConstrainedSolvepnpJNI.cpp index 8e7672d4fd..b674512062 100644 --- a/photon-targeting/src/main/native/jni/ConstrainedSolvepnpJNI.cpp +++ b/photon-targeting/src/main/native/jni/ConstrainedSolvepnpJNI.cpp @@ -84,9 +84,8 @@ Java_org_photonvision_jni_ConstrainedSolvepnpJni_do_1optimization std::cout << "observations:\n" << pointObservationsMat << std::endl; #endif - wpi::expected - result = constrained_solvepnp::do_optimization( + wpi::expected result = + constrained_solvepnp::do_optimization( headingFree, nTags, cameraCal_, robot2cameraMat, xGuessMat, field2pointsMat, pointObservationsMat, gyro_θ, gyro_error_scale_fac); From bc1ebb684237624cf48180a45890bc29ea0506c5 Mon Sep 17 00:00:00 2001 From: Sam Freund Date: Tue, 9 Dec 2025 02:13:41 -0600 Subject: [PATCH 05/10] Discard changes to photon-lib/py/setup.py --- photon-lib/py/setup.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/photon-lib/py/setup.py b/photon-lib/py/setup.py index 361f7b81c2..f2e3d278ab 100644 --- a/photon-lib/py/setup.py +++ b/photon-lib/py/setup.py @@ -61,11 +61,11 @@ version=versionString, install_requires=[ "numpy~=2.1", - "wpilib==2026.1.1-beta-1", - "robotpy-wpimath==2026.1.1-beta-1", - "robotpy-apriltag==2026.1.1-beta-1", - "robotpy-cscore==2026.1.1-beta-1", - "pyntcore==2026.1.1-beta-1", + "wpilib<2026,>=2025.3.2", + "robotpy-wpimath<2026,>=2025.3.2", + "robotpy-apriltag<2026,>=2025.3.2", + "robotpy-cscore<2026,>=2025.3.2", + "pyntcore<2026,>=2025.3.2", "opencv-python;platform_machine!='roborio'", ], description=descriptionStr, From 1fafb4773da93ebcbbe5661814f3ff4dfb42686e Mon Sep 17 00:00:00 2001 From: Sam Freund Date: Tue, 9 Dec 2025 02:13:58 -0600 Subject: [PATCH 06/10] Discard changes to .vscode/settings.json --- .vscode/settings.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 3dee93dc6c..376e6c941c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,5 @@ { "python.testing.unittestEnabled": false, "python.testing.pytestEnabled": true, - "python.testing.cwd": "photon-lib/py", - "files.associations": { - "bitset": "cpp" - } + "python.testing.cwd": "photon-lib/py" } \ No newline at end of file From a3f900337394a18b4173cf4cb9a91fa92380ab00 Mon Sep 17 00:00:00 2001 From: samfreund Date: Tue, 9 Dec 2025 10:05:28 -0600 Subject: [PATCH 07/10] bump examples to 2026beta --- .../aimandrange/.wpilib/wpilib_preferences.json | 2 +- .../aimattarget/.wpilib/wpilib_preferences.json | 2 +- photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json | 2 +- .../aimandrange/.wpilib/wpilib_preferences.json | 2 +- .../aimattarget/.wpilib/wpilib_preferences.json | 2 +- photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json b/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json index cc94c138cc..4c9e01a940 100644 --- a/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json +++ b/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": true, "currentLanguage": "cpp", - "projectYear": "2025", + "projectYear": "2026beta", "teamNumber": 5 } diff --git a/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json b/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json index cc94c138cc..4c9e01a940 100644 --- a/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json +++ b/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": true, "currentLanguage": "cpp", - "projectYear": "2025", + "projectYear": "2026beta", "teamNumber": 5 } diff --git a/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json b/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json index cc94c138cc..4c9e01a940 100644 --- a/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json +++ b/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": true, "currentLanguage": "cpp", - "projectYear": "2025", + "projectYear": "2026beta", "teamNumber": 5 } diff --git a/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json b/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json index 0a74652686..09acd7f322 100644 --- a/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json +++ b/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2025", + "projectYear": "2026beta", "teamNumber": 4512 } diff --git a/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json b/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json index 0a74652686..09acd7f322 100644 --- a/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json +++ b/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2025", + "projectYear": "2026beta", "teamNumber": 4512 } diff --git a/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json b/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json index 0a74652686..09acd7f322 100644 --- a/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json +++ b/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2025", + "projectYear": "2026beta", "teamNumber": 4512 } From ccbbe755df256a088ed0a7821a4d3eecda0adfd2 Mon Sep 17 00:00:00 2001 From: Gold856 <117957790+Gold856@users.noreply.github.com> Date: Tue, 9 Dec 2025 18:14:05 -0500 Subject: [PATCH 08/10] Bump vendordep --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 878594de27..ab433aa559 100644 --- a/build.gradle +++ b/build.gradle @@ -40,7 +40,7 @@ ext { libcameraDriverVersion = "dev-v2025.0.4-2-gc91d4b7" rknnVersion = "dev-v2025.0.0-7-g83c1bf3" rubikVersion = "dev-v2025.1.0-7-g39588a8" - frcYear = "2025" + frcYear = "2026beta" mrcalVersion = "dev-v2025.0.0-2-g2adb187"; From d28baeacc81d6769a8ecc60ebf070c4ba7975968 Mon Sep 17 00:00:00 2001 From: samfreund Date: Thu, 11 Dec 2025 11:29:38 -0600 Subject: [PATCH 09/10] bump various 2025 references --- build.gradle | 2 +- docs/source/docs/advanced-installation/sw_install/mac-os.md | 2 +- docs/source/docs/contributing/building-photon.md | 2 +- .../docs/troubleshooting/networking-troubleshooting.md | 6 +++--- .../aimandrange/.wpilib/wpilib_preferences.json | 2 +- photonlib-cpp-examples/aimandrange/settings.gradle | 2 +- .../aimattarget/.wpilib/wpilib_preferences.json | 2 +- photonlib-cpp-examples/aimattarget/settings.gradle | 2 +- .../poseest/.wpilib/wpilib_preferences.json | 2 +- photonlib-cpp-examples/poseest/settings.gradle | 2 +- .../aimandrange/.wpilib/wpilib_preferences.json | 2 +- photonlib-java-examples/aimandrange/WPILib-License.md | 2 +- photonlib-java-examples/aimandrange/settings.gradle | 2 +- .../aimattarget/.wpilib/wpilib_preferences.json | 2 +- photonlib-java-examples/aimattarget/WPILib-License.md | 2 +- photonlib-java-examples/aimattarget/settings.gradle | 2 +- .../poseest/.wpilib/wpilib_preferences.json | 2 +- photonlib-java-examples/poseest/WPILib-License.md | 2 +- photonlib-java-examples/poseest/settings.gradle | 2 +- shared/config.gradle | 2 +- 20 files changed, 22 insertions(+), 22 deletions(-) diff --git a/build.gradle b/build.gradle index ab433aa559..a60f66d8e7 100644 --- a/build.gradle +++ b/build.gradle @@ -40,7 +40,7 @@ ext { libcameraDriverVersion = "dev-v2025.0.4-2-gc91d4b7" rknnVersion = "dev-v2025.0.0-7-g83c1bf3" rubikVersion = "dev-v2025.1.0-7-g39588a8" - frcYear = "2026beta" + frcYear = "2026" mrcalVersion = "dev-v2025.0.0-2-g2adb187"; diff --git a/docs/source/docs/advanced-installation/sw_install/mac-os.md b/docs/source/docs/advanced-installation/sw_install/mac-os.md index 0cede5e7e0..4c030a1870 100644 --- a/docs/source/docs/advanced-installation/sw_install/mac-os.md +++ b/docs/source/docs/advanced-installation/sw_install/mac-os.md @@ -12,7 +12,7 @@ VERY Limited macOS support is available. ## Installing Java -PhotonVision requires a JDK installed and on the system path. JDK 17 is needed (different versions will not work). You may already have this if you have installed WPILib 2025+. If not, [download and install it from here](https://adoptium.net/temurin/releases?version=17). +PhotonVision requires a JDK installed and on the system path. JDK 17 is needed (different versions will not work). You may already have this if you have installed WPILib 2026+. If not, [download and install it from here](https://adoptium.net/temurin/releases?version=17). :::{warning} Using a JDK other than JDK17 will cause issues when running PhotonVision and is not supported. diff --git a/docs/source/docs/contributing/building-photon.md b/docs/source/docs/contributing/building-photon.md index 2c0a65c3d2..90d44bc78c 100644 --- a/docs/source/docs/contributing/building-photon.md +++ b/docs/source/docs/contributing/building-photon.md @@ -8,7 +8,7 @@ This section contains the build instructions from the source code available at [ **Java Development Kit:** - This project requires Java Development Kit (JDK) 17 to be compiled. This is the same Java version that comes with WPILib for 2025+. **Windows Users must use the JDK that ships with WPILib.** For other platforms, you can follow the instructions to install JDK 17 for your platform [here](https://bell-sw.com/pages/downloads/#jdk-17-lts). + This project requires Java Development Kit (JDK) 17 to be compiled. This is the same Java version that comes with WPILib for 2026+. **Windows Users must use the JDK that ships with WPILib.** For other platforms, you can follow the instructions to install JDK 17 for your platform [here](https://bell-sw.com/pages/downloads/#jdk-17-lts). **Node JS:** diff --git a/docs/source/docs/troubleshooting/networking-troubleshooting.md b/docs/source/docs/troubleshooting/networking-troubleshooting.md index 1eb47d2db5..6e0a801538 100644 --- a/docs/source/docs/troubleshooting/networking-troubleshooting.md +++ b/docs/source/docs/troubleshooting/networking-troubleshooting.md @@ -11,8 +11,8 @@ A few issues make up the majority of support requests. Run through this checklis - Even if there's a switch between your laptop and coprocessor, you'll still want a radio or router in the loop somehow. - The FRC radio is the _only_ router we will officially support due to the innumerable variations between routers. - (Raspberry Pi, Orange Pi & Limelight only) have you flashed the correct image, and is it [up to date](https://github.com/PhotonVision/photonvision/releases/latest)? -- Is your robot code using a **2025** version of WPILib, and is your coprocessor using the most up to date **2025** release? - - 2022, 2023, 2024, and 2025 versions of either cannot be mix-and-matched! +- Is your robot code using a **2026** version of WPILib, and is your coprocessor using the most up to date **2026** release? + - 2022, 2023, 2024, 2025, and 2026 versions of either cannot be mix-and-matched! - Your PhotonVision version can be checked on the settings tab. - Is your team number correctly set on the settings tab? @@ -30,7 +30,7 @@ Please check that: 1\. You don't have the NetworkTables Server on (toggleable in the settings tab). Turn this off when doing work on a robot. 2\. You have your team number set properly in the settings tab. 3\. Your camera name in the `PhotonCamera` constructor matches the name in the UI. -4\. You are using the 2025 version of WPILib and RoboRIO image. +4\. You are using the 2026 version of WPILib and RoboRIO image. 5\. Your robot is on. If all of the above are met and you still have issues, feel free to {ref}`contact us ` and provide the following information: diff --git a/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json b/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json index 4c9e01a940..36dcd4ae4d 100644 --- a/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json +++ b/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": true, "currentLanguage": "cpp", - "projectYear": "2026beta", + "projectYear": "2026", "teamNumber": 5 } diff --git a/photonlib-cpp-examples/aimandrange/settings.gradle b/photonlib-cpp-examples/aimandrange/settings.gradle index 5f9cf4bef1..882b61321a 100644 --- a/photonlib-cpp-examples/aimandrange/settings.gradle +++ b/photonlib-cpp-examples/aimandrange/settings.gradle @@ -5,7 +5,7 @@ pluginManagement { mavenLocal() jcenter() gradlePluginPortal() - String frcYear = '2025' + String frcYear = '2026' File frcHome if (OperatingSystem.current().isWindows()) { String publicFolder = System.getenv('PUBLIC') diff --git a/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json b/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json index 4c9e01a940..36dcd4ae4d 100644 --- a/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json +++ b/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": true, "currentLanguage": "cpp", - "projectYear": "2026beta", + "projectYear": "2026", "teamNumber": 5 } diff --git a/photonlib-cpp-examples/aimattarget/settings.gradle b/photonlib-cpp-examples/aimattarget/settings.gradle index 5f9cf4bef1..882b61321a 100644 --- a/photonlib-cpp-examples/aimattarget/settings.gradle +++ b/photonlib-cpp-examples/aimattarget/settings.gradle @@ -5,7 +5,7 @@ pluginManagement { mavenLocal() jcenter() gradlePluginPortal() - String frcYear = '2025' + String frcYear = '2026' File frcHome if (OperatingSystem.current().isWindows()) { String publicFolder = System.getenv('PUBLIC') diff --git a/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json b/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json index 4c9e01a940..36dcd4ae4d 100644 --- a/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json +++ b/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": true, "currentLanguage": "cpp", - "projectYear": "2026beta", + "projectYear": "2026", "teamNumber": 5 } diff --git a/photonlib-cpp-examples/poseest/settings.gradle b/photonlib-cpp-examples/poseest/settings.gradle index 5f9cf4bef1..882b61321a 100644 --- a/photonlib-cpp-examples/poseest/settings.gradle +++ b/photonlib-cpp-examples/poseest/settings.gradle @@ -5,7 +5,7 @@ pluginManagement { mavenLocal() jcenter() gradlePluginPortal() - String frcYear = '2025' + String frcYear = '2026' File frcHome if (OperatingSystem.current().isWindows()) { String publicFolder = System.getenv('PUBLIC') diff --git a/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json b/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json index 09acd7f322..50645b5616 100644 --- a/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json +++ b/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2026beta", + "projectYear": "2026", "teamNumber": 4512 } diff --git a/photonlib-java-examples/aimandrange/WPILib-License.md b/photonlib-java-examples/aimandrange/WPILib-License.md index d744196fe9..eb3061b0d8 100644 --- a/photonlib-java-examples/aimandrange/WPILib-License.md +++ b/photonlib-java-examples/aimandrange/WPILib-License.md @@ -1,4 +1,4 @@ -Copyright (c) 2009-2025 FIRST and other WPILib contributors +Copyright (c) 2009-2026 FIRST and other WPILib contributors All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/photonlib-java-examples/aimandrange/settings.gradle b/photonlib-java-examples/aimandrange/settings.gradle index c906787bf3..699b164965 100644 --- a/photonlib-java-examples/aimandrange/settings.gradle +++ b/photonlib-java-examples/aimandrange/settings.gradle @@ -4,7 +4,7 @@ pluginManagement { repositories { mavenLocal() gradlePluginPortal() - String frcYear = '2025' + String frcYear = '2026' File frcHome if (OperatingSystem.current().isWindows()) { String publicFolder = System.getenv('PUBLIC') diff --git a/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json b/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json index 09acd7f322..50645b5616 100644 --- a/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json +++ b/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2026beta", + "projectYear": "2026", "teamNumber": 4512 } diff --git a/photonlib-java-examples/aimattarget/WPILib-License.md b/photonlib-java-examples/aimattarget/WPILib-License.md index d744196fe9..eb3061b0d8 100644 --- a/photonlib-java-examples/aimattarget/WPILib-License.md +++ b/photonlib-java-examples/aimattarget/WPILib-License.md @@ -1,4 +1,4 @@ -Copyright (c) 2009-2025 FIRST and other WPILib contributors +Copyright (c) 2009-2026 FIRST and other WPILib contributors All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/photonlib-java-examples/aimattarget/settings.gradle b/photonlib-java-examples/aimattarget/settings.gradle index c906787bf3..699b164965 100644 --- a/photonlib-java-examples/aimattarget/settings.gradle +++ b/photonlib-java-examples/aimattarget/settings.gradle @@ -4,7 +4,7 @@ pluginManagement { repositories { mavenLocal() gradlePluginPortal() - String frcYear = '2025' + String frcYear = '2026' File frcHome if (OperatingSystem.current().isWindows()) { String publicFolder = System.getenv('PUBLIC') diff --git a/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json b/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json index 09acd7f322..50645b5616 100644 --- a/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json +++ b/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2026beta", + "projectYear": "2026", "teamNumber": 4512 } diff --git a/photonlib-java-examples/poseest/WPILib-License.md b/photonlib-java-examples/poseest/WPILib-License.md index d744196fe9..eb3061b0d8 100644 --- a/photonlib-java-examples/poseest/WPILib-License.md +++ b/photonlib-java-examples/poseest/WPILib-License.md @@ -1,4 +1,4 @@ -Copyright (c) 2009-2025 FIRST and other WPILib contributors +Copyright (c) 2009-2026 FIRST and other WPILib contributors All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/photonlib-java-examples/poseest/settings.gradle b/photonlib-java-examples/poseest/settings.gradle index c906787bf3..699b164965 100644 --- a/photonlib-java-examples/poseest/settings.gradle +++ b/photonlib-java-examples/poseest/settings.gradle @@ -4,7 +4,7 @@ pluginManagement { repositories { mavenLocal() gradlePluginPortal() - String frcYear = '2025' + String frcYear = '2026' File frcHome if (OperatingSystem.current().isWindows()) { String publicFolder = System.getenv('PUBLIC') diff --git a/shared/config.gradle b/shared/config.gradle index 71cb2ca214..6db9f7b2b6 100644 --- a/shared/config.gradle +++ b/shared/config.gradle @@ -10,7 +10,7 @@ nativeUtils.wpi.configureDependencies { wpimathVersion = wpimathVersion opencvYear = 'frc'+openCVYear opencvVersion = openCVversion - niLibVersion = "2025.0.0" + niLibVersion = "2026.1.0" } // Configure warnings and errors From 1557c81a2842c9c2d71e86c5ad668a2a9bcb1da1 Mon Sep 17 00:00:00 2001 From: Gold856 <117957790+Gold856@users.noreply.github.com> Date: Thu, 11 Dec 2025 22:52:40 -0500 Subject: [PATCH 10/10] Fix --- build.gradle | 2 +- .../advanced-installation/sw_install/windows-pc.md | 10 +--------- .../aimandrange/.wpilib/wpilib_preferences.json | 2 +- .../aimattarget/.wpilib/wpilib_preferences.json | 2 +- .../poseest/.wpilib/wpilib_preferences.json | 2 +- .../aimandrange/.wpilib/wpilib_preferences.json | 2 +- .../aimattarget/.wpilib/wpilib_preferences.json | 2 +- .../poseest/.wpilib/wpilib_preferences.json | 2 +- 8 files changed, 8 insertions(+), 16 deletions(-) diff --git a/build.gradle b/build.gradle index a60f66d8e7..ab433aa559 100644 --- a/build.gradle +++ b/build.gradle @@ -40,7 +40,7 @@ ext { libcameraDriverVersion = "dev-v2025.0.4-2-gc91d4b7" rknnVersion = "dev-v2025.0.0-7-g83c1bf3" rubikVersion = "dev-v2025.1.0-7-g39588a8" - frcYear = "2026" + frcYear = "2026beta" mrcalVersion = "dev-v2025.0.0-2-g2adb187"; diff --git a/docs/source/docs/advanced-installation/sw_install/windows-pc.md b/docs/source/docs/advanced-installation/sw_install/windows-pc.md index b428790b4d..364d272109 100644 --- a/docs/source/docs/advanced-installation/sw_install/windows-pc.md +++ b/docs/source/docs/advanced-installation/sw_install/windows-pc.md @@ -12,15 +12,7 @@ Bonjour provides more stable networking when using Windows PCs. Install [Bonjour ## Installing Java -PhotonVision requires a JDK installed and on the system path. **JDK 17 is needed. Windows Users must use the JDK that ships with WPILib.** [Download and install it from here.](https://github.com/wpilibsuite/allwpilib/releases/tag/2026.1.1-beta-1) Either ensure the only Java on your PATH is the WPILIB Java or specify it to gradle with `-Dorg.gradle.java.home=C:\Users\Public\wpilib\2025\jdk`: - -``` -> ./gradlew run "-Dorg.gradle.java.home=C:\Users\Public\wpilib\2025\jdk" -``` - -:::{warning} -Using a JDK other than WPILIB's JDK17 will cause issues when running PhotonVision and is not supported. -::: +PhotonVision requires a JDK installed and on the system path. **JDK 17 is needed.** You may already have it if you installed WPILib, but ensure that running `java -version` shows JDK 17. You will likely have to add WPILib's JDK to JAVA_HOME and the JDK's `bin` directory to PATH. If you do not have a JDK 17 install, [download and install it from here.](https://adoptium.net/temurin/releases?version=17) ## Downloading the Latest Stable Release of PhotonVision diff --git a/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json b/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json index 36dcd4ae4d..4c9e01a940 100644 --- a/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json +++ b/photonlib-cpp-examples/aimandrange/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": true, "currentLanguage": "cpp", - "projectYear": "2026", + "projectYear": "2026beta", "teamNumber": 5 } diff --git a/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json b/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json index 36dcd4ae4d..4c9e01a940 100644 --- a/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json +++ b/photonlib-cpp-examples/aimattarget/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": true, "currentLanguage": "cpp", - "projectYear": "2026", + "projectYear": "2026beta", "teamNumber": 5 } diff --git a/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json b/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json index 36dcd4ae4d..4c9e01a940 100644 --- a/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json +++ b/photonlib-cpp-examples/poseest/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": true, "currentLanguage": "cpp", - "projectYear": "2026", + "projectYear": "2026beta", "teamNumber": 5 } diff --git a/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json b/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json index 50645b5616..09acd7f322 100644 --- a/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json +++ b/photonlib-java-examples/aimandrange/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2026", + "projectYear": "2026beta", "teamNumber": 4512 } diff --git a/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json b/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json index 50645b5616..09acd7f322 100644 --- a/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json +++ b/photonlib-java-examples/aimattarget/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2026", + "projectYear": "2026beta", "teamNumber": 4512 } diff --git a/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json b/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json index 50645b5616..09acd7f322 100644 --- a/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json +++ b/photonlib-java-examples/poseest/.wpilib/wpilib_preferences.json @@ -1,6 +1,6 @@ { "enableCppIntellisense": false, "currentLanguage": "java", - "projectYear": "2026", + "projectYear": "2026beta", "teamNumber": 4512 }