Releases: malmeloo/FindMy.py
🎯 FindMy.py v0.9.7
What's Changed
- Fixes an issue where querying locations for the same airtag could result in no results for all but the first attempt (#209)
Full Changelog: v0.9.6...v0.9.7
🎯 FindMy.py v0.9.6
What's Changed
- fix: do not throw error on empty server response by @malmeloo in #208
- fix: define
__hash__and__eq__forFindMyAccessoryby @malmeloo in #207
Full Changelog: v0.9.5...v0.9.6
🎯 FindMy.py v0.9.5
⚠️ Breaking changes
- Support for Python 3.9 was dropped since it has become EOL
Other changes
- Add support for Python 3.14
- Prevent blocking event loop as much as possible when using local Anisette
- Add support for in-memory files as source/target for JSON serialization
- Greatly increase performance of location fetching for official accessories that were paired a long time ago
- Fix compatibility with Home Assistant 2025.11
Merged PRs
- feat: disable mandb trigger when installing packages in CI by @malmeloo in #191
- feat: do not block event loop on local Anisette init by @malmeloo in #192
- feat: support in-memory files for {from,to}_{json,plist} by @malmeloo in #193
- chore(deps): update dependency sphinx-autoapi to v3.6.1 by @renovate[bot] in #198
- feat: cache more intermediate accessory keys by @malmeloo in #196
- feat!: update Python support range to [3.10, 3.15) by @malmeloo in https://github.com//pull/203
- fix: compatibility with HA 2025.11 by @malmeloo in #204
Full Changelog: v0.9.4...v0.9.5
🎯 FindMy.py v0.9.4
What's Changed
- fix: resolve import error on Windows by @malmeloo in #189
- docs: add Simply-Haystack to related projects by @malmeloo in #190
- chore(deps): update actions/checkout action to v5 by @renovate[bot] in #187
- chore(deps): update actions/upload-pages-artifact action to v4 by @renovate[bot] in #188
Full Changelog: v0.9.3...v0.9.4
🎯 FindMy.py v0.9.3
What's new
- Fixes not being able to query latest device location for some devices
- Attempts to work around
UnhandledProtocolErrorintroduced by issues on Apple's side (#185) - Improve performance when fetching latest location for FindMy accessories
- Reduces logger spam under certain circumstances
PRs Merged
- Various accessory fixes and improvements by @malmeloo in #184
- fix: workaround empty HTTP response when fetching device locations (#185) by @malmeloo in #186
Full Changelog: v0.9.2...v0.9.3
🎯 FindMy.py v0.9.2
What's Changed
Full Changelog: v0.9.0...v0.9.2
🎯 FindMy.py v0.9.0
Welcome to the biggest release of FindMy.py yet! This release is packed with news, hot new features, breaking changes and fixes. Let's dive in right away!
Highlights
- 🎯 Official AirTag support has finally been fixed! A brand new key alignment algorithm has been implemented that will hopefully fix issues with tracking AirTag and iDevice once and for all.
- ❌☁️ Local Anisette is now officially supported! Using Anisette.py, FindMy.py is now able to generate Anisette data locally on-device. This means that FindMy.py will simply work out-of-the-box and you won't have to set up an external Anisette server anymore. The examples have already been updated to use this new feature by default.
- 💬 We now have an official Discord server! Come join us over on Discord to chat, discuss, suggest changes or simply post pictures of your cute pets. Don't want to join? Don't worry, all important information related to the project will stay right where it is. I will have to warn you though, you will miss out on pictures of my rabbits.
- 📖 The docs have had an overhaul. The new documentation website looks easier on the eyes, contains more info on how to get started and should be your go-to place for any questions regarding FindMy.py. Missing something? We're always working on improving information accessibility, so create an issue or shoot me a message on Discord and I'll add it to the docs. Or add it yourself and create a pull request!
⚠️ Breaking changes
This release is a major leap towards the first stable version of FindMy.py. Breaking changes always suck, so I've tried to condense most of the necessary ones into this release so that we can hopefully avoid them in the future.
I won't be documenting all of these changes in great detail. Instead refer to the example scripts to see what has changed exactly and which changes you will need to make.
⚠️ Sessions created using older versions of FindMy.py may or may not properly be restored in this version. If anything breaks, remove your old file and sign in again. If you want to switch to Local Anisette, you must also do this.- Instantiation, saving and restoration of
AppleAccountinstances has slightly changed to accommodate new features in the library. account.jsonfiles are now self-contained. When using a remote anisette server, the URL of the server will be stored in this file and cannot be changed after instantiation, unless you modify the file manually. When using local anisette, anisette data is stored in this file as well.FindMyAccessoryobjects are now stateful and their state may change after each fetch. Refer to the documentation or example scripts to learn how to manage this additional state.- The example scripts can no longer operate on
.plistfiles directly. A new example script namedplist_to_json.pyhas been added to migrate to the new file format. - Some other minor changes which may or may not be breaking depending on your use case.
Fixes / PRs merged
- chore(deps): update dependency sphinx-autoapi to v3.6.0 by @renovate[bot] in #126
- feat(reports): implement local Anisette provider by @malmeloo in #147
- repo: add assets by @malmeloo in #150
- [ImgBot] Optimize images by @imgbot[bot] in #151
- feat!(reports): Migrate to new acsn API by @malmeloo in #144
- Scanner improvements by @malmeloo in #153
- Add BLE ad data generation method by @shreyasminocha in #113
- chore: update dependencies by @malmeloo in #152
- build: constrain Python version to >= 3.11 for building docs by @malmeloo in #157
- chore(deps): update dependency sphinx to v8 by @renovate[bot] in #69
- Fix unclosed aiohttp client session warnings in session management by @paulb-firebolt in #156
- Make more objects
Serializableby @malmeloo in #148 - Better documentation by @malmeloo in #7
- Fixed uv build by @franga2000 in #158
- Add option to align FindMyAccessories key generation by @pajowu in #125
- fix(examples): fix plist loading error by @malmeloo in #146
- Resolve versioned tests and update the required dependencies for python <3.11 by @pablobuenaposada in #164
- Fix accessory key drift by @malmeloo in #160
- Make classes available in top-level package by @malmeloo in #172
- Feat/docs by @malmeloo in #178
- Feat/docs by @malmeloo in #179
New Contributors
- @imgbot[bot] made their first contribution in #151
- @shreyasminocha made their first contribution in #113
- @paulb-firebolt made their first contribution in #156
- @franga2000 made their first contribution in #158
- @pajowu made their first contribution in #125
- @pablobuenaposada made their first contribution in #164
Full Changelog: v0.8.0...v0.9.0
🎯 FindMy.py v0.8.1
🎯 FindMy.py v0.8.0
What's Changed
- add time margin when matching against nearby device by @thisiscam in #97
- chore(deps): update pre-commit-ci/lite-action action to v1.1.0 by @renovate in #95
- chore(deps): update dependency sphinx-autoapi to v3.4.0 by @renovate in #94
- Add Home Assistant extension to readme by @krmax44 in #110
- fix: Auto-retry requests to remote anisette server by @malmeloo in #104
- feat: Support fetching of multiple accessories at once by @malmeloo in #105
- chore: Migrate from poetry to uv by @malmeloo in #114
- chore: Update dependencies by @malmeloo in #124
- Update version of ruff and fix lint errors by @NickCrews in #132
- feat: adjust the ser/deser logic of AppleAccount by @NickCrews in #131
- Update fetch_reports to accept lists with HasHashedPublicKey and RolingKeyPairSource at the same time by @ivanik7 in #135
- feat: add plist.py for decrypting the .plist files to FindMyAccessory by @NickCrews in #130
- chore(deps): update astral-sh/setup-uv action to v6 by @renovate in #127
New Contributors
- @krmax44 made their first contribution in #110
- @NickCrews made their first contribution in #132
- @ivanik7 made their first contribution in #135
Full Changelog: v0.7.6...v0.8.0
🎯 FindMy.py v0.7.6
What's Changed
- Fix compatibility with latest version of Home Assistant
- Update dependencies
- fix confidence/horizontal acc, add mac address by @Philip2809 in #85
- reset device_fut when timeout is reached by @thisiscam in #92
- Add key generation margin when comparing against detected device by @malmeloo in #91
New Contributors
- @Philip2809 made their first contribution in #85
- @thisiscam made their first contribution in #92
Full Changelog: v0.7.5...v0.7.6