upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
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-16test: fix all tests that use publishDanConwayDev
that expect whitespace then something
2026-02-16test: fix list reporter under test conditionsDanConwayDev
this took a lot of investigation to work out why this was failing
2026-02-16fix: reporter git server non-verboseDanConwayDev
hide details in non-verbose mode
2026-02-16fix: report wording consistancy in publishingDanConwayDev
always report publishing and finish with published
2026-02-16fix: report wording `fetching` ~> `checking`DanConwayDev
to be consistent with the summary version
2026-02-16fix: report wording `maintainers ~> announcementsDanConwayDev
'maintainers' is missleading as the announcement authors may not be in the maitnainer set
2026-02-16fix: fetch report ouputDanConwayDev
so that report gets removed when not in verbose mode and fix removal so summary displayed instead 1st line of original report.
2026-02-16test: verbose always on for remote testsDanConwayDev
to ensure verbose mode is used during tests
2026-02-13feat: add spinner for publish in non-verbose modeDanConwayDev
Apply the same hidden-to-visible MultiProgress pattern used for fetch to send_events. In concise mode (non-verbose, non-test, non-silent), a spinner is shown immediately and the detail progress bars are revealed after a delay, using the deferred bar finish mechanism.
2026-02-13fix: tweak fetch msgDanConwayDev
as its not fetching from git servers just yet
2026-02-13fix: pre-add heading bar so it renders in expanded viewDanConwayDev
The heading bar was being inserted into the MultiProgress after the draw target switch, but by then all relay bars were already finished so indicatif did not re-render the layout. Pre-add the heading bar at creation time (position 0, before relay bars) and only call finish_with_message on it after the draw target switches to stderr.
2026-02-13fix: show heading in expanded view by finishing after draw target switchDanConwayDev
The 'fetching updates...' heading was finished with finish_with_message while the draw target was still hidden, so indicatif never rendered it. Move the draw target switch before the heading insertion so the heading renders immediately when added.
2026-02-13fix: preserve progress bars on relay errors during cloneDanConwayDev
fetching_with_report_for_helper unconditionally cleared the progress reporter, wiping error bars that showed relay timeouts. Only clear when all relays succeeded (or in verbose mode where bars were always visible), matching the pattern in fetching_with_report.
2026-02-13fix: defer bar finish until reveal to show all barsDanConwayDev
indicatif does not re-render bars that called finish_with_message while the draw target was hidden. Instead of trying to force a redraw, defer the finish_with_message call until after the draw target switches to stderr. A BarRevealState coordinates between relay tasks and the timer: bars that complete before the 5s reveal store their finish state in a mutex-protected list, which the timer flushes after switching the draw target. Bars completing after reveal finish immediately as before.
2026-02-13fix: use force_draw to redraw bars after revealDanConwayDev
tick() is a no-op when enable_steady_tick() is active. Use force_draw() on a bar to trigger a full MultiState redraw including bars that finished while the draw target was hidden.
2026-02-13fix: only show heading when expand delay firesDanConwayDev
Use a ProgressBar inside the detail multi for the heading instead of eprintln so it gets cleared with progress_reporter.clear() and never appears when fetch completes before the delay.
2026-02-13refactor: hidden-to-visible MultiProgress patternDanConwayDev
Replace the broken SpinnerState approach (which checked should_expand at task spawn time when all tasks spawn simultaneously) with a two-MultiProgress pattern: a visible spinner shown immediately, and a hidden detail multi that every relay task always adds bars to. A background timer reveals the detail bars after 5s, printing a heading before switching the draw target.
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-13fix: clear progress reporters on successful completionDanConwayDev
Progress reporters were not being cleared after successful operations, leaving progress bars visible in the terminal output. Now they are properly cleared when all operations complete without errors.
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: handle existing local branch that is behind when checking out PRDanConwayDev
When a PR branch already exists locally, the previous code would silently move the branch pointer without checking for tracking or fast-forward safety. Now: - If branch has tracking: checkout and warn user to git pull - If no tracking and fast-forward: safely move pointer - If no tracking and diverged: show copy-paste commands for reset/rebase - If commit not found locally: suggest fetching Uses console crate for yellow output instead of hardcoded ANSI codes.
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.
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-12fix: fail fast in ngit init before network fetchDanConwayDev
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'.
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-11add --hashtag flag to ngit initDanConwayDev
multi-input flag that inherits from the latest pushed announcement event, defaulting to empty when no existing hashtags are found
2026-02-11remove --blossoms from ngit initDanConwayDev
alas an idea before its time has yet come.
2026-02-11rename --relays flag to --relayDanConwayDev
Allow multiple values via repeated --relay flags instead of the less intuitive plural --relays form.
2026-02-11rename --grasp-servers flag to --grasp-serverDanConwayDev
Allow multiple values via repeated --grasp-server flags instead of the less intuitive plural --grasp-servers form.
2026-02-11feat: use fallback relays for bootstrapping onlyDanConwayDev
- 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.
2026-02-10remove more_fallback_relays (dead code)DanConwayDev
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.
2026-02-10remove relay.nostr.band from default relaysDanConwayDev
The relay.nostr.band relay is now offline and should be removed from the default relay set.
2026-02-10feat: update ngit send for non-interactive modeDanConwayDev
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
2026-02-10feat: update ngit init for non-interactive modeDanConwayDev
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
2026-02-10feat: update ngit account login for non-interactive modeDanConwayDev
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.
2026-02-10feat: add ngit account create commandDanConwayDev
Add new 'ngit account create' subcommand to create nostr accounts. This replaces the previous 'signup' command and supports both interactive and non-interactive modes.
2026-02-10fix: make git-remote-nostr push non-interactiveDanConwayDev
Update push operations to use non-interactive mode by default, removing prompts that would block automated git operations.
2026-02-10feat: add non-interactive mode support to CLI interactorDanConwayDev
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.
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-11-18chore: fix clippy warningDanConwayDev
use more idomatic function
2025-11-18test: nostr git url with pathDanConwayDev
add additional test to cover this scenario
2025-11-14fix: fetch report showing cached profile event as newDanConwayDev
it was only checking local cache, where profile events are stored only stored in global
2025-11-14chore: bump rust-nostr v0.44DanConwayDev
fix breaking changes
2025-11-13feat(remote): don't hide fetch report if successfulDanConwayDev
as its useful information
2025-11-13fix: don't attempt to fetch annotated tags we haveDanConwayDev
because thats not needed
2025-11-13fix: cli output dim coloringDanConwayDev
so that relay/git servers appear dim when fetch action is complete
2025-11-13feat(list): make list async and include sync report inlineDanConwayDev
copy relay fetching approach to async and reporting
2025-11-13refactor: simplify get_short_git_server_nameDanConwayDev
so it doesnt use the git_repo
2025-11-13fix: out of sync grasp server cli outputDanConwayDev
so it shows a summary rather than a lot of lines of issues
2025-11-13fix: cli output line deletion during fetchDanConwayDev
also reduce the clutter in the cli output for grasp servers.
2025-11-13test: reduce relay timeouts for testsDanConwayDev
some test failed and some test jus took too long
2025-11-10feat: adaptive relay timeout 45s or 7s based on successDanConwayDev
also auto-retry connection after 2s with x1.5 increment until timeout
2025-11-03fix: show nsec when created and can't save globallyDanConwayDev
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.
2025-10-28fix(pr): push use stderr rather than stdoutDanConwayDev
so we dont return a value to the git during remote helper operations
2025-10-28fix: nip46 signer bunker pubkeyDanConwayDev
the user pubkey was being used in bunker-url rather than the bunker pubkey. fixes nostr:nevent1qvzqqqqx25pzpv3tq6c9rl2jx2tx4y6y5c6dj4krmse60a0vmjkea5gam3qjpfljqqsx5ztpy48muheny4p49hh634l5zs3jqw9x5980dm9xsjsk98jrk8ch2sdsw
2025-10-20fix: reading NIP-22 style Status events during fetchDanConwayDev
also fix the report so that we show nip10 style statuses too
2025-10-20fix: grasp server detectionDanConwayDev
to ensure we dont try and fallback to ssh
2025-10-17chore: cargo updateDanConwayDev
update patches ahead of wider upgrade. clippy required some autofixes
2025-10-17fix(fetch): surpress some warnings for some usersDanConwayDev
only the maintainers and author of a poorly formatted proposal need to know it was submitted but cant be created as a PR branch
2025-10-17feat!(nostr_url): replace user with ssh_key_fileDanConwayDev
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.
2025-10-17fix: pr or pr update merge supportDanConwayDev
fixes to change attempted in 4fc659074ec5ced3cc0727cf1f3e6af082a189cc
2025-10-17feat(send): add `merge-base` tag to PR (Update)DanConwayDev
following its inclusion in the NIP-34 spec
2025-10-10feat(send): add `force-pr` or `force-patch` flagsDanConwayDev
so users can choose when there commits are too big or small instead of relying on the 60kb rule
2025-09-12fix(sync): dont fetch tags available locallyDanConwayDev
as it was only checking if tip is a commit thats present but a tip could be an annotated tag
2025-09-11fix(sync): fetch refs missing locally before syncDanConwayDev
and fail more gracefully if refs cant be fetched, by continuing to sync other refs
2025-09-11fix: ngit binary enforce git server timeoutDanConwayDev
rather than just in the remote helper.
2025-09-11fix(init): clone url include grasp serversDanConwayDev
and include prompt about pushing understanding pushing directly to git servers
2025-09-11fix(init): simple mode non-grasp servers selectionDanConwayDev
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.
2025-09-10fix(init): when local repo missing origin refsDanConwayDev
now we check and fetch them
2025-09-10fix(init): when existing origin matches tipDanConwayDev
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.
2025-09-04feat(remote): use push PR non-interactive fallbackDanConwayDev
move the PR push code in 'ngit send' into lib. reuse the non-interactive fallbacks in git-remote-nostr
2025-09-03fix(remote): `refs/pr-by-id/*` ~> `refs/pr/*/head`DanConwayDev
to align more closely with githubs `refs/pull/*/head` we can pretend that pr means both Patch Request and Pull Request
2025-09-03fix: nostr:// nip05 without localDanConwayDev
the patch I sent to rust-nostr library got merged
2025-09-01fix: list shows `/pr` PRs when git data is localDanConwayDev
even if it is not on repository remotes, as it may have been pushed to a user's git server instead
2025-08-19fix: nip05 without local partDanConwayDev
allow users to use just a nip05 domain in nostr:// urls rather than requiring _@ prefix.
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-08-18fix: only use state and ann from maintainersDanConwayDev
at some point we introduced a bug were we were taking the state and git servers from non authorised maintainers.
2025-08-18fix(sync): include all valid nostr stateDanConwayDev
we weren't correctly identifying valid nostr state refs
2025-08-18fix(remote): push handle annotated tags syncDanConwayDev
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.
2025-08-18feat(sync): add `ref-name` param to limit syncDanConwayDev
limit syncing to a single reference with this new parameter. change instructions for out of sync remotes to use sync with this new option.
2025-08-15feat(remote): list proposals as `refs/pr-by-id/*`DanConwayDev
This branch name cannot be attacked by brute forcing a shorthand event id like refs/pr/<branch-name(<shorthand-event-id) can.
2025-08-15feat(remote): list all proposals as `refs/pr/*`DanConwayDev
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.
2025-08-15fix: inaccessable PR commits breaks `git clone`DanConwayDev
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.
2025-08-07Merge branch 'add-prs-to-ngit-send'DanConwayDev
2025-08-07fix(send): refs not confirmed are usually acceptedDanConwayDev
having implemented 3b5c48f5a2a4b9be5d14baa8f5e801fefd5c1166, a ref pushed to refs/nostr/<event-id> on a github repo was accepted but was not confirmed
2025-08-07fix(send): PR cli outputDanConwayDev
to keep the user informed of whats happening / happend
2025-08-07fix(send):server not confirming acceptanceDanConwayDev
don't treat this as accepted
2025-08-07fix(send): push PR refs to non-grasp serversDanConwayDev
attempt to use a range of protocols instead of unath http
2025-08-07refactor: abstract `is_grasp_server_clone_url`DanConwayDev
so we can use it elsehwere
2025-08-07refactor: rename fn `is_grasp_server_in_list`DanConwayDev
to make it's purpose clearer
2025-08-07fix(push): capture more error updating refsDanConwayDev
previously server might respond with errors updating refs but we were not treating this as a failure to push those refs.
2025-08-07fix(send): print event description before publishDanConwayDev
so its clear from the TUI what has just been sent
2025-08-07feat(init): use user grasp list for defaultsDanConwayDev
instead of relying on hardcoded grasp server options. couldn't we look up those selected for other repos for the user instead?
2025-08-07feat(send): PR fallback to user / custom graspDanConwayDev
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.
2025-08-06feat(send): custom ref for PR clone urlDanConwayDev
allow specifying ref for pushing PR to custom clone url