Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 0.16.0: Fixes, Bootstrapper improvements and new Extensions #8

Merged
merged 3 commits into from
Apr 28, 2024

Conversation

Arlodotexe
Copy link
Owner

@Arlodotexe Arlodotexe commented Apr 28, 2024

This PR contains a number of changes and bumps the version to 0.16.0.

[Breaking]
Inherited breaking changes from IpfsShipyard.Net.Http.Client 0.2.0.
Inherited breaking changes from OwlCore.Storage 0.10.0 and 0.11.0.
Inherited breaking changes from OwlCore.ComponentModel 0.7.0 and 0.8.0.
Inherited breaking changes from OwlCore.Extensions 0.8.0.

[Fixes]
The changes in OwlCore.Storage 0.10.0 allowed the CommonTests to uncover previously unknown issues with the Kubo-based storage implementation. These issues are now fixed and the storage implementations are compliant with the latest CommonTests.

[New]
Added static SwarmKeyGen extension methods, which allow you to generate and write a private Kubo swarm key to a file for immediate use.
Added a new PrivateKuboBootstrapper. This custom bootstrapper allows you to start a Kubo node with a private swarm key, automatically removing the default bootstrap nodes, applying LIBP2P_FORCE_PNET as needed, and setting up the provided BootstrapPeerMultiAddresses as your bootstrap peers.
Added a new OwlCore.Kubo.Cache namespace. This is a limited set of API wrappers for the Ipfs core interfaces that enable caching functionality throughout your entire application domain, currently covering IKeyApi and INameApi. Note that you'll need to use ICoreApi instead of IpfsClient, and likewise for other Core interfaces (and their implementations) throughout your codebase to use this cache layer.

Added TransformIpnsDagAsync extension method, which allows you to mutate and update a DAG object published to IPNS all in one go, with progress reporting.
Added ResolveDagCidAsync extension method to Cid and IEnumerable{Cid}. Resolves the provided cid if it is an Ipns address and retrieves the content from the DAG.
Added CreateKeyWithNameOfIdAsync extension method to IKeyApi. Creates an ipns key using a temp name, then renames it to the name of the key. Enables pushing to ipns without additional API calls to convert between ipns cid and name.
Added GetOrCreateKeyAsync extension method to IKeyApi. Gets a key by name, or creates it if it does not exist.

Added various helper methods to KuboBootstrapper for getting repo lock state, gateway and api uri, and converting between MultiAddress and Uri.
Added all missing DhtRoutingMode values that have been added to Kubo as of 0.26.0.
Added a LaunchConfigMode to KuboBootstrapper. Defines the behavior when a node is already running (when the repo is locked): Throw, Attach, or Relaunch.
Added an ApiUriMode to KuboBootstrapper. Gets or sets an enum that determines how to use the supplied ApiUri: UseExisting, or OverwriteExisting.
Added a GatewayUriMode to KuboBootstrapper. Gets or sets an enum that determines how to use the supplied GatewayUri: UseExisting, or OverwriteExisting.
Added a UseAcceleratedDHTClient property to KuboBootstrapper. If set to true, the accelerated DHT client will be used on startup. Extensive documentation has been added to aid in deciding whether you should use this. Note that enabling this will increase resource consumption.

[Improvements]
As part of the move to ICoreApi, all internal calls to DoCommandAsync have been removed wherever IMfsApi is used, thanks to the implementation contributed in ipfs-shipyard/net-ipfs-core#13.
Updated dependencies.

[Breaking]
Inherited breaking changes from IpfsShipyard.Net.Http.Client 0.2.0.
Inherited breaking changes from OwlCore.Storage 0.10.0 and 0.11.0.
Inherited breaking changes from OwlCore.ComponentModel 0.7.0 and 0.8.0.
Inherited breaking changes from OwlCore.Extensions 0.8.0.

[Fixes]
The changes in OwlCore.Storage 0.10.0 allowed the CommonTests to uncover previously unknown issues with the Kubo-based storage implementation. These issues are now fixed and the storage implementations are compliant with the latest CommonTests.

[New]
Added static SwarmKeyGen extension methods, which allow you to generate and write a private Kubo swarm key to a file for immediate use.
Added a new PrivateKuboBootstrapper. This custom bootstrapper allows you to start a Kubo node with a private swarm key, automatically removing the default bootstrap nodes, applying LIBP2P_FORCE_PNET as needed, and setting up the provided BootstrapPeerMultiAddresses as your bootstrap peers.
Added a new OwlCore.Kubo.Cache namespace. This is a limited set of API wrappers for the Ipfs core interfaces that enable caching functionality throughout your entire application domain, currently covering IKeyApi and INameApi. Note that you'll need to use ICoreApi instead of IpfsClient, and likewise for other Core interfaces (and their implementations) throughout your codebase to use this cache layer.

Added TransformIpnsDagAsync extension method, which allows you to mutate and update a DAG object published to IPNS all in one go, with progress reporting.
Added ResolveDagCidAsync extension method to Cid and IEnumerable{Cid}. Resolves the provided cid if it is an Ipns address and retrieves the content from the DAG.
Added CreateKeyWithNameOfIdAsync extension method to IKeyApi. Creates an ipns key using a temp name, then renames it to the name of the key. Enables pushing to ipns without additional API calls to convert between ipns cid and name.
Added GetOrCreateKeyAsync extension method to IKeyApi. Gets a key by name, or creates it if it does not exist.

Added various helper methods to KuboBootstrapper for getting repo lock state, gateway and api uri, and converting between MultiAddress and Uri.
Added all missing DhtRoutingMode values that have been added to Kubo as of 0.26.0.
Added a LaunchConfigMode to KuboBootstrapper. Defines the behavior when a node is already running (when the repo is locked): Throw, Attach, or Relaunch.
Added an ApiUriMode to KuboBootstrapper. Gets or sets an enum that determines how to use the supplied ApiUri: UseExisting, or OverwriteExisting.
Added a GatewayUriMode to KuboBootstrapper. Gets or sets an enum that determines how to use the supplied GatewayUri: UseExisting, or OverwriteExisting.
Added a UseAcceleratedDHTClient property to KuboBootstrapper. If set to true, the client DHT will be used on startup.

[Improvements]
As part of the move to ICoreApi, all internal calls to DoCommandAsync have been removed wherever IMfsApi is used, thanks to the implementation contributed in ipfs-shipyard/net-ipfs-core#13.
Updated dependencies.
@Arlodotexe Arlodotexe changed the title Release 0.16.0. See release notes. Release 0.16.0: Fixes, Bootstrapper improvements and new Extensions Apr 28, 2024
@Arlodotexe Arlodotexe merged commit 174ffc4 into main Apr 28, 2024
1 check failed
@Arlodotexe Arlodotexe deleted the rel/0.16.0 branch April 28, 2024 08:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant