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.
v2027.0.0-alpha-2
What's Changed
- [photonlib] Remove deprecated pose estimator methods by @samfreund in #2431
- Bump some versions by @samfreund in #2433
- Upgrade to java 25 by @samfreund in #2441
- Formatting website by @samfreund in #2454
- Add presentation from CMP to website by @samfreund in #2453
- Add missing buildAndCopyUI instructions by @cswilson252 in #2457
- Change ssh login info by @samfreund in #2458
- Serve docs in demo by @samfreund in #2445
- Update macOS docs by @samfreund in #2459
- Add YOLO-Pro conversion docs by @samfreund in #2450
- Disallow low-resolution calibration by @cswilson252 in #2438
- Build images for 2027 and bump libcamera by @samfreund in #2442
- switched to shared cleaners in object detectors by @Bobcat66 in #2462
- Upgrade builds to node 24 by @samfreund in #2463
- Sync 2027 against main by @samfreund in #2465
- add youtube video by @samfreund in #2466
- Don't interact with Libcamera cameras until connected by @thatcomputerguy0101 in #2447
- TypeCheck Frontend by @samfreund in #2394
- 2027 by @samfreund in #2468
- Approve dependencies in pnpm and pin pnpm version in Gradle by @Gold856 in #2482
- Allow calibration dimensions in mm by @auscompgeek in #2479
- Add disabled param for PhotonCamera by @mcm001 in #2484
- fix(photon-lib): skip non-fiducial targets in C++ LOWEST_AMBIGUITY by @JosephTLockwood in #2494
- fix(photon-lib): only report actual contributors in targetsUsed by @JosephTLockwood in #2493
- Send isEnabled to UI by @thatcomputerguy0101 in #2499
- More strictly warn against NT api usage in docs by @cswilson252 in #2488
- Don't crash if libcamera fails to load by @thatcomputerguy0101 in #2498
- Fix setting stream res by @samfreund in #2500
- Raise minimum images for calibration to 100 by @spacey-sooty in #2437
- Add support for Green/Yellow status LEDs, like is used on some Limelights by @thatcomputerguy0101 in #2287
- Switch from FasterXML Jackson to Avaje Jsonb by @thatcomputerguy0101 in #2503
- Fix calibration typo by @samfreund in #2471
- change to a switch statement to avoid object comparison by @samfreund in #2507
- Upgrade to wpilib alpha-6 by @samfreund in #2434
- use wpilibYear not year by @samfreund in #2508
- Publish photonlib on main and tags by @mcm001 in #2510
- [python] Fixup python examples / build by @pjreiniger in #2509
New Contributors
- @JosephTLockwood made their first contribution in #2494
Full Changelog: v2026.3.4...v2027.0.0-alpha-2
v2026.3.4
v2026.3.3
Note
Rubik Pi 3 Only Release
What's Changed
- Populate classId and confidence level for object detection in Java simulation by @shdalton in #2372
- Clean up C++ headers by @Gold856 in #2402
- Add more linting rules by @Gold856 in #2406
- refactor dark mode checks by @samfreund in #2407
- Add nix files to .gitignore by @spacey-sooty in #2409
- Upgrade to Vite 8 by @Gold856 in #2408
- Remove old camera quirk aliases by @samfreund in #2412
- Fix strong reference in Cleaners by @Bobcat66 in #2404
- Add Community Contribution Guidelines by @gerth2 in #2405
- Add AE quirk to OV2311 by @samfreund in #2411
- Upgrade website dependencies by @samfreund in #2414
- Fix comments in OutputStream pipeline by @spacey-sooty in #2415
- bump rubik image by @samfreund in #2424
New Contributors
Full Changelog: v2026.3.2...v2026.3.3
v2026.7 (April Fools)
🚨🔥 BIG NEWS, FRC TEAMS — THIS IS THE ONE 🔥🚨
Every team knows the struggle 😵💫
The clock is ticking ⏱️
The match is in an hour 🤖
Your camera exposure is wrong 📸
Your pipeline isn’t locking 🎯
And somehow the robot is convinced the AprilTag is on the moon 🌕💀
We built the solution.
Today, we’re beyond excited to announce the biggest, boldest, most game-changing release in PhotonVision history 🚀✨
Introducing Quarky 🧠⚡🤖
Your brand-new live AI assistant, built right into PhotonVision. Originally slated for our MRC bid as a paid extension, now available to teams around the world for free!
Quarky helps you navigate the UI 🖥️, optimize settings 🎛️, tune pipelines 🎯, troubleshoot issues 🛠️, and drop helpful hints 💡 exactly when you need them.
Rookie team just getting vision online for the first time? 🌱
Quarky’s got your back 🙌
Veteran team chasing every last millisecond of latency before finals? 🏁⚡
Quarky is already thinking three frames ahead 👀💨
This is more than an update.
This is a revolution 🌟
Smarter tuning 🧠
Faster setup ⚡
Better targeting 🎯
Less panic in the pit 😅🔧
More confidence on the field 🏆🤖
The possibilities are endless 🌌✨
The only limit is yourself 💭🚀
And maybe RAM.
Definitely maybe RAM 💾😂
PhotonVision just got a whole lot brighter 💡✨
Sharper 🔪
Faster ⚡
And, dare we say… more visionary 👓😎
The future is in sight 👀
And it’s looking absolutely incredible 🚀🔥✨🤖🎯
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...