TildeMail.Abstractions
0.2.0
See the version list below for details.
dotnet add package TildeMail.Abstractions --version 0.2.0
NuGet\Install-Package TildeMail.Abstractions -Version 0.2.0
<PackageReference Include="TildeMail.Abstractions" Version="0.2.0" />
<PackageVersion Include="TildeMail.Abstractions" Version="0.2.0" />
<PackageReference Include="TildeMail.Abstractions" />
paket add TildeMail.Abstractions --version 0.2.0
#r "nuget: TildeMail.Abstractions, 0.2.0"
#:package TildeMail.Abstractions@0.2.0
#addin nuget:?package=TildeMail.Abstractions&version=0.2.0
#tool nuget:?package=TildeMail.Abstractions&version=0.2.0
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,
ITildeMailPluginand extensions such asRegisterCommand,RegisterKeyBindingandAddStartupService.
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 | Versions 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. |
-
net10.0
- DryIoc.dll (>= 5.4.3)
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.