| Age | Commit message (Collapse) | Author |
|
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.
|
|
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.
|
|
When user is the maintainer and runs ngit init without args, validate
against cached repo_ref before making network requests. This avoids
unnecessary relay timeouts when the error would be 'no arguments
specified, use --force'.
|
|
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.
|
|
multi-input flag that inherits from the latest pushed announcement
event, defaulting to empty when no existing hashtags are found
|
|
alas an idea before its time has yet come.
|
|
Allow multiple values via repeated --relay flags
instead of the less intuitive plural --relays form.
|
|
Allow multiple values via repeated --grasp-server flags
instead of the less intuitive plural --grasp-servers form.
|
|
- Add --relay flag to 'ngit account create' allowing users to specify
relay URLs (repeatable). Defaults to relay-default-set when not provided.
- Remove fallback relays from fetch when repo context exists (repo
coordinate provided). Only use them for bootstrapping (profile discovery
with no repo context).
- Remove fallback relays from publish when repo or user relays exist.
Only use them when neither is available (e.g. new account signup).
- Update --customize help text to reflect new relay-default-set behavior.
|
|
The more_fallback_relays field is never consumed anywhere in the codebase.
Removing it from the Client struct, Params struct, trait definition, and all
related initialization code.
|
|
The relay.nostr.band relay is now offline and should be removed
from the default relay set.
|
|
Implements non-interactive mode as the default behavior for ngit.
Users must now use -i flag for interactive prompts, or provide
all required arguments explicitly. Adds -d flag for sensible
defaults and -f flag for force operations.
Changes:
- CLI interactor infrastructure supports non-interactive mode
- Global flags: -i (interactive), --defaults (use defaults), -f (force)
- ngit init: requires --name or --identifier, supports --defaults
- ngit account: new signup command, login supports non-interactive
- ngit send: validates required fields, supports --defaults
- git-remote-nostr: fixed to prevent interactive prompts during push
- Comprehensive test coverage: 234 unit tests + integration tests
|
|
Add maintainer-model architecture documentation.
Update README to reflect non-interactive default behavior.
|
|
Rewrite ngit send to support non-interactive mode:
- Add validation for required arguments (title/description)
- Add --force flag to bypass commit suitability checks
- Add --no-cover-letter flag to skip cover letter
- Improve error messages for missing required fields
- Update title/description/cover-letter logic for non-interactive mode
- Add comprehensive tests for non-interactive behavior
|
|
Complete rewrite of ngit init to support non-interactive mode by default.
Key changes:
- Implement hybrid validation (validate all args upfront, fail fast)
- Add --grasp-servers flag for specifying git servers
- Prefer --name over --identifier for better UX
- Add comprehensive validation with helpful error messages
- Support both clone and init-from-existing-repo workflows
- Add --force flag to bypass safety checks
- Update tests for new non-interactive behavior
- Add test utilities for non-interactive testing
|
|
Update login flow to support non-interactive mode with --nsec flag.
Refactor login logic to handle both interactive and non-interactive cases.
Add better error handling and validation.
|
|
Add new 'ngit account create' subcommand to create nostr accounts.
This replaces the previous 'signup' command and supports both interactive
and non-interactive modes.
|
|
Update push operations to use non-interactive mode by default, removing
prompts that would block automated git operations.
|
|
Add CliError type for styled error output and cli_error() helper function.
Update Interactor to support non-interactive mode with default values.
Add prompt methods that respect non-interactive mode and provide better
error messages when required values are missing.
|
|
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.
|
|
now changes are in CHANGELOG.md
|
|
use more idomatic function
|
|
add additional test to cover this scenario
|
|
it was only checking local cache, where profile events are stored
only stored in global
|
|
fix breaking changes
|
|
as its useful information
|
|
because thats not needed
|
|
so that relay/git servers appear dim when fetch action is complete
|
|
copy relay fetching approach to async and reporting
|
|
so it doesnt use the git_repo
|
|
so it shows a summary rather than a lot of lines of issues
|
|
also reduce the clutter in the cli output for grasp servers.
|
|
some test failed and some test jus took too long
|
|
also auto-retry connection after 2s with x1.5 increment until timeout
|
|
now changes are in CHANGELOG.md
|
|
otherwise we prompt the user to manually add it to global git config
but they don't know the value. we did it like this to not expose the nsec
but i in this case we should.
|
|
Identified high value areas to use rstest that would benefit most and
refactored them
|
|
so we dont return a value to the git during remote helper operations
|
|
the user pubkey was being used in bunker-url rather than the bunker pubkey.
fixes
nostr:nevent1qvzqqqqx25pzpv3tq6c9rl2jx2tx4y6y5c6dj4krmse60a0vmjkea5gam3qjpfljqqsx5ztpy48muheny4p49hh634l5zs3jqw9x5980dm9xsjsk98jrk8ch2sdsw
|
|
and relay.ngit.dev instead of gitworkshop.dev
|
|
because we like to live on the edge
|
|
now changes are in CHANGELOG.md
|
|
to CHANGELOG.md just for reference and completeness
|
|
also fix the report so that we show nip10 style statuses too
|
|
and maintain this going fowards
|
|
produced using stack agent sonnet 4.5
|
|
to ensure we dont try and fallback to ssh
|
|
as the nix flake update must have broken
cachix/install-nix-action@v22
```
This version of Nixpkgs requires an implementation of Nix with the
following features:
- `builtins.nixVersion` reports at least 2.18
Your are evaluating with Nix 2.16.1, please upgrade:
```
|
|
update nix dependancies including hardcoded nightly.rustfmt
applied autofixes
|
|
now `cargo outaged` thinks all dependancies are up to date
|
|
update patches ahead of wider upgrade. clippy required some autofixes
|
|
only the maintainers and author of a poorly formatted proposal need
to know it was submitted but cant be created as a PR branch
|
|
replaces the "user" in the nostr_url format with
"ssh_key_file", to support the original intent, which was to allow
users to specify different authentication credentials.
most git servers always expect the ssh user to be 'git'.
the idiumatic way of specifying logging in as a different user is to
specify a different ssh key.
the idiomatic way of storing non-default ssh keys is in the location
`~/.ssh/key_name`. "ssh_key_file" can be specified as `key_name`,
for keys in the default location, or as a relative or absolute custom
location eg. `/other_keys/.ssh/nym1` or `../.ssh/nym1`.
BREAKING CHANGE: in nostr git url nym1@ssh/npub123/identifer, nym1 is
now treated as ssh key file location rather than a ssh user. it can
be specified as a file within `~/.ssh` eg `~/.ssh/nym1` or a full or
relative path.
|
|
fixes to change attempted in 4fc659074ec5ced3cc0727cf1f3e6af082a189cc
|
|
following its inclusion in the NIP-34 spec
|
|
so users can choose when there commits are too big or small instead
of relying on the 60kb rule
|
|
as it was only checking if tip is a commit thats present but a tip
could be an annotated tag
|
|
and fail more gracefully if refs cant be fetched, by continuing
to sync other refs
|
|
rather than just in the remote helper.
|
|
and include prompt about pushing understanding pushing directly to
git servers
|
|
list and allow selection / deselection of non-grasp servers when
at least one grasp servers is selected and a non grasp server is a
suggested default.
|
|
now we check and fetch them
|
|
when an existing origin exists and local branch is up-to-date
`git push` wont successfully publish state event and push refs to
other git servers listed.
we now publish the state event during this init function and use
sync to push all refs in state are to all git servers.
|
|
move the PR push code in 'ngit send' into lib.
reuse the non-interactive fallbacks in git-remote-nostr
|
|
to align more closely with githubs `refs/pull/*/head`
we can pretend that pr means both Patch Request and Pull Request
|
|
the patch I sent to rust-nostr library got merged
|
|
even if it is not on repository remotes, as it may have been pushed
to a user's git server instead
|
|
npub123 missed the n
|
|
allow users to use just a nip05 domain in nostr:// urls rather than
requiring _@ prefix.
|
|
abstracted git remote helper fetch functions
added support to `ngit list` to fetch PR data and checkout as proposal
branch
|
|
at some point we introduced a bug were we were taking the state and
git servers from non authorised maintainers.
|
|
we weren't correctly identifying valid nostr state refs
|
|
handle scenario when correct annotated tag is on a remote.
peel to tip commit doesnt give the correct oid so we must use the
annotated tag oid instead when comparing.
|
|
limit syncing to a single reference with this new parameter.
change instructions for out of sync remotes to use sync with this new
option.
|
|
This branch name cannot be attacked by brute forcing a
shorthand event id like refs/pr/<branch-name(<shorthand-event-id)
can.
|
|
here we can list Pull Requests whose data aren't on the repo relays
without causing `git clone nostr://` to fail.
we can also list proposals of all statuses so that can review
closed proposals.
|
|
we cannot list PRs under refs/heads/pr/* unless we are sure the oids
are accessable on a git server as it will cause `git clone` to fail.
we now only list PRs that are on accessable repo git servers under
refs/heads/pr/*.
we should be able to list them under under refs/pr/* as the clone
command only fetches refs in refs/heads so we will do this
seperately.
|
|
|
|
having implemented 3b5c48f5a2a4b9be5d14baa8f5e801fefd5c1166,
a ref pushed to refs/nostr/<event-id> on a github repo was accepted
but was not confirmed
|
|
to keep the user informed of whats happening / happend
|
|
don't treat this as accepted
|
|
attempt to use a range of protocols instead of unath http
|
|
so we can use it elsehwere
|
|
to make it's purpose clearer
|
|
previously server might respond with errors updating refs but we
were not treating this as a failure to push those refs.
|
|
so its clear from the TUI what has just been sent
|
|
instead of relying on hardcoded grasp server options.
couldn't we look up those selected for other repos for the user
instead?
|
|
if use is maintainer, push PR to all repo git servers.
if user has a fork, push to all git servers it lists, and repo
grasp servers.
if user hasn't got a fork but has a user grasp list and pushing
push to repo grasp servers fails, create a personal-fork
automatically at each user grasp server and push there.
fallback to prompting user for either grasp servers or git server
with write permission.
if user provides grasp servers, suggesting adding to user preference
list.
|
|
allow specifying ref for pushing PR to custom clone url
|
|
if the repo doesnt list any grasp servers, or pushing to them fails
|
|
send as a PR if the commit would make patches that are too big for
nostr events.
send as a PR update if the proposal is PR.
send as a PR, revising a patch root, if patches would be too big.
in tests `get_pretend_proposal_root_event` has to be a actual proposal
with a tip, rather than just a cover letter, so we have replaced it.
|
|
for future use in `ngit send`
|
|
instead of `match_events` after receiving events
|
|
NIP-34 specifies patch revisions should have a `t` tag of
`root-revision` whereas we have been using `revision-root`.
this fixes it and and handles events created with the incorrect tag.
|
|
so that we can use it in `ngit send`
|
|
where just the nevent will do
|
|
as the function is too long
|
|
so we can use it in ngit as well as remote helper
|
|
|
|
required for rust-nostr v0.43 update
|