Blog Post
See https://github.com/abpframework/abp/blob/dev/docs/en/Blog-Posts/2020-08-20%20v3_1_Release/Post.md for highglights & new features.
Breaking Changes
- PR #4984: Make Volo.Abp.Ldap support multi-tenancy. (by maliming)
- ISSUE #4981: External Login / Password Changes
Features
- PR #5142: Add reactions to comments for the CMS Kit (by yekalkan)
- PR #5105: Added forget/reset password feature to account module (by realLiangshiwei)
- ISSUE #5072: Allow root "Components" folder in the web projects to have view component resources inside
- ISSUE #5071: Add reactions to comments for the CMS Kit
- ISSUE #5068: Introduce LoginUrl and LogoutUrl options
- PR #5062: Implement basic Cmskit features & the global feature system (by hikalkan)
- ISSUE #5061: Global Features System
- PR #5049: Automatically run the DbMigrator application on the add-module command (by yekalkan)
- ISSUE #4994: Implement "Authorization Code Grant with PKCE" for the Angular UI
- ISSUE #4985: Change AbpResourceOwnerPasswordValidator to support the external login system
- ISSUE #4982: Revise how to change the password for external logins
- PR #4979: Implemented: Authentication Extensibility system to check username & password from an external source (by hikalkan)
- ISSUE #4977: Authentication Extensibility system to check username & password from an external source
- PR #4961: Add comment to the CMS kit (needs improvement) (by hikalkan)
- ISSUE #4927: Implement social login flow out of the box & document it
- ISSUE #4905: Allow to add converters to the standard JSON serializer
- ISSUE #4894: Angular UI should be supported the Domain Tenant Resolver
- ISSUE #4863: Automatically run the DbMigrator application on the add-module command
- ISSUE #4862: Support async object mapping for the base CRUD application service
- PR #4861: Added entity extension base to Identity module (by cotur)
- PR #4860: Docs module: added alternative way (using branches) to get versions (by yekalkan)
- ISSUE #4845: Docs module: Alternative way (using branches) to get versions
- ISSUE #4837: SubscriptionService for Angular
- PR #4826: Add Blob storing AWS S3 Integration (by realLiangshiwei)
- PR #4809: Introduce BasicAggregateRoot base class (by maliming)
- ISSUE #4808: Introduce BasicAggregateRoot base class
- ISSUE #4796: Unit of Work level cache system
- ISSUE #4761: Initial CmsKit Reactions System
- ISSUE #4760: CmsKit Comment system
- ISSUE #4752: Create a package named @abp/ng.components
- PR #4735: Add Volo.Abp.BlobStoring.Aliyun (by Aprite)
- PR #4734: Introduce AbpFileExtensionContentTypeProvider. (by maliming)
- PR #4688: Miniostoring (by mhymhygi)
- PR #4675: Introduce security log. (by maliming)
- ISSUE #4657: Remove client_secret from the angular and ReactNative application.
- ISSUE #4629: Add dataFormat option to the datatables column definitions
- PR #4617: Added GetPagedListAsync methods to the repository (by realLiangshiwei)
- ISSUE #4610: Blob storing AWS S3 Integration
- ISSUE #4593: Add GetPagedListAsync methods to the repository
- ISSUE #4492: User security log feature.
- ISSUE #4386: Angular: Read settings from Json files
- ISSUE #4318: Configure Prettier for the solutions
- ISSUE #4008: Define new layout hooks: before page content & after page content
- ISSUE #2608: Add forgot/reset password functionality
Enhancements
- ISSUE #5122: Add points to the application startup template to configure the global features
- PR #5112: Use async methods in the MailKitSmtpEmailSender (by realLiangshiwei)
- ISSUE #5111: Use async methods in the MailKitSmtpEmailSender
- ISSUE #5109: Inherit BackgroundEmailSendingJob form AsyncBackgroundJob
- ISSUE #5106: Set
-m none
as a default for the ABP CLI - PR #5104: Changed the date formats in ExtensibleTableComponent (by mehmet-erim)
- PR #5097: Added Quartz.Plugins.TimeZoneConverter (by realLiangshiwei)
- ISSUE #5096: Add Quartz.Plugins.TimeZoneConverter
- ISSUE #5090: Create utility functions that return DatePipe format
- PR #5089: Fixed BlobStoring project reference paths (by olicooper)
- PR #5085: Add Identity service error controller to account module (by realLiangshiwei)
- PR #5083: Upgrade quartz to 3.1.0 (by realLiangshiwei)
- ISSUE #5079: Unify Error pages (identity server & default)
- ISSUE #5074: Create Global Feature Action & Page filters to prevent usage of a controller/page if the feature was disabled
- PR #5067: Create AbpExceptionHandlingOptions class (by realLiangshiwei)
- ISSUE #5066: Unhandled exception details
- ISSUE #5050: Improve the microservice example
- ISSUE #5047: Add action callback property to EntityProp for extensible table
- PR #5046: Make the method that use propertyBuildAction obsolete. (by maliming)
- ISSUE #5043: Move AbpRequestLocalization middleware on top of all in the startup template
- PR #5016: CMS Kit Code revisions/improvements (by yekalkan)
- ISSUE #5015: Add mergeStrategy property to remoteEnv configuration
- PR #5013: Use CopyToAsync to copy the stream (by realLiangshiwei)
- ISSUE #5007: Console applications revision
- ISSUE #5006: Console applications should participate to the main host builder
- ISSUE #4959: CMS Kit Code revisions/improvements
- PR #4950: Combine related log messages to ones. (by maliming)
- PR #4948: Folders in the tutorial are specified. (by berkansasmaz)
- ISSUE #4941: Don't show UPDATED if it is already NEW
- ISSUE #4931: Upgrade all AspNetCore/MsExtensions related packages to 3.1.6
- ISSUE #4929: Replace IEmailSender with NullEmailSender on DEBUG for the application template
- PR #4926: Update part-8 document (by realLiangshiwei)
- ISSUE #4918: Upgrade Automapper to v10.0
- ISSUE #4916: A minor improvement to the tutorial
- PR #4910: Implement StringValueTypeJsonConverter. (by maliming)
- PR #4899: Use alerts to show the exception message in the register page. (by maliming)
- PR #4885: Added SaveChangesOnDbContextAsync method to the IEfCoreDbContext. (by maliming)
- ISSUE #4881: Replace Angular Client Proxy Generation code with Angular Schematics
- ISSUE #4867: Add support for mapping of culture name to Angular locale file name
- PR #4864: Added author functionality to the tutorial (by hikalkan)
- ISSUE #4846: Remove the MASTER branch
- PR #4844: Improve the Aliyun blob storing integration (by Aprite)
- PR #4823: Handle the case where currentLanguage is null. (by maliming)
- ISSUE #4814: A property named visible should be passed to NavItemsService optionally to show/hide the item
- ISSUE #4812: Add a new method to ConfigStateService named getFeature
- PR #4807: Make EfCoreRepository implement IAsyncEnumerable (by maliming)
- ISSUE #4775: Update to Quartz 3.1.0
- ISSUE #4757: Change date format for NgbDatePicker
- ISSUE #4743: New Module: CMS Kit / Prepare the initial solution
- PR #4742: Cache the AccessToken in IdentityModelAuthenticationService. (by maliming)
- ISSUE #4732: Upgrade to the latest version of Swashbuckle.AspNetCore
- ISSUE #4731: Cancel button does nothing in the login page
- PR #4713: Refatoring BundleContributor Make it support LocalizationMapOptions (by maliming)
- PR #4706: Javascript files reformatted with Prettier and Prettier settings created for each module (by cotur)
- PR #4705: Improve the docs module. (by maliming)
- PR #4704: Use CompleteAsync instead of SaveChangesAsync (by realLiangshiwei)
- ISSUE #4689: Call CompleteAsync instead of SaveChangesAsync
- ISSUE #4673: Make DistributedMemoryCache implement ICacheSupportsMultipleItems.
- ISSUE #4659: Allow to call base DbContext.SaveChangesAsync() from the application's DbContext
- ISSUE #4650: Add DynamicLayoutComponent to AppComponent template
- PR #4634: Try to set GUID Id in the InsertAsync method of the EF Core repository. (by maliming)
- ISSUE #4631: Try to set GUID Id in the InsertAsync method of the EF Core repository
- ISSUE #4628: Docs module should highlight JSON
- PR #4624: Add missing DependsOn in MyProjectNameDomainModule (by gdlcf88)
- ISSUE #4614: Update Authentication-Customization samples
- ISSUE #4603: Is it necessary to save access_Token to cache?
- ISSUE #4592: ABP CLI should edit the text "MY_PROJECT_NAME" (snake case & upper case) when generating a new project
- PR #4565: Used GenerateEmbeddedFilesManifest option for the projects with embedded files (by cotur)
- ISSUE #4541: Use GenerateEmbeddedFilesManifest option for the projects with embedded files
- ISSUE #4508: how to determine current tenant in the distributedEventBus
- ISSUE #4373: Remove the ABP Framework 3.0 note for IAsyncQueryableExecuter after 3.0 release
- ISSUE #4218: Show as a primary button if the actions only has a single item.
- ISSUE #4040: SettingManagementStore not refreshing cache within the same UnitOfWork
- ISSUE #4023: Test & Improve the RTL UI
- ISSUE #3892: move the MicroserviceDemo to the abp-samples repository
Bug Fixes
- ISSUE #4943: DatabaseBlobProvider Not Set TenantId
- PR #4901: Fix Date Filtering on IdentitySecurityLogRepository (by cotur)
- PR #4884: Remove ITransientDependency interface from the DeviceFlowStore class. (by maliming)
- ISSUE #4865: Dynamic Form Extensions for Angular calls Options PropCallback Infinite times
- ISSUE #4858: The configuration of @ngx-validate/core cannot be overridden
- ISSUE #4839: NgxsStoragePluginModule can't forRoot twice
- ISSUE #4818: TakeUntilDestroy not working as expected
- PR #4802: Ignore the generic dto predefined by abp in the return type (by realLiangshiwei)
- PR #4789: Use eventEntry.EventBus instead of eventPublisher (by realLiangshiwei)
- ISSUE #4780: Current user permissions don't refresh when changed a permission
- ISSUE #4729: Replacement of layout in Angular not working
- PR #4715: Use eventEntry.EventBus instead of eventPublisher (by realLiangshiwei)
- ISSUE #4711: Pre defined events not being emitted for entity types
- ISSUE #4690: create-solution-folder option is not working as expected.
- ISSUE #4643: Angular UI cannot load the "ar" locale file
- ISSUE #4611: Fix the "this.config is undefined" error in Angular
- ISSUE #4598: ABP CLI command: update does not run yarn (or npm i)
- ISSUE #4575: When run the abp update command, abp packages were updated with double tilde(~~)
- ISSUE #4569: Could not view any entity in table although the entity is in database in BookStore-Angular-MongoDb sample
- ISSUE #4566: Uncaught TypeError: MutationObserver.observe: Argument 1 is not an object
- ISSUE #4337: FeatureManagement.FeatureDto.IStringValueType Cause Newtonsoft.Json.JsonSerializationException
- ISSUE #4327: Localization in angular may be incorrect
Others
- PR #5146: Add nullable datetime types. (by maliming)
- PR #5141: Add @abp/ng.schematics publishing process to publish script (by mehmet-erim)
- PR #5140: Community.abp.io: missing localization items (by berkansasmaz)
- PR #5137: Replaced Angular Client Proxy Generation code with Angular Schematics (by armanozak)
- PR #5136: Normalize projectId field. (by maliming)
- PR #5133: Create Previews.md (by yekalkan)
- PR #5131: Add Chinese localization files to Community.abp.io (by realLiangshiwei)
- PR #5128: Community.abp.io: missing localization items (by EngincanV)
- PR #5127: Add UserName & ClientId to the security log. (by maliming)
- PR #5124: Fixed localization problem of default error messages (by mehmet-erim)
- PR #5123: Change the file name of IAuditLogScope (by xiaoliang1314)
- PR #5121: Add UserName in SetSuccessResultAsync method. (by maliming)
- ISSUE #5120: UserId/UserName not present in some AbpSecurityLogs
- PR #5119: Update documentation of rc and nightly switches (by yekalkan)
- ISSUE #5118: Create a document to explain how to use the preview/rc releases
- PR #5117: Fixed the ngcc compiling error of the @abp/utils package (by mehmet-erim)
- PR #5116: Community-3.1 localization (by berkansasmaz)
- PR #5110: Improved the publish.ps1 to be able to publish RC packages (by mehmet-erim)
- PR #5107: Cli new project default mobile "none" (by yekalkan)
- PR #5094: fix: MySqlConnector issues between ABP and Quartz (by olicooper)
- PR #5093: Correct misspelling in Timing docs (by BryceBarbara)
- PR #5091: Created utility functions that return DatePipe format (by mehmet-erim)
- PR #5086: Revised the password change logic for Angular UI (by mehmet-erim)
- PR #5084: Allow root "Components" folder in the web projects to have view component resources inside (by maliming)
- PR #5082: Create Global Feature Action & Page filters to prevent usage of a controller/page if the feature was disabled (by maliming)
- PR #5060: Added the ngxsStoragePluginOptions property to forRoot method options of CoreModule (by mehmet-erim)
- PR #5058: Fixed OAuth configuration bug when using remoteEnv (by olicooper)
- PR #5057: Add
MyProjectNameMenus.cs
for the app template (by wakuflair) - PR #5054: Displayed as a primary button if the actions button only has a single item (by mehmet-erim)
- PR #5052: Fixed some bugs in Feature Management Module of Angular UI (by mehmet-erim)
- PR #5048: Added action callback property to EntityProp for extensible table (by mehmet-erim)
- PR #5045: Add PredicateBuilder class. (by maliming)
- PR #5038: Add Identity service error page to account module. (by maliming)
- PR #5037: Upgrade Swashbuckle.AspNetCore to 5.5.1 (by maliming)
- ISSUE #5035: Identity server is redirecting to wrong URL on errors
- PR #5029: correct docs wording of Principle to Principal (by paulfwilliams)
- PR #5024: Add redis precondition to the document (by realLiangshiwei)
- PR #5012: Update console application startup template document (by realLiangshiwei)
- PR #5011: Update migrations for identity user IsExternal property. (by maliming)
- ISSUE #5005: Circular dependency @abp/utils/dist/abp-utils.d.ts.map
- PR #5004: Upgrade Automapper to v10.0.0 (by maliming)
- PR #4999: Added a common Lookup type to the core package (by armanozak)
- PR #4995: Implemented "Authorization Code Grant with PKCE" for the Angular UI (by mehmet-erim)
- PR #4993: Create passwordless authentication community article (by EngincanV)
- ISSUE #4987: Document : Setup and sending Emails
- ISSUE #4983: Make Volo.Abp.Ldap support multi-tenancy.
- PR #4978: Support IEnumerable when adding query strings. (by maliming)
- PR #4976: Upgrade all AspNetCore/MsExtensions related packages to 3.1.6. (by maliming)
- PR #4975: Revise how to change the password for external logins (by yekalkan)
- PR #4970: Convert special characters in Version. (by maliming)
- PR #4967: Implemented the getting environment from remote URL (by mehmet-erim)
- ISSUE #4966: Configure AbpExceptionLocalizationOptions in the startup template.
- PR #4962: Fixed an instance name in Toaster-Service.md (by mehmet-erim)
- PR #4957: Community.abp.io localization (by EngincanV)
- PR #4956: Added support for the Domain Tenant Resolver (by mehmet-erim)
- ISSUE #4949: Suggest:Remove invalid log in AbpExceptionFilter
- PR #4947: Update the background-workers-quartz document (by realLiangshiwei)
- ISSUE #4945: QuartzBackgroundWorkerManager is not works fine for take over DefaultBackgroundJobManager
- PR #4944: Handle multi-tenant in DatabaseBlobProvider. (by maliming)
- PR #4942: Don't show UPDATED if it is already NEW (by maliming)
- PR #4920: Convert entity property to entry property type. (by maliming)
- ISSUE #4917: ObjectExtension: Handle extra property's type when deserialzing json with integer property value
- PR #4911: Improved the performance of extensibility system and fixed some problems (by mehmet-erim)
- PR #4906: Fix NRE on EntityHistoryHelper.ShouldSavePropertyHistory (by skomis-mm)
- ISSUE #4902: add drop database stage for abp-app-backend pipeline
- ISSUE #4896: Register page throw exception if the user name or email has been taken
- PR #4893: Use EntityTypeBuilder & PropertyBuilder in the MapEfCoreProperty method. (by maliming)
- ISSUE #4891: Use EntityTypeBuilder and PropertyBuilder in the MapEfCoreProperty method.
- ISSUE #4883: DeviceFlowStore shouldn't implements ITransientDependency
- PR #4872: Delete related entities when deleting Identity Server Client. (by maliming)
- PR #4871: Update Unit-Of-Work.md (by cuibty)
- ISSUE #4870: Delete related entities when deleting Identity Server Client.
- PR #4869: Map the BookStore code namespace. (by maliming)
- PR #4868: Added support for mapping of culture name to Angular locale file name (by mehmet-erim)
- PR #4859: Fixed the NgxValidateCoreModule configuration overriding problem (by mehmet-erim)
- PR #4857: Clarified Usage of BookType Enum in Tutorial (by armanozak)
- ISSUE #4856: Clarify Usage of BookType Enum in Tutorial
- PR #4855: Filter permission provider in PermissionDataSeedContributor. (by maliming)
- PR #4849: Implemented the SubscriptionService (by mehmet-erim)
- ISSUE #4843: Improve publish script to be able to publish RC packages
- PR #4842: Add blob storing AWS Sintegration document (by realLiangshiwei)
- PR #4840: fix broken links in docs (by yekalkan)
- PR #4838: Created a Utility Service For Subscription Management (by armanozak)
- ISSUE #4836: Create blob storing aws integration document
- ISSUE #4835: Docs module: Provide a way to disable scriban rendering
- PR #4832: Update blogging & docs demo migrations. (by maliming)
- PR #4822: Cli: added Angular option to NpmApplicationType (by yekalkan)
- PR #4815: Added a optional property named visible to NavItem interface (by mehmet-erim)
- PR #4813: Added getFeature method to ConfigStateService (by mehmet-erim)
- PR #4810: Use IdentitySecurityLogManager instead EventBus to save security logs. (by maliming)
- ISSUE #4806: Make EfCoreRepository implement IAsyncEnumerable
- PR #4797: Move Insert_Should_Set_Guid_Id test method to repository test base class. (by maliming)
- PR #4793: Added draggable input to tree component (by mehmet-erim)
- PR #4788: Added a control to PermissionManagementComponent for fetching the application configuration API (by mehmet-erim)
- PR #4787: Add minio document (by mhymhygi)
- PR #4783: Move cancel button to the form & add formnovalidate attribute. (by maliming)
- PR #4782: Abp prerelease compatibility (by yekalkan)
- PR #4779: Created a package named @abp/ng.components (by mehmet-erim)
- ISSUE #4769: Configure Stale & Lock for this repository
- PR #4766: Make app template DbContextFactory use migrator project's appsettings.json (by maliming)
- PR #4758: Changed NgbDatepicker date format (by mehmet-erim)
- PR #4750: CMSKit initial solution is prepared (by cotur)
- PR #4749: Removed Invalid Use of AbpAccount Localization Resource in Tutorials (by armanozak)
- PR #4748: Removed Compile Warnings (by armanozak)
- ISSUE #4747: Remove Compile Warnings
- PR #4741: Check Replaceable Layout Component on Every Route Change (by armanozak)
- PR #4738: Check Replaceable Layout Component on Every Route Change (by armanozak)
- PR #4737: Check Replaceable Layout Component on Every Route Change (by armanozak)
- PR #4736: The Cancel button is only displayed in Identity Server. (by maliming)
- PR #4727: Avoid NullReferenceException if context is null (by 1d0n7kn0w)
- ISSUE #4724: Add migrations file to samples.
- ISSUE #4716: Microservices demo missing distributed event configure
- ISSUE #4712: Find and Remove Invalid Use of AbpAccount Localization Resource in Tutorials
- PR #4709: Fix some problems with the time zone function. (by maliming)
- PR #4700: Use parameterInfo.Name when modelNameProvider.Name is null. (by maliming)
- ISSUE #4696: MsDemo TenantManagementService microservice missing dockerfile
- PR #4695: Documentation: Ease running/debugging microservice demo with docker (by gterdem)
- ISSUE #4691: RC (release candidate) version publish system planning
- ISSUE #4678: abp generate-proxy dto baseType error
- ISSUE #4677: Outdated documentation localization
- ISSUE #4676: Unit test fail in MVC & MongoDB template. #2725
- ISSUE #4668: Video course for the web application development tutorial (Part 1-5)
- ISSUE #4667: generate-proxy multiple angular model bug fix
- ISSUE #4664: New web application development tutorial parts (I)
- ISSUE #4662: Get the required policy in PermissionGuard from RoutesService
- ISSUE #4658: Ease running/debugging microservice demo with docker
- PR #4656: Fix the "Expression has changed after it was checked" in LoaderBarComponent (by mehmet-erim)
- PR #4651: Added DynamicLayoutComponent to AppComponent template (by mehmet-erim)
- PR #4647: script and style sections not found error when logging out (by gterdem)
- ISSUE #4638: Optimize microservice docker demo
- PR #4637: German dutch encoding (by NecatiMeral)
- PR #4636: Add dataFormat option to the datatables column definitions. (by maliming)
- PR #4633: Rename the text "MY_PROJECT_NAME" when generating a new project (by maliming)
- ISSUE #4619: Revisit the Getting Started & Application Development Tutorials
- PR #4612: Fixed the "this.config is undefined" error in Angular (by mehmet-erim)
- ISSUE #4607: Update the Custom Setting Page document
- ISSUE #4596: Nuget common.ps1 files missing Volo.Abp.BlobStoring.Azure
- PR #4595: Ignore classes that are not entities while configuring the base properties (by realLiangshiwei)
- ISSUE #4591: Undefined permissions with IdentityServer.Client.ManagePermissions
- ISSUE #4589: CLI generate-proxy: On Turkish Language settings computers, property names starting with 'I' letter is made lower case as turkish '─▒' letter
- PR #4585: Updated the Angular UI Service Proxies document (by mehmet-erim)
- ISSUE #4584: Update the Angular UI Service Proxies document
- PR #4583: Provide a way to suppress the label generation for
abp-input
taghelper (by wakuflair) - ISSUE #4582: AbpDbContext.OnModelCreating issue
- ISSUE #4577: The NPM package abp/utils is always 2.9.0
- ISSUE #4574: Refatoring BundleContributor Make it support LocalizationMapOptions
- PR #4573: Add PageContent layout hook. (by maliming)
- ISSUE #4571: There is a problem in Account/Login razor page in the Authentication-Customization sample
- PR #4570: updated link of authentication-customization sample in docs (by AkinSabriCam)
- PR #4568: Updated v2.9 to v3.0 Migration Guide for Angular w/ Lepton Logo Changes (by armanozak)
- ISSUE #4567: Update v2.9 to v3.0 Migration Guide for Angular w/ Lepton Logo Changes
- PR #4559: Documented how to use NavItemsService (by mehmet-erim)
- ISSUE #4558: Document how to use NavItemsService
- PR #4555: Switch to the tenant before calling the handleevent method. (by maliming)
- ISSUE #4548: ABP dynamic form adds default value to AbpInputTagHelper
- PR #4523: Store cache in the unit of work. (by maliming)
- ISSUE #4062: Try to consume both of REST and gRPC services from the console client of the gRPC demo sample
- ISSUE #3907: Test & upgrade all samples to v3.0