What's Changed
- chore[docs]: add arducam ESD problem to troubleshooting by @samfreund in #1848
- Remove tag cutting workflow by @Gold856 in #1854
- Recommend Raspberry Pi Imager over Balena Etcher by @Gold856 in #1858
- Update docs dependencies and do some house cleaning by @Gold856 in #1863
- feat: link methods in javadocs to source code by @samfreund in #1866
- chore: bump wpiformat by @samfreund in #1869
- feat: release and development docs versions by @samfreund in #1872
- feat!: monorepo landing page by @samfreund in #1868
- Fix CI for website by @samfreund in #1877
- chore[docs]: Recommend ethernet tether over port forwarding for VH-109 by @samfreund in #1847
- Rename Workflows by @samfreund in #1881
- fixed a spelling mistake by @AstrinLakotaRobotics in #1883
- Add data exchange update to merge checklist by @Gold856 in #1888
- Fix calibration array length by @Gold856 in #1879
- [docs] Update "About Pipelines" list by @alaninnovates in #1889
- [docs] Document driver mode by @alaninnovates in #1890
- Bump Wpiformat by @samfreund in #1892
- [docs] Update best practices by @alaninnovates in #1896
- Clean up .gitignore by @Gold856 in #1897
- Make Vision pose estimation examples use all vision measurements by @spacey-sooty in #1706
- [docs] Update PhotonPoseEstimator examples by @alaninnovates in #1903
- Add documentation issue template by @samfreund in #1907
- remove core and server from javadocs by @samfreund in #1911
- [docs] Update PhotonLib vendor dependency guide by @alaninnovates in #1915
- Log message on robot mode changes by @mcm001 in #1923
- [docs] Reorganize camera configuration pages and add camera matching documentation by @alaninnovates in #1917
- Make various refactors to clean up codebase by @Gold856 in #1830
- Add docs about robot modes by @mcm001 in #1924
- [docs] Minor documentation changes by @alaninnovates in #1922
- Clean up build by @Gold856 in #1926
- Revert "Use Timer object to calculate FPS" by @Gold856 in #1928
- Add leading zero to log file date/time by @mcm001 in #1925
- Updates to object detection documentation by @10tothe6 in #1930
- [photon-lib] Add PhotonPoseEstimator.resetHeadingData() by @bryceroethel in #1933
- [photon-lib] Fix incorrect tag visualization transforms by @amquake in #1899
- Standardize API by @samfreund in #1942
- Remove MacOS builds from releases by @samfreund in #1948
- Add question about method of powering to bug issue template by @samfreund in #1947
- Vue 3 Upgrade by @GrahamSH-LLK in #1900
- Clean up client dependencies by @GrahamSH-LLK in #1954
- Add basic linux troubleshooting tips by @samfreund in #1885
- [docs] upgrade dependencies by @samfreund in #1958
- Remove manual links from README by @samfreund in #1959
- Remove unused template from docs by @samfreund in #1960
- Disable Alerts test in PhotonCameraTest by @Gold856 in #1969
- Fix Broken Docs by @samfreund in #1971
- Disable linkcheck for gnu.org by @Gold856 in #1973
- [ci] Run on push or PR by @spacey-sooty in #1974
- Fix logic for no cameras detected modal by @samfreund in #1978
- Fix camera setup modal not closing and navigation not working by @Gold856 in #1979
- Migrate NNM Settings to SQLITE by @samfreund in #1894
- Fix usage reporting. by @spacey-sooty in #1964
- Update server index wording by @samfreund in #1984
- Scream test removing a folder from server by @samfreund in #1985
- De-conflict camera names and hostnames by use of a banner by @samfreund in #1982
- Initial hardware support for Rubik pi by @samfreund in #1989
- Set a more sane timeout for WS connections and log WS errors by @Gold856 in #1992
- Reenable and fix flaky tests by @Gold856 in #1837
- Clean up spacing and other things in various parts of the UI by @Gold856 in #1972
- feat: add metrics publisher for NT by @samfreund in #1791
- Clarify and fix OpenCV/WPILib version checking error by @spacey-sooty in #1963
- Refactor MAC address detection by @Gold856 in #1991
- Restore original video mode index order by @Gold856 in #1999
- Make testHeadless output the same stuff as test from photon-lib by @Gold856 in #2000
- Dynamically import dependencies that are not critical to viewing the UI by @Gold856 in #2001
- Fix camera calibration card contents completely vanishing during calibration by @Gold856 in #1998
- Add Gradle wrapper validation by @samfreund in #2004
- Move metrics subtable to root PV table by @samfreund in #2007
- Update metrics publisher hostname when hostname is changed by @samfreund in #2008
- Update logic for metric publisher topic name by @samfreund in #2011
- Add an overload of resetHeadingData() which takes in a Rotation3d by @kcooney in #2013
- [photon-lib] Python support for PNP_DISTANCE_TRIG_SOLVE by @kcooney in #2015
- Add model benchmark data by @boomermath in #2025
- Disable linkcheck for www.gnu.org by @Gold856 in #2030
- Dark mode and minor interface tweaks by @DevonRD in #2016
- RKNN conversion tool by @boomermath in #2024
- Add COCO model for RKNN by @samfreund in #2026
- Revert "Add COCO model for RKNN (#2026)" by @Gold856 in #2033
- Add PR labeler by @Gold856 in #2031
- Switch to pnpm (and update some dependencies) by @Gold856 in #2032
- Fix buildAndCopyUI and update build instructions by @Gold856 in #2036
- Fix labeler labelling everything as backend by @Gold856 in #2041
- Update notebook links by @boomermath in #2037
- Update RKNN Conversion notebook permalinks by @boomermath in #2042
- Add notebook for Rubik Model conversion by @samfreund in #2006
- Add yes pipe for rubik conversion cmd by @boomermath in #2043
- [photon-lib] Invalidate pose cache when setting referencePose by @kcooney in #2040
- Add COCO trained model for RKNN by @samfreund in #2035
- Run metrics with debug false to reduce log spam by @samfreund in #2027
- Expose and document NMS slider by @samfreund in #2028
- Add an error when the connection for the end calibration request fails by @Gold856 in #1840
- Make dashboard theme transition smooth and fix link color by @Gold856 in #2046
- Add support for object detection on Rubik Pi 3 by @samfreund in #2005
- Verify that nmcli installed by @mcm001 in #1929
- Add PNP_DISTANCE_TRIG_SOLVE strategy to C++ by @cuttestkittensrule in #2021
- Remove log spam from periodic network and IP address queries by @crschardt in #2051
- Use new vendor JSON repo action by @Gold856 in #2049
- Only make vendor-json-repo PR if the repo is ours by @Gold856 in #2053
- Only update UI when there's been a change in conflict detection by @Gold856 in #2054
- Fix calibrationUtils.py by @Gold856 in #2055
- Exclude license from being loaded as a model by @samfreund in #2063
- Bump wpiformat to 2025.34 by @samfreund in #2066
- bump gradle to 8.14.3 by @samfreund in #2064
- Preload OD models before import to check quantization by @boomermath in #2056
- Remove codecov from workflow by @samfreund in #2070
- Bump website and docs dependencies by @samfreund in #2075
- Fix 'Resource leak: is never closed' warnings by @kcooney in #2023
- Use deploy-utils instead of an external ssh plugin by @Gold856 in #2077
- Set canonical root URL for documentation by @GrahamSH-LLK in #2078
- Update compatible version to 2025 by @samfreund in #2068
- Set the initial capacity of ArrayLists in getAllUnreadResults() by @kcooney in #2079
- Add custom theming by @DevonRD in #2081
- Publish FPS with camera by @spacey-sooty in #2083
- Update libcameraDriverVersion to v2025.0.4 by @crschardt in #1769
- Add limelight 4 support by @spacey-sooty in #1807
- Properly declare inputs and output for buildClient by @Gold856 in #2086
- [ci] Set versions for image builds to 24.04 by @spacey-sooty in #2092
- Refactor LibCameraJNILoader to use PhotonJNICommon by @Gold856 in #2048
- Modify build-image to use global variable for image version by @Gold856 in #2113
- Fix documentation tab set syncing by @thatcomputerguy0101 in #2109
- Fix file uploads not overwriting existing files by @Gold856 in #2116
- Conglomerate release artifacts by @samfreund in #2115
- Make exported journalctl logs less verbose and always display everything by @Gold856 in #2101
- Make NT client name the same as hostname by @samfreund in #2107
- Remove gh-action-releaser by @samfreund in #2119
- Add Constrained PNP Pose Strategies to C++ photonlib by @r4stered in #1908
- Disable 3d mode for OD and colored shapes by @samfreund in #2121
- Add support for building rubik image by @samfreund in #2110
- chore: Bump Javalin by @HENRYMARTIN5 in #2126
- [ci] Fix releaser by @Gold856 in #2127
- Update LimeLight installation documentation by @spacey-sooty in #2133
- Fix most gradle deprecation warnings by @spacey-sooty in #2093
- Made steam overlay buttons primary color by @ElectricTurtle32 in #2139
- Use the tool plugin to include photon-targeting into photon-core by @Gold856 in #2137
- Version rubik pi image by @samfreund in #2129
- Fix versioning helper by @samfreund in #2141
- Revert "Make HardwareConfig a record" by @Gold856 in #2142
- Add Luma P1 support by @mjansen4857 in #2135
- Add documentation for forcing OD UI by @samfreund in #2018
- Fix typo: s/Specifc/Specific by @Krylez in #2143
- Add camera mismatch banner to dashboard by @alaninnovates in #1921
- Add downgrade fix for ONNX error during RKNN conversion by @boomermath in #2136
- Update notebook links in docs to point to docs version by @boomermath in #2155
- Merge rknn conversion scripts into notebook by @boomermath in #2157
- Fix calibration resolution default bug by @samfreund in #2156
- Fix rubik_jni bounding box bug by @samfreund in #2162
- Add Merch link to header by @gerth2 in #2161
- Add progress indicator for single model OD upload by @samfreund in #2154
- Add message discouraging chessboard usage by @tqpcharlie in #2160
- Add Merch link to header on desktop by @Gold856 in #2165
- Fix client linting in CI by @samfreund in #2167
- Add cross-compilation toolchain to docs by @samfreund in #2172
- Gradle build task improvements by @thatcomputerguy0101 in #2164
- Add axios post util by @samfreund in #2153
- use progress bar for file uploads by @samfreund in #2148
- add documentation for linting by @samfreund in #2166
- Add notice to notebook about running on linux by @boomermath in #2163
- [NFC] Invert AprilTag family default by @spacey-sooty in #2124
- Fix bug with import nickname by @samfreund in #2176
- Add support for removing calib coefficients by @samfreund in #2150
- Add warning about arducam-pivariety incompatibility by @tqpcharlie in #2178
- Only show images during tests when requested via project property by @thatcomputerguy0101 in #2177
- Upgrade to wpiformat 2025.48 by @calcmogul in #2186
- Fix "ArUco" and "ChAruCo" spellings by @katzuv in #2184
- Add Camera Focus Mode by @ElectricTurtle32 in #2180
- [ci] Upgrade to wpiformat 2025.69 by @calcmogul in #2193
- Modal template for deletion confirmation by @samfreund in #2190
- [ci] Upgrade to wpiformat 2025.75 by @calcmogul in #2198
- Catch other boards in isRK3588 check by @mjansen4857 in #2199
- Fix PipelineType index mismatch by @Gold856 in #2204
- Fix OV9281 resolution options when libcamera by @spacey-sooty in #2100
- Use updated image metadata by @samfreund in #2209
- Add playwright E2E tests by @samfreund in #2174
- Fix button theming for custom themes by @DevonRD in #2216
- Rename NetworkingCard.vue to GlobalSettingsCard.vue by @samfreund in #2215
- Fix import for GlobalSettingsCard by @Gold856 in #2217
- Update PR linting instructions by @samfreund in #2213
- revert demo domain url by @TheTripleV in #2218
- Update mrcal-java by @Gold856 in #2214
- [NFC] Kill stupid while loop copy in PhotonJNICommon by @mcm001 in #2219
- Optimize UI CPU usage by @Gold856 in #2168
- Remove redundant photon-targeting JNI library load by @Gold856 in #2220
- Prevent slider from going past bounds by @Gold856 in #2222
- Restore original dashboard view behavior by @Gold856 in #2227
- Use photon-image-runner to build images by @crschardt in #2210
- Consistently serialize neural network data by @Gold856 in #2224
- Bump image version to v2026.0.6 by @samfreund in #2228
- Add WireShark dissector by @mcm001 in #2140
- Fix pipeline type when creating a new pipeline being off by one by @samfreund in #2229
- Remove PhotonJNICommon in favor of CombinedRuntimeLoader by @samfreund in #2223
- Fix Jackson being unable to deserialize neural network config by @Gold856 in #2232
- Use diozero for GPIO by @thatcomputerguy0101 in #2171
- Bump wpilib to 2026 beta by @samfreund in #2192
- Fix incorrect hostname on non-managed devices by @Gold856 in #2203
- RobotPy 2026 beta by @samfreund in #2237
- Fix default settings for deploy by @spacey-sooty in #2242
- [ci] Upgrade to wpiformat 2025.79 by @calcmogul in #2250
- Bump libcamera and mrcal versions by @samfreund in #2251
- Integrate smoketests into image build by @samfreund in #2248
- Discourage use of NT APIs by @tqpcharlie in #2182
- Check if returned NetworkInterface is null before attempting to get MAC address by @Gold856 in #2245
- Wait for NetworkManager on first call to getAllInterfaces by @crschardt in #2240
- Log fewer errors by @crschardt in #2246
- qdl instructions for flashing rubik pi 3 by @samfreund in #2254
- Fix typo in selecting-hardware documentation by @vishnu09bharath in #2256
- Show board outliers in calibration info card by @mcm001 in #1267
- Add NT controlled framerate limiter by @samfreund in #2257
- Refactor website by @GrahamSH-LLK in #2243
- Remove unused scripting system by @Gold856 in #2269
- Remove etcher from recommended flashers by @samfreund in #2271
- Rewrite system monitoring to use OSHI by @crschardt in #2255
- Bump various versions in actions by @samfreund in #2194
- Fix opengraph embed by @samfreund in #2265
- Download artifacts for testing examples by @samfreund in #2270
- [ci] Restore mypy checks by @Gold856 in #2128
- Use forked WPILib tool plugin by @mcm001 in #2120
- Use WPILib Artifactory mirror instead of Maven Central by @mcm001 in #2277
- Add macOS mrcal support by @thatcomputerguy0101 in #2264
- Updating wiring doc to include RUBIK Pi instructions by @mccv in #2281
- Force reload after restart and switch URL after IP change by @samfreund in #2278
- Build Python examples during CI run by @cswilson252 in #2273
- Bump actions for node 24 by @samfreund in #2274
- Fix OSHI spamming failures to console on Windows by @crschardt in #2282
- Bump IMAGE_VERSION to v2026.1.1 by @mcm001 in #2286
- Device metrics and control reorganization by @DevonRD in #2144
- Open up pose estimator strategy methods by @Gold856 in #2252
- Fix javadoc warnings by @Gold856 in #2266
- 2026 Test Mode Images by @DeltaDizzy in #2285
- Make the latency/fps setting per camera instead of global by @TheTripleV in #2260
- Fix rendering of tags 30, 31, and 32 in simulated camera streams by @jlmcmchl in #2291
- Update to 2026 by @samfreund in #2288
- Fix parentheses in workflow by @samfreund in #2292
New Contributors
- @AstrinLakotaRobotics made their first contribution in #1883
- @alaninnovates made their first contribution in #1889
- @10tothe6 made their first contribution in #1930
- @bryceroethel made their first contribution in #1933
- @GrahamSH-LLK made their first contribution in #1900
- @kcooney made their first contribution in #2013
- @boomermath made their first contribution in #2025
- @cuttestkittensrule made their first contribution in #2021
- @thatcomputerguy0101 made their first contribution in #2109
- @HENRYMARTIN5 made their first contribution in #2126
- @ElectricTurtle32 made their first contribution in #2139
- @mjansen4857 made their first contribution in #2135
- @Krylez made their first contribution in #2143
- @tqpcharlie made their first contribution in #2160
- @katzuv made their first contribution in #2184
- @vishnu09bharath made their first contribution in #2256
- @mccv made their first contribution in #2281
- @cswilson252 made their first contribution in #2273
Full Changelog: v2025.3.1...v2026.1.0-rc-2