v0.68.7
feder-cr/invisible_dotsv0.68.7Sep 18, 2026by github-actions[bot]
Upgrading?
AI Summary
This release fixes a critical click delivery bug caused by dependency conflicts with `invisible-playwright` and refactors version checking logic to ensure consistency. It raises the minimum dependency version to 0.22.1 and introduces documentation and tests to prevent version list rot.
Key Highlights
- Fixes a click delivery bug where older versions of `invisible-playwright` caused retries or missed clicks.
- Raises the minimum required version for `invisible-playwright` from 0.16.2 to 0.22.1.
- Refactors version checking logic to read declarations instead of installed versions.
- Adds `WHAT_THE_TOOLS_NEED` documentation and validation tests to maintain version list integrity.
Breaking Changes
- Raises minimum requirement for `invisible-playwright` to version 0.22.1.
- Changes version checking logic from installed versions to declared versions.
Full Release Notes
`invisible-playwright` is declared with `>=`, so somebody who already has an older wheel installed updates this package and keeps whatever that wheel does. Up to 0.22.0 that means a click is not delivered once: the driver read the hit target again AFTER the event and turned what it found into a retry, so any control that stops being hittable by its own effect got pressed again. Measured on 0.22.0: a button that hides itself took 1068 clicks across 30 calls, and every call then reported failure; a toggle was flipped twice by one call and reported success. That is a modal's close, a cookie banner's accept, a menu item, a submit that becomes a spinner - most of what an agent clicks. The floor moves from 0.16.2 to 0.22.1, and the reason joins the three already written beside it, in the same form: a version here is the first release in which the named behaviour is true. And the reasons stop being a comment nobody reads. `WHAT_THE_TOOLS_NEED` lists each floor with what breaks below it, and two tests hold it from both sides: the declared floor may not be below any version in the list, and every version in the list must be one the floor actually reached - so the list cannot rot into a description of a past the declaration has moved on from. It reads the DECLARATION, not what is installed. A test that asked the interpreter which version is importable would pass on a machine where the wrapper comes from a checkout and say nothing about what `pip install aihawk` gives a user, which is the only thing a floor decides. Three known-bad mutations killed: the floor back to 0.16.2, the floor below the screencast one, and a reason naming a version the floor never reached. Suite: 732 passed, 9 skipped. Lint, `invisible_core.english` and `check_content.py` clean.
Related Repositories
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
Interactive roadmaps, guides and other educational content to help developers grow in their careers.
Reverse engineer anything with agents, from app behavior down to native binaries.
The open source coding agent.
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.