From 899cedc011ff98eb0aaba8e17ed59f8b6151df5d Mon Sep 17 00:00:00 2001 From: Kevin Cooney Date: Thu, 8 Jan 2026 08:29:03 -0800 Subject: [PATCH 1/3] Update to WPILib 2026.1.1 - Phoenix6.json: updated via VSCode WPILib extension - REVLib.json updated via VSCode WPILib extension - WPILibNewCommands.json: manually updated "frcYear" from "2026beta" to "2026" --- lib/build.gradle | 2 +- lib/vendordeps/Phoenix6.json | 80 ++++---- lib/vendordeps/REVLib.json | 264 +++++++++++++------------- lib/vendordeps/WPILibNewCommands.json | 4 +- 4 files changed, 175 insertions(+), 175 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index effad811..462d9652 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java-common-conventions' - id 'edu.wpi.first.GradleRIO' version '2026.1.1-beta-1' + id 'edu.wpi.first.GradleRIO' version '2026.1.1' id 'maven-publish' } diff --git a/lib/vendordeps/Phoenix6.json b/lib/vendordeps/Phoenix6.json index db9414ea..c89a30e4 100644 --- a/lib/vendordeps/Phoenix6.json +++ b/lib/vendordeps/Phoenix6.json @@ -1,32 +1,32 @@ { - "fileName": "Phoenix6-26.0.0-beta-1.json", - "name": "CTRE-Phoenix (v6)", - "version": "26.0.0-beta-1", - "frcYear": "2026beta", - "uuid": "e995de00-2c64-4df5-8831-c1441420ff19", - "mavenUrls": [ + "fileName": "Phoenix6.json", + "name": "CTRE-Phoenix (v6)", + "version": "26.1.0", + "frcYear": "2026", + "uuid": "e995de00-2c64-4df5-8831-c1441420ff19", + "mavenUrls": [ "https://maven.ctr-electronics.com/release/" ], - "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2026-latest.json", - "conflictsWith": [ + "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2026-latest.json", + "conflictsWith": [ { "uuid": "e7900d8d-826f-4dca-a1ff-182f658e98af", "errorMessage": "Users can not have both the replay and regular Phoenix 6 vendordeps in their robot program.", "offlineFileName": "Phoenix6-replay-frc2026-latest.json" } ], - "javaDependencies": [ + "javaDependencies": [ { "groupId": "com.ctre.phoenix6", "artifactId": "wpiapi-java", - "version": "26.0.0-beta-1" + "version": "26.1.0" } ], - "jniDependencies": [ + "jniDependencies": [ { "groupId": "com.ctre.phoenix6", "artifactId": "api-cpp", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -40,7 +40,7 @@ { "groupId": "com.ctre.phoenix6", "artifactId": "tools", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -54,7 +54,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "api-cpp-sim", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -68,7 +68,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "tools-sim", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -82,7 +82,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simTalonSRX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -96,7 +96,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simVictorSPX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -110,7 +110,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simPigeonIMU", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -124,7 +124,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -138,7 +138,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFXS", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -152,7 +152,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANcoder", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -166,7 +166,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProPigeon2", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -180,7 +180,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANrange", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -194,7 +194,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdi", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -208,7 +208,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdle", - "version": "26.0.0-beta-1", + "version": "26.1.0", "isJar": false, "skipInvalidPlatforms": true, "validPlatforms": [ @@ -220,11 +220,11 @@ "simMode": "swsim" } ], - "cppDependencies": [ + "cppDependencies": [ { "groupId": "com.ctre.phoenix6", "artifactId": "wpiapi-cpp", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_Phoenix6_WPI", "headerClassifier": "headers", "sharedLibrary": true, @@ -240,7 +240,7 @@ { "groupId": "com.ctre.phoenix6", "artifactId": "tools", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_PhoenixTools", "headerClassifier": "headers", "sharedLibrary": true, @@ -256,7 +256,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "wpiapi-cpp-sim", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_Phoenix6_WPISim", "headerClassifier": "headers", "sharedLibrary": true, @@ -272,7 +272,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "tools-sim", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_PhoenixTools_Sim", "headerClassifier": "headers", "sharedLibrary": true, @@ -288,7 +288,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simTalonSRX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimTalonSRX", "headerClassifier": "headers", "sharedLibrary": true, @@ -304,7 +304,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simVictorSPX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimVictorSPX", "headerClassifier": "headers", "sharedLibrary": true, @@ -320,7 +320,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simPigeonIMU", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimPigeonIMU", "headerClassifier": "headers", "sharedLibrary": true, @@ -336,7 +336,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFX", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProTalonFX", "headerClassifier": "headers", "sharedLibrary": true, @@ -352,7 +352,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProTalonFXS", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProTalonFXS", "headerClassifier": "headers", "sharedLibrary": true, @@ -368,7 +368,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANcoder", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProCANcoder", "headerClassifier": "headers", "sharedLibrary": true, @@ -384,7 +384,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProPigeon2", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProPigeon2", "headerClassifier": "headers", "sharedLibrary": true, @@ -400,7 +400,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANrange", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProCANrange", "headerClassifier": "headers", "sharedLibrary": true, @@ -416,7 +416,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdi", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProCANdi", "headerClassifier": "headers", "sharedLibrary": true, @@ -432,7 +432,7 @@ { "groupId": "com.ctre.phoenix6.sim", "artifactId": "simProCANdle", - "version": "26.0.0-beta-1", + "version": "26.1.0", "libName": "CTRE_SimProCANdle", "headerClassifier": "headers", "sharedLibrary": true, diff --git a/lib/vendordeps/REVLib.json b/lib/vendordeps/REVLib.json index 436e9fc0..4f96af89 100644 --- a/lib/vendordeps/REVLib.json +++ b/lib/vendordeps/REVLib.json @@ -1,133 +1,133 @@ { - "fileName": "REVLib.json", - "name": "REVLib", - "version": "2026.0.0-beta-1", - "frcYear": "2026beta", - "uuid": "3f48eb8c-50fe-43a6-9cb7-44c86353c4cb", - "mavenUrls": [ - "https://maven.revrobotics.com/" - ], - "jsonUrl": "https://software-metadata.revrobotics.com/REVLib-2026.json", - "javaDependencies": [ - { - "groupId": "com.revrobotics.frc", - "artifactId": "REVLib-java", - "version": "2026.0.0-beta-1" - } - ], - "jniDependencies": [ - { - "groupId": "com.revrobotics.frc", - "artifactId": "REVLib-driver", - "version": "2026.0.0-beta-1", - "skipInvalidPlatforms": true, - "isJar": false, - "validPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - }, - { - "groupId": "com.revrobotics.frc", - "artifactId": "RevLibBackendDriver", - "version": "2026.0.0-beta-1", - "skipInvalidPlatforms": true, - "isJar": false, - "validPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - }, - { - "groupId": "com.revrobotics.frc", - "artifactId": "RevLibWpiBackendDriver", - "version": "2026.0.0-beta-1", - "skipInvalidPlatforms": true, - "isJar": false, - "validPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ], - "cppDependencies": [ - { - "groupId": "com.revrobotics.frc", - "artifactId": "REVLib-cpp", - "version": "2026.0.0-beta-1", - "libName": "REVLib", - "headerClassifier": "headers", - "sharedLibrary": false, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - }, - { - "groupId": "com.revrobotics.frc", - "artifactId": "REVLib-driver", - "version": "2026.0.0-beta-1", - "libName": "REVLibDriver", - "headerClassifier": "headers", - "sharedLibrary": false, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - }, - { - "groupId": "com.revrobotics.frc", - "artifactId": "RevLibBackendDriver", - "version": "2026.0.0-beta-1", - "libName": "BackendDriver", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - }, - { - "groupId": "com.revrobotics.frc", - "artifactId": "RevLibWpiBackendDriver", - "version": "2026.0.0-beta-1", - "libName": "REVLibWpi", - "sharedLibrary": true, - "skipInvalidPlatforms": true, - "binaryPlatforms": [ - "windowsx86-64", - "linuxarm64", - "linuxx86-64", - "linuxathena", - "linuxarm32", - "osxuniversal" - ] - } - ] -} + "fileName": "REVLib.json", + "name": "REVLib", + "version": "2026.0.0", + "frcYear": "2026", + "uuid": "3f48eb8c-50fe-43a6-9cb7-44c86353c4cb", + "mavenUrls": [ + "https://maven.revrobotics.com/" + ], + "jsonUrl": "https://software-metadata.revrobotics.com/REVLib-2026.json", + "javaDependencies": [ + { + "groupId": "com.revrobotics.frc", + "artifactId": "REVLib-java", + "version": "2026.0.0" + } + ], + "jniDependencies": [ + { + "groupId": "com.revrobotics.frc", + "artifactId": "REVLib-driver", + "version": "2026.0.0", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "com.revrobotics.frc", + "artifactId": "RevLibBackendDriver", + "version": "2026.0.0", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "com.revrobotics.frc", + "artifactId": "RevLibWpiBackendDriver", + "version": "2026.0.0", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "com.revrobotics.frc", + "artifactId": "REVLib-cpp", + "version": "2026.0.0", + "libName": "REVLib", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "com.revrobotics.frc", + "artifactId": "REVLib-driver", + "version": "2026.0.0", + "libName": "REVLibDriver", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "com.revrobotics.frc", + "artifactId": "RevLibBackendDriver", + "version": "2026.0.0", + "libName": "BackendDriver", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "com.revrobotics.frc", + "artifactId": "RevLibWpiBackendDriver", + "version": "2026.0.0", + "libName": "REVLibWpi", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ] +} \ No newline at end of file diff --git a/lib/vendordeps/WPILibNewCommands.json b/lib/vendordeps/WPILibNewCommands.json index 61ee7c7c..da86fd61 100644 --- a/lib/vendordeps/WPILibNewCommands.json +++ b/lib/vendordeps/WPILibNewCommands.json @@ -1,9 +1,9 @@ { "fileName": "WPILibNewCommands.json", "name": "WPILib-New-Commands", - "version": "1.1-beta-1", + "version": "1.1", "uuid": "111e20f7-815e-48f8-9dd6-e675ce75b266", - "frcYear": "2026beta", + "frcYear": "2026", "mavenUrls": [], "jsonUrl": "", "javaDependencies": [ From 93e3292f00b30fef92d322e3788716b01898dc44 Mon Sep 17 00:00:00 2001 From: Kevin Cooney Date: Sat, 10 Jan 2026 08:30:01 -0800 Subject: [PATCH 2/3] 2.0.0 release --- .../groovy/java-common-conventions.gradle | 19 +++++++ lib/build.gradle | 29 +++++----- limelight/build.gradle | 8 +-- testing/build.gradle | 55 ++++++++++++++----- vision/build.gradle | 51 ++++++++++++++--- 5 files changed, 119 insertions(+), 43 deletions(-) diff --git a/buildSrc/src/main/groovy/java-common-conventions.gradle b/buildSrc/src/main/groovy/java-common-conventions.gradle index 69bd59e3..6cd4c9ac 100644 --- a/buildSrc/src/main/groovy/java-common-conventions.gradle +++ b/buildSrc/src/main/groovy/java-common-conventions.gradle @@ -7,6 +7,7 @@ plugins { // Apply the java-library plugin for API and implementation separation. id 'java-library' id 'com.diffplug.spotless' + id 'idea' } java { @@ -119,5 +120,23 @@ javadoc { links += "https://codedocs.revrobotics.com/java/" // PhotonVision links += "https://javadocs.photonvision.org/release/" + + // Converts `@apiNote` paragraph to "Note: " section in the generated javadoc + tags += 'apiNote:a:Api Note:' + + // Converts `@implSpec` paragraph to "Implementation Requirements: " section in the generated javadoc + tags += 'implSpec:a:Implementation Requirements:' + } +} + +task sourceJar(type: Jar) { + from sourceSets.main.allJava + archiveClassifier = 'sources' +} + +idea { + module { + downloadJavadoc = true + downloadSources = true } } diff --git a/lib/build.gradle b/lib/build.gradle index 462d9652..0b61662b 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -4,7 +4,7 @@ plugins { id 'maven-publish' } -version = '2.0.0-alpha.1' +version = '2.0.0' dependencies { implementation wpi.java.deps.wpilib() @@ -39,20 +39,6 @@ tasks.named('test') { systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true' } -javadoc { - options.tags = [ - // Converts `@apiNote` paragraph to "Note: " section in the generated javadoc - 'apiNote:a:Api Note:', - // Converts `@implSpec` paragraph to "Implementation Requirements: " section in the generated javadoc - 'implSpec:a:Implementation Requirements:' - ] -} - -task sourceJar(type: Jar) { - from sourceSets.main.allJava - archiveClassifier = 'sources' -} - publishing { publications { lib2813(MavenPublication) { @@ -63,13 +49,24 @@ publishing { pom { name = '2813 Library' description = 'Frequently reused code written by team 2813' + licenses { + license { + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } developers { developer { id = 'mango' - name = 'kyle' + name = 'Kyle' email = 'mangoiscute95@gmail.com' } } + scm { + connection = 'scm:git:git://github.com/Prospect-Robotics/lib2813.git' + developerConnection = 'scm:git:git://github.com/Prospect-Robotics/lib2813.git' + url = 'https://team2813.com' + } organization { name = '2813 Gear Heads' url = 'https://team2813.com' diff --git a/limelight/build.gradle b/limelight/build.gradle index bcfe4766..4f6b6182 100644 --- a/limelight/build.gradle +++ b/limelight/build.gradle @@ -1,15 +1,9 @@ plugins { id 'java-common-conventions' id 'edu.wpi.first.GradleRIO' version '2026.1.1-beta-1' - id 'idea' } -idea { - module { - downloadJavadoc = true - downloadSources = true - } -} +version = '2.0.0' dependencies { implementation wpi.java.deps.wpilib() diff --git a/testing/build.gradle b/testing/build.gradle index 7435986b..f19f8ca9 100644 --- a/testing/build.gradle +++ b/testing/build.gradle @@ -1,9 +1,10 @@ plugins { id 'java-common-conventions' id 'edu.wpi.first.GradleRIO' version '2026.1.1-beta-1' + id 'maven-publish' } -version = '1.0.0-alpha.1' +version = '2.0.0' dependencies { implementation wpi.java.deps.wpilib() @@ -35,16 +36,44 @@ tasks.named('test') { systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true' } -javadoc { - options.tags = [ - // Converts `@apiNote` paragraph to "Note: " section in the generated javadoc - 'apiNote:a:Api Note:', - // Converts `@implSpec` paragraph to "Implementation Requirements: " section in the generated javadoc - 'implSpec:a:Implementation Requirements:' - ] -} - -task sourceJar(type: Jar) { - from sourceSets.main.allJava - archiveClassifier = 'sources' +publishing { + publications { + lib2813(MavenPublication) { + groupId = 'com.team2813.lib2813' + artifactId = 'testing' + from components.java + artifact sourceJar + pom { + name = '2813 Testing Library' + description = 'Utilities for testing FRC robots' + licenses { + license { + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + developers { + developer { + id = 'mango' + name = 'Kyle' + email = 'mangoiscute95@gmail.com' + } + developer { + id = 'kcooney' + name = 'Kevin' + email = 'kcooney@gmail.com' + } + } + scm { + connection = 'scm:git:git://github.com/Prospect-Robotics/lib2813.git' + developerConnection = 'scm:git:git://github.com/Prospect-Robotics/lib2813.git' + url = 'https://team2813.com' + } + organization { + name = '2813 Gear Heads' + url = 'https://team2813.com' + } + } + } + } } diff --git a/vision/build.gradle b/vision/build.gradle index 0d2e041f..a75ce731 100644 --- a/vision/build.gradle +++ b/vision/build.gradle @@ -1,15 +1,10 @@ plugins { id 'java-common-conventions' id 'edu.wpi.first.GradleRIO' version '2026.1.1-beta-1' - id 'idea' + id 'maven-publish' } -idea { - module { - downloadJavadoc = true - downloadSources = true - } -} +version = '2.0.0' dependencies { implementation wpi.java.deps.wpilib() @@ -40,3 +35,45 @@ test { useJUnitPlatform() systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true' } + +publishing { + publications { + lib2813(MavenPublication) { + groupId = 'com.team2813.lib2813' + artifactId = 'vision' + from components.java + artifact sourceJar + pom { + name = '2813 Vision Library' + description = 'Utilities for location and vision for FRC robots' + licenses { + license { + name = 'The Apache License, Version 2.0' + url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' + } + } + developers { + developer { + id = 'mango' + name = 'Kyle' + email = 'mangoiscute95@gmail.com' + } + developer { + id = 'kcooney' + name = 'Kevin' + email = 'kcooney@gmail.com' + } + } + scm { + connection = 'scm:git:git://github.com/Prospect-Robotics/lib2813.git' + developerConnection = 'scm:git:git://github.com/Prospect-Robotics/lib2813.git' + url = 'https://team2813.com' + } + organization { + name = '2813 Gear Heads' + url = 'https://team2813.com' + } + } + } + } +} From d3135680858343346f20fb71132a1bc7b458b817 Mon Sep 17 00:00:00 2001 From: Kevin Cooney Date: Sun, 11 Jan 2026 19:48:18 -0800 Subject: [PATCH 3/3] Add @since Javadoc tags to classes and APIs added in 2.0.0 --- .../lib2813/subsystems/MotorSubsystem.java | 33 +++++++++++-------- .../ParameterizedIntakeSubsystem.java | 5 +++ .../team2813/lib2813/util/BuildConstants.java | 6 +++- .../lib2813/util/BuildConstantsPublisher.java | 2 ++ .../team2813/lib2813/testing/FakeMotor.java | 2 ++ .../testing/junit/jupiter/CommandTester.java | 2 ++ .../IsolatedNetworkTablesExtension.java | 2 ++ .../junit/jupiter/WPILibExtension.java | 2 ++ .../lib2813/testing/truth/Pose2dSubject.java | 2 ++ .../lib2813/testing/truth/Pose3dSubject.java | 2 ++ .../testing/truth/Rotation2dSubject.java | 6 +++- .../testing/truth/Rotation3dSubject.java | 6 +++- .../testing/truth/TolerantComparison.java | 2 ++ .../testing/truth/Translation2dSubject.java | 6 +++- .../testing/truth/Translation3dSubject.java | 6 +++- .../vision/MultiPhotonPoseEstimator.java | 2 ++ .../vision/PhotonVisionPosePublisher.java | 2 ++ .../lib2813/vision/PoseEstimateConsumer.java | 6 +++- 18 files changed, 75 insertions(+), 19 deletions(-) diff --git a/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java b/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java index 08425cf2..2bd11e13 100644 --- a/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java +++ b/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java @@ -119,6 +119,7 @@ public final void setSetpoint(T position) { * Returns a command that sets the desired setpoint to the provided value. * * @param setpoint the position to go to. + * @since 2.0.0 */ public final Command setSetpointCommand(T setpoint) { return new InstantCommand(() -> this.setSetpoint(setpoint), this); @@ -168,6 +169,8 @@ public final void enable() { * *

The motor voltage will be set to zero, and the motor will not adjust to move towards the * current setpoint. + * + * @since 2.0.0 */ @Override public final void stopMotor() { @@ -200,23 +203,13 @@ public final void set(ControlMode mode, double demand) { motor.set(mode, demand); } - /** - * Clamps the given output value and provides it to the motor. - * - * @param output The output calculated by the PID algorithm. - * @param setpoint Ignored. - */ - private void useOutput(double output, double setpoint) { - motor.set(controlMode, clampOutput(output)); - } - /** * Clamps the given output value and provides it to the motor. * *

This is called by {@link #periodic()} if this subsystem is enabled. */ private void useOutput(double output) { - useOutput(output, controller.getSetpoint()); + motor.set(controlMode, clampOutput(output)); } /** @@ -227,6 +220,7 @@ private void useOutput(double output) { * @param output Output provided by the PID controller. * @return Output to provide to the motor. * @see edu.wpi.first.math.MathUtil#clamp(double, double, double) + * @since 2.0.0 */ protected double clampOutput(double output) { return output; @@ -384,7 +378,12 @@ public MotorSubsystemConfiguration startingPosition(Supplier startingPosi return startingPosition(startingPositionSupplier.get()); } - /** Sets the acceptable position error. */ + /** + * Sets the acceptable position error. + * + * @param error the error which is considered tolerable for use with {@code }atPosition()} + * @return {@code this} for chaining + */ public MotorSubsystemConfiguration acceptableError(double error) { this.acceptableError = error; return this; @@ -393,7 +392,8 @@ public MotorSubsystemConfiguration acceptableError(double error) { /** * Sets the unit to use for PID calculations * - * @param rotationUnit The angle unit to use for calculations + * @param rotationUnit the angle unit to use for calculations + * @return {@code this} for chaining */ public MotorSubsystemConfiguration rotationUnit(AngleUnit rotationUnit) { startingPosition = rotationUnit.convertFrom(startingPosition, this.rotationUnit); @@ -401,6 +401,13 @@ public MotorSubsystemConfiguration rotationUnit(AngleUnit rotationUnit) { return this; } + /** + * Enables publishing of data to the provided network table instance. + * + * @param ntInstance the network table instance to publish to + * @return {@code this} for chaining + * @since 2.0.0 + */ public MotorSubsystemConfiguration publishTo(NetworkTableInstance ntInstance) { this.ntInstance = ntInstance; return this; diff --git a/lib/src/main/java/com/team2813/lib2813/subsystems/ParameterizedIntakeSubsystem.java b/lib/src/main/java/com/team2813/lib2813/subsystems/ParameterizedIntakeSubsystem.java index 680aabab..508814bb 100644 --- a/lib/src/main/java/com/team2813/lib2813/subsystems/ParameterizedIntakeSubsystem.java +++ b/lib/src/main/java/com/team2813/lib2813/subsystems/ParameterizedIntakeSubsystem.java @@ -22,6 +22,11 @@ import edu.wpi.first.wpilibj2.command.InstantCommand; import edu.wpi.first.wpilibj2.command.SubsystemBase; +/** + * A subsystem for an intake. + * + * @since 2.0.0 + */ public abstract class ParameterizedIntakeSubsystem extends SubsystemBase implements AutoCloseable { private final Motor intakeMotor; private final Params params; diff --git a/lib/src/main/java/com/team2813/lib2813/util/BuildConstants.java b/lib/src/main/java/com/team2813/lib2813/util/BuildConstants.java index 52df8090..ed5c517d 100644 --- a/lib/src/main/java/com/team2813/lib2813/util/BuildConstants.java +++ b/lib/src/main/java/com/team2813/lib2813/util/BuildConstants.java @@ -17,7 +17,11 @@ import java.time.ZonedDateTime; -/** Holder for data collected at build time about the robot code. */ +/** + * Holder for data collected at build time about the robot code. + * + * @since 2.0.0 + */ public interface BuildConstants { /** The current git branch when the code was built. */ diff --git a/lib/src/main/java/com/team2813/lib2813/util/BuildConstantsPublisher.java b/lib/src/main/java/com/team2813/lib2813/util/BuildConstantsPublisher.java index 35ba9fb4..663c4896 100644 --- a/lib/src/main/java/com/team2813/lib2813/util/BuildConstantsPublisher.java +++ b/lib/src/main/java/com/team2813/lib2813/util/BuildConstantsPublisher.java @@ -52,6 +52,8 @@ * // Log the build constants in the robot console as well. * buildConstantsPublisher.log(); * } + * + * @since 2.0.0 */ public final class BuildConstantsPublisher { /** The name of the NetworkTable under which the build constants are published. */ diff --git a/testing/src/main/java/com/team2813/lib2813/testing/FakeMotor.java b/testing/src/main/java/com/team2813/lib2813/testing/FakeMotor.java index 8880ec16..0e8ee70d 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/FakeMotor.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/FakeMotor.java @@ -30,6 +30,8 @@ * *

This class simulates motor behavior by storing the most recent control mode and demand value. * It also includes methods that make it easier to verify the current state of the motor. + * + * @since 2.0.0 */ public class FakeMotor implements Motor { private boolean isStopped = true; diff --git a/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/CommandTester.java b/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/CommandTester.java index 0819ca69..645385b3 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/CommandTester.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/CommandTester.java @@ -21,6 +21,8 @@ * Allows tests to run commands. * *

Tests can get an instance by using {@link WPILibExtension}. + * + * @since 2.0.0 */ public interface CommandTester { diff --git a/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/IsolatedNetworkTablesExtension.java b/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/IsolatedNetworkTablesExtension.java index 7c4b47ac..c9c300c3 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/IsolatedNetworkTablesExtension.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/IsolatedNetworkTablesExtension.java @@ -41,6 +41,8 @@ * } * } * } + * + * @since 2.0.0 */ public final class IsolatedNetworkTablesExtension implements Extension, AfterEachCallback, ParameterResolver { diff --git a/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/WPILibExtension.java b/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/WPILibExtension.java index f89f9696..7e96ddb2 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/WPILibExtension.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/junit/jupiter/WPILibExtension.java @@ -59,6 +59,8 @@ * } * } * } + * + * @since 2.0.0 */ public final class WPILibExtension implements Extension, diff --git a/testing/src/main/java/com/team2813/lib2813/testing/truth/Pose2dSubject.java b/testing/src/main/java/com/team2813/lib2813/testing/truth/Pose2dSubject.java index 235551f1..50f523f9 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/truth/Pose2dSubject.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/truth/Pose2dSubject.java @@ -28,6 +28,8 @@ * *

See Writing your own custom subject to learn about * creating custom Truth subjects. + * + * @since 2.0.0 */ public final class Pose2dSubject extends Subject { diff --git a/testing/src/main/java/com/team2813/lib2813/testing/truth/Pose3dSubject.java b/testing/src/main/java/com/team2813/lib2813/testing/truth/Pose3dSubject.java index ae84c9dd..6b151b34 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/truth/Pose3dSubject.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/truth/Pose3dSubject.java @@ -28,6 +28,8 @@ * *

See Writing your own custom subject to learn about * creating custom Truth subjects. + * + * @since 2.0.0 */ public final class Pose3dSubject extends Subject { diff --git a/testing/src/main/java/com/team2813/lib2813/testing/truth/Rotation2dSubject.java b/testing/src/main/java/com/team2813/lib2813/testing/truth/Rotation2dSubject.java index 58d9165a..428c3812 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/truth/Rotation2dSubject.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/truth/Rotation2dSubject.java @@ -24,7 +24,11 @@ import edu.wpi.first.math.geometry.Rotation2d; import javax.annotation.Nullable; -/** Truth Subject for making assertions about {@link Rotation2d} values. */ +/** + * Truth Subject for making assertions about {@link Rotation2d} values. + * + * @since 2.0.0 + */ public final class Rotation2dSubject extends Subject { // User-defined entry point public static Rotation2dSubject assertThat(@Nullable Rotation2d rotation) { diff --git a/testing/src/main/java/com/team2813/lib2813/testing/truth/Rotation3dSubject.java b/testing/src/main/java/com/team2813/lib2813/testing/truth/Rotation3dSubject.java index a9e67047..daf085f1 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/truth/Rotation3dSubject.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/truth/Rotation3dSubject.java @@ -24,7 +24,11 @@ import edu.wpi.first.math.geometry.Rotation3d; import javax.annotation.Nullable; -/** Truth Subject for making assertions about {@link Rotation3d} values. */ +/** + * Truth Subject for making assertions about {@link Rotation3d} values. + * + * @since 2.0.0 + */ public final class Rotation3dSubject extends Subject { // User-defined entry point public static Rotation3dSubject assertThat(@Nullable Rotation3d rotation) { diff --git a/testing/src/main/java/com/team2813/lib2813/testing/truth/TolerantComparison.java b/testing/src/main/java/com/team2813/lib2813/testing/truth/TolerantComparison.java index 2dd80643..c487fa13 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/truth/TolerantComparison.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/truth/TolerantComparison.java @@ -20,6 +20,8 @@ /** * A partially specified check about an approximate relationship to a {@code double} subject using a * tolerance. + * + * @since 2.0.0 */ public abstract class TolerantComparison { diff --git a/testing/src/main/java/com/team2813/lib2813/testing/truth/Translation2dSubject.java b/testing/src/main/java/com/team2813/lib2813/testing/truth/Translation2dSubject.java index 06beedfd..018bad04 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/truth/Translation2dSubject.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/truth/Translation2dSubject.java @@ -24,7 +24,11 @@ import edu.wpi.first.math.geometry.Translation2d; import javax.annotation.Nullable; -/** Truth Subject for making assertions about {@link Translation2d} values. */ +/** + * Truth Subject for making assertions about {@link Translation2d} values. + * + * @since 2.0.0 + */ public final class Translation2dSubject extends Subject { // User-defined entry point diff --git a/testing/src/main/java/com/team2813/lib2813/testing/truth/Translation3dSubject.java b/testing/src/main/java/com/team2813/lib2813/testing/truth/Translation3dSubject.java index de46d04e..22d3b89b 100644 --- a/testing/src/main/java/com/team2813/lib2813/testing/truth/Translation3dSubject.java +++ b/testing/src/main/java/com/team2813/lib2813/testing/truth/Translation3dSubject.java @@ -24,7 +24,11 @@ import edu.wpi.first.math.geometry.Translation3d; import javax.annotation.Nullable; -/** Truth Subject for making assertions about {@link Translation3d} values. */ +/** + * Truth Subject for making assertions about {@link Translation3d} values. + * + * @since 2.0.0 + */ public final class Translation3dSubject extends Subject { // User-defined entry point diff --git a/vision/src/main/java/com/team2813/lib2813/vision/MultiPhotonPoseEstimator.java b/vision/src/main/java/com/team2813/lib2813/vision/MultiPhotonPoseEstimator.java index 9f06e4e4..f49d4e19 100644 --- a/vision/src/main/java/com/team2813/lib2813/vision/MultiPhotonPoseEstimator.java +++ b/vision/src/main/java/com/team2813/lib2813/vision/MultiPhotonPoseEstimator.java @@ -59,6 +59,8 @@ * referred to as "field-centric pose". In our libraries, field-centric poses are always specified relative to the blue origin. + * + * @since 2.0.0 */ public class MultiPhotonPoseEstimator implements AutoCloseable { private final List cameraWrappers; diff --git a/vision/src/main/java/com/team2813/lib2813/vision/PhotonVisionPosePublisher.java b/vision/src/main/java/com/team2813/lib2813/vision/PhotonVisionPosePublisher.java index 95dd63fe..03ece3d8 100644 --- a/vision/src/main/java/com/team2813/lib2813/vision/PhotonVisionPosePublisher.java +++ b/vision/src/main/java/com/team2813/lib2813/vision/PhotonVisionPosePublisher.java @@ -38,6 +38,8 @@ * Estimated robot positions are published to NetworkTables using the timestamp in the {@code * EstimatedRobotPose}. If no data is available, a position of (0, 0, 0) is published only when the * previous available value is older than the expected latency of producing vision estimates. + * + * @since 2.0.0 */ public final class PhotonVisionPosePublisher { /** diff --git a/vision/src/main/java/com/team2813/lib2813/vision/PoseEstimateConsumer.java b/vision/src/main/java/com/team2813/lib2813/vision/PoseEstimateConsumer.java index 507a35d2..f6bff896 100644 --- a/vision/src/main/java/com/team2813/lib2813/vision/PoseEstimateConsumer.java +++ b/vision/src/main/java/com/team2813/lib2813/vision/PoseEstimateConsumer.java @@ -17,7 +17,11 @@ import org.photonvision.EstimatedRobotPose; -/** Represents an operation that accepts estimated robot positions. */ +/** + * Represents an operation that accepts estimated robot positions. + * + * @since 2.0.0 + */ @FunctionalInterface public interface PoseEstimateConsumer { /**