Browse Source

Merge branch 'dev' into Blazorise2.0

pull/24906/head
maliming 1 month ago
parent
commit
02779c1e1a
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 40
      docs/en/studio/release-notes.md
  2. 1
      docs/en/studio/version-mapping.md
  3. 15
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/JQueryForm/JQueryFormScriptContributor.cs
  4. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs
  5. 59
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js
  6. 3
      modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml
  7. 1
      npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
  8. 1
      npm/packs/bootstrap-daterangepicker/package.json

40
docs/en/studio/release-notes.md

@ -9,7 +9,45 @@
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.1.4 (2025-12-30) Latest
## 2.2.1 (2026-02-20) Latest
* Added `abp run` and `abp watch` commands to Studio CLI.
* Added "Start and wait for ready" option in Solution Runner.
* Added Angular support to standard solution and module templates, with Angular templates upgraded to v21.
* Updated ABP Framework to `10.1.0` and LeptonX to `5.0.3`.
* Fixed various Solution Runner issues, including tooltips, log rendering, and stability problems.
## 2.1.9 (2026-01-30)
* Fixed MCP server CLI output problem.
## 2.1.8 (2026-01-29)
* Added Studio MCP server support to allow AI monitoring of applications linked to ABP Studio.
* Added `Open with > Cursor` option.
* Improved task failure handling and related log visibility.
* Fixed various Solution Runner issues, including memory/crash and log scrolling problems.
## 2.1.7 (2026-01-23)
* Added management UI for custom solution commands.
* Showed logs of background jobs.
* Updated Aspire to version `13.1`.
## 2.1.6 (2026-01-13)
* Enhanced runnable task logs window.
* Fixed tooltip line-height problem.
## 2.1.5 (2026-01-13)
* Added `version` command to Studio CLI.
* Updated ABP Framework to `10.0.2` and LeptonX to `5.0.2`.
* Fixed microservice solution build errors for Blazor Server and Angular.
* Improved Solution Runner behavior to avoid re-running applications after build errors.
* Replaced "Clear Cookies" with "Clear site data" in the tools section.
## 2.1.4 (2025-12-30)
* Fixed books sample for blazor-webapp tiered solution.
* Fixed K8s cluster deployment issues for microservices.

1
docs/en/studio/version-mapping.md

@ -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.1 | 10.1.0 |
| 2.1.5 - 2.1.9 | 10.0.2 |
| 2.1.0 - 2.1.4 | 10.0.1 |
| 2.0.0 to 2.0.2 | 10.0.0 |

15
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/JQueryForm/JQueryFormScriptContributor.cs

@ -1,15 +0,0 @@
using System.Collections.Generic;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery;
using Volo.Abp.Modularity;
namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.JQueryForm;
[DependsOn(typeof(JQueryScriptContributor))]
public class JQueryFormScriptContributor : BundleContributor
{
public override void ConfigureBundle(BundleConfigurationContext context)
{
context.Files.AddIfNotContains("/libs/jquery-form/jquery.form.min.js");
}
}

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/Bundling/SharedThemeGlobalScriptContributor.cs

@ -4,7 +4,6 @@ using Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDatepicker;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.BootstrapDaterangepicker;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.DatatablesNetBs5;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQuery;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQueryForm;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.JQueryValidationUnobtrusive;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.Lodash;
using Volo.Abp.AspNetCore.Mvc.UI.Packages.Luxon;
@ -21,7 +20,6 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Bundling;
typeof(BootstrapScriptContributor),
typeof(LodashScriptContributor),
typeof(JQueryValidationUnobtrusiveScriptContributor),
typeof(JQueryFormScriptContributor),
typeof(Select2ScriptContributor),
typeof(DatatablesNetBs5ScriptContributor),
typeof(Sweetalert2ScriptContributor),

59
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/jquery-form/jquery-form-extensions.js

@ -1,5 +1,5 @@
(function ($) {
if (!$ || !$.fn.ajaxForm) {
if (!$) {
return;
}
@ -87,11 +87,64 @@
userOptions.complete && userOptions.complete.apply(this, arguments);
};
return $form.ajaxForm(options);
$form.off("submit.abpAjaxForm").on("submit.abpAjaxForm", function (e) {
e.preventDefault();
var formEl = $form[0];
var formData = new FormData(formEl);
var arr = $form.serializeArray();
if (options.beforeSubmit && options.beforeSubmit.call(formEl, arr, $form) === false) {
return;
}
var method = (options.method || $form.attr("method") || "POST").toUpperCase();
var url = $form.attr("action") || window.location.href;
var ajaxOptions = {
url: url,
type: method,
dataType: options.dataType,
timeout: options.timeout,
headers: {
"X-Requested-With": "XMLHttpRequest"
}
};
if (method === "GET") {
var query = $.param(arr);
if (query) {
url += (url.indexOf("?") >= 0 ? "&" : "?") + query;
}
ajaxOptions.url = url;
} else {
ajaxOptions.data = formData;
ajaxOptions.processData = false;
ajaxOptions.contentType = false;
}
var jqXhrForComplete = null;
$.ajax(ajaxOptions)
.done(function (data, statusText, jqXhr) {
jqXhrForComplete = jqXhr;
options.success && options.success.call(formEl, data, statusText, jqXhr, $form);
})
.fail(function (jqXhr, statusText, errorThrown) {
jqXhrForComplete = jqXhr;
options.error && options.error.call(formEl, jqXhr, statusText, errorThrown);
})
.always(function (dataOrJqXhr, statusText, jqXhrOrError) {
var jqXhr = jqXhrForComplete || (dataOrJqXhr && dataOrJqXhr.status !== undefined ? dataOrJqXhr : jqXhrOrError);
options.complete && options.complete.call(formEl, jqXhr, statusText, $form);
});
});
return $form;
};
$.fn.abpAjaxForm.defaults = {
method: 'POST'
};
})(jQuery);
})(jQuery);

3
modules/account/src/Volo.Abp.Account.Web/Pages/Account/Manage.cshtml

@ -3,11 +3,14 @@
@using Volo.Abp.Account.Localization
@using Volo.Abp.Account.Web.Pages.Account
@using Volo.Abp.AspNetCore.Mvc.UI.Theming
@using Volo.Abp.AspNetCore.Mvc.UI.Layout
@inject IThemeManager ThemeManager
@inject IPageLayout PageLayout
@inject IHtmlLocalizer<AccountResource> L
@model ManageModel
@{
Layout = ThemeManager.CurrentTheme.GetApplicationLayout();
PageLayout.Content.Title = L["MyAccount"].Value;
}
@section scripts {
<abp-script-bundle name="@typeof(ManageModel).FullName"/>

1
npm/packs/aspnetcore.mvc.ui.theme.shared/package.json

@ -16,7 +16,6 @@
"@abp/bootstrap-daterangepicker": "~10.1.0",
"@abp/datatables.net-bs5": "~10.1.0",
"@abp/font-awesome": "~10.1.0",
"@abp/jquery-form": "~10.1.0",
"@abp/jquery-validation-unobtrusive": "~10.1.0",
"@abp/lodash": "~10.1.0",
"@abp/luxon": "~10.1.0",

1
npm/packs/bootstrap-daterangepicker/package.json

@ -10,6 +10,7 @@
"access": "public"
},
"dependencies": {
"@abp/moment": "~10.1.0-rc.2",
"bootstrap-daterangepicker": "^3.1.0"
},
"gitHead": "bb4ea17d5996f01889134c138d00b6c8f858a431",

Loading…
Cancel
Save