Have we talked before? Cuz that is my term lol.
But yes, flotilla is the ux I think is optimal, but am open to additional suggestions. Currently budabit has the best fork of that plus adds ngit.
I think the first thing I'm going to do is make this generic so it is easy to configure and then make it even more generic so each page is its own repo/microservice so folks could pick and choose which pages they'd want.
Search: #ngit
Results for "#ngit"
@Derek Ross If I get a pull request on a ngit-hosted repo, will #Shakespeare notify me?
@DanConwayDev please let wss://relay.ngit.dev and wss://gitnostr.com accept deletion requests, I was trying to delete an announcement to publish a new one with a new name but they didn't let me.
#10 π Developer Tools / Guides, Updates and Releases
1. Loom Site - New Developer Tool
Loom Site is a decentralized compute marketplace built on Nostr, where individual threads of computing power are woven together into a shared network, enabling open, permissionless collaboration without centralized control.
Developed by: @Arjen
Source: https://gitworkshop.dev/npub1hw6amg8p24ne08c9gdq8hhpqx0t0pwanpae9z25crn7m9uy7yarse465gr/relay.ngit.dev/loom-site
2. UX Patterns for Nostr Apps - New Developer Tool
UX Patterns for Nostr Apps is a collection of evidence-based design patterns that help developers build Nostr applications people actually want to use, combining practical insights with best practices for usability, engagement, and intuitive decentralized experiences.
Developed by: @Shawn
Source: https://github.com/shawnyeager/nostr-ux-patterns
3. rx-nostr - @3.6.2
rx-nostr is a library that enables high-quality, flexible communication with multiple Nostr relays. This update fixes bugs by resetting retry counts upon reconnections and properly flushing requests when authentication fails, while also correcting a documentation typo, improving reliability and clarity for developers integrating Nostr communication into their applications.
Developed by: penpenpng
Source: https://github.com/penpenpng/rx-nostr/releases/tag/rx-nostr%403.6.2
4. Gitplaza - v0.25.0
Gitplaza is a desktop Nostr client focused on managing Git-related activity. This release introduces an advanced kind filter for the inbox feed, includes regular zaps in filters, and simplifies tab text formatting. Performance improvements optimize comment tree loading, reduce unnecessary database queries, use cached comment branches for faster display, and lower unknown profile requests, resulting in a faster, more efficient, and smoother user experience. This was the biggest release and there was also the releases of v0.24.0, v0.25.1 last week.
Developed by: @npub1usek...k5ks
Source: https://codeberg.org/dluvian/gitplaza/releases/tag/v0.25.0
#dev-tools_nostr_recap
Read through the spec, and it's very well written and thorough. I made one suggestion here: https://gitworkshop.dev/npub1gzuushllat7pet0ccv9yuhygvc8ldeyhrgxuwg744dn5khnpk3gs3ea5ds/relay.ngit.dev/nsm/issues/nevent1qqsflz6xs779rrcmnd09wxud9luz0jg03kkxjy6demlu8yzfgz9dl8qk2gupm
Is the bounty from almost three years ago, to build a GitHub replacement on Nostr, still active? Since then, several important pieces have been built, and none of it wouldβve been possible without @DanConwayDevβs work on ngit or @fiatjaf with GRASP. Have you seen https://gittr.space by @npub1n2ph...hzmc? It appears to be a fully functioning GitHub alternative. Finally! With the work from all of them, it seems like that bounty might be close to fulfilled.
I was recently working with state machines over Nostr for coordination between parties. The result is a distributed, event-driven, consistent state management protocol that can be used to model any process. It is also auditable, making it interesting for scientific and supply chain applications. Additionally, it enables the deployment of *smart contract-like* functionalities without the blockchain buzz or shitcoinery. I would love to hear your thoughts.
This project was originally inspired by a talk from @Alan during the last @Sovereign Engineering 5.
It's also my first time using ngit π₯
https://gitworkshop.dev/npub1gzuushllat7pet0ccv9yuhygvc8ldeyhrgxuwg744dn5khnpk3gs3ea5ds/relay.ngit.dev/nsm
All laws and politicians votes could be nostr notes/events.
The more I build out this "client" for my meetup the more I realize this could actually be a playground for getting my counties website and data onto the protocol.
I've converted my counties planning and zoning docs to markdown and pit on github. If I put those on ngit and then use the CICD DVM to publish master merges as long form notes, folks could make PRs to it to get them on the agenda for the P&Z board. Then if you show up to the board meeting, the boards recommendations could be comments on those notes as could citizen comments. The commissioners votes could be reddit style up or down votes. Upon passing, the PR could be merged to master and republished.
Imagine having a separate npub in amber that your county registrar/clerk has recorded to filter out random "spam" notes that just gives you access to their relay. The possibilities are endless. A community calendar that leaders of groups are whitelisted to create events on. A digital bulletin board of classifieds. A BBB review page of local businesses. And on and on.
General purpose compute for sats
After several iterations of (GitHub) Actions runners I recently had some very good conversations that helped boil the whole thing down to one core component: Paid subprocesses.
The idea:
- IN: cmd + args + stdin + env + π₯ money
- OUT: stdout + stderr + π₯ change
β οΈ I'm showing a hacky proof of concept, by no means production ready. This is just to get the idea out.
- Operators advertise their preinstalled software. (ffmpeg, ngit, act, etc...)
- User filters operators by software/architecture.
- Operator can whitelist users
Workflows (CI/CD):
- Doing workflows will be a layer on top of this.
- Deals with the complexity of the ACT runners and (n)git.
- All the workflow orchestrator would need is an operator that runs both ngit and act (or install it manually as part of the exec).
Other stuff:
- Use this to run one-off video transcoding jobs on specialized hardware
- Video rendering
- Audio transcription
- [your creative idea here]
I got this (hacky) version running, the first worker there is whitelist-only (for my own safety)
Frontend for testing: https://loom.treegaze.com/
use: https://testnut.cashu.space
wants:
- Allow Operator to pipe to any backend (docker, vm, metal)
- Log livestreaming (prob through some third-party server)
Repos:
protocol: https://gitworkshop.dev/npub1hw6amg8p24ne08c9gdq8hhpqx0t0pwanpae9z25crn7m9uy7yarse465gr/relay.ngit.dev/loom-protocol
worker: https://gitworkshop.dev/npub1hw6amg8p24ne08c9gdq8hhpqx0t0pwanpae9z25crn7m9uy7yarse465gr/relay.ngit.dev/loom-worker
site: https://gitworkshop.dev/npub1hw6amg8p24ne08c9gdq8hhpqx0t0pwanpae9z25crn7m9uy7yarse465gr/relay.ngit.dev/loom-site
- Operators advertise their preinstalled software. (ffmpeg, ngit, act, etc...)
- User filters operators by software/architecture.
- Operator can whitelist users
Workflows (CI/CD):
- Doing workflows will be a layer on top of this.
- Deals with the complexity of the ACT runners and (n)git.
- All the workflow orchestrator would need is an operator that runs both ngit and act (or install it manually as part of the exec).
Other stuff:
- Use this to run one-off video transcoding jobs on specialized hardware
- Video rendering
- Audio transcription
- [your creative idea here]
I got this (hacky) version running, the first worker there is whitelist-only (for my own safety)
Frontend for testing: https://loom.treegaze.com/
use: https://testnut.cashu.space
wants:
- Allow Operator to pipe to any backend (docker, vm, metal)
- Log livestreaming (prob through some third-party server)
Repos:
protocol: https://gitworkshop.dev/npub1hw6amg8p24ne08c9gdq8hhpqx0t0pwanpae9z25crn7m9uy7yarse465gr/relay.ngit.dev/loom-protocol
worker: https://gitworkshop.dev/npub1hw6amg8p24ne08c9gdq8hhpqx0t0pwanpae9z25crn7m9uy7yarse465gr/relay.ngit.dev/loom-worker
site: https://gitworkshop.dev/npub1hw6amg8p24ne08c9gdq8hhpqx0t0pwanpae9z25crn7m9uy7yarse465gr/relay.ngit.dev/loom-siteI relaunched nrss.app!
Itβs missing features still but Iβll slowly add those.
Feedback very welcomed! π πββοΈ
https://nrss.app
You can also clone it from ngit via Shakespeare or AfterHours
Interesting. You'd end up with a lot of objects with that approach and eventually it would be too big for the event size. I thought about doing it with storing packs in blossom. Here is my code to play with that idea. https://gitworkshop.dev/danconwaydev.com/ngit/prs/note1s2au56ejtkfc5tqaduu2a6zp83xm80j2wmkjxx603y645jfrlq3qmp88s4 I would have made it into a POC if rust-nostr had blossom support at the time. It does now. It turns out that having a git server is way more flexible so ngit.dev/grasp came to be. Let git be git and let nostr be nostr.
For 1, the 5s timeout used in ngit was more of a placeholder for a better approach. I think its best to pole the repo endpoint every 200ms until it reponds as if the repo as been created.
My contribution to #nutnovember is LNUTS.
An express middleware to turn any node server into an LNURL pay server. Provide your fresh signups with a usable alias@domain.com LNURL address with just 3 lines of code and 5 environment variable.
Very similar to npub.cash, but self contained in an express middleware.
Claim your alias by submitting a nostr event containing your alias, the relays to send the cashu token to, a p2pk address, and the mint to use.
Lightning payment made to alias@domain.com will automatically be forwarded to your nip-60 wallet, with token freshly minted from the mint you chose.
https://gitworkshop.dev/npub1dfedhrhn7wu7uhkdsz8dd5rrr50ymkjutkklq7y8zpxn89t7hfyqfzlc7u/relay.ngit.dev/lnuts
Option C links to a repository that doesnt exist. ngit has the git-remote-nostr plugin that enables cloning via `nostr://` see ngit.dev/install
It seems ngit is overall not well made.
You experienced a timeout issue. I could clone the repository without any problems. Can you try cloning again. Your repository clones fin both gitnostr.com and realy.ngit.dev timed out. I control both of these and really need to sort out some better performing infrastructure for them.
It took me much longer than I anticipated to Implement PRs in ngit because its hard to get a good UX. If you cant write to the repositories grasp servers (or they don't list any) you have to write to another grasp server. This involves selecting a grasp server (which is hard to do without hardcoded defaults, although WoT based 'user grasp list' is possible but filtering based on whether they are likely to accept your data might a challenge). Then it needs to send a repo annonucement with a 'personal-fork' tag (to prevent it from appearing like you own the project) and push the entrire repo there. If its a big repo that could be 1gb push.
Once there are more (and reliable) grasp servers available and most nostr git repositories are primarily using them I think it will work much better.
You CTRL-C exited the interactive `ngit init` command before publishing the event. `? repo name (keyboard) > ` is a prompt for the name of the repo, defaulting to 'keyboard'. So press enter to continue.
yes that's the repo. i am sharing some terminal output for you to see if it's working fine
basantagoswami@asus:~/Workspace/UnsignedLabs/keyboard$ ngit account login
β logged in to local git repository as basantagoswami Β· remain logged in
basantagoswami@asus:~/Workspace/UnsignedLabs/keyboard$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[user]
email = 36882714+basantagoswami@users.noreply.github.com
[remote "origin"]
url = nostr://npub1gmm2ehusvs35zgh6pq84m8hkj4ea0ygy3c9j2e3slzhjjce3kmns5tdaz2/relay.damus.io/keyboard
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main
[nostr]
repo = naddr1qqyxketevfhkzunyqgsyda4vm7gxgg6pytaqsr6anmmf2u7hjyzguze9vcc03tefvvcmdecrqsqqqaueky2g8v
bunker-uri = bunker://[REDACTED]?relay=wss://relay.damus.io
bunker-app-key = [REDACTED]
npub = npub1gmm2ehusvs35zgh6pq84m8hkj4ea0ygy3c9j2e3slzhjjce3kmns5tdaz2
basantagoswami@asus:~/Workspace/UnsignedLabs/keyboard$ ngit init
fetching updates...
β wss://relay.nostr.band timeout after 7s timeout
β wss://relay.snort.social/ no new events
β wss://gitnostr.com no new events
β wss://relay.mostr.pub no new events
β wss://nos.lol no new events
β wss://relay.ngit.dev no new events
β wss://relay.damus.io no new events no updates
searching for profile updates...
β wss://relay.nostr.band timeout after 7s timeout
β wss://relay.damus.io no new events
β wss://relay.snort.social/ no new events
β wss://relay.mostr.pub no new events
β wss://nos.lol no new events logged in as basantagoswami to local repository
? repo name (keyboard) βΊ CTRL+C
basantagoswami@asus:~/Workspace/UnsignedLabs/keyboard$ cat ~/.gitconfig
[init]
defaultBranch = main
[core]
editor = code --wait
[diff]
tool = vscode
[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE
[merge]
tool = vscode
[mergetool "vscode"]
cmd = code --wait $MERGED
[cinnabar]
version-check = 1729936304
[nostr]
bunker-uri = bunker://[REDACTED]?relay=wss://relay.damus.io
bunker-app-key = [REDACTED]
npub = npub12ucpp6c0g070cffu9z2c9rfsha5nnvzk8p8ze3ny3aqqj6k2aa8q0c52sm
if i continue here, it's not clear what will happen
? repo name (keyboard) βΊ
i think i did it last time and then when i did git push, it showed up in the new repo that was created under this npub, instead of the original one. am i supposed to see the ? repo name prompt?
Is the repository 'keyboard'?
Your npub is listed as a maintainer but it hasn't issue an announcement event which 'accepts' the invite.
This means you haven't successfully run `ngit init` under this npub. Maybe you ran it again under the other npub thus just updating the announcement? Run `ngit account login` to switch accounts before running `ngit init.
was it still failing after I fixed the nostrlib repo on relay.ngit.dev and gitnostr.com (8+hrs ago) before you updated ngit? If not, I wonder whether the 500 error on one git server was causing ngit to fail on all the others?
Also for @DanConwayDev, I am not sure how I am supposed to collaborate using ngit and GRASP. If I publish a repo using npub1x, but want to continue working on it using npub1y, how do I do it? I created a repo using @Unsigned Labs, the bunker URL was added to the global ngit. I added my own npub (this profile) as a maintainer. I then tried pushing from the terminal but was shown that I was added as a maintainer, but haven't accepted the invite yet, and was asked to use ngit init again. I couldn't figure out how to accept, so ran ngit init. Once I did that, I think it just created another repo under this npub and any pushes just go to that repo instead of the original one
I want to publish repos using the Unsigned profile, and then continue working using this profile, I don't understand how to do that yet
Wait, now (I've updated ngit) it does work to push with ngit to pyramid!