Skip to content

Releases: malmeloo/FindMy.py

🎯 FindMy.py v0.9.7

20 Nov 19:17
c0707dc

Choose a tag to compare

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

17 Nov 21:05
c8535d4

Choose a tag to compare

What's Changed

  • fix: do not throw error on empty server response by @malmeloo in #208
  • fix: define __hash__ and __eq__ for FindMyAccessory by @malmeloo in #207

Full Changelog: v0.9.5...v0.9.6

🎯 FindMy.py v0.9.5

08 Nov 14:14
b78e557

Choose a tag to compare

⚠️ 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

09 Oct 19:07
2dd97f4

Choose a tag to compare

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

29 Sep 21:06
6c8792a

Choose a tag to compare

What's new

  • Fixes not being able to query latest device location for some devices
  • Attempts to work around UnhandledProtocolError introduced 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

24 Sep 21:27
0a2516a

Choose a tag to compare

What's Changed

Full Changelog: v0.9.0...v0.9.2

🎯 FindMy.py v0.9.0

23 Sep 20:50
9c81f4a

Choose a tag to compare

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 AppleAccount instances has slightly changed to accommodate new features in the library.
  • account.json files 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.
  • FindMyAccessory objects 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 .plist files directly. A new example script named plist_to_json.py has 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

New Contributors

Full Changelog: v0.8.0...v0.9.0

🎯 FindMy.py v0.8.1

07 Aug 19:53
63beab5

Choose a tag to compare

What's Changed

  • Quickfix for Home Assistant 2025.8

Full Changelog: v0.8.0...v0.8.1

🎯 FindMy.py v0.8.0

14 Jun 14:46
b64e61a

Choose a tag to compare

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

Full Changelog: v0.7.6...v0.8.0

🎯 FindMy.py v0.7.6

05 Jan 12:18
5cd53fb

Choose a tag to compare

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

Full Changelog: v0.7.5...v0.7.6