<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/src/lib/client.rs, branch v2.2.3</title>
<subtitle>Personal mirror of DanConwayDev/ngit-cli on git.upleb.uk
</subtitle>
<id>https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/atom?h=v2.2.3</id>
<link rel='self' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/atom?h=v2.2.3'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/'/>
<updated>2026-02-27T16:11:36+00:00</updated>
<entry>
<title>fix: include KIND_PULL_REQUEST IDs in proposal_ids for fetch filters</title>
<updated>2026-02-27T16:11:36+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-27T16:11:36+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=ba87592c87eb964b1c3a2d17543e38b9b70ed1a6'/>
<id>urn:sha1:ba87592c87eb964b1c3a2d17543e38b9b70ed1a6</id>
<content type='text'>
kind-5 deletion events that only #e-tag a PR Kind event (kind 1618)
were never fetched because proposal_ids was built from Kind::GitPatch
events only. The deleted PR event remained in the local cache and
continued to appear as a remote ref (refs/heads/pr/&lt;branch&gt;).
</content>
</entry>
<entry>
<title>fix: update fallback signer relays</title>
<updated>2026-02-27T14:26:48+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-27T14:18:11+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=3aa9b7a8e49d8ec5a87693d3f52ae2c77f036ff2'/>
<id>urn:sha1:3aa9b7a8e49d8ec5a87693d3f52ae2c77f036ff2</id>
<content type='text'>
Replace nsec.app with bucket.coracle.social and nos.lol.
</content>
</entry>
<entry>
<title>feat: track and display kind-5 deletion count in FetchReport</title>
<updated>2026-02-26T21:13:29+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-26T21:13:29+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=76a5e7b46dbe90ebf5e31904cb510e6cab242cf4'/>
<id>urn:sha1:76a5e7b46dbe90ebf5e31904cb510e6cab242cf4</id>
<content type='text'>
Add a deletions counter to FetchReport, incremented in
process_fetched_events for each kind-5 event received and accumulated
across relays in consolidate_fetch_reports. The count is included in
the fetch summary display (e.g. "1 deletion", "2 deletions").
</content>
</entry>
<entry>
<title>feat: request kind-5 deletions for state/announcement events by #e</title>
<updated>2026-02-26T21:12:27+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-26T21:12:27+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=a94fbc1f616128c93539c71b003495e5f6291c69'/>
<id>urn:sha1:a94fbc1f616128c93539c71b003495e5f6291c69</id>
<content type='text'>
Add a non_proposal_event_ids parameter to get_fetch_filters and a
corresponding field on FetchRequest. On each fetch, the event IDs of
cached repo announcements and the state event are collected and used to
build a dedicated kind-5 filter keyed on #e tags, as specified by
NIP-09. The existing #a-tagged filter already covers addressable-event
deletions; this new filter catches deletions from clients that follow
NIP-09 strictly and do not embed a repo coordinate in their deletion
event.
</content>
</entry>
<entry>
<title>fix: show detailed relay view when --verbose flag is set in send_events</title>
<updated>2026-02-26T15:26:21+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-26T15:02:14+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=300ab2a476f719c51966db90c9976eb55421962a'/>
<id>urn:sha1:300ab2a476f719c51966db90c9976eb55421962a</id>
<content type='text'>
The use_concise flag in send_events was computed with || instead of &amp;&amp;,
causing !is_test to short-circuit to true in production and making
--verbose have no effect on published event display.
</content>
</entry>
<entry>
<title>feat: publish state event to stale grasp relays before sync push</title>
<updated>2026-02-26T15:26:18+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-26T13:31:44+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=0d6ed93e4d143bb066205543af13f0ec6ddbdd58'/>
<id>urn:sha1:0d6ed93e4d143bb066205543af13f0ec6ddbdd58</id>
<content type='text'>
FetchReport now captures the full state event seen on each relay during
the nostr fetch (state_per_relay: HashMap&lt;RelayUrl, Option&lt;Event&gt;&gt;).
ngit sync uses this to identify grasp server relays with a missing or
outdated state event and publishes the current state event to them
before attempting git pushes, preventing rejections. An existing login
is loaded silently (no prompt, no profile fetch) to provide a signer
for NIP-42 auth if requested.
</content>
</entry>
<entry>
<title>fix: rollback local state event cache on total push failure</title>
<updated>2026-02-26T15:26:18+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-26T12:47:12+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=ee68ccadce6a6c90747cbdaae557babb4683413e'/>
<id>urn:sha1:ee68ccadce6a6c90747cbdaae557babb4683413e</id>
<content type='text'>
When all git servers reject or skip a push, delete the newly-published
state event from the local nostr cache and restore the previous state
event (if any), so that a subsequent retry starts from a clean baseline
rather than a state that no server ever accepted.
</content>
</entry>
<entry>
<title>fix: report per-relay publish results in send_events summary</title>
<updated>2026-02-26T15:26:16+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-26T12:24:40+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=dc6c20d29ea4456eee1dbc2aa8757fe955d1afc7'/>
<id>urn:sha1:dc6c20d29ea4456eee1dbc2aa8757fe955d1afc7</id>
<content type='text'>
Change send_events() return type from Result&lt;()&gt; to
Result&lt;Vec&lt;(String, bool)&gt;&gt; so callers can inspect which relays
accepted events. Update the finish message to show
"Published to X/N relays (failed: ...)" instead of the unconditional
"Published ... to nostr relays".
</content>
</entry>
<entry>
<title>fix IPv6 connection failures with Happy Eyeballs (RFC 8305)</title>
<updated>2026-02-25T11:48:13+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-25T11:21:45+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=319bb7fa2c984da45422fa81d12b4a5226beb493'/>
<id>urn:sha1:319bb7fa2c984da45422fa81d12b4a5226beb493</id>
<content type='text'>
Implement a custom WebSocketTransport that races IPv6 and IPv4 connections
with a 250ms head start for IPv6, matching browser behavior. This prevents
broken IPv6 from blocking all relay connections indefinitely.

This is a temporary fix until the upstream async-wsocket PR is merged:
https://github.com/shadowylab/async-wsocket/pull/42
</content>
</entry>
<entry>
<title>improve `ngit repo` output formatting</title>
<updated>2026-02-20T22:41:50+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-20T22:41:50+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1sh4dwqc9ypguemh6m8tmxxl8xuzfsz0j8av8vq7t3xd3mldsg9ls4ew80h/ngit-cli-mirror/commit/?id=68779f91f051822270f156a4185350fb3c4b5017'/>
<id>urn:sha1:68779f91f051822270f156a4185350fb3c4b5017</id>
<content type='text'>
- suppress fetch summary (no updates / updates: X)
- write blank line to stderr after relay errors for clear separation
- show identifier below title only when it differs from name
- show earliest unique commit (root_commit) in metadata
- restructure infrastructure into grasp servers / additional git
  servers / additional relays sections
- display grasp servers by domain only (strip scheme, npub, repo path)
- strip wss:// prefix from relay display
- show maintainer names from metadata cache; fall back to short npub
- append (you) next to the current user's name wherever it appears
- show [name] attribution and the maintainer model note only when
  there is more than one maintainer
</content>
</entry>
</feed>
