<feed xmlns='http://www.w3.org/2005/Atom'>
<title>npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/Cargo.toml, branch master</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/atom?h=master</id>
<link rel='self' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/'/>
<updated>2026-04-10T20:39:10+00:00</updated>
<entry>
<title>release: v1.0.2</title>
<updated>2026-04-10T20:39:10+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-04-10T20:15:58+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=dd9a69e6fe79e866004ed7366093bf82030b02eb'/>
<id>urn:sha1:dd9a69e6fe79e866004ed7366093bf82030b02eb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>release: v1.0.1</title>
<updated>2026-02-27T18:05:03+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-27T18:05:03+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=05b7edb5f5797100d8e0f59905e16488680928ec'/>
<id>urn:sha1:05b7edb5f5797100d8e0f59905e16488680928ec</id>
<content type='text'>
</content>
</entry>
<entry>
<title>release: v1.0.0</title>
<updated>2026-02-26T09:27:13+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-26T09:26:01+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=fd6b098f41baf8621551f15114c50891642b5872'/>
<id>urn:sha1:fd6b098f41baf8621551f15114c50891642b5872</id>
<content type='text'>
</content>
</entry>
<entry>
<title>remove unused dependencies from ngit-grasp and grasp-audit</title>
<updated>2026-02-24T12:02:30+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-02-24T12:02:30+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=319c1c7e524bfb78a3f686041e5af2ed60ea182d'/>
<id>urn:sha1:319c1c7e524bfb78a3f686041e5af2ed60ea182d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Revert "fix: add workspace.metadata.crane.name to silence crane warnings"</title>
<updated>2026-01-20T10:17:20+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-01-20T10:17:20+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=487b9496c06cb4abcf3674b598c1bb56899548be'/>
<id>urn:sha1:487b9496c06cb4abcf3674b598c1bb56899548be</id>
<content type='text'>
This reverts commit 70673cf84aad8dfc3413181ffc4ce28809f6f6eb.
</content>
</entry>
<entry>
<title>fix: add workspace.metadata.crane.name to silence crane warnings</title>
<updated>2026-01-20T09:58:32+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-01-20T09:58:32+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=70673cf84aad8dfc3413181ffc4ce28809f6f6eb'/>
<id>urn:sha1:70673cf84aad8dfc3413181ffc4ce28809f6f6eb</id>
<content type='text'>
When users import the ngit-grasp flake into their NixOS configurations,
crane emits warnings about not being able to find the package name in
the workspace Cargo.toml. This adds the recommended workspace.metadata
section to explicitly specify the crane package name for the workspace.

Fixes the warning:
  evaluation warning: crane will use a placeholder value since name
  cannot be found in /nix/store/.../Cargo.toml

This is a cosmetic fix that doesn't affect functionality but improves
the user experience when importing the flake.
</content>
</entry>
<entry>
<title>chore: upgrade nostr-* packages to rev 4767ad13</title>
<updated>2026-01-08T10:57:51+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-01-08T10:57:51+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=075307804bf66bba10f5bc55cb40e2e6a98a65ee'/>
<id>urn:sha1:075307804bf66bba10f5bc55cb40e2e6a98a65ee</id>
<content type='text'>
- Update nostr-relay-builder, nostr-sdk, nostr-lmdb to latest revision
- Update grasp-audit nostr-sdk dependency
- Fix clippy warnings:
  - Replace .clone() with std::slice::from_ref() in src/git/sync.rs
  - Change &amp;PathBuf to &amp;Path in tests/common/git_server.rs
  - Replace vec![] with array literal in src/purgatory/sync/functions.rs
- Update PR_TEST_COMMIT_HASH in grasp-audit due to event generation changes

All 249 tests passing, no breaking changes required.
</content>
</entry>
<entry>
<title>Add SyncContext trait and MockSyncContext for purgatory sync</title>
<updated>2026-01-07T11:40:41+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-01-07T11:40:41+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=5bd6b9b93cd52da2075bc00a08cf7feca4b85d5c'/>
<id>urn:sha1:5bd6b9b93cd52da2075bc00a08cf7feca4b85d5c</id>
<content type='text'>
Implement the abstraction layer for purgatory sync operations:

- SyncContext trait: defines interface for repository data fetching,
  OID existence checks, git fetch operations, and event processing
- ProcessResult: captures outcomes when releasing events from purgatory
- MockSyncContext: test mock with builder pattern for configuring:
  - Clone URLs and which OIDs each URL provides
  - Needed OIDs (simulates purgatory state)
  - URL failure simulation
  - Fetch logging for assertions

The trait uses async_trait for async method support and requires
Send + Sync for use in concurrent sync operations.

This abstraction enables unit testing of sync logic without I/O,
while the real implementation (to be added later) will connect
to actual database, git, and relay systems.
</content>
</entry>
<entry>
<title>Add DomainThrottle for per-domain rate limiting</title>
<updated>2026-01-07T11:26:48+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2026-01-07T11:26:48+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=08eba888fe510896f1863be6f2b5a72a91616975'/>
<id>urn:sha1:08eba888fe510896f1863be6f2b5a72a91616975</id>
<content type='text'>
Implement per-domain throttling for purgatory sync operations:
- Concurrent request limit (max in-flight requests per domain)
- Rate limit (max requests per minute via sliding window)
- Fair round-robin queue processing across identifiers
- In-progress tracking to prevent duplicate fetches
- Tried URL tracking per identifier

Add indexmap dependency for ordered iteration in round-robin queue.

Includes 6 unit tests covering:
- Concurrent limit enforcement
- Rate limit enforcement (sliding window)
- Round-robin fair processing
- In-progress identifier skipping
- Round-robin index adjustment on removal
- Tried URL merging on re-enqueue
</content>
</entry>
<entry>
<title>chore: bump rust-nostr to latest master</title>
<updated>2025-12-22T21:02:03+00:00</updated>
<author>
<name>DanConwayDev</name>
<email>DanConwayDev@protonmail.com</email>
</author>
<published>2025-12-22T21:02:03+00:00</published>
<link rel='alternate' type='text/html' href='https://upleb.uk/npub1tkq8unhsd5jqx6ueex5lcpsgknrpquxuk44ftpjlpm3ulaake7xs76txrw/ngit-grasp-mirror/commit/?id=1df90c609399c675e629b97294aee81a0b1e66dd'/>
<id>urn:sha1:1df90c609399c675e629b97294aee81a0b1e66dd</id>
<content type='text'>
so we can more easily support grasp purgatory feature
</content>
</entry>
</feed>
