upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/bin/ngit/cli.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-03-05 13:03:50 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-03-05 13:03:50 +0000
commitf3fcf863aae000964753f574b00e9fb9f5fcd452 (patch)
tree522e1cff8e0b8ab9fcabcf1bc6d229076891542e /src/bin/ngit/cli.rs
parentad6c39abdc35603f58e9b71993b5632c976deac1 (diff)
feat(subject): add pr/issue set-subject via NIP-32 kind-1985 labels
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 <id> --subject <text> command - New ngit issue set-subject <id> --subject <text> command
Diffstat (limited to 'src/bin/ngit/cli.rs')
-rw-r--r--src/bin/ngit/cli.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/bin/ngit/cli.rs b/src/bin/ngit/cli.rs
index a240597..8cdbee1 100644
--- a/src/bin/ngit/cli.rs
+++ b/src/bin/ngit/cli.rs
@@ -334,6 +334,19 @@ pub enum PrCommands {
334 #[arg(long)] 334 #[arg(long)]
335 offline: bool, 335 offline: bool,
336 }, 336 },
337 /// set the subject/title of a PR (author or maintainer only)
338 #[command(name = "set-subject")]
339 SetSubject {
340 /// Proposal event-id (hex) or nevent (bech32)
341 #[arg(value_name = "ID|nevent")]
342 id: String,
343 /// New subject/title for the PR
344 #[arg(long, alias = "title")]
345 subject: String,
346 /// Use local cache only, skip network fetch
347 #[arg(long)]
348 offline: bool,
349 },
337} 350}
338 351
339// --------------------------------------------------------------------------- 352// ---------------------------------------------------------------------------
@@ -461,6 +474,19 @@ pub enum IssueCommands {
461 #[arg(long)] 474 #[arg(long)]
462 offline: bool, 475 offline: bool,
463 }, 476 },
477 /// set the subject/title of an issue (author or maintainer only)
478 #[command(name = "set-subject")]
479 SetSubject {
480 /// Issue event-id (hex) or nevent (bech32)
481 #[arg(value_name = "ID|nevent")]
482 id: String,
483 /// New subject/title for the issue
484 #[arg(long, alias = "title")]
485 subject: String,
486 /// Use local cache only, skip network fetch
487 #[arg(long)]
488 offline: bool,
489 },
464} 490}
465 491
466#[derive(Subcommand)] 492#[derive(Subcommand)]