TildeMail.Abstractions 0.3.0

dotnet add package TildeMail.Abstractions --version 0.3.0
                    
NuGet\Install-Package TildeMail.Abstractions -Version 0.3.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TildeMail.Abstractions" Version="0.3.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TildeMail.Abstractions" Version="0.3.0" />
                    
Directory.Packages.props
<PackageReference Include="TildeMail.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TildeMail.Abstractions --version 0.3.0
                    
#r "nuget: TildeMail.Abstractions, 0.3.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TildeMail.Abstractions@0.3.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TildeMail.Abstractions&version=0.3.0
                    
Install as a Cake Addin
#tool nuget:?package=TildeMail.Abstractions&version=0.3.0
                    
Install as a Cake Tool

TildeMail.Abstractions

Shared contracts and data models for TildeMail hosts, native DLL plugins and protocol integrations. Reference this library when implementing a plugin or backend that does not need Core services or Lua.

Responsibilities

  • Mail backend, sender and factory contracts, conversation items, account models and search requests.
  • Protocol-neutral chat contracts and models. Matrix, XMPP and IRC implementations are not included.
  • Commands, key bindings, events and startup-service contracts.
  • Plugin metadata with copied required dependencies (PluginDependency), ITildeMailPlugin and extensions such as RegisterCommand, RegisterKeyBinding and AddStartupService.
  • Typed plugin configuration through AddConfig<T>("section"), optional IConfigSection.Validate() and the host's IConfigSections gateway.

The library targets .NET 10. Its only runtime package dependency is DryIoc. It contains no UI toolkit, mail transport, database, DLL loader or Lua engine. Core implements the host services behind these contracts.

Example: a native plugin command

using DryIoc;
using TildeMail.Abstractions.Data.Commands;
using TildeMail.Abstractions.Data.Plugins;
using TildeMail.Abstractions.Extensions.Plugins;
using TildeMail.Abstractions.Interfaces.Plugins;

namespace ExamplePlugin;

public sealed class HelloPlugin : ITildeMailPlugin
{
    public PluginMetadata Metadata { get; } = new("example.hello", "Hello plugin", new Version(1, 0));

    public void Register(IContainer container)
    {
        container.RegisterCommand(
            "example.hello",
            (_, _) => Task.FromResult(CommandOutcome.Ok("Hello from the plugin")),
            "Show a greeting"
        );
        container.RegisterKeyBinding("<leader>h", "example.hello");
    }
}

The host calls Register before starting services. It must already provide IPluginContributions and, for startup services, IStartupRegistry. Registration stores callbacks; it does not execute them. The normal TildeMail application supplies these registries. A standalone host can use Core's registration extensions or provide its own implementations.

Use the package version matching the host. Shared DLL versions must match at plugin load time. See the plugin guide for the bundle layout, lifecycle and command/keybinding rules.

Build and package

Run from the repository root with the .NET 10 SDK:

dotnet build src/TildeMail.Abstractions -c Release
dotnet pack TildeMail.slnx -c Release -o artifacts/nuget

Packing the solution produces the four library packages together, including their sibling dependencies. This package contains the assembly, XML API documentation and this README; the matching .snupkg contains portable debug symbols. Version, authors and license metadata come from Directory.Build.props.

The NuGet development instructions explain local installation. Generating packages does not publish them to a registry.

License

GPL-3.0-or-later. See the license and third-party notices.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on TildeMail.Abstractions:

Package Downloads
TildeMail.Core

UI-independent TildeMail services for configuration, state, jobs, events, commands and DLL plugins.

TildeMail.Mail

Mail runtime for TildeMail: IMAP and Maildir backends, SMTP delivery, MIME reading, message composition, GPG, the mail cache, rules and new-mail watching.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.0 0 10/31/2026
0.2.1 36 10/30/2026
0.2.0 35 10/30/2026