<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" 
	>
<channel>
	<title>
	Comments on: LH Contacts	</title>
	<atom:link href="https://lhero.org/portfolio/lh-contacts/feed/" rel="self" type="application/rss+xml" />
	<link>https://lhero.org/portfolio/lh-contacts/</link>
	<description>Digital Sovereignty for everyone</description>
	<lastBuildDate>Sun, 01 Nov 2026 03:16:08 +0000</lastBuildDate>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-contacts/#comment-1537822</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Sun, 01 Nov 2026 02:10:02 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?post_type=lh-portfolio&#038;p=153057#comment-1537822</guid>

					<description><![CDATA[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&#039;s names or data carried over. Cards (vCard 3.0, built with sabre/vobject from this plugin&#039;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&#039;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&#039;s change log, replacing LH Vcard&#039;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 [lh_contacts_updated_contacts]. 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.]]></description>
			<content:encoded><![CDATA[<p>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&#8217;s names or data carried over. Cards (vCard 3.0, built with sabre/vobject from this plugin&#8217;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&#8217;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&#8217;s change log, replacing LH Vcard&#8217;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 [lh_contacts_updated_contacts]. 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.</p>
]]></content:encoded>
		
			</item>
		<item>
		<title>
		By: Peter Shaw		</title>
		<link>https://lhero.org/portfolio/lh-contacts/#comment-1537821</link>

		<dc:creator><![CDATA[Peter Shaw]]></dc:creator>
		<pubDate>Sun, 01 Nov 2026 01:15:40 +0000</pubDate>
		<guid isPermaLink="false">https://lhero.org/?post_type=lh-portfolio&#038;p=153057#comment-1537821</guid>

					<description><![CDATA[First working release: each site&#039;s member directory as a read-only CardDAV address book, served by LH DAV at addressbooks/{user ID}/members/. It replicates LH Vcard&#039;s own CardDAV address book: the site&#039;s users less anyone blocked on it, readable by users with LH Vcard&#039;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&#039;s sync-collection: card updates and removals are recorded from LH Vcard&#039;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&#039;s methods are the service API, with the permission checks inside them.]]></description>
			<content:encoded><![CDATA[<p>First working release: each site&#8217;s member directory as a read-only CardDAV address book, served by LH DAV at addressbooks/{user ID}/members/. It replicates LH Vcard&#8217;s own CardDAV address book: the site&#8217;s users less anyone blocked on it, readable by users with LH Vcard&#8217;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&#8217;s sync-collection: card updates and removals are recorded from LH Vcard&#8217;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&#8217;s methods are the service API, with the permission checks inside them.</p>
]]></content:encoded>
		
			</item>
	</channel>
</rss>
