Provider-agnostic engine for syncing a Palm OS PDA with a cloud calendar/tasks/contacts service. Extracted from palm365-mac so the same hardened logic can back more than one cloud provider without duplicating it.
This is a library, not a standalone tool — it's meant to be installed as a dependency of a provider-specific package (like palm365-mac for Microsoft 365, or a future palmgoogle-mac for Google) that supplies the actual cloud API client and field-mapping code.
palm_writer.py— reads/writes jpilot's.pdb/.pc3files viapilot-link'slibpisock, throughctypes.id_map.py— the confirmed/pending state machine that lets records survive repeated syncs without duplicating or resurrecting after deletion.paths.py,sync_state.py,cloud_backup.py— per-device state file locations, persisted signature sets, and pre-deletion safety snapshots.engine.py— the actual reconciliation engine (cmd_sync,cmd_pushup_*,cmd_deletions,cmd_full, and the stable-id down-sync core). Takes an already-authenticated cloud client and a small field-mapping module as parameters, rather than knowing about any specific provider's API.
This engine has no notion of multiple cloud sources syncing the same data type at once, and deliberately doesn't need one — a Palm device only has one calendar/contacts/tasks database, and two independent full-rebuild engines racing to write the same file is a real hazard. Provider packages built on top of this are expected to declare a MacPorts conflicts against each other rather than attempt to coexist.
MIT.