Releases: PhotonVision/photonvision
Latest Development Version
This release contains the latest version of Photon Vision based on the code on the main branch. This code is not as well-tested as the latest stable release! Use at your own risk.
v2026.3.2
Major Changes
- Offline updates to a dev release now work, there was a bug introduced that caused them to fail in v2026.3.1
- The issue mentioned in https://www.chiefdelphi.com/t/photonvision-network-tables-known-issue/515966?u=sam948 has hopefully been resolved in #2398. If anybody sees this issue (random NT disconnects) reoccurring, please create an issue or let us know on Discord
Changelog
- Document low-resource vision simulation with Photonvision by @Ruthie-FRC in #2359
- Drop deviceLogoPath and supportURL from HardwareConfig by @cswilson252 in #2389
- Add clarity to networking for multiple coprocs by @samfreund in #2383
- Fix offline dev update confirm handler not starting upload by @MirrorCY in #2393
- correct typo by @Ruthie-FRC in #2395
- Remove NT reconnect loop entirely by @mcm001 in #2398
New Contributors
- @Ruthie-FRC made their first contribution in #2359
Full Changelog: v2026.3.1...v2026.3.2
v2026.3.1
What's Changed
- add usb firmware checkbox to flashing docs by @samfreund in #2360
- Fix default gateway in static IP config to match VH-109 DHCP config by @rzblue in #2364
- Check offline updates for incompatibility by @samfreund in #2361
- Bring CombinedRuntimeLoader into PV [NFC] by @samfreund in #2367
- Add rotatedrect detections for OD and bump rubik JNI by @samfreund in #2325
- Verify native library integrity during extraction/load by @samfreund in #2368
- Update Dashboard to reflect Calibration Rotation Changes by @Powerlax in #2370
- Add external licenses to jar by @spacey-sooty in #2369
- Explicitly handle Sim Camera params in milliseconds by @cswilson252 in #2375
- docs: Add headless test instructions + reshuffle build doc format by @cswilson252 in #2374
- Add docs for usbtop by @samfreund in #2378
- Bump image version to 2026.1.3 by @samfreund in #2381
New Contributors
Full Changelog: v2026.2.2...v2026.3.1
v2026.2.2
What's Changed
- Fix Arducam OV9782 Exposure Changing After Reboot by @Watermilan412 in #2355
- Release processed Focus mat to not leak, cache, and fix cvmat refcounting by @mcm001 in #2356
New Contributors
- @Watermilan412 made their first contribution in #2355
Full Changelog: v2026.2.1...v2026.2.2
v2026.2.1
Major Changes
- The autoexposure bug with OV9281 cameras has been fixed (thank you Robert from 2881 for helping test)!
- PhotonVision now ships with Object Detection models for this years gamepiece, FUEL. Old models can be found under
test-resources/models. - PhotonVision now supports configuring the number of targets returned in OD, colored shape, and reflective pipelines, up to 127 targets.
What's Changed
- Add OV9281 AE startup quirk by @mcm001 in #1814
- Update PR template by @Gold856 in #2334
- Update README by @Gold856 in #2333
- Check POST request status before displaying success by @Gold856 in #2336
- not 2024 anymore by @gerth2 in #2328
- Add FRC 2026 game piece detection models by @cobouch in #2332
- Update RubikPi Collab Notebook with working Device by @DoctorFogarty in #2339
- Add 2025.3.1 backwards-compat to ML models by @mcm001 in #2331
- Doc: Add a warning about versions 2.0.2 and later of the Raspberry Pi Imager not working properly by @INeedCaffeine in #2340
- Remove unused commands from the custom hardware configuration documentation by @crschardt in #2343
- Allow configuring maximum target count by @2826WaveRobotics in #2338
- Add missing early-return to legacy ML model load by @samfreund in #2347
- Copy old configs before testing by @samfreund in #2348
- Dynamically import echarts and three.js by @Gold856 in #2349
- Fix dimmable LED off-state, topic names, PWM flicker, brightness update outside
kDefault, indefinite blinking, and blinking reliability by @thatcomputerguy0101 in #2337 - Add calibration info tooltip by @DevonRD in #2350
New Contributors
- @cobouch made their first contribution in #2332
- @DoctorFogarty made their first contribution in #2339
- @INeedCaffeine made their first contribution in #2340
- @2826WaveRobotics made their first contribution in #2338
Full Changelog: v2026.1.1...v2026.2.1
v2026.1.1
The PhotonVision team is excited to announce the first full release for the 2026 FRC competition season! See more at https://www.chiefdelphi.com/t/photonvision-2026-releases-2026-1-1/512436.
What's Changed
- 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 eve...
v2026.1.1-rc-4
What's Changed
- Bump WPILib to 2026.2.1 by @mcm001 in #2306
- Stop shipping unit tests in photonlibpy wheel by @auscompgeek in #2309
- refactor: separate build, test, and deploy in Python workflow by @auscompgeek in #2308
- Cache requested calibration format outside of state store by @mcm001 in #2310
- Add comment documenting typo copied from COCO docs by @Space646 in #2253
- Remove strict WPILib version requirement by @Gold856 in #2307
- Chore: Updated documentation for Fx/Fy units. by @cyblazer in #2314
- Propagate changes after modifying OD model by @samfreund in #2299
New Contributors
Full Changelog: v2026.1.1-rc-3...v2026.1.1-rc-4
v2026.1.1-rc-3
What's Changed
- fix: simplify version regex and fix rc tag handling by @auscompgeek in #2296
- Rknn numpy fix by @boomermath in #2298
- Smoketest after uploading images by @samfreund in #2294
- Loosely pin numpy to 2.3 by @samfreund in #2303
Full Changelog: v2026.1.1-rc-2...v2026.1.1-rc-3
v2026.1.1-rc-2
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 ...
v2026.0.1-beta
Warning
This pre-release has a bug that affects coprocessors using a CSI camera. This includes LimeLights and the Luma P1.
We recommend that users with these devices use our dev image or the alpha-2 image until a new release is published.
What's Changed
- 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
New Contributors
- @tqpcharlie made their first contribution in #2160
- @katzuv made their first contribution in #2184
Full Changelog: v2026.0.0-alpha-2...v2026.0.1-beta