- 0.3.0: LH Contacts now does everything LH Vcard did, so LH Vcard can be retired: contact cards, signed download links, change tracking and the links on other screens, with none of LH Vcard's names or data carried over. Cards (vCard 3.0, built with sabre/vobject from this plugin's own Composer install) are the same apart from their UID, now seeded from lh-contacts, so a card downloaded before and imported again after may appear as a new contact. Downloads move to lh-contacts/v1/download, and links made by LH Vcard stop working. Each card's last-changed time is kept per site in {site prefix}lh_contacts-updated_time, set for every member by a backfill the first time each site loads, and every change, departure or block is recorded straight in LH DAV's change log, replacing LH Vcard's tombstones; the bridge and change recorder classes are removed. Hooks: lh_contacts_add_data (card fields, with the viewer as a third argument), lh_contacts_return_all_tracked_meta_fields, lh_contacts_return_view_capability (publish_posts by default), lh_contacts_return_photo_size, lh_contacts_block_taxonomy, lh_contacts_download_link_lifetime and lh_contacts_recently_updated_item; other plugins can call LH_Contacts::return_signed_download_url() and LH_Contacts::return_view_capability(). The Latest Vcards dashboard widget and shortcode become Recently Updated Contacts and . The dashboard widget, shortcode, bbPress link and the check-in and group report columns now appear only for users who can see member contacts; LH Vcard showed them to anyone who could reach those screens. Requires only LH DAV.
- 0.2.0: First working release: each site's member directory as a read-only CardDAV address book, served by LH DAV at addressbooks/{user ID}/members/. It replicates LH Vcard's own CardDAV address book: the site's users less anyone blocked on it, readable by users with LH Vcard's view capability (publish_posts by default), with each card built by LH Vcard for the person syncing, so the teams shown are the groups they can see. Changes reach phones through LH DAV's sync-collection: card updates and removals are recorded from LH Vcard's existing change tracking, and a change to what the viewer can see, or a new release of LH Vcard or LH Contacts, resends the cards. Requires LH DAV and LH Vcard (Requires Plugins header) and is network-only; it boots after both on plugins_loaded and does nothing if either is missing. Every call into LH Vcard goes through one bridge class. No MCP abilities: the provider's methods are the service API, with the permission checks inside them.
- 0.1.0: Initial scaffold.