Browse Source
Merge pull request #25240 from abpframework/auto-merge/rel-10-3/4483
Merge branch dev with rel-10.3
pull/25243/head
Volosoft Agent
3 weeks ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with
62 additions and
42 deletions
docs/en/studio/release-notes.md
docs/en/studio/version-mapping.md
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/create.js
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/update.js
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/create.js
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/update.js
@ -9,7 +9,21 @@
This document contains **brief release notes** for each ABP Studio release. Release notes only include **major features** and **visible enhancements** . Therefore, they don't include all the development done in the related version.
## 2.2.4 (2026-03-25) Latest
## 2.2.6 (2026-04-08) Latest
- Disable Scriban 7.0 cumulative output limit for template rendering
## 2.2.5 (2026-04-08)
- Upgraded GPT-5 → GPT-5.4 and improved AI management (providers, blob storage, CLI options)
- Fixed critical build issues (MongoDB, MAUI) and improved overall stability
- Enhanced monitoring (HTTP requests & exceptions)
- Added DBMS auto-detection from connection string
- Upgraded to ABP 10.2 and Scriban 7.0.0
- Improved developer experience and telemetry (PostHog)
- Minor UI fixes and workflow adjustments (manual build trigger)
## 2.2.4 (2026-03-25)
- Add `Template Create and Build` workflow
- Disable NuGetAudit in template common.props to prevent CLI deadlock during initial migration
@ -11,6 +11,7 @@ This document provides a general overview of the relationship between various ve
| **ABP Studio Version** | **ABP Version of Startup Template** |
|------------------------|---------------------------|
| 2.2.5 - 2.2.6 | 10.2.0 |
| 2.2.2 - 2.2.4 | 10.1.1 |
| 2.2.1 | 10.1.0 |
| 2.1.5 - 2.1.9 | 10.0.2 |
@ -43,7 +44,6 @@ This document provides a general overview of the relationship between various ve
| 0.7.0 to 0.7.3 | 8.2.0 |
| 0.6.8 - 0.6.9 | 8.1.3 |
| 0.6.7 | 8.1.1 |
# Working with ABP's Preview Versions
By default, ABP Studio uses stable versions to create solutions. Therefore, if you want to create a solution with a preview version, first you need to create a solution and then switch your solution to the preview version from the ABP Studio UI:
@ -55,19 +55,20 @@ $(function () {
await submitCoverImage ( ) ;
$formCreate . ajaxSubmit ( {
success : function ( result ) {
if ( isTagsEnabled ) {
submitEntityTags ( result . id ) ;
}
else {
finishSaving ( ) ;
}
} ,
error : function ( result ) {
abp . notify . error ( result . responseJSON . error . message ) ;
abp . ui . clearBusy ( ) ;
abp . ajax ( {
url : $formCreate . attr ( "action" ) ,
data : new FormData ( $formCreate [ 0 ] ) ,
processData : false ,
contentType : false
} ) . done ( function ( result ) {
if ( isTagsEnabled ) {
submitEntityTags ( result . id ) ;
}
else {
finishSaving ( ) ;
}
} ) . fail ( function ( ) {
abp . ui . clearBusy ( ) ;
} ) ;
}
}
@ -42,19 +42,20 @@ $(function () {
await submitCoverImage ( ) ;
$formUpdate . ajaxSubmit ( {
success : function ( result ) {
if ( isTagsEnabled ) {
submitEntityTags ( $blogPostIdInput . val ( ) ) ;
}
else {
finishSaving ( result ) ;
}
} ,
error : function ( result ) {
abp . ui . clearBusy ( ) ;
abp . notify . error ( result . responseJSON . error . message ) ;
abp . ajax ( {
url : $formUpdate . attr ( "action" ) ,
data : new FormData ( $formUpdate [ 0 ] ) ,
processData : false ,
contentType : false
} ) . done ( function ( result ) {
if ( isTagsEnabled ) {
submitEntityTags ( $blogPostIdInput . val ( ) ) ;
}
else {
finishSaving ( result ) ;
}
} ) . fail ( function ( ) {
abp . ui . clearBusy ( ) ;
} ) ;
}
else {
@ -36,16 +36,16 @@ $(function () {
$ ( "#ViewModel_Style" ) . val ( styleEditor . getValue ( ) ) ;
$ ( "#ViewModel_Script" ) . val ( scriptEditor . getValue ( ) ) ;
$createForm . ajaxSubmit ( {
success : function ( result ) {
abp . notify . success ( l ( 'SavedSuccessfully' ) ) ;
abp . ui . clearBusy ( ) ;
location . href = "../Pages" ;
} ,
error : function ( result ) {
abp . ui . clearBusy ( ) ;
abp . notify . error ( result . responseJSON . error . message ) ;
}
abp . ajax ( {
url : $createForm . attr ( "action" ) ,
data : new FormData ( $createForm [ 0 ] ) ,
processData : false ,
contentType : false
} ) . done ( function ( ) {
abp . notify . success ( l ( 'SavedSuccessfully' ) ) ;
location . href = "../Pages" ;
} ) . always ( function ( ) {
abp . ui . clearBusy ( ) ;
} ) ;
}
} ) ;
@ -34,12 +34,16 @@ $(function () {
$ ( "#ViewModel_Style" ) . val ( styleEditor . getValue ( ) ) ;
$ ( "#ViewModel_Script" ) . val ( scriptEditor . getValue ( ) ) ;
$formUpdate . ajaxSubmit ( {
success : function ( result ) {
abp . notify . success ( l ( 'SavedSuccessfully' ) ) ;
abp . ui . clearBusy ( ) ;
location . href = "../../Pages" ;
}
abp . ajax ( {
url : $formUpdate . attr ( "action" ) ,
data : new FormData ( $formUpdate [ 0 ] ) ,
processData : false ,
contentType : false
} ) . done ( function ( ) {
abp . notify . success ( l ( 'SavedSuccessfully' ) ) ;
location . href = "../../Pages" ;
} ) . always ( function ( ) {
abp . ui . clearBusy ( ) ;
} ) ;
}
} ) ;