Skip to content

Add rustpush backend contract and location timeline ingestion (untested)#6

Closed
devnoname120 wants to merge 4 commits intokennym:masterfrom
devnoname120:dev/rustpush-location-timeline
Closed

Add rustpush backend contract and location timeline ingestion (untested)#6
devnoname120 wants to merge 4 commits intokennym:masterfrom
devnoname120:dev/rustpush-location-timeline

Conversation

@devnoname120
Copy link
Contributor

@devnoname120 devnoname120 commented Mar 15, 2026

Summary

This PR adds an optional rustpush backend path while keeping pyicloud as default, with timeline-oriented location ingestion for items, devices, and people.

Highlights

  • Adds backend abstraction and rustpush bridge provider commands: bootstrap, sync, backfill-items, listen-aps
  • Adds location flattening for multi-report payloads and timestamp precedence handling
  • Adds dedupe via stable report fingerprint + DB unique index
  • Adds backfill checkpoint persistence and CLI backfill ingestion flow
  • Adds APS-triggered fast refresh loop behavior (APS payloads treated as triggers, not direct lat/lon)
  • Adds tests for flattening, dedupe/idempotency, timestamp handling, backfill checkpoints, and APS path behavior

Related Issue

Requested in issue: #5

Verification

  • . .venv/bin/activate && pytest -q (11 passed)
  • python3 -m compileall src
  • cargo check in rustpush_bridge/

@devnoname120 devnoname120 changed the title Add rustpush backend contract and location timeline ingestion Add rustpush backend contract and location timeline ingestion (untested) Mar 15, 2026
@devnoname120 devnoname120 mentioned this pull request Mar 15, 2026
@kennym
Copy link
Owner

kennym commented Mar 17, 2026

I'm testing this this weekend - thanks!

@kennym kennym self-assigned this Mar 17, 2026
@devnoname120
Copy link
Contributor Author

@kennym Let me know how it goes!

@kennym
Copy link
Owner

kennym commented Mar 21, 2026

@kennym Let me know how it goes!

reviewing this now

@kennym
Copy link
Owner

kennym commented Mar 22, 2026

So, there's this python Library Find.my which is a better fit for this.

The problem with that is that in any case you'd have to export the AirTag UUIDs manually and import them into find-my-timeline.

I'm working on a PR which does exactly that.

Thanks for your PR, but I don't think we need this rust library as your PR is missing the runtime. Without that runtime it can't call the library anyways and maintaining that is another story.

For now the best course of action is integrating Find.my library.

If you need AirTag support today, feel free to use that library

@kennym kennym closed this Mar 22, 2026
@devnoname120
Copy link
Contributor Author

I’m curious how it will pan out! Interacting with rustpush is a bit cumbersome but it’s very nice and up to date among other things it’s because it’s well tested and maintained due to being used/sponsored by a commercial product (OpenBubbles).

Definitely looking forward to the FindMy.py integration! I would do it myself but right now I’m burnt out I did way too much in the past 2 weeks…

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants