upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/bin/ngit/main.rs
AgeCommit message (Collapse)Author
2026-03-04add `ngit repo --json` for machine-readable repo detectionDanConwayDev
Outputs {"is_nostr_repo": false} when not in a nostr repository, or full structured JSON (name, identifier, description, nostr_url, coordinate, maintainers, grasp_servers, git_servers, relays, hashtags) when it is. Always exits 0. Also adds --title as an alias for --name on `ngit init`.
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-04fix NIP-22 compliance and add --reply-to flag for issue/PR commentsDanConwayDev
- Add missing P and p tags (root and parent author pubkeys) - Fix E tag 4th element to be root pubkey (was empty string) - Fix e tag 4th element to be parent pubkey (was "reply", a NIP-10 convention) - Add --reply-to <ID|nevent> flag to both issue and PR comment commands - When --reply-to is set, look up the parent comment from cache and use it as the parent scope (e/k/p); root scope (E/K/P) always stays the issue/PR - When --reply-to is omitted, parent == root (existing top-level behaviour)
2026-03-04restructure CLI around ngit pr/issue subcommand groupsDanConwayDev
Introduce ngit pr subcommand group (list, view, checkout, apply, send, close, reopen, ready, comment, merge) replacing the former top-level ngit list/checkout/apply commands. ngit send is kept at the top level. Expand ngit issue with view, create, close, reopen, comment subcommands. Status changes (close/reopen/ready) are gated to the PR/issue author or a repository maintainer. ngit pr merge is maintainer-only and publishes a GitStatusApplied event immediately after the git merge.
2026-03-04feat: add ngit issue list commandDanConwayDev
Non-interactive listing of NIP-34 issues (kind 1621) with status resolution, hashtag display, and detail view. - get_issues_from_cache: fetch GitIssue events from local cache by repo coordinate, mirroring get_proposals_and_revisions_from_cache - ngit issue list: table output of ID, status, title and hashtags at end of each row; status resolved via existing get_status() logic - --status: comma-separated filter (open,draft,closed,applied; default: open) - --hashtag: comma-separated label filter (case-insensitive, OR match) - --json: machine-readable output including hashtags and description - --offline: skip network fetch, use local cache only - <id>: optional positional argument (hex event-id or nevent) to show full details of a specific issue including body content
2026-02-20improve `ngit repo` output stylingDanConwayDev
- 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
2026-02-20add `ngit repo` subcommand groupDanConwayDev
- `ngit repo` (no subcommand): show repository info including maintainer tree, per-maintainer infrastructure attribution, and a note explaining the union-vs-personal field model and recursive maintainer sets - `ngit repo init`: alias for `ngit init` - `ngit repo edit`: same as init but signals intent to update an existing repository announcement - `ngit repo accept`: scoped command for co-maintainers to publish their announcement; errors with clear messages for all other states (trusted maintainer, already accepted, not invited, no repo found)
2026-02-17fix: show help menu when ngit is run without argumentsDanConwayDev
Previously, running ngit without any command would show an error message. Now it displays the help menu, which is more user-friendly and follows standard CLI tool conventions.
2026-02-17feat: add --offline flag to list, checkout, apply commandsDanConwayDev
Skip network fetch when --offline is set, using only local cache
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-13feat: add --verbose/-v flag for detailed outputDanConwayDev
Adds a global --verbose/-v flag that sets NGIT_VERBOSE environment variable. Also sets NGIT_VERBOSE automatically when NGIT_TEST is set.
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.
2026-02-12feat: add ngit apply command for non-interactive patch applicationDanConwayDev
Adds a new 'ngit apply <event-id>' command that applies proposal patches to the current branch. Supports --stdout flag to output patches for piping to git am. Phase 2 of non-interactive ngit list implementation.
2026-02-12feat: add ngit checkout command for non-interactive proposal checkoutDanConwayDev
Adds a new 'ngit checkout <event-id|nevent>' command that creates or updates a proposal branch and checks it out. Supports both PRs and patches with parent-commit references. Phase 1 of non-interactive ngit list implementation.
2026-02-11fix: force interactive mode for list commandDanConwayDev
The list command is inherently interactive - it presents menus for browsing and selecting proposals. Without interactive mode, all choice() calls auto-select default index 0, causing the first proposal to be checked out immediately without user input.
2026-02-10feat: add global CLI flags for non-interactive modeDanConwayDev
Add --defaults, --interactive, and --force flags to support non-interactive operation. Non-interactive mode is now the default behavior, with interactive mode enabled via the -i/--interactive flag. Also add CliError handling in main() to support styled error output from subcommands.
2025-09-11fix: ngit binary enforce git server timeoutDanConwayDev
rather than just in the remote helper.
2025-07-25feat(sync): add cmd to sync git serversDanConwayDev
with nostr state. optionally use 'force' flag
2025-05-21feat: add --customize flag for instructionsDanConwayDev
of how to customise ngit via git config items
2024-11-27feat: remove `pull` `push` and `fetch` ngit cmdsDanConwayDev
to simplify the api and encourage use of the git remote helper
2024-11-27feat(account): move login/out cmds to accountDanConwayDev
move login, logout export-keys commands to sub commands under account
2024-11-27feat(logout): add logout commandDanConwayDev
rather than using `ngit login` which is less intuative
2024-11-27feat(export-keys): to use in other clientsDanConwayDev
as part of the easy on-boaridng flow
2024-11-11Revert "refactor: remove ngit `pull` `push` `fetch`"DanConwayDev
This reverts commit 43b5e9b38bf5dcfbac85637a2d3efc69ddfe77ac.
2024-11-04refactor: remove ngit `pull` `push` `fetch`DanConwayDev
simplify api to encougage use of the git plugin
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