Releases: kephas-software/kephas
v11.1.0
-
Injection
- Breaking change: Renamed IContextFactory to IInjectableFactory. Made more generic by renaming CreateContext(...) to Create(...).
- NEW: Injection: Added IInjectable marker interface to signal injectable instances. Also, added Type.IsInjectable() extension method to indicate whether a Type is injectable or not.
- NEW: Made IContext injectable.
-
Logging
- Added new Loggable(IInjectableFactory) constructor.
-
Workflow
- NEW: Added Conditional, ConditionalLoop, Sequence, Parallel, Set, and Const activities.
- Improved IStateMachine definition.
- NEW: Made activities (IActivity) injectable, so they can be deserialized and, at the same time, have assigned services.
- Small improvements in RuntimeActivityInfo (give up eflection when invoking ExecuteAsync).
-
Operations
- Cleaned up OperationsStrings.
-
Serialization.NewtonsoftJson
- NEW: Added support for serializing/deserializing injectable instances.
-
Tests
- Updated Plugin tests to use v11.0 when installing plugin.
- Moved Behaviors tests to the new Kephas.Behaviors.Tests.
- Fixed multiple messaging tests (Autofac).
v11.1.0-dev.3
-
Orchestration
- Added AppVersion to RuntimeAppInfo
- Improved app runtime information (version and features).
-
Abstractions
- New: Added IEnumerable.ForEach async version (extension method).
-
TextProcessing
- Breaking change: TokenizerSettings.WordSeparators is now a string containing all separator characters.
- New: TokenizerSettings.WordMinLength (default 3) and .WordBlockSeparators - blocks of strings considered also word separators.
v11.1.0-dev.2
-
AspNetCore
- WebApp moved to Kephas.Application.AspNetCore namespace.
-
Application
- StartupAppBase.RunServiceAsync used instead of RunAsync in ApplicationStarted.Register. The base method just calls RunAsync, but the WebApp calls the base implementation of RunAsync, as it overrides RunAsync.
- Breaking change: IApp.RunAsync() is now extension method instead of interface method.
-
Extensions.Hosting
- Breaking change: Must provide an AmbientServices to HostBuilderExtensions.ConfigureAmbientServices.
-
Other
- Added multiple README.md files.
v11.1.0-dev.1
-
Application.Abstractions
- Breaking change: RequiredFeatureAttribute renamed to RequiresFeatureAttribute and moved to Application.Abstractions.
- Breaking change: IFeatureInfo moved from Kephas.Application to KephasApplication.Abstractions, as well as IAppRuntime.GetFeatures() and IAppRuntime.ContainsFeature() from ApplicationExtensions to ApplicationAppRuntimeExtensions.
- Breaking change: IFeatureInfo.Version : SemanticVersion instead of Version.
- Breaking change: FeaturesKey is not public anymore, instead the IAppRuntime.SetFeatures() extension method.
-
Application
- Breaking change: AppBase.RunAsync returns an AppRunResult instead of tuple.
- New: Added IApp to Application abstractions and made apps async disposable.
- New: Added SwitchApp, allowing to switch from multiple application instances, depending on some startup condition.
- New: Added IApp.RunAsync(int errorCode)
-
Messaging
- New: EnsureRequiredFeatureMessageProcessingBehavior will throw if a message is marked with RequiresFeature() and that feature is not present or enabled.
-
Workflow
- Breaking change: Lowered requirements for IActivityContext.Scope to IDynamic.
v11.0.0
Final 11.0.0 Release
Highlights
- Added support for multi-tenant.
- Added support for templating (simple and Razor).
- Added data repositories based on Redis.
- Added abstractions for connectivity based on host URI and credentials. Used in MailKit and Redis.
- Enhanced support for modules in Python scripting.
Change log
-
Redis
- Fix RedisConnectionFactory.
-
Orchestration
- Added memory usage to IRuntimeAppInfo.
-
Scheduling.Endpoints
- Added description to some job messages.
-
Plugins
- Fix EnablePlugins when provided in the AppArgs
v11.0.0-dev.7
-
Scheduling
- Breaking change: Refactored Scheduling: moved interfaces to Kephas.Scheduling.Abstractions.
- Added initialization and finalization logic in InProcessScheduler relative to the job store.
- The Scheduler returns disposable queries.
-
Data.Redis
- Small improvements
-
Abstractions
- NEW: Added IDisposableQueryable.
-
Mail.MailKit
- Added support for IUserPasswordCredentials and IUserClearTextPasswordCredentials in MailKitImapConnection.
-
Messaging
- Messaging behavior improvement (default method implementation).
-
Core.Endpoints
- Fixed GetSettingsTypesHandler, retrieving also the metadata.
v11.0.0-dev.5
-
Injection
- NEW: Added NullEnabled*ServiceCollection services to avoid unnecessary Kephas.Behaviors reference.
-
Security
- NEW: Added credentials type: UserClearTextPasswordCredentials.
- All credential types have a corresponding interface.
- Added README.md
-
Connectivity
- Breaking change: the host, credentials and kind are now arguments in
CreateConnection
and are set into the context.
- Breaking change: the host, credentials and kind are now arguments in
-
Mail.MailKit
- Breaking change: Updated connectivity changes.
-
Redis
- Breaking change: refactored to use connectivity. Redis connections are created through IConnectionProvider service.
- Removed the RedisClientSettings: each Redis client is responsible for defining its connection.
-
Data.Redis
- updated to support Kephas.Connectivity.
-
Messaging.Distributed.Redis
- Replaced RedisClientSettings with RedisRoutingSettings and used connectivity instead.
-
Messaging.Distributed
- Breaking change: refactored InProcessMessageRouter (renamed to DefaultAppMessageRouter) by extracting the inner queing service to IMessageQueueStore/InProcessMessageQueueStore. Also, made this service based on a non-static queue dictionary - for testing purposes there is now another InProcessStaticMessageQueueStore service in tests.
v11.0.0-dev.4
-
Injection
- Breaking change: INamedServiceResolver removed, replaced by IInjector.Resolve(serviceName).
-
Abstractions
- NEW: Added ILocationsManager and FolderLocationsManager (default implementation). This should be overwritten in Tenants with TenantFolderLocations for tenant support.
- FileSystem - added support for hidden locations (prefixed by dot '.').
-
Application.Abstractions
- AppRuntimeBase: Make GetLocations available in inheritors.
-
Templating
- New: Added InterpolationTemplatingEngine, FileTemplate, StreamTemplate.
-
Templating.Razor
- NEW: Added Razor templating. For a list of features please check the README at Kephas.Templating.Razor
-
Tenants
- NEW: Added TenantFolderLocationsManager as tenant specific implementation of ILocationsManager. AmbientServices.WithTenantSupport(appArgs) extension method replaces the default ILocationsManager service with the tenant specific one.
- By default, the tenant locations are hidden (prefixed by dot '.').
- For a list of features please check the README at Kephas.Tenants
-
Plugins
- Made PluginsAppRuntime play nice with tenant support (use the ILocationsManager for plugin locations).
-
Plugins.NuGet
- Update NuGet.* references to 6.1.0.
-
Scripting
- Breaking change: Split StringScript, StreamScript, and FileScript from Script. Added Name to IScript.
- Added support for arguments deconstruction in ScriptGlobals.
- Breaking change: IScriptProcessor will configure the execution context instead of providing it as parameter. The script execution context will be added to ScriptingContext during configuration.
-
Scripting.CSharp
- Upgraded Scripting.CSharp to C#10.
-
Scripting.Python
- Upgraded Python to Python 3.4 (alpha)
-
Other
- Added README.md files to multiple packages (Scripting, Templating, and Tenants).
v11.0.0-dev.2
-
Abstractions
- Added IAdapter and IAdapter interfaces.
- Soft breaking change: Moved Priority, IHasOverridePriority and IHasProcessingPriority from Injection to Abstractions.
-
Connectivity
- NEW: Added Kephas.Connectivity to handle various connections in a uniform way. Intended to be used with MailKit, Redis, MongoDB, other.
- Added IConnection.OpenAsync.
-
Data.MongoDB
- Upgraded MongoDB packages to 2.14.1
-
Data.Abstractions
- NEW: Moved some abstractions from Kephas.Data to Kephas.Data.Abstractions
- Breaking change: Moved IIdGenerator to Kephas.Data.Abstractions from Kephas.Core.
-
Other
- Breaking change: Remove support for .NET 5 (out of support).
- Deployment scripts: added support for single package sign/push.
-
Mail.MailKit
- Upgraded MailKit to latest version.
- Breaking change: refactored Kephas.Mail.MailKit to use the adapter pattern (IAdapter).
- NEW: Added MailKitImapConnection and MailKitConnectionFactory.
-
Logging.Log4net
- Updated log4net.
-
Logging.Serilog
- Updated Serilog.
-
Scripting.Python
- Updated IronPython.
-
Scripting.Lua
- Upgraded NeoLua.
-
Templating.Razor
- NEW: Added Kephas.Templating.Razor, implementation for Razor (cshtml) templating.
-
Reflection
- Added support for closed generics in QualifiedFullName.
- Fix: DefaultTypeResolver.ResolveType would not resolve generic types if they were defined in different assemblies.
v11.0.0-dev.1
-
Data.Redis
- NEW: Added primary support for Redis Database.
-
Templating
- NEW: Added Kephas.Templating component, primary support for templating.
-
Tenants
- NEW: Added primary support for tenants (Kephas.Tenants). The application receives the tenant either from the application arguments or from the environment variable DOTNET_TENANT.
- Added primary configuration for tenants and TenantsAdmin permission.
- Added IContext.Tenant() and IAppArgs.Tenant() extension methods.
-
Application
- NEW: AppArgs load also values from environment variables starting with KEPHASAPP_. The prefix can be changed/customized by invoking right at application start AppArgs.SetEnvironmentAppArgsPrefix("MYAPP_").
- Breaking change: IAppRuntime.GetAppFramework() moved to RuntimeEnvironment.GetAppFrameworkMoniker(). Also, AppRuntimeBase.GetAppFrameworkName() moved to RuntimeEnvironment.GetAppFrameworkName().
-
Abstractions
- Added support for ILocations/FolderLocations to be used for Config, Licenses and other.
-
Reflection
- Fix: RuntimePropertyInfo would always fail to compile a delegate for the property setter.
-
Data.IO
- Fix: AssemblyEmbeddedResourcesDataInstallerBase would not order the embedded files properly for .NET 5.0+, as the file extension should be ignored.
-
Tests
- Fixed multiple tests.
- Split Kephas.Reflection.Tests and Kephas.Reflection.Dynamic.Tests from Kephas.Core.Tests