<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/src/bin/ngit/sub_commands, branch v2.2.3</title>
<subtitle>Personal mirror of DanConwayDev/ngit-cli on git.upleb.uk
</subtitle>
<id>https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/atom?h=v2.2.3</id>
<link rel='self' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/atom?h=v2.2.3'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/'/>
<updated>2026-02-27T17:19:20+00:00</updated>
<entry>
<title>fix: skip ^{} peeled-tag refs in sync to prevent invalid refspec crash</title>
<updated>2026-02-27T17:19:20+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-27T17:17:12+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=e7d7f933cd7eac19434f09096a311adeb5e60747'/>
<id>urn:sha1:e7d7f933cd7eac19434f09096a311adeb5e60747</id>
<content type='text'>
Regression introduced in 28ad5440: ngit sync crashed with
'invalid refspec refs/remotes/origin/v1.4.4^{}:refs/tags/v1.4.4^{}'
on repos with annotated tags. Fixed by guarding all three iteration
sites in sync.rs and identify_remote_sync_issues in list.rs; also
corrected the always-false logic bug in invalid_nostr_state_ref.
</content>
</entry>
<entry>
<title>feat: ngit sync --force republishes state event even with no ref changes</title>
<updated>2026-02-27T15:53:11+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-27T15:51:01+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=71cd982e5ca3e6f60fdf33fd41d0db3eabdbf39f'/>
<id>urn:sha1:71cd982e5ca3e6f60fdf33fd41d0db3eabdbf39f</id>
<content type='text'>
allows users to repair repos whose state event is missing ^{} peeled refs
for annotated tags (or any other corruption) without needing to push a new
ref. the new event is signed with a fresh timestamp and broadcast to all
repo relays and the user's write relays.
</content>
</entry>
<entry>
<title>feat: add --bunker-url to account login for non-interactive use</title>
<updated>2026-02-27T14:24:57+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-27T10:07:30+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=2c48e37f8341e0d207dd3260c439a0729464b03d'/>
<id>urn:sha1:2c48e37f8341e0d207dd3260c439a0729464b03d</id>
<content type='text'>
allows non-interactive bunker:// URL login without requiring --nsec,
by connecting to the remote signer and saving credentials to git config
</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/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/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: 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/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/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: correct refspec source in ngit sync to strip refs/heads/ prefix</title>
<updated>2026-02-26T15:26:15+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-26T11:35:00+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=237ab4ebcdc5bf58f98958db5375d56baf8046a0'/>
<id>urn:sha1:237ab4ebcdc5bf58f98958db5375d56baf8046a0</id>
<content type='text'>
When syncing, the nostr state stores refs with full names like
refs/heads/master and refs/tags/v1.0.0. Git tracking refs strip the
refs/heads/ prefix, so the tracking ref lives at refs/remotes/origin/master
not refs/remotes/origin/refs/heads/master.

The sync code was interpolating the full nostr_ref_name into the source
side of the refspec, producing the invalid double-prefixed path. Strip
refs/heads/ or refs/tags/ before constructing the tracking ref segment,
consistent with how git_remote_nostr/push.rs already handles this.
</content>
</entry>
<entry>
<title>feat: forward unrecognised push options to git servers</title>
<updated>2026-02-26T15:26:14+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-25T16:46:02+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=5c305e922e19e4ac65c6a1473be67145a1c73f2b'/>
<id>urn:sha1:5c305e922e19e4ac65c6a1473be67145a1c73f2b</id>
<content type='text'>
Any -o option passed to `git push` that is not handled by ngit
(title, description) is forwarded verbatim to the git server via
git2::PushOptions::remote_push_options. This allows options such as
`-o secret-scanning.skip` to pass through transparently.

`ngit send` gains a matching -o / --push-option flag for the same
purpose.
</content>
</entry>
<entry>
<title>show subcommand hint at top of `ngit repo` output before fetch</title>
<updated>2026-02-20T23:23:29+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-20T23:16:21+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=7b07fdd0b28efa4e0026075d6ff82d050383c9a2'/>
<id>urn:sha1:7b07fdd0b28efa4e0026075d6ff82d050383c9a2</id>
<content type='text'>
- print hint line immediately, before coordinate lookup and relay fetch
- users see available subcommands (init, edit, accept) without waiting
</content>
</entry>
<entry>
<title>improve `ngit repo` output styling</title>
<updated>2026-02-20T23:04:21+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-20T23:03:15+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=e50687b908e802c9f3328c9b57060b63bb5706c0'/>
<id>urn:sha1:e50687b908e802c9f3328c9b57060b63bb5706c0</id>
<content type='text'>
- make repo name bold yellow as a title; section headings bold dim
- add dim horizontal rules above and below the name/description block
- move earliest unique commit to the bottom (after additional relays)
- add --offline flag to skip network fetch and use local cache only
</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/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/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>
