v6.0.0
jo-inc/camofox-browserv6.0.0Jan 13, 2026by mherrmann
AI Summary
This is a major version bump that fixes a critical bug in the `find_all` method where elements were being reused across iterations. Additionally, the behavior of `find_all` has been changed to return only the first match when using spatial relations like `below` or `to_right_of`.
Key Highlights
- Fixed `find_all` reuse bug
- Changed `find_all` behavior to return single element
- Major version bump (6.0.0) due to API changes
Breaking Changes
- `find_all` now returns the first match instead of multiple matches for spatial relations
- `find_all` now returns unique elements instead of reused instances
New Features
- Fixed `find_all` reuse bug
- Changed `find_all` behavior for spatial queries
Full Release Notes
`find_all` had the following bug:
Imagine you have the following code:
```
for label in find_all(Text('Label')):
print(Link(to_right_of=label).href)
```
The bug was that this used _the same_ `Link` for each `label`, producing output for links that actually were not `to_right_of` the `label` in the loop.
Furthermore, this release also changes the behavior of `find_all` in the following way. Say you have four buttons in a 2x2 grid:
<img width="276" height="62" alt="image" src="https://github.com/user-attachments/assets/d4ae31f1-6de7-41ca-9a4a-9e8e9a8ebd73" />
Previously, the following code used to return two buttons:
```
find_all(Button("Duplicate Button"), below=Button("Duplicate Button"))
```
(Namely, the two buttons in the second row, because they are both under a "Duplicate Button").
Now, this only returns one button (the first button in the second row). If you want both, you can still do:
```
for button in find_all(Button("Duplicate Button")):
find_all(Button("Duplicate Button", below=button))
```
This release is a major version bump (6.x.x) because it changes the elements returned by Helium's API and may therefore be backwards-incompatible.