<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/src/bin/ngit/sub_commands, branch v2.4.1</title>
<subtitle>Personal mirror of DanConwayDev/ngit-cli on git.upleb.uk
</subtitle>
<id>https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/atom?h=v2.4.1</id>
<link rel='self' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/atom?h=v2.4.1'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/'/>
<updated>2026-03-05T22:12:07+00:00</updated>
<entry>
<title>fix(pr-checkout): require --force on diverged proposal branch</title>
<updated>2026-03-05T22:12:07+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T21:25:50+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=f6d1e03dc99b3ea48cb6e4bd1d3371dd924a567a'/>
<id>urn:sha1:f6d1e03dc99b3ea48cb6e4bd1d3371dd924a567a</id>
<content type='text'>
checkout_patch() previously re-applied the patch chain whenever the local
branch tip didn't match the published tip, silently overwriting local
amendments and rebased revisions without warning.

Now detects the relationship between local and published tips:
- up to date: check out as-is
- behind (local is ancestor of published): fast-forward, no flag needed
- local commits on top (published is ancestor of local): check out as-is
- diverged (neither ancestor): bail with guidance, --force to overwrite
- published tip not found locally and branch exists: same as diverged

Also adds --force flag to `ngit pr checkout` to explicitly opt in to
overwriting a diverged branch, covering both local amendments and
author force-pushes.

Bug discovered during test implementation in tests/ngit_pr_checkout.rs.
</content>
</entry>
<entry>
<title>refactor(set-subject): remove alt tag from subject label event</title>
<updated>2026-03-05T19:11:43+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T19:11:43+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=84a197700cac6b2ef72cf0723474ac3185c5d1de'/>
<id>urn:sha1:84a197700cac6b2ef72cf0723474ac3185c5d1de</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix(comment): pass git_repo to login so local config takes precedence</title>
<updated>2026-03-05T15:36:21+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T15:36:21+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=bdcfc7ae0b0558843b160acc4d2c8db9996cdc60'/>
<id>urn:sha1:bdcfc7ae0b0558843b160acc4d2c8db9996cdc60</id>
<content type='text'>
publish_comment was calling login_or_signup with &amp;None for git_repo,
causing the GitLocal source to be skipped entirely. This meant the
global git config (including any bunker-uri) was used instead of the
local nsec, ignoring the local login. Pass the discovered Repo through
CommentArgs so local config correctly takes precedence over global.
</content>
</entry>
<entry>
<title>fix(whoami): detect and fall back to system git config for nostr login</title>
<updated>2026-03-05T15:06:02+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T15:03:37+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=09c3ae91830bd9c7543b401b19f8c65a15205d32'/>
<id>urn:sha1:09c3ae91830bd9c7543b401b19f8c65a15205d32</id>
<content type='text'>
Add GitSystem to SignerInfoSource so credentials stored in the system
git config (/etc/gitconfig) are included in the priority fallback chain
(local &gt; global &gt; system) and shown as a separate level in whoami output.
</content>
</entry>
<entry>
<title>feat(cover-note): add kind-1624 cover notes for PRs, patches, and issues</title>
<updated>2026-03-05T14:23:07+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T14:19:49+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=37244449d6d0d58bb639f181bd15092de1acaaee'/>
<id>urn:sha1:37244449d6d0d58bb639f181bd15092de1acaaee</id>
<content type='text'>
Implements experimental kind-1624 cover note events:

- KIND_COVER_NOTE constant and process_cover_note() in git_events.rs;
  replaceable semantics (latest created_at, hex-id tiebreak), author or
  maintainer only
- kind-1624 events fetched alongside labels in the fetch pipeline;
  cover_notes count added to FetchReport display
- ngit pr/issue view: cover note displayed in place of description with
  a clear 'Cover Note:' header; maintainer-authored notes identify the
  author; original description shown only with --comments; cover_note
  object included in --json output
- ngit pr set-cover-note / ngit issue set-cover-note: publish a
  kind-1624 event; nostr: mentions in --body converted to q/p tags via
  tags_from_content (same rules as issue --body)
- Fix pre-existing clippy::too_many_lines on repo/mod.rs show_info
</content>
</entry>
<entry>
<title>feat(json): emit nevent1 bech32 IDs in --json output</title>
<updated>2026-03-05T13:31:35+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T13:31:35+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=609f3c3db02d437222e2c8e171189179d06c3e9c'/>
<id>urn:sha1:609f3c3db02d437222e2c8e171189179d06c3e9c</id>
<content type='text'>
All id and reply_to fields in --json output now use nevent1... bech32
encoding (with relay hint when available) instead of raw hex, making
them directly usable as nostr: URI references in --body text.

Update SKILL.md to document the nevent1 ID format and enforce use of
nostr:nevent1... URIs when cross-referencing events in body text.
</content>
</entry>
<entry>
<title>refactor(subject): standardise on subject over title in CLI and output</title>
<updated>2026-03-05T13:14:34+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T13:14:34+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=b143abb25d6ece32412629baa3e75e94d139979f'/>
<id>urn:sha1:b143abb25d6ece32412629baa3e75e94d139979f</id>
<content type='text'>
- JSON output fields renamed from title to subject in pr list/view
  and issue list/view
- Printed view output changed from Title: to Subject:
- ngit issue create --subject (alias --title)
- ngit send --subject (alias --title)
- Error messages and interactive prompts updated to match
</content>
</entry>
<entry>
<title>feat(subject): add pr/issue set-subject via NIP-32 kind-1985 labels</title>
<updated>2026-03-05T13:03:50+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T13:03:50+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=f3fcf863aae000964753f574b00e9fb9f5fcd452'/>
<id>urn:sha1:f3fcf863aae000964753f574b00e9fb9f5fcd452</id>
<content type='text'>
Adds the ability to update the displayed title of a PR or issue after
creation using a kind-1985 label event with the #subject namespace.
Only the author or a repository maintainer may set the subject. The
latest authorised event wins with tiebreak by lexicographically larger
event ID (NIP-1 replaceable event semantics). Branch names and commit
messages are never affected.

- Split get_labels() into process_labels() (additive #t) and
  process_subject() (replaceable-style #subject), with a shared
  get_labels_and_subject() entry point that processes both from a
  single pre-fetched slice of kind-1985 events
- All list/view/JSON display paths apply the subject override silently
- New ngit pr set-subject &lt;id&gt; --subject &lt;text&gt; command
- New ngit issue set-subject &lt;id&gt; --subject &lt;text&gt; command
</content>
</entry>
<entry>
<title>feat(status): add --reason to all pr and issue status commands</title>
<updated>2026-03-05T12:12:21+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T12:12:21+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=ad6c39abdc35603f58e9b71993b5632c976deac1'/>
<id>urn:sha1:ad6c39abdc35603f58e9b71993b5632c976deac1</id>
<content type='text'>
All status transitions (pr close/reopen/ready/draft, issue close/reopen/
resolved) now accept an optional --reason flag stored in the event content.
</content>
</entry>
<entry>
<title>feat(status): add pr draft, issue resolved, and --reason for issue close</title>
<updated>2026-03-05T12:08:56+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-03-05T12:02:09+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=b0ad2fd720d0cd335c07f22767844f571e3306ff'/>
<id>urn:sha1:b0ad2fd720d0cd335c07f22767844f571e3306ff</id>
<content type='text'>
Add `ngit pr draft &lt;id&gt;` to convert a PR back to draft (kind-1632).

Add `ngit issue resolved &lt;id&gt; [--reason &lt;text&gt;]` to mark an issue as
fixed (kind-1631 GitStatusApplied), distinct from close which signals
wontfix/duplicate/invalid.

Add `--reason &lt;text&gt;` to `ngit issue close` — stored in event content.

Also fix success/error message wording in pr_status and issue_status to
use consistent past-tense action strings.
</content>
</entry>
</feed>
