diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ef17c38..61553e6d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,61 @@
# Changelog
+## [v2.1.0](https://github.com/soybeanjs/soybean-admin/compare/v2.0.2...v2.1.0) (2026-03-09)
+
+### 🚨 Breaking Changes
+
+- **projects**: integrate oxlint and oxfmt - by **soybeanfe** [(6ff74)](https://github.com/soybeanjs/soybean-admin/commit/6ff74c0c)
+
+### 🚀 Features
+
+- **components**:
+ - Column settings support fixed columns. - by @m-xlsea [(70658)](https://github.com/soybeanjs/soybean-admin/commit/70658643)
+ - Add “Select All” to TableColumnSetting - by @wenyuanw [(0081b)](https://github.com/soybeanjs/soybean-admin/commit/0081b9c0)
+- **logo**:
+ - use new logo - by @soybeanjs [(5aac5)](https://github.com/soybeanjs/soybean-admin/commit/5aac540a)
+- **projects**:
+ - add the plugin: vite-plugin-vue-transition-root-validator, to optimize the development experience. - by **Azir-11** [(30e3c)](https://github.com/soybeanjs/soybean-admin/commit/30e3cdc7)
+- **types**:
+ - Added type definition `force` to router push options. - by @m-xlsea [(a3794)](https://github.com/soybeanjs/soybean-admin/commit/a37949f2)
+- **workflows**:
+ - add opencode workflow for issue and PR comment triggers - by @soybeanjs [(dacee)](https://github.com/soybeanjs/soybean-admin/commit/dacee143)
+
+### 🐞 Bug Fixes
+
+- **projects**:
+ - fix the long list TableColumnSetting component exceeds the viewport. - by **skyfeiz** [(cbfb9)](https://github.com/soybeanjs/soybean-admin/commit/cbfb932f)
+ - fix NButton props conflicts. - by **skyfeiz** [(54107)](https://github.com/soybeanjs/soybean-admin/commit/54107aca)
+ - ensure HTML lang attribute is updated when setting locale - by @pan0xc [(f96c3)](https://github.com/soybeanjs/soybean-admin/commit/f96c3c9e)
+ - correct HTML lang attribute to standard format - by @pan0xc [(b520d)](https://github.com/soybeanjs/soybean-admin/commit/b520db3e)
+- **router**:
+ - simplify route guard logic and remove unnecessary next calls - by **soybeanfe** [(3c2cb)](https://github.com/soybeanjs/soybean-admin/commit/3c2cbb74)
+
+### 🛠 Optimizations
+
+- **projects**:
+ - modify the injection location of the token. - by **Azir-11** [(9d48c)](https://github.com/soybeanjs/soybean-admin/commit/9d48ca5f)
+ - optimize unocss config - by **soybeanfe** [(6fc6f)](https://github.com/soybeanjs/soybean-admin/commit/6fc6f1c9)
+
+### 📖 Documentation
+
+- **projects**: V2 has been released. - by **skyfeiz** [(d7394)](https://github.com/soybeanjs/soybean-admin/commit/d73947a5)
+
+### 🏡 Chore
+
+- **deps**:
+ - update deps - by @soybeanjs [(232e1)](https://github.com/soybeanjs/soybean-admin/commit/232e1ac4)
+ - update deps - by @soybeanjs [(2a023)](https://github.com/soybeanjs/soybean-admin/commit/2a0231da)
+ - update deps - by **soybeanfe** [(b867c)](https://github.com/soybeanjs/soybean-admin/commit/b867c290)
+
+### 🎨 Styles
+
+- **projects**: fix lint code and format code - by **soybeanfe** [(781a1)](https://github.com/soybeanjs/soybean-admin/commit/781a18f4)
+
+### ❤️ Contributors
+
+[](https://github.com/pan0xc) [](https://github.com/m-xlsea) [](https://github.com/soybeanjs) [](https://github.com/wenyuanw)
+[soybeanfe](mailto:honghuangdc@gmail.com), [Azir-11](mailto:2075125282@qq.com), [skyfeiz](mailto:webzhangfei@163.com),
+
## [v2.0.2](https://github.com/soybeanjs/soybean-admin/compare/v2.0.1...v2.0.2) (2025-12-23)
### 🐞 Bug Fixes
diff --git a/package.json b/package.json
index 0c93cb09..ab97f15c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "soybean-admin",
- "version": "2.0.2",
+ "version": "2.1.0",
"description": "A fresh and elegant admin template, based on Vue3、Vite7、TypeScript、NaiveUI and UnoCSS. 一个基于Vue3、Vite7、TypeScript、NaiveUI and UnoCSS的清新优雅的中后台模版。",
"keywords": [
"TypeScript",
diff --git a/packages/alova/package.json b/packages/alova/package.json
index fb19625e..7e85578d 100644
--- a/packages/alova/package.json
+++ b/packages/alova/package.json
@@ -1,6 +1,6 @@
{
"name": "@sa/alova",
- "version": "2.0.2",
+ "version": "2.1.0",
"typesVersions": {
"*": {
"*": [
diff --git a/packages/axios/package.json b/packages/axios/package.json
index dd71ac88..62d4c710 100644
--- a/packages/axios/package.json
+++ b/packages/axios/package.json
@@ -1,6 +1,6 @@
{
"name": "@sa/axios",
- "version": "2.0.2",
+ "version": "2.1.0",
"typesVersions": {
"*": {
"*": [
diff --git a/packages/color/package.json b/packages/color/package.json
index 815eaa7e..a7545612 100644
--- a/packages/color/package.json
+++ b/packages/color/package.json
@@ -1,6 +1,6 @@
{
"name": "@sa/color",
- "version": "2.0.2",
+ "version": "2.1.0",
"typesVersions": {
"*": {
"*": [
diff --git a/packages/hooks/package.json b/packages/hooks/package.json
index f7d309fd..271a5aa3 100644
--- a/packages/hooks/package.json
+++ b/packages/hooks/package.json
@@ -1,6 +1,6 @@
{
"name": "@sa/hooks",
- "version": "2.0.2",
+ "version": "2.1.0",
"typesVersions": {
"*": {
"*": [
diff --git a/packages/materials/package.json b/packages/materials/package.json
index 69d37867..f0c780ce 100644
--- a/packages/materials/package.json
+++ b/packages/materials/package.json
@@ -1,6 +1,6 @@
{
"name": "@sa/materials",
- "version": "2.0.2",
+ "version": "2.1.0",
"typesVersions": {
"*": {
"*": [
diff --git a/packages/scripts/package.json b/packages/scripts/package.json
index 8f159241..a7e214d1 100644
--- a/packages/scripts/package.json
+++ b/packages/scripts/package.json
@@ -1,6 +1,6 @@
{
"name": "@sa/scripts",
- "version": "2.0.2",
+ "version": "2.1.0",
"bin": {
"sa": "./bin.ts"
},
diff --git a/packages/uno-preset/package.json b/packages/uno-preset/package.json
index bb299326..e76a9402 100644
--- a/packages/uno-preset/package.json
+++ b/packages/uno-preset/package.json
@@ -1,6 +1,6 @@
{
"name": "@sa/uno-preset",
- "version": "2.0.2",
+ "version": "2.1.0",
"typesVersions": {
"*": {
"*": [
diff --git a/packages/utils/package.json b/packages/utils/package.json
index 289dd71d..d847fd8d 100644
--- a/packages/utils/package.json
+++ b/packages/utils/package.json
@@ -1,6 +1,6 @@
{
"name": "@sa/utils",
- "version": "2.0.2",
+ "version": "2.1.0",
"typesVersions": {
"*": {
"*": [