upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/bin/ngit/sub_commands/list.rs
AgeCommit message (Collapse)Author
2026-03-05feat(cover-note): add kind-1624 cover notes for PRs, patches, and issuesDanConwayDev
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
2026-03-05feat(json): emit nevent1 bech32 IDs in --json outputDanConwayDev
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.
2026-03-05refactor(subject): standardise on subject over title in CLI and outputDanConwayDev
- 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
2026-03-05feat(subject): add pr/issue set-subject via NIP-32 kind-1985 labelsDanConwayDev
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
2026-03-05feat(labels): fetch and apply NIP-32 kind-1985 label eventsDanConwayDev
- Add KIND_LABEL (kind 1985) constant to git_events.rs - Add get_labels() merging inline t-tags with external kind-1985 events, gating each on author-or-maintainer permission - Extend get_fetch_filters() to request kind-1985 events for all known issue and proposal IDs - Track label event counts in FetchReport (field + Display + consolidation) - Update issue_list.rs and list.rs to fetch label events from cache and pass them through get_labels() instead of reading t-tags inline
2026-03-04standardise on --label; add label filter and display to pr list/viewDanConwayDev
- rename --hashtag (comma-separated) to --label (repeatable) on issue list, matching the --label flag already used on issue create - add --label filter to pr list with the same OR semantics (matching GitHub) - display labels column in pr list table and Labels: line in pr view - include labels array in all JSON outputs (list and view for both issue and pr) - rename internal 'hashtags' -> 'labels' throughout issue_list.rs and list.rs
2026-03-04add --comments flag to issue/pr view; show reply threadingDanConwayDev
- issue view and pr view now show only a comment count by default - pass --comments to include the full thread - JSON output always includes comment_count; comments array only with --comments - each comment in the thread includes reply_to (null for top-level, parent comment id for replies) - human-readable view shows a dim '↳ reply to <short-id>' line on replies
2026-03-04show full comment content in pr view and issue viewDanConwayDev
ngit pr view <id> and ngit issue view <id> now fetch and display all NIP-22 comments in chronological order with author npub and timestamp, rather than just a count. JSON output includes the full comment array. Also updates list table hint text to reference ngit pr subcommands.
2026-03-04feat: fetch and display NIP-22 comment counts on issues and proposalsDanConwayDev
Download kind-1111 NIP-22 comments from relays and show a comment count in the detail view of `ngit list <id>` and `ngit issue list <id>`. - git_events: add KIND_COMMENT constant (kind 1111) - client: import KIND_COMMENT; add `comments` field to FetchReport; route kind-1111 events into report.comments in process_fetched_events; consolidate comments across relay reports; display "N comment(s)" in FetchReport; add a #E-tagged kind-1111 filter in get_fetch_filters covering all known issue and proposal root IDs - issue_list: add get_comment_counts() to query the local cache for kind-1111 events by #E tag and count per issue; extend the filtered tuple with comment_count; show a CMTS column in the table, a "Comments: N" line in the detail view, and a "comments" field in JSON - list: add KIND_COMMENT import; add resolve_event_id() helper and get_comment_count_for_proposal() to look up the count for a single proposal from the local cache; pass comment_count into show_proposal_details(); display "Comments: N" in plain text and "comments" in JSON; align detail-view labels
2026-02-18fix: remove outdated patch_supports gate and fix fetch parent fallbackDanConwayDev
Remove the patch_supports_commit_ids gates in checkout.rs and list.rs that pre-dated the mbox fallback logic. apply_patch_chain already handles all fallback cases. Also replace the main-branch TODO fallback in make_commits_for_proposal with get_parent_commit_from_patch, which uses timestamp-based best-guess when the parent-commit tag is absent.
2026-02-18feat: handle missing optional patch tags for pr/ flowDanConwayDev
- Add mbox_parser module to extract metadata from patch content - Extract author/committer from From: and Date: headers when tags missing - Extract commit message body as fallback for description tag - Implement best-guess parent commit logic using committer timestamps - Update patch_supports_commit_ids to accept mbox-parseable patches - Enable patches without optional tags to appear as pr/ branches
2026-02-17feat: add --offline flag to list, checkout, apply commandsDanConwayDev
Skip network fetch when --offline is set, using only local cache
2026-02-17style: make hint lines yellow in ngit list outputDanConwayDev
Use console::style().yellow() for 'To view/checkout/apply' hints to match git CLI hint styling.
2026-02-16Show active filter in ngit list outputDanConwayDev
Users may not be aware that ngit list defaults to filtering by open,draft status. Display the active filter at the top of the output to make this clear.
2026-02-16feat: add 'To view' hint to ngit list outputDanConwayDev
Shows 'To view: ngit list <id>' when listing proposals without an id, helping users discover they can view individual proposals in detail.
2026-02-16test: dont use git fetch during testsDanConwayDev
this prevents cli output errors on tests such as: finds_based_on_naddr_on_embeded_relay_and_added_as_origin_remote
2026-02-13feat: add spinner for git fetch in non-verbose modeDanConwayDev
Shows a progress spinner when fetching from git remotes in non-verbose mode. Suppresses git fetch output and listing messages when not in verbose mode. Uses NGITTEST environment variable for test timeouts.
2026-02-12fix: show full event IDs in ngit list outputDanConwayDev
Truncated IDs cannot be used with --id flag for checkout or apply commands.
2026-02-12style: apply cargo clippy and fmt fixesDanConwayDev
Reorganize imports and fix formatting issues flagged by clippy and rustfmt.
2026-02-12fix: set up branch tracking when checking out proposalsDanConwayDev
When a nostr:// remote exists, run git fetch instead of internal fetch to populate remote tracking refs. Then checkout the remote branch with proper upstream tracking so git pull works correctly.
2026-02-12feat: make ngit list non-interactive by defaultDanConwayDev
- Add --status flag for filtering (default: open,draft) - Add --json flag for JSON output - Add optional <id> argument for showing proposal details - Rename interactive logic to launch_interactive() - Non-interactive mode outputs table format by default - Use -i flag for interactive mode Phase 3 of non-interactive ngit list implementation.
2025-10-20fix: reading NIP-22 style Status events during fetchDanConwayDev
also fix the report so that we show nip10 style statuses too
2025-08-19feat(list): add PR fetch and checkout supportDanConwayDev
abstracted git remote helper fetch functions added support to `ngit list` to fetch PR data and checkout as proposal branch
2025-07-25fix(list): improve pr unsupport textDanConwayDev
and show a more helpful message when proposal can be checked out using the remote
2025-07-25fix: update help text for patches without parentDanConwayDev
adjust the help text to reflect availablity of PR event for when a patch is selected that doesnt list a parent commit id
2025-07-25feat(list): fix status for pr as patch revisionDanConwayDev
using the recently abstracted `get_status` function
2025-07-25refactor: abstract `get_status`DanConwayDev
for use by `ngit list`
2025-07-18feat(pr): fetch pr and pr updates from clone urlsDanConwayDev
we try and get them from clone urls of repo and fallback to those specified by contributor
2025-07-18feat(pr): list PR and PR updatesDanConwayDev
remote will list the refs under `pr/*` namespace. `ngit list` will display in the list of open / draft proposals. it won't yet fetch the related oids to enable fetching or checking out the branch.
2025-07-16chore: bump nightly rustfmtDanConwayDev
to latest available and apply fmt fixes
2025-05-21feat: add support for default relay overridesDanConwayDev
via git config so they can be overwritten locally and globally
2024-12-20refactor: branch_name handlingDanConwayDev
improve clarity by renaming variables and methods defend against `branch-name` tag with an unsafe name
2024-12-16chore: bump nix flake rust nightly `fmt` overlayDanConwayDev
update the rust nightly `fmt` overlay which needs to be pinned to a specific version (this case by date) update formatting in main files via `cargo fmt`
2024-12-12fix: defend against empty`tags`DanConwayDev
prevent a panic when tags are of an unexpect length
2024-12-05fix: `ngit`validate repo address existsDanConwayDev
when nostr address is unknown and user is prompted, validate that a the entered repo exists (there are events related to it) before proceeding
2024-12-04fix: `ngit` load correct repo addressDanConwayDev
git-remote-nostr is always called with a nostr remote that specifies a single repository coordinate whereas `ngit` commands need to discover this. this change moves from getting this value from the following places in priority order: 1. git config item `nostr.repo` 2. first nostr remote discovered 2. maintainers.yaml 3. prompt the user to: 1. nostr remote - if multiple, prompt the user to select 2. git config item `nostr.repo` 3. maintainers.yaml - removing the legacy format 4. prompt the user - now with support for nostr remote format
2024-11-28fix(list): default to first PR menu itemDanConwayDev
because feedback was recieved that it doesnt appear like a menu
2024-11-26refactor: err msgs 'cannot' > 'failed to'DanConwayDev
in nearly all cases 'cannot' was used when an action was tried and failed. 'failed to' is strictly better because: * just because the action didn't work that time doesnt mean it cannot work * it is better at drawing the users attention to a problem
2024-11-21feat(login): overhaul login experienceDanConwayDev
* simplify login menu, making it more accessable to newcomers and easier to select remote signer options * enable `ngit login` to work from anywhere (not just a git repo) * assume fresh login details saved to global git config but fallback to local repository * maintain local repository login via `ngit login --local` * maintain login via CLI arguments eg `ngit send --nsec nsec123` * nudge users to remember nsec when pasting in ncryptsec for a better UX, whilst maintaining the option to be prompted for password everytime * create placeholder menu items for help menu and create account
2024-09-25chore: bump rust-nostr v0.35DanConwayDev
bump all rust-nostr packages
2024-09-04refactor: fix imports, etc based on restructureDanConwayDev
move some functions out of ngit and into lib/mod and lib/git_events remove MockConnect from binaries so it is only used in the library. this was done: * mainly because automocks were not being imported from lib into each binary * but also because the these functions were being tested with MockConnect
2024-09-04refactor: organise into lib and bin structureDanConwayDev
the make the code more readable this commit just moves the files, the next commit should fix the imports