<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/src/cli_interactor.rs, branch v1.5.3</title>
<subtitle>Personal mirror of DanConwayDev/ngit-cli on git.upleb.uk
</subtitle>
<id>https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/atom?h=v1.5.3</id>
<link rel='self' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/atom?h=v1.5.3'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/'/>
<updated>2024-09-04T12:30:59+00:00</updated>
<entry>
<title>refactor: organise into lib and bin structure</title>
<updated>2024-09-04T12:30:59+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2024-09-04T07:04:48+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=949c6459aa7683453a7160423b689ceadb08954b'/>
<id>urn:sha1:949c6459aa7683453a7160423b689ceadb08954b</id>
<content type='text'>
the make the code more readable

this commit just moves the files, the next commit should fix the imports
</content>
</entry>
<entry>
<title>feat(send): select commits from a list</title>
<updated>2024-03-08T14:39:21+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2024-03-08T14:37:56+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=6b3aecbcbde669859533716225e9c3bbfd2023b2'/>
<id>urn:sha1:6b3aecbcbde669859533716225e9c3bbfd2023b2</id>
<content type='text'>
when since_or_range isn't specified

adds resilience as assuming master..HEAD can cause some issues
eg when master is not up-to-date with origin/master
</content>
</entry>
<entry>
<title>feat(list): set checkout branch as default choice</title>
<updated>2024-02-20T16:48:48+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2024-02-20T16:22:10+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=141ebf0cc0c6cfea640debc9b9073303509a8bc7'/>
<id>urn:sha1:141ebf0cc0c6cfea640debc9b9073303509a8bc7</id>
<content type='text'>
instead of no default. note: I spent hours trying to get
CliTester to support default choices and gave up.

I have a stashed the attempt and am moving on...
</content>
</entry>
<entry>
<title>fix(interactor): input displaying empty default</title>
<updated>2024-02-15T15:35:43+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2024-02-15T15:35:43+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=59c7b37701b984383a15614b17149ea1e45dce9a'/>
<id>urn:sha1:59c7b37701b984383a15614b17149ea1e45dce9a</id>
<content type='text'>
instead of no default
</content>
</entry>
<entry>
<title>fix: allow optional description and web</title>
<updated>2024-02-15T10:16:00+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2024-02-15T10:16:00+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=b7c24559aa2758820039295ac0f6120dfdec550e'/>
<id>urn:sha1:b7c24559aa2758820039295ac0f6120dfdec550e</id>
<content type='text'>
also add a default web
</content>
</entry>
<entry>
<title>feat(prs-list) list and pull selected as branch</title>
<updated>2023-12-01T00:00:00+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2023-12-01T00:00:00+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-cli-mirror/commit/?id=06be0bc44011411b78217459f505ed12281b32c4'/>
<id>urn:sha1:06be0bc44011411b78217459f505ed12281b32c4</id>
<content type='text'>
- fetch prs and present as a selectable list
- create and / or checkout branch for selected pr
- apply latest patches as commits
</content>
</entry>
<entry>
<title>feat:(cli_interactor) add choice selector</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=d7d5576195149203f016677c3965d90fd2428fde'/>
<id>urn:sha1:d7d5576195149203f016677c3965d90fd2428fde</id>
<content type='text'>
add single choice selector as an enabler for selecting pr from a list
</content>
</entry>
<entry>
<title>feat(prs-create) find commits and create events</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=6e9245542f070c39a1975f0d53d88913c4ac667d'/>
<id>urn:sha1:6e9245542f070c39a1975f0d53d88913c4ac667d</id>
<content type='text'>
 - identify commits
 - create pull request event
 - create patch events
</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>
