@Model.ChatResponse
+ } +@Model.RAGResponse
+ } +
+
-*Mastering ABP Framework* is an ultimate guide to get started and expertise with the ABP Framework. It is authored by Halil İbrahim Kalkan, the creator and the lead developer of the ABP Framework.
-
-**[Click here to see the details and order the book](https://abp.io/books/mastering-abp-framework)**.
-
-### Free E-Book: Implementing Domain Driven Design
-
-
-
-A **practical guide** for implementing Domain Driven Design (DDD). While the implementation details are **based on the ABP** infrastructure, the basic concepts, principles and models can be applied to any solution, even if it is not a .NET solution.
-
-**[Click here to get your free copy](https://abp.io/books/implementing-domain-driven-design?ref=doc).**
+* [See the details and **order** the **Mastering ABP Framework** book](https://abp.io/books/mastering-abp-framework)
+* [**Download** your free copy of the **Implementing Domain Driven Design** book](https://abp.io/books/implementing-domain-driven-design?ref=doc)
## Samples
diff --git a/docs/en/modules/account-pro.md b/docs/en/modules/account-pro.md
index 83cccd9dc1..e3e7884cc0 100644
--- a/docs/en/modules/account-pro.md
+++ b/docs/en/modules/account-pro.md
@@ -362,3 +362,4 @@ This module doesn't define any additional distributed event. See the [standard d
* [Impersonation](./account/impersonation.md)
* [Linked Accounts](./account/linkedaccounts.md)
* [Session Management](./account/session-management.md)
+* [Idle Session Timeout](./account/idle-session-timeout.md)
diff --git a/docs/en/modules/account/idle-session-timeout.md b/docs/en/modules/account/idle-session-timeout.md
new file mode 100644
index 0000000000..231ea31e7d
--- /dev/null
+++ b/docs/en/modules/account/idle-session-timeout.md
@@ -0,0 +1,19 @@
+# Idle Session Timeout
+
+The `Idle Session Timeout` feature allows you to automatically log out users after a certain period of inactivity.
+
+## Configure Idle Session Timeout
+
+You can enable/disable the `Idle Session Timeout` feature in the `Setting > Account > Idle Session Timeout` page.
+
+The default idle session timeout is 1 hour. You can change it by selecting a different value from the dropdown list or entering a custom value (in minutes).
+
+
+
+Once the idle session timeout is reached, the user will see a warning modal before being logged out. if user does not respond for 60 seconds, the user will be logged out automatically.
+
+
+
+## How it works
+
+There is JavaScript code running in the background to detect user activity. such as mouse movement, key press, click, etc. If there is no activity detected for setting time, The warning modal will be shown to the user.
diff --git a/docs/en/modules/docs.md b/docs/en/modules/docs.md
index dc04339e78..69de3362a6 100644
--- a/docs/en/modules/docs.md
+++ b/docs/en/modules/docs.md
@@ -490,9 +490,6 @@ Since not every single document in your projects may not have sections or may no
For example [Getting-Started.md](https://github.com/abpio/abp-commercial-docs/blob/master/en/getting-started.md):
-```
-.....
-
```json
//[doc-params]
{
@@ -502,9 +499,6 @@ For example [Getting-Started.md](https://github.com/abpio/abp-commercial-docs/bl
}
```
-........
-```
-
This section will be automatically deleted during render. And f course, those key values must match with the ones in **Parameter document**.

@@ -513,7 +507,7 @@ Now you can use **Scriban** syntax to create sections in your document.
For example:
-````
+````text
{{ if UI == "NG" }}
* `-u` argument specifies the UI framework, `angular` in this case.
@@ -672,22 +666,18 @@ The **Docs Module** supports referencing previous and next documents. It's usefu
To reference the previous and next documents from a document, you should specify the documentation titles and their paths as follows:
-```
-
- ````json
- //[doc-nav]
- {
- "Previous": {
- "Name": "Overall",
- "Path": "testing/overall"
- },
- "Next": {
- "Name": "Integration tests",
- "Path": "testing/integration-tests"
- }
- }
- ````
-
+```json
+//[doc-nav]
+{
+ "Previous": {
+ "Name": "Overall",
+ "Path": "testing/overall"
+ },
+ "Next": {
+ "Name": "Integration tests",
+ "Path": "testing/integration-tests"
+ }
+}
```
After you specify the next & previous documents, they will appear at the end of the current documentation like in the following figure:
diff --git a/docs/en/modules/gdpr.md b/docs/en/modules/gdpr.md
index 76875e0403..c94fcbb4a0 100644
--- a/docs/en/modules/gdpr.md
+++ b/docs/en/modules/gdpr.md
@@ -48,7 +48,14 @@ The "Personal Data" page is used to manage personal data requests. You can view

-To see the other features of the GDPR module, visit [the module description page](https://abp.io/modules/Volo.Gdpr).
+The GDPR module is designed for distributed architectures. When a user requests their personal data, the module publishes two events:
+
+- `GdprUserDataRequestedEto`: Triggers personal data collectors to prepare user data
+- `GdprUserDataDeletionRequestedEto`: Triggers personal data collectors to delete user data
+
+You can subscribe to these events to implement custom data collection and deletion logic in your modules. See the [Distributed Events](#distributed-events) section for more details.
+
+> To see the other features of the GDPR module, visit [the module description page](https://abp.io/modules/Volo.Gdpr).
## Options
@@ -227,8 +234,13 @@ This [Event Transfer Object](../framework/infrastructure/event-bus/distributed#e
### GdprUserDataPreparedEto
-This [Event Transfer Object](../framework/infrastructure/event-bus/distributed#event-transfer-object) is used to save the collected personal data into a single JSON file by module.
+This [Event Transfer Object](../framework/infrastructure/event-bus/distributed#event-transfer-object) is used to save the collected personal data into a single JSON file per module. Typically, you don't need to implement this event handler since the module already has an implementation that returns the collected data within a zip file containing multiple JSON files, with each file containing data collected from a specific module.
+
+### GdprUserDataDeletionRequestedEto
+
+This [Event Transfer Object](../framework/infrastructure/event-bus/distributed#event-transfer-object) is published when a user requests to permanently delete their personal data and account. By default, only the `IdentityGdprEventHandler` in the [Identity Pro Module](../modules/identity-pro) subscribes to this event to anonymize the user's data and delete their account (using soft-delete unless configured otherwise).
+If you want to delete additional sensitive user data stored in other modules, you can subscribe to this event and implement custom deletion (or anonymization) logic in those modules.
## Cookie Consent
diff --git a/docs/en/modules/openiddict.md b/docs/en/modules/openiddict.md
index 5f421d9001..35c5220096 100644
--- a/docs/en/modules/openiddict.md
+++ b/docs/en/modules/openiddict.md
@@ -279,7 +279,7 @@ UserInfoController -> connect/userinfo
> **Device flow** implementation will be done in the commercial module.
-#### AbpOpenIddictAspNetCoreOptions
+### AbpOpenIddictAspNetCoreOptions
`AbpOpenIddictAspNetCoreOptions` can be configured in the `PreConfigureServices` method of your OpenIddict [module](../framework/architecture/modularity/basics.md).
diff --git a/docs/en/release-info/migration-guides/abp-9-1.md b/docs/en/release-info/migration-guides/abp-9-1.md
new file mode 100644
index 0000000000..5808f8f028
--- /dev/null
+++ b/docs/en/release-info/migration-guides/abp-9-1.md
@@ -0,0 +1,9 @@
+# ABP Version 9.1 Migration Guide
+
+This document is a guide for upgrading ABP v9.0 solutions to ABP v9.1. There are no breaking changes in this version that would affect your application.
+
+You might need to update some constant names due to the OpenIddict 6.0 upgrade, which is explained in the following migration guide:
+
+- [OpenIddict 5.x to 6.x Migration Guide](./openiddict5-to-6.md)
+
+In addition, ABP version 9.1 has been upgraded to incorporate Angular version 19. Consequently, we recommend migrating your application to [Angular v19](https://angular.dev/update-guide) to ensure compatibility.
\ No newline at end of file
diff --git a/docs/en/release-info/migration-guides/identityserver4-step-by-step.md b/docs/en/release-info/migration-guides/identityserver4-step-by-step.md
index 6e58edc023..12973b6073 100644
--- a/docs/en/release-info/migration-guides/identityserver4-step-by-step.md
+++ b/docs/en/release-info/migration-guides/identityserver4-step-by-step.md
@@ -76,7 +76,7 @@ typeof(AbpPermissionManagementDomainIdentityServerModule),
DataSeeder is the most important part for starting the application since it seeds the initial data for both OpenID providers.
-- Create a folder named *IdentityServer* under the Domain project and copy the [IdentityServerDataSeedContributor.cs](https://github.com/abpframework/abp-samples/blob/master/Ids2OpenId/src/Ids2OpenId.Domain/IdentityServer/IdentityServerDataSeedContributor.cs) under this folder. **Rename** all the `OpenId2Ids` with your project name.
+- Create a folder named *IdentityServer* under the Domain project and copy the [IdentityServerDataSeedContributor.cs](https://github.com/abpframework/abp-samples/blob/1dc297255ca22af02ef6d71092dbc1b394f9260a/Ids2OpenId/src/Ids2OpenId.Domain/IdentityServer/IdentityServerDataSeedContributor.cs) under this folder. **Rename** all the `OpenId2Ids` with your project name.
- Delete *OpenIddict* folder that contains `OpenIddictDataSeedContributor.cs` which is no longer needed.
### EntityFrameworkCore Layer
diff --git a/docs/en/release-info/migration-guides/index.md b/docs/en/release-info/migration-guides/index.md
index 27c6752338..821fbf5469 100644
--- a/docs/en/release-info/migration-guides/index.md
+++ b/docs/en/release-info/migration-guides/index.md
@@ -2,6 +2,7 @@
The following documents explain how to migrate your existing ABP applications. We write migration documents only if you need to take an action while upgrading your solution. Otherwise, you can easily upgrade your solution using the [abp update command](../upgrading.md).
+- [9.0 to 9.1](abp-9-1.md)
- [8.x to 9.0](abp-9-0.md)
- [8.x to 8.3](abp-8-3.md)
- [8.1 to 8.2](abp-8-2.md)
diff --git a/docs/en/release-info/migration-guides/openiddict5-to-6.md b/docs/en/release-info/migration-guides/openiddict5-to-6.md
new file mode 100644
index 0000000000..f876f86265
--- /dev/null
+++ b/docs/en/release-info/migration-guides/openiddict5-to-6.md
@@ -0,0 +1,28 @@
+# OpenIddict 5.x to 6.x Migration Guide
+
+The 6.0 release of OpenIddict is a major release that introduces breaking changes.
+
+Check this blog [OpenIddict 6.0 general availability](https://kevinchalet.com/2024/12/17/openiddict-6-0-general-availability/) for the new features introduced in OpenIddict 6.0. and the [Migrate to OpenIddict 6.0](https://documentation.openiddict.com/guides/migration/50-to-60) for more information about the changes.
+
+In this guide, we will explain the changes you need to make to your ABP application.
+
+## Constant changes
+
+The following constants have been renamed:
+
+| Old Constant Name | New Constant Name |
+|---------------------------------------------------------------|-----------------------------------------------------------------|
+| `OpenIddictConstants.Permissions.Endpoints.Logout` | `OpenIddictConstants.Permissions.Endpoints.EndSession` |
+| `OpenIddictConstants.Permissions.Endpoints.Device` | `OpenIddictConstants.Permissions.Endpoints.DeviceAuthorization` |
+
+
+## IdentityModel packages
+
+If you have a reference to `IdentityModel` directly, please upgrade the necessary package versions to the latest stable version, which is currently 8.3.0:
+
+* [System.IdentityModel.Tokens.Jwt](https://www.nuget.org/packages/System.IdentityModel.Tokens.Jwt/)
+* [Microsoft.IdentityModel.Protocols.OpenIdConnect](https://www.nuget.org/packages/Microsoft.IdentityModel.Protocols.OpenIdConnect/)
+* [Microsoft.IdentityModel.Tokens](https://www.nuget.org/packages/Microsoft.IdentityModel.Tokens/)
+* [Microsoft.IdentityModel.JsonWebTokens](https://www.nuget.org/packages/Microsoft.IdentityModel.JsonWebTokens/)
+
+That's all, it's a simple migration! If you have advanced usage of OpenIddict, please check the [official migration guide](https://documentation.openiddict.com/guides/migration/50-to-60) for more information.
diff --git a/docs/en/release-info/release-notes.md b/docs/en/release-info/release-notes.md
index eff63388e3..f0e91ec4a8 100644
--- a/docs/en/release-info/release-notes.md
+++ b/docs/en/release-info/release-notes.md
@@ -4,6 +4,16 @@ This document contains **brief release notes** for each release. Release notes o
> If you want to read the release notes for each ABP Studio release, check it out from [here](../studio/release-notes.md).
+## 9.1 (2025-01-16)
+
+This is currently a RC (release-candidate) and you can see the detailed **[blog post / announcement](https://abp.io/blog/abp-9-1-release-candidate)** for the v9.1 release.
+
+* Upgraded to Angular 19
+* Upgraded to OpenIddict 6.0
+* New Blazor WASM Bundling System
+* Idle Session Warning
+* Lazy Expandable Feature for Documentation System
+
## 9.0 (2024-11-19)
See the detailed **[blog post / announcement](https://abp.io/blog/abp-9-0-stable-release-with-dotnet-9-0)** for the v9.0 release.
diff --git a/docs/en/release-info/road-map.md b/docs/en/release-info/road-map.md
index cc9caca124..7a5a400bf4 100644
--- a/docs/en/release-info/road-map.md
+++ b/docs/en/release-info/road-map.md
@@ -4,15 +4,13 @@ This document provides a road map, release schedule, and planned features for th
## Next Versions
-### v9.1
+### v9.2
-The next version will be 9.1 and planned to release the stable 9.1 version in January 2025. We will be mostly working on the following topics:
+The next version will be 9.2 and planned to release the stable 9.2 version in June 2025. We will be mostly working on the following topics:
* Framework
- * Lazy expandable feature for documentation
- * Unify the bundling system of Blazor and MVC
- * SSR support for the Angular UI
* Upgrading 3rd-party dependencies
+ * Enhancements in the core points
* ABP Suite
* Define navigation properties without target string property dependency
@@ -32,12 +30,12 @@ The next version will be 9.1 and planned to release the stable 9.1 version in Ja
* Modular Monolith Application Startup Template
* Application modules
- * Account module: Support mixed social/local login scenarios
- * Idle session warning
+ * Account module: Support mixed social/local login scenarios & enforcing email verification in wide aspect
* UI/UX improvements on existing application modules
-* New tutorials
+* Updating existing tutorials & documents (with other UI & DB options)
* Microservice development
+ * Modular monolith development
## Backlog Items
@@ -64,7 +62,6 @@ ABP Platform provides many (free and commercial) [pre-built application modules]
* LeptonX theme: New layouts, styles and components
* CMS Kit module: Meta information for SEO, media gallery, RSS feed, content versioning, social media streams
-* Identity module: Idle session warning
* Payment module: Invoice system
* New module: User notification
* New module: Dynamic dashboard
@@ -108,7 +105,6 @@ Here, are some of the important planned features for the next ABP Suite versions
* Allow to create pages instead of modals for CRUD page generation
* View-only (detail view) modal/page for an entity
* Export child/detail entity records as a part of export operation for a main (master) entity
-* Allow to accept attachments (files) for an entity
* Allow to add custom entity actions for an entity
* Allow to inherit from an existing entity class
* Custom form layouts on CRUD page generation
diff --git a/docs/en/solution-templates/layered-web-application/cors-configuration.md b/docs/en/solution-templates/layered-web-application/cors-configuration.md
index 6df207c107..73e7b6952b 100644
--- a/docs/en/solution-templates/layered-web-application/cors-configuration.md
+++ b/docs/en/solution-templates/layered-web-application/cors-configuration.md
@@ -8,8 +8,8 @@
"Path": "solution-templates/layered-web-application/blob-storing"
},
"Next": {
- "Name": "Helm Charts and Kubernetes",
- "Path": "solution-templates/layered-web-application/helm-charts-and-kubernetes"
+ "Name": "Health Check Configuration",
+ "Path": "solution-templates/layered-web-application/health-check-configuration"
}
}
```
diff --git a/docs/en/solution-templates/layered-web-application/health-check-configuration.md b/docs/en/solution-templates/layered-web-application/health-check-configuration.md
new file mode 100644
index 0000000000..cd1f69c99b
--- /dev/null
+++ b/docs/en/solution-templates/layered-web-application/health-check-configuration.md
@@ -0,0 +1,121 @@
+# Layered Solution: Health Check Configuration
+
+```json
+//[doc-nav]
+{
+ "Previous": {
+ "Name": "CORS Configuration",
+ "Path": "solution-templates/single-layer-web-application/cors-configuration"
+ },
+ "Next": {
+ "Name": "Helm Charts and Kubernetes",
+ "Path": "solution-templates/layered-web-application/helm-charts-and-kubernetes"
+ }
+}
+```
+
+Health Check is a feature that allows applications to monitor their health and diagnose potential issues. The layered solution template comes with pre-configured Health Check system.
+
+In the layered solution template, Health Check configuration is applied in the following cases:
+
+- When [MVC](https://abp.io/docs/latest/solution-templates/single-layer-web-application/web-applications#mvc) is selected as the web application type.
+- When [Blazor Server](https://abp.io/docs/latest/solution-templates/single-layer-web-application/web-applications#blazor-server) is selected as the web application type.
+- When [Blazor WebAssembly](https://abp.io/docs/latest/solution-templates/single-layer-web-application/web-applications#blazor-webassembly) is selected as the web application type (configured at the backend).
+- When [Blazor WebApp](https://abp.io/docs/latest/solution-templates/single-layer-web-application/web-applications#blazor-webapp) is selected as the web application type (configured at the backend).
+- When [Angular](https://abp.io/docs/latest/solution-templates/single-layer-web-application/web-applications#angular) is selected as the web application type (configured at the backend).
+- When [No UI](https://abp.io/docs/latest/solution-templates/single-layer-web-application/web-applications#no-ui) is selected as the web application type (configured at the backend).
+
+### Configuration in `HealthChecksBuilderExtensions.cs`
+
+Health Checks are configured in the `HealthChecksBuilderExtensions` class. This class extends `IServiceCollection` to register health check services and configure health check UI endpoints.
+
+#### Default Configuration
+
+The default setup is as follows:
+
+```csharp
+using HealthChecks.UI.Client;
+using Microsoft.AspNetCore.Diagnostics.HealthChecks;
+
+namespace MyCompanyName.MyProjectName.HealthChecks;
+
+public static class HealthChecksBuilderExtensions
+{
+ public static void AddMyProjectNameHealthChecks(this IServiceCollection services)
+ {
+ // Add your health checks here
+ var healthChecksBuilder = services.AddHealthChecks();
+ healthChecksBuilder.AddCheck