<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/src/sub_commands/login.rs, branch v1.4.4</title>
<subtitle>Personal mirror of DanConwayDev/ngit-cli on git.upleb.uk
</subtitle>
<id>https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/atom?h=v1.4.4</id>
<link rel='self' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/atom?h=v1.4.4'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/'/>
<updated>2024-07-31T14:59:17+00:00</updated>
<entry>
<title>feat(remote): `push` issues state event</title>
<updated>2024-07-31T14:59:17+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2024-07-31T14:59:17+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=3acdeabfc3ab55d3e92d76d92d8ab6ad0383dd09'/>
<id>urn:sha1:3acdeabfc3ab55d3e92d76d92d8ab6ad0383dd09</id>
<content type='text'>
if no previous state events can be found it replicates git server

otherwise it just updates pushed value
</content>
</entry>
<entry>
<title>feat(remote): add nostr git remote helper</title>
<updated>2024-07-26T09:36:58+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2024-07-26T09:29:33+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=0134ab8eb413b8b81ec8e179897ddb8ea63e134e'/>
<id>urn:sha1:0134ab8eb413b8b81ec8e179897ddb8ea63e134e</id>
<content type='text'>
as a simple proxy to the first git server listed in announcement

parse clone url as `nostr://naddr123...`
</content>
</entry>
<entry>
<title>feat(login): login with nip46 remote signer</title>
<updated>2024-06-28T14:16:43+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2024-06-28T14:16:43+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=a82546b70303000b4fc053a1ee21d3d8c7d6ad66'/>
<id>urn:sha1:a82546b70303000b4fc053a1ee21d3d8c7d6ad66</id>
<content type='text'>
and save details in git config
</content>
</entry>
<entry>
<title>feat(login): store in git config and use cache</title>
<updated>2024-06-24T08:39:18+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2024-06-24T08:39:18+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=173ab188b326fbe78cfba4ab455a74619f4556bb'/>
<id>urn:sha1:173ab188b326fbe78cfba4ab455a74619f4556bb</id>
<content type='text'>
replace ngit yaml file config with:
 * nsec / ncryptsec / npub in git config in nostr.* namespace
 * sql database cache for metadata and relay events

allow different logins to be used for different git repositories by
storing login in local git config
</content>
</entry>
<entry>
<title>refactor(client) simply connect flow</title>
<updated>2023-11-01T00:00:00+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2023-11-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=47a5075b6385a8c0d28bae04c5862d93d0a6ffa6'/>
<id>urn:sha1:47a5075b6385a8c0d28bae04c5862d93d0a6ffa6</id>
<content type='text'>
connect immediately before requesting or sending events

no longer waiting for all relays to connect before interacting with any of them
</content>
</entry>
<entry>
<title>feat(login) fetch user relays and metadata</title>
<updated>2023-09-30T23:00:00+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2023-09-30T23:00:00+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=e237328ec611a5891586530c1d3cb26c16c1093b'/>
<id>urn:sha1:e237328ec611a5891586530c1d3cb26c16c1093b</id>
<content type='text'>
get user relay list and metadata events from relays when keys are
used and last fetch attempt was more than an hour ago

uses user's write relays if known, otherwise uses fallback relays

to achieve this a method for intergration testing event fetching
from relays was added
</content>
</entry>
<entry>
<title>feat(login) password login using encrypted nsec</title>
<updated>2023-09-01T00:00:00+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2023-09-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=96660a90e4cd296a2922d7a547de4cd9d0b1928b'/>
<id>urn:sha1:96660a90e4cd296a2922d7a547de4cd9d0b1928b</id>
<content type='text'>
Enables the user to only handle the nsec upon first use of the tool
by encrypting it with a password and storing it on disk in an
application cache.

The approach to encryption draws heavily from that used by the gossip
nostr client.
 - unencrypted nsec is zeroed from memory
 - a salt is used to defend against rainbow tables
 - computationally expensive key stretching defends against
   brute-force attacks of passwords with low entropy.

There is UX trade-off between decryption speed and key-stretching
computation. This UX challenge is exacerbated in a cli tool as
decryption must take place more regularly. Thought was put into the
selected n_log and a heavily reduced value is provided for long
passwords where security benefits are smaller.

A more granular reducing in computation was also considered by
rejected to avoided to revealing just how weak a password is as most
weak passwords are reused.
</content>
</entry>
<entry>
<title>refactor: rebuild app skeleton</title>
<updated>2023-09-13T09:24:49+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2023-09-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=6423baebd92e45c9be85157c443dff42e65d8d14'/>
<id>urn:sha1:6423baebd92e45c9be85157c443dff42e65d8d14</id>
<content type='text'>
Create skeleton for a complete rebuild of the prototype as a production
ready product.

Includes design patterns for:
 - dependency injection
 - unit testing with dependency mocking
 - integration testing
 - error handling
 - config storage

BREAKING-CHANGE: ground-up redesign with incompatible protocol standards
</content>
</entry>
</feed>
