From 3abb5145c25db32e778b8be270d643837b15e153 Mon Sep 17 00:00:00 2001
From: Jeffrey Chen <78434827+TCOTC@users.noreply.github.com>
Date: Sun, 26 Oct 2025 18:51:45 +0800
Subject: [PATCH 1/9] :art: Improve settings interface (#16203)
---
app/src/config/about.ts | 18 ++++++++++++++----
app/src/mobile/settings/about.ts | 18 ++++++++++++++----
2 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/app/src/config/about.ts b/app/src/config/about.ts
index 4f4415af2..8008825ae 100644
--- a/app/src/config/about.ts
+++ b/app/src/config/about.ts
@@ -89,10 +89,20 @@ export const about = {
${window.siyuan.languages.about2}
${window.siyuan.languages.about3.replace("${port}", location.port)}
${(() => {
- const ipv4 = window.siyuan.config.localIPs.filter(ip => !(ip.startsWith("[") && ip.endsWith("]")));
- const ipv6 = window.siyuan.config.localIPs.filter(ip => (ip.startsWith("[") && ip.endsWith("]")));
- return `${ipv4.join(" ")}
- ${ipv6.join(" ")}
`;
+ const ipv4Codes: string[] = [];
+ const ipv6Codes: string[] = [];
+ for (const ip of window.siyuan.config.localIPs) {
+ if (!ip.trim()) {
+ break;
+ }
+ if (ip.startsWith("[") && ip.endsWith("]")) {
+ ipv6Codes.push(`${ip}`);
+ } else {
+ ipv4Codes.push(`${ip}`);
+ }
+ }
+ return `${ipv4Codes.join(" ")}
+ ${ipv6Codes.join(" ")}
`;
})()}
${window.siyuan.languages.about18}
diff --git a/app/src/mobile/settings/about.ts b/app/src/mobile/settings/about.ts
index ce2988b94..30222a16c 100644
--- a/app/src/mobile/settings/about.ts
+++ b/app/src/mobile/settings/about.ts
@@ -36,10 +36,20 @@ export const initAbout = () => {
${window.siyuan.languages.about3.replace("${port}", location.port)}
${(() => {
- const ipv4 = window.siyuan.config.localIPs.filter(ip => !(ip.startsWith("[") && ip.endsWith("]")));
- const ipv6 = window.siyuan.config.localIPs.filter(ip => (ip.startsWith("[") && ip.endsWith("]")));
- return `${ipv4.join(" ")}
- ${ipv6.join(" ")}
`;
+ const ipv4Codes: string[] = [];
+ const ipv6Codes: string[] = [];
+ for (const ip of window.siyuan.config.localIPs) {
+ if (!ip.trim()) {
+ break;
+ }
+ if (ip.startsWith("[") && ip.endsWith("]")) {
+ ipv6Codes.push(`${ip}`);
+ } else {
+ ipv4Codes.push(`${ip}`);
+ }
+ }
+ return `${ipv4Codes.join(" ")}
+ ${ipv6Codes.join(" ")}
`;
})()}
${window.siyuan.languages.about18}
From 923f9be756bba53650f580434d645647f5048bd1 Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Sun, 26 Oct 2025 21:18:51 +0800
Subject: [PATCH 2/9] :art: Improve get os info for HarmonyOS
Signed-off-by: Daniel <845765@qq.com>
---
kernel/util/os_mobile.go | 3 +++
1 file changed, 3 insertions(+)
diff --git a/kernel/util/os_mobile.go b/kernel/util/os_mobile.go
index dbb1a1e38..71e36c836 100644
--- a/kernel/util/os_mobile.go
+++ b/kernel/util/os_mobile.go
@@ -25,5 +25,8 @@ func GetOSPlatform() (plat string) {
if ContainerAndroid == Container {
return "Android " + MobileOSVer
}
+ if ContainerHarmony == Container {
+ return "HarmonyOS " + MobileOSVer
+ }
return "Unknown " + MobileOSVer
}
From 630717417625c17292487cc5786f11f185f1c865 Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Sun, 26 Oct 2025 21:37:19 +0800
Subject: [PATCH 3/9] :art: Update ms store appx lang
Signed-off-by: Daniel <845765@qq.com>
---
app/appx/AppxManifest-arm64.xml | 11 +++++++++++
app/appx/AppxManifest.xml | 11 +++++++++++
2 files changed, 22 insertions(+)
diff --git a/app/appx/AppxManifest-arm64.xml b/app/appx/AppxManifest-arm64.xml
index 26abccb0e..4eec375c8 100644
--- a/app/appx/AppxManifest-arm64.xml
+++ b/app/appx/AppxManifest-arm64.xml
@@ -17,7 +17,18 @@
assets\StoreLogo.png
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/appx/AppxManifest.xml b/app/appx/AppxManifest.xml
index f76edd65e..2c6089a04 100644
--- a/app/appx/AppxManifest.xml
+++ b/app/appx/AppxManifest.xml
@@ -17,7 +17,18 @@
assets\StoreLogo.png
+
+
+
+
+
+
+
+
+
+
+
From bc1fe91865fb3162335f3403b19dad65622fd547 Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Sun, 26 Oct 2025 21:52:14 +0800
Subject: [PATCH 4/9] :arrow_up: Upgrade kernel deps
Signed-off-by: Daniel <845765@qq.com>
---
kernel/go.mod | 30 +++++++++++++-------------
kernel/go.sum | 60 +++++++++++++++++++++++++--------------------------
2 files changed, 45 insertions(+), 45 deletions(-)
diff --git a/kernel/go.mod b/kernel/go.mod
index 5f708d991..7d13fdcb8 100644
--- a/kernel/go.mod
+++ b/kernel/go.mod
@@ -58,7 +58,7 @@ require (
github.com/sashabaranov/go-openai v1.41.2
github.com/shirou/gopsutil/v4 v4.25.9
github.com/siyuan-note/dataparser v0.0.0-20250804100744-b41253b236f3
- github.com/siyuan-note/dejavu v0.0.0-20251023133203-b2133372a0ed
+ github.com/siyuan-note/dejavu v0.0.0-20251026135100-e21b0148537e
github.com/siyuan-note/encryption v0.0.0-20250326023622-24a67e6956ec
github.com/siyuan-note/eventbus v0.0.0-20240627125516-396fdb0f0f97
github.com/siyuan-note/filelock v0.0.0-20251010020544-2603449ff16d
@@ -94,23 +94,23 @@ require (
github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 // indirect
github.com/andybalholm/brotli v1.2.0 // indirect
github.com/andybalholm/cascadia v1.3.3 // indirect
- github.com/aws/aws-sdk-go-v2 v1.39.3 // indirect
+ github.com/aws/aws-sdk-go-v2 v1.39.4 // indirect
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2 // indirect
- github.com/aws/aws-sdk-go-v2/config v1.31.14 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.18.18 // indirect
- github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.10 // indirect
- github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.10 // indirect
- github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.10 // indirect
+ github.com/aws/aws-sdk-go-v2/config v1.31.15 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.18.19 // indirect
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.11 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.11 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.11 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 // indirect
- github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.10 // indirect
+ github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.11 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.1 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.10 // indirect
- github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.10 // indirect
- github.com/aws/aws-sdk-go-v2/service/s3 v1.88.6 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.29.7 // indirect
- github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.2 // indirect
- github.com/aws/aws-sdk-go-v2/service/sts v1.38.8 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.2 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.11 // indirect
+ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.11 // indirect
+ github.com/aws/aws-sdk-go-v2/service/s3 v1.88.7 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.29.8 // indirect
+ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sts v1.38.9 // indirect
github.com/aws/smithy-go v1.23.1 // indirect
github.com/bytedance/gopkg v0.1.3 // indirect
github.com/bytedance/sonic v1.14.1 // indirect
diff --git a/kernel/go.sum b/kernel/go.sum
index 451a79ce7..f6fa84b66 100644
--- a/kernel/go.sum
+++ b/kernel/go.sum
@@ -56,40 +56,40 @@ github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de h1:FxWPpzIjnTlhP
github.com/araddon/dateparse v0.0.0-20210429162001-6b43995a97de/go.mod h1:DCaWoUhZrYW9p1lxo/cm8EmUOOzAPSEZNGF2DK1dJgw=
github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef h1:2JGTg6JapxP9/R33ZaagQtAM4EkkSYnIAlOG5EI8gkM=
github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef/go.mod h1:JS7hed4L1fj0hXcyEejnW57/7LCetXggd+vwrRnYeII=
-github.com/aws/aws-sdk-go-v2 v1.39.3 h1:h7xSsanJ4EQJXG5iuW4UqgP7qBopLpj84mpkNx3wPjM=
-github.com/aws/aws-sdk-go-v2 v1.39.3/go.mod h1:yWSxrnioGUZ4WVv9TgMrNUeLV3PFESn/v+6T/Su8gnM=
+github.com/aws/aws-sdk-go-v2 v1.39.4 h1:qTsQKcdQPHnfGYBBs+Btl8QwxJeoWcOcPcixK90mRhg=
+github.com/aws/aws-sdk-go-v2 v1.39.4/go.mod h1:yWSxrnioGUZ4WVv9TgMrNUeLV3PFESn/v+6T/Su8gnM=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2 h1:t9yYsydLYNBk9cJ73rgPhPWqOh/52fcWDQB5b1JsKSY=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.2/go.mod h1:IusfVNTmiSN3t4rhxWFaBAqn+mcNdwKtPcV16eYdgko=
-github.com/aws/aws-sdk-go-v2/config v1.31.14 h1:kj/KpDqvt0UqcEL3WOvCykE9QUpBb6b23hQdnXe+elo=
-github.com/aws/aws-sdk-go-v2/config v1.31.14/go.mod h1:X5PaY6QCzViihn/ru7VxnIamcJQrG9NSeTxuSKm2YtU=
-github.com/aws/aws-sdk-go-v2/credentials v1.18.18 h1:5AfxTvDN0AJoA7rg/yEc0sHhl6/B9fZ+NtiQuOjWGQM=
-github.com/aws/aws-sdk-go-v2/credentials v1.18.18/go.mod h1:m9mE1mJ1s7zI6rrt7V3RQU2SCgUbNaphlfqEksLp+Fs=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.10 h1:UuGVOX48oP4vgQ36oiKmW9RuSeT8jlgQgBFQD+HUiHY=
-github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.10/go.mod h1:vM/Ini41PzvudT4YkQyE/+WiQJiQ6jzeDyU8pQKwCac=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.10 h1:mj/bdWleWEh81DtpdHKkw41IrS+r3uw1J/VQtbwYYp8=
-github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.10/go.mod h1:7+oEMxAZWP8gZCyjcm9VicI0M61Sx4DJtcGfKYv2yKQ=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.10 h1:wh+/mn57yhUrFtLIxyFPh2RgxgQz/u+Yrf7hiHGHqKY=
-github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.10/go.mod h1:7zirD+ryp5gitJJ2m1BBux56ai8RIRDykXZrJSp540w=
+github.com/aws/aws-sdk-go-v2/config v1.31.15 h1:gE3M4xuNXfC/9bG4hyowGm/35uQTi7bUKeYs5e/6uvU=
+github.com/aws/aws-sdk-go-v2/config v1.31.15/go.mod h1:HvnvGJoE2I95KAIW8kkWVPJ4XhdrlvwJpV6pEzFQa8o=
+github.com/aws/aws-sdk-go-v2/credentials v1.18.19 h1:Jc1zzwkSY1QbkEcLujwqRTXOdvW8ppND3jRBb/VhBQc=
+github.com/aws/aws-sdk-go-v2/credentials v1.18.19/go.mod h1:DIfQ9fAk5H0pGtnqfqkbSIzky82qYnGvh06ASQXXg6A=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.11 h1:X7X4YKb+c0rkI6d4uJ5tEMxXgCZ+jZ/D6mvkno8c8Uw=
+github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.11/go.mod h1:EqM6vPZQsZHYvC4Cai35UDg/f5NCEU+vp0WfbVqVcZc=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.11 h1:7AANQZkF3ihM8fbdftpjhken0TP9sBzFbV/Ze/Y4HXA=
+github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.11/go.mod h1:NTF4QCGkm6fzVwncpkFQqoquQyOolcyXfbpC98urj+c=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.11 h1:ShdtWUZT37LCAA4Mw2kJAJtzaszfSHFb5n25sdcv4YE=
+github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.11/go.mod h1:7bUb2sSr2MZ3M/N+VyETLTQtInemHXb/Fl3s8CLzm0Y=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4 h1:WKuaxf++XKWlHWu9ECbMlha8WOEGm0OUEZqm4K/Gcfk=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.4/go.mod h1:ZWy7j6v1vWGmPReu0iSGvRiise4YI5SkR3OHKTZ6Wuc=
-github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.10 h1:FHw90xCTsofzk6vjU808TSuDtDfOOKPNdz5Weyc3tUI=
-github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.10/go.mod h1:n8jdIE/8F3UYkg8O4IGkQpn2qUmapg/1K1yl29/uf/c=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.11 h1:bKgSxk1TW//00PGQqYmrq83c+2myGidEclp+t9pPqVI=
+github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.11/go.mod h1:vrPYCQ6rFHL8jzQA8ppu3gWX18zxjLIDGTeqDxkBmSI=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2 h1:xtuxji5CS0JknaXoACOunXOYOQzgfTvGAc9s2QdCJA4=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.2/go.mod h1:zxwi0DIR0rcRcgdbl7E2MSOvxDyyXGBlScvBkARFaLQ=
-github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.1 h1:ne+eepnDB2Wh5lHKzELgEncIqeVlQ1rSF9fEa4r5I+A=
-github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.1/go.mod h1:u0Jkg0L+dcG1ozUq21uFElmpbmjBnhHR5DELHIme4wg=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.10 h1:DRND0dkCKtJzCj4Xl4OpVbXZgfttY5q712H9Zj7qc/0=
-github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.10/go.mod h1:tGGNmJKOTernmR2+VJ0fCzQRurcPZj9ut60Zu5Fi6us=
-github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.10 h1:DA+Hl5adieRyFvE7pCvBWm3VOZTRexGVkXw33SUqNoY=
-github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.10/go.mod h1:L+A89dH3/gr8L4ecrdzuXUYd1znoko6myzndVGZx/DA=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.88.6 h1:Hcb4yllr4GTOHC/BKjEklxWhciWMHIqzeCI9oYf1OIk=
-github.com/aws/aws-sdk-go-v2/service/s3 v1.88.6/go.mod h1:N/iojY+8bW3MYol9NUMuKimpSbPEur75cuI1SmtonFM=
-github.com/aws/aws-sdk-go-v2/service/sso v1.29.7 h1:fspVFg6qMx0svs40YgRmE7LZXh9VRZvTT35PfdQR6FM=
-github.com/aws/aws-sdk-go-v2/service/sso v1.29.7/go.mod h1:BQTKL3uMECaLaUV3Zc2L4Qybv8C6BIXjuu1dOPyxTQs=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.2 h1:scVnW+NLXasGOhy7HhkdT9AGb6kjgW7fJ5xYkUaqHs0=
-github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.2/go.mod h1:FRNCY3zTEWZXBKm2h5UBUPvCVDOecTad9KhynDyGBc0=
-github.com/aws/aws-sdk-go-v2/service/sts v1.38.8 h1:xSL4IV19pKDASL2fjWXRfTGmZddPiPPZNPpbv6uZQZY=
-github.com/aws/aws-sdk-go-v2/service/sts v1.38.8/go.mod h1:L1xxV3zAdB+qVrVW/pBIrIAnHFWHo6FBbFe4xOGsG/o=
+github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.2 h1:DGFpGybmutVsCuF6vSuLZ25Vh55E3VmsnJmFfjeBx4M=
+github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.2/go.mod h1:hm/wU1HDvXCFEDzOLorQnZZ/CVvPXvWEmHMSmqgQRuA=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.11 h1:GpMf3z2KJa4RnJ0ew3Hac+hRFYLZ9DDjfgXjuW+pB54=
+github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.11/go.mod h1:6MZP3ZI4QQsgUCFTwMZA2V0sEriNQ8k2hmoHF3qjimQ=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.11 h1:weapBOuuFIBEQ9OX/NVW3tFQCvSutyjZYk/ga5jDLPo=
+github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.11/go.mod h1:3C1gN4FmIVLwYSh8etngUS+f1viY6nLCDVtZmrFbDy0=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.88.7 h1:Wer3W0GuaedWT7dv/PiWNZGSQFSTcBY2rZpbiUp5xcA=
+github.com/aws/aws-sdk-go-v2/service/s3 v1.88.7/go.mod h1:UHKgcRSx8PVtvsc1Poxb/Co3PD3wL7P+f49P0+cWtuY=
+github.com/aws/aws-sdk-go-v2/service/sso v1.29.8 h1:M5nimZmugcZUO9wG7iVtROxPhiqyZX6ejS1lxlDPbTU=
+github.com/aws/aws-sdk-go-v2/service/sso v1.29.8/go.mod h1:mbef/pgKhtKRwrigPPs7SSSKZgytzP8PQ6P6JAAdqyM=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.3 h1:S5GuJZpYxE0lKeMHKn+BRTz6PTFpgThyJ+5mYfux7BM=
+github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.3/go.mod h1:X4OF+BTd7HIb3L+tc4UlWHVrpgwZZIVENU15pRDVTI0=
+github.com/aws/aws-sdk-go-v2/service/sts v1.38.9 h1:Ekml5vGg6sHSZLZJQJagefnVe6PmqC2oiRkBq4F7fU0=
+github.com/aws/aws-sdk-go-v2/service/sts v1.38.9/go.mod h1:/e15V+o1zFHWdH3u7lpI3rVBcxszktIKuHKCY2/py+k=
github.com/aws/smithy-go v1.23.1 h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M=
github.com/aws/smithy-go v1.23.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0=
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
@@ -374,8 +374,8 @@ github.com/shurcooL/gofontwoff v0.0.0-20181114050219-180f79e6909d/go.mod h1:05Ut
github.com/simplereach/timeutils v1.2.0/go.mod h1:VVbQDfN/FHRZa1LSqcwo4kNZ62OOyqLLGQKYB3pB0Q8=
github.com/siyuan-note/dataparser v0.0.0-20250804100744-b41253b236f3 h1:EH063L0HD1f82DvddurUmEXS0obXypv8pQrcaC/zNgI=
github.com/siyuan-note/dataparser v0.0.0-20250804100744-b41253b236f3/go.mod h1:8lb+SsWAPQblGbjmwEBsBdJszMCcLeECtB95fv6mReg=
-github.com/siyuan-note/dejavu v0.0.0-20251023133203-b2133372a0ed h1:8Yeyw09xNtCGyjw0Jjun6ScGf5r+WyAGDe94h3Bb9dM=
-github.com/siyuan-note/dejavu v0.0.0-20251023133203-b2133372a0ed/go.mod h1:VUnpgjNMd3/SJwoWFPRb4nAEfvmfajBSMnsmadNptH8=
+github.com/siyuan-note/dejavu v0.0.0-20251026135100-e21b0148537e h1:g1kBny0GUKTyKTOAgw+Y0yBXU31ooK4SRwGVCmqv4eU=
+github.com/siyuan-note/dejavu v0.0.0-20251026135100-e21b0148537e/go.mod h1:2uv9pVysdsZKY3Zkf18Rre/iWlZstgRC/veShQiLIOc=
github.com/siyuan-note/encryption v0.0.0-20250326023622-24a67e6956ec h1:D8Sjwa+7WxP3XrIBscT4PxBZZddZ83/O+5nX1sq6g6g=
github.com/siyuan-note/encryption v0.0.0-20250326023622-24a67e6956ec/go.mod h1:6iAxXPOOAG3+M4bCiKQZTQ+n4gSUx/OyHhsP57dJlS8=
github.com/siyuan-note/eventbus v0.0.0-20240627125516-396fdb0f0f97 h1:lM5v8BfNtbOL5jYwhCdMYBcYtr06IYBKjjSLAPMKTM8=
From 600c888dbcd362043af103bdb1559b2b788f17f2 Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Sun, 26 Oct 2025 21:55:55 +0800
Subject: [PATCH 5/9] :memo: Update changelogs
Signed-off-by: Daniel <845765@qq.com>
---
app/changelogs/v3.3.6/v3.3.6.md | 2 ++
app/changelogs/v3.3.6/v3.3.6_zh_CHT.md | 2 ++
app/changelogs/v3.3.6/v3.3.6_zh_CN.md | 2 ++
3 files changed, 6 insertions(+)
diff --git a/app/changelogs/v3.3.6/v3.3.6.md b/app/changelogs/v3.3.6/v3.3.6.md
index 88ba0c015..70fa7ffc7 100644
--- a/app/changelogs/v3.3.6/v3.3.6.md
+++ b/app/changelogs/v3.3.6/v3.3.6.md
@@ -35,6 +35,8 @@ Below are the detailed changes in this version.
* [Improve FSRS weight initialization](https://github.com/siyuan-note/siyuan/issues/16181)
* [Embed blocks in superblocks support displaying breadcrumbs](https://github.com/siyuan-note/siyuan/issues/16183)
* [Improve data synchronization](https://github.com/siyuan-note/siyuan/issues/16187)
+* [Improve S3 data sync for proxied endpoints (Cloudflare Tunnel)](https://github.com/siyuan-note/siyuan/issues/16199)
+* [Improve IP list address acquisition on HarmonyOS](https://github.com/siyuan-note/siyuan/issues/16202)
### Bugfix
diff --git a/app/changelogs/v3.3.6/v3.3.6_zh_CHT.md b/app/changelogs/v3.3.6/v3.3.6_zh_CHT.md
index bf7a9c67d..32ea1f89d 100644
--- a/app/changelogs/v3.3.6/v3.3.6_zh_CHT.md
+++ b/app/changelogs/v3.3.6/v3.3.6_zh_CHT.md
@@ -35,6 +35,8 @@
* [改進 FSRS 權重初始化](https://github.com/siyuan-note/siyuan/issues/16181)
* [超級區塊下的嵌入區塊支援顯示麵包屑](https://github.com/siyuan-note/siyuan/issues/16183)
* [改進資料同步](https://github.com/siyuan-note/siyuan/issues/16187)
+* [改進 S3 資料同步代理端點(Cloudflare Tunnel)](https://github.com/siyuan-note/siyuan/issues/16199)
+* [改進鴻蒙端 IP 清單取得](https://github.com/siyuan-note/siyuan/issues/16202)
### 修復缺陷
diff --git a/app/changelogs/v3.3.6/v3.3.6_zh_CN.md b/app/changelogs/v3.3.6/v3.3.6_zh_CN.md
index b18f28b6b..b8a353ca7 100644
--- a/app/changelogs/v3.3.6/v3.3.6_zh_CN.md
+++ b/app/changelogs/v3.3.6/v3.3.6_zh_CN.md
@@ -35,6 +35,8 @@
* [改进 FSRS 权重初始化](https://github.com/siyuan-note/siyuan/issues/16181)
* [超级块下的嵌入块支持显示面包屑](https://github.com/siyuan-note/siyuan/issues/16183)
* [改进数据同步](https://github.com/siyuan-note/siyuan/issues/16187)
+* [改进 S3 数据同步代理端点(Cloudflare Tunnel)](https://github.com/siyuan-note/siyuan/issues/16199)
+* [改进鸿蒙端 IP 列表获取](https://github.com/siyuan-note/siyuan/issues/16202)
### 修复缺陷
From d5b78df9a3dbdca164168332362e0e41b632b5d2 Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Mon, 27 Oct 2025 11:30:53 +0800
Subject: [PATCH 6/9] :arrow_up: Upgrade kernel deps
Signed-off-by: Daniel <845765@qq.com>
---
kernel/go.mod | 2 +-
kernel/go.sum | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/kernel/go.mod b/kernel/go.mod
index 7d13fdcb8..7787f371d 100644
--- a/kernel/go.mod
+++ b/kernel/go.mod
@@ -58,7 +58,7 @@ require (
github.com/sashabaranov/go-openai v1.41.2
github.com/shirou/gopsutil/v4 v4.25.9
github.com/siyuan-note/dataparser v0.0.0-20250804100744-b41253b236f3
- github.com/siyuan-note/dejavu v0.0.0-20251026135100-e21b0148537e
+ github.com/siyuan-note/dejavu v0.0.0-20251027015737-2f9c052b7de3
github.com/siyuan-note/encryption v0.0.0-20250326023622-24a67e6956ec
github.com/siyuan-note/eventbus v0.0.0-20240627125516-396fdb0f0f97
github.com/siyuan-note/filelock v0.0.0-20251010020544-2603449ff16d
diff --git a/kernel/go.sum b/kernel/go.sum
index f6fa84b66..927b77018 100644
--- a/kernel/go.sum
+++ b/kernel/go.sum
@@ -374,8 +374,8 @@ github.com/shurcooL/gofontwoff v0.0.0-20181114050219-180f79e6909d/go.mod h1:05Ut
github.com/simplereach/timeutils v1.2.0/go.mod h1:VVbQDfN/FHRZa1LSqcwo4kNZ62OOyqLLGQKYB3pB0Q8=
github.com/siyuan-note/dataparser v0.0.0-20250804100744-b41253b236f3 h1:EH063L0HD1f82DvddurUmEXS0obXypv8pQrcaC/zNgI=
github.com/siyuan-note/dataparser v0.0.0-20250804100744-b41253b236f3/go.mod h1:8lb+SsWAPQblGbjmwEBsBdJszMCcLeECtB95fv6mReg=
-github.com/siyuan-note/dejavu v0.0.0-20251026135100-e21b0148537e h1:g1kBny0GUKTyKTOAgw+Y0yBXU31ooK4SRwGVCmqv4eU=
-github.com/siyuan-note/dejavu v0.0.0-20251026135100-e21b0148537e/go.mod h1:2uv9pVysdsZKY3Zkf18Rre/iWlZstgRC/veShQiLIOc=
+github.com/siyuan-note/dejavu v0.0.0-20251027015737-2f9c052b7de3 h1:UpCefZAUhztZFp9njYjjeewiV+b6D/mnUpE8ip9QR/g=
+github.com/siyuan-note/dejavu v0.0.0-20251027015737-2f9c052b7de3/go.mod h1:2uv9pVysdsZKY3Zkf18Rre/iWlZstgRC/veShQiLIOc=
github.com/siyuan-note/encryption v0.0.0-20250326023622-24a67e6956ec h1:D8Sjwa+7WxP3XrIBscT4PxBZZddZ83/O+5nX1sq6g6g=
github.com/siyuan-note/encryption v0.0.0-20250326023622-24a67e6956ec/go.mod h1:6iAxXPOOAG3+M4bCiKQZTQ+n4gSUx/OyHhsP57dJlS8=
github.com/siyuan-note/eventbus v0.0.0-20240627125516-396fdb0f0f97 h1:lM5v8BfNtbOL5jYwhCdMYBcYtr06IYBKjjSLAPMKTM8=
From 1f464ca42b4e0606aefc7f46b1e67e29602cb25f Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Mon, 27 Oct 2025 11:31:11 +0800
Subject: [PATCH 7/9] :art: Improve the database rollup and asset field
filtering https://github.com/siyuan-note/siyuan/issues/16126
Signed-off-by: Daniel <845765@qq.com>
---
kernel/av/filter.go | 105 +++++++++++++++++++++++++++++++++++++-------
1 file changed, 88 insertions(+), 17 deletions(-)
diff --git a/kernel/av/filter.go b/kernel/av/filter.go
index 876d03a85..587293c56 100644
--- a/kernel/av/filter.go
+++ b/kernel/av/filter.go
@@ -17,6 +17,7 @@
package av
import (
+ "reflect"
"strings"
"time"
@@ -192,40 +193,88 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
switch filter.Qualifier {
case FilterQuantifierUndefined, FilterQuantifierAny:
- if len(value.Rollup.Contents) < len(relVal.Relation.Contents) { // 说明汇总的目标字段存在空值
- if FilterOperatorIsEmpty == filter.Operator {
+ if FilterOperatorIsEmpty == filter.Operator {
+ if 1 > len(value.Rollup.Contents) {
return true
- } else if FilterOperatorIsNotEmpty == filter.Operator {
- if 0 < len(value.Rollup.Contents) {
+ }
+
+ if len(value.Rollup.Contents) < len(relVal.Relation.Contents) { // 说明汇总的目标字段存在空值
+ return true
+ }
+
+ for _, c := range value.Rollup.Contents {
+ if v := c.GetValByType(c.Type); nil == v || reflect.ValueOf(v).IsNil() {
return true
}
}
+ return false
+ } else if FilterOperatorIsNotEmpty == filter.Operator {
+ if 1 > len(value.Rollup.Contents) {
+ return false
+ }
+
+ for _, c := range value.Rollup.Contents {
+ if v := c.GetValByType(c.Type); nil != v && !reflect.ValueOf(v).IsNil() {
+ return true
+ }
+ }
+ return false
}
if 1 > len(filter.Value.Rollup.Contents) {
return true
}
+ if v := filter.Value.GetValByType(filter.Value.Rollup.Contents[0].Type); nil == v || reflect.ValueOf(v).IsNil() {
+ return true
+ }
+
for _, content := range value.Rollup.Contents {
if content.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
return true
}
}
case FilterQuantifierAll:
- if len(value.Rollup.Contents) < len(relVal.Relation.Contents) {
- if FilterOperatorIsEmpty == filter.Operator {
- if 1 > len(value.Rollup.Contents) {
- return true
- }
- } else if FilterOperatorIsNotEmpty == filter.Operator {
+ if FilterOperatorIsEmpty == filter.Operator {
+ if 1 > len(value.Rollup.Contents) {
+ return true
+ }
+
+ if len(value.Rollup.Contents) < len(relVal.Relation.Contents) {
return false
}
+
+ for _, c := range value.Rollup.Contents {
+ if v := c.GetValByType(c.Type); nil != v && !reflect.ValueOf(v).IsNil() {
+ return false
+ }
+ }
+ return true
+ } else if FilterOperatorIsNotEmpty == filter.Operator {
+ if 1 > len(value.Rollup.Contents) {
+ return false
+ }
+
+ if len(value.Rollup.Contents) < len(relVal.Relation.Contents) {
+ return false
+ }
+
+ for _, c := range value.Rollup.Contents {
+ if v := c.GetValByType(c.Type); nil == v || reflect.ValueOf(v).IsNil() {
+ return false
+ }
+ }
+ return true
}
if 1 > len(filter.Value.Rollup.Contents) {
return true
}
+ if v := filter.Value.GetValByType(filter.Value.Rollup.Contents[0].Type); nil == v || reflect.ValueOf(v).IsNil() {
+ return true
+ }
+
for _, content := range value.Rollup.Contents {
if !content.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
return false
@@ -234,19 +283,41 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
return true
case FilterQuantifierNone:
if FilterOperatorIsEmpty == filter.Operator {
- if len(value.Rollup.Contents) < len(relVal.Relation.Contents) || 1 > len(value.Rollup.Contents) {
+ if 1 > len(value.Rollup.Contents) {
return false
}
+
+ if len(value.Rollup.Contents) < len(relVal.Relation.Contents) {
+ return true
+ }
+
+ for _, c := range value.Rollup.Contents {
+ if v := c.GetValByType(c.Type); nil == v || reflect.ValueOf(v).IsNil() {
+ return false
+ }
+ }
+ return true
} else if FilterOperatorIsNotEmpty == filter.Operator {
if 1 > len(value.Rollup.Contents) {
return true
}
+
+ for _, c := range value.Rollup.Contents {
+ if v := c.GetValByType(c.Type); nil != v && !reflect.ValueOf(v).IsNil() {
+ return false
+ }
+ }
+ return true
}
if 1 > len(filter.Value.Rollup.Contents) {
return true
}
+ if v := filter.Value.GetValByType(filter.Value.Rollup.Contents[0].Type); nil == v || reflect.ValueOf(v).IsNil() {
+ return true
+ }
+
for _, content := range value.Rollup.Contents {
if content.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
return false
@@ -312,7 +383,7 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
}
for _, asset := range value.MAsset {
- if "" == strings.TrimSpace(asset.Content) {
+ if "" == strings.TrimSpace(asset.Name) && "" == strings.TrimSpace(asset.Content) {
return true
}
}
@@ -323,7 +394,7 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
}
for _, asset := range value.MAsset {
- if "" != strings.TrimSpace(asset.Content) {
+ if "" != strings.TrimSpace(asset.Name) || "" != strings.TrimSpace(asset.Content) {
return true
}
}
@@ -354,7 +425,7 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
}
for _, asset := range value.MAsset {
- if "" != strings.TrimSpace(asset.Content) {
+ if "" != strings.TrimSpace(asset.Name) || "" != strings.TrimSpace(asset.Content) {
return false
}
}
@@ -365,7 +436,7 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
}
for _, asset := range value.MAsset {
- if "" == strings.TrimSpace(asset.Content) {
+ if "" == strings.TrimSpace(asset.Name) && "" == strings.TrimSpace(asset.Content) {
return false
}
}
@@ -397,7 +468,7 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
}
for _, asset := range value.MAsset {
- if "" == strings.TrimSpace(asset.Content) {
+ if "" == strings.TrimSpace(asset.Name) && "" == strings.TrimSpace(asset.Content) {
return false
}
}
@@ -408,7 +479,7 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
}
for _, asset := range value.MAsset {
- if "" != strings.TrimSpace(asset.Content) {
+ if "" != strings.TrimSpace(asset.Name) || "" != strings.TrimSpace(asset.Content) {
return false
}
}
From ea95d62801a6486db06ae158ac0b268b03f3cb38 Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Mon, 27 Oct 2025 16:57:52 +0800
Subject: [PATCH 8/9] :memo: Update changelogs
Signed-off-by: Daniel <845765@qq.com>
---
app/changelogs/v3.3.6/v3.3.6.md | 1 +
app/changelogs/v3.3.6/v3.3.6_zh_CHT.md | 1 +
app/changelogs/v3.3.6/v3.3.6_zh_CN.md | 1 +
3 files changed, 3 insertions(+)
diff --git a/app/changelogs/v3.3.6/v3.3.6.md b/app/changelogs/v3.3.6/v3.3.6.md
index 70fa7ffc7..8e80ac09c 100644
--- a/app/changelogs/v3.3.6/v3.3.6.md
+++ b/app/changelogs/v3.3.6/v3.3.6.md
@@ -35,6 +35,7 @@ Below are the detailed changes in this version.
* [Improve FSRS weight initialization](https://github.com/siyuan-note/siyuan/issues/16181)
* [Embed blocks in superblocks support displaying breadcrumbs](https://github.com/siyuan-note/siyuan/issues/16183)
* [Improve data synchronization](https://github.com/siyuan-note/siyuan/issues/16187)
+* [Improve list item editing](https://github.com/siyuan-note/siyuan/issues/16196)
* [Improve S3 data sync for proxied endpoints (Cloudflare Tunnel)](https://github.com/siyuan-note/siyuan/issues/16199)
* [Improve IP list address acquisition on HarmonyOS](https://github.com/siyuan-note/siyuan/issues/16202)
diff --git a/app/changelogs/v3.3.6/v3.3.6_zh_CHT.md b/app/changelogs/v3.3.6/v3.3.6_zh_CHT.md
index 32ea1f89d..0f84de215 100644
--- a/app/changelogs/v3.3.6/v3.3.6_zh_CHT.md
+++ b/app/changelogs/v3.3.6/v3.3.6_zh_CHT.md
@@ -35,6 +35,7 @@
* [改進 FSRS 權重初始化](https://github.com/siyuan-note/siyuan/issues/16181)
* [超級區塊下的嵌入區塊支援顯示麵包屑](https://github.com/siyuan-note/siyuan/issues/16183)
* [改進資料同步](https://github.com/siyuan-note/siyuan/issues/16187)
+* [改進清單項目編輯](https://github.com/siyuan-note/siyuan/issues/16196)
* [改進 S3 資料同步代理端點(Cloudflare Tunnel)](https://github.com/siyuan-note/siyuan/issues/16199)
* [改進鴻蒙端 IP 清單取得](https://github.com/siyuan-note/siyuan/issues/16202)
diff --git a/app/changelogs/v3.3.6/v3.3.6_zh_CN.md b/app/changelogs/v3.3.6/v3.3.6_zh_CN.md
index b8a353ca7..f345ca706 100644
--- a/app/changelogs/v3.3.6/v3.3.6_zh_CN.md
+++ b/app/changelogs/v3.3.6/v3.3.6_zh_CN.md
@@ -35,6 +35,7 @@
* [改进 FSRS 权重初始化](https://github.com/siyuan-note/siyuan/issues/16181)
* [超级块下的嵌入块支持显示面包屑](https://github.com/siyuan-note/siyuan/issues/16183)
* [改进数据同步](https://github.com/siyuan-note/siyuan/issues/16187)
+* [改进列表项编辑](https://github.com/siyuan-note/siyuan/issues/16196)
* [改进 S3 数据同步代理端点(Cloudflare Tunnel)](https://github.com/siyuan-note/siyuan/issues/16199)
* [改进鸿蒙端 IP 列表获取](https://github.com/siyuan-note/siyuan/issues/16202)
From d154b050837e70985fe8e9ebb5a5024d13d25582 Mon Sep 17 00:00:00 2001
From: Daniel <845765@qq.com>
Date: Mon, 27 Oct 2025 17:14:25 +0800
Subject: [PATCH 9/9] :technologist: Add an internal kernel API
`/api/outline/getDocOutlineAndStorage`
https://github.com/siyuan-note/siyuan/issues/16206
Signed-off-by: Daniel <845765@qq.com>
---
kernel/api/outline.go | 35 +++++++++++++++++++++++++++++++++++
kernel/api/router.go | 5 ++++-
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/kernel/api/outline.go b/kernel/api/outline.go
index 83c35c6e3..893a278ef 100644
--- a/kernel/api/outline.go
+++ b/kernel/api/outline.go
@@ -25,6 +25,41 @@ import (
"github.com/siyuan-note/siyuan/kernel/util"
)
+func getDocOutlineAndStorage(c *gin.Context) {
+ ret := gulu.Ret.NewResult()
+ defer c.JSON(http.StatusOK, ret)
+
+ arg, ok := util.JsonArg(c, ret)
+ if !ok {
+ return
+ }
+
+ if nil == arg["id"] {
+ return
+ }
+ preview := false
+ if previewArg := arg["preview"]; nil != previewArg {
+ preview = previewArg.(bool)
+ }
+ rootID := arg["id"].(string)
+ data, err := model.GetOutlineStorage(rootID)
+ if err != nil {
+ ret.Code = -1
+ ret.Msg = err.Error()
+ return
+ }
+ headings, err := model.Outline(rootID, preview)
+ if err != nil {
+ ret.Code = 1
+ ret.Msg = err.Error()
+ return
+ }
+ ret.Data = map[string]any{
+ "headings": headings,
+ "storage": data,
+ }
+}
+
func getDocOutline(c *gin.Context) {
ret := gulu.Ret.NewResult()
defer c.JSON(http.StatusOK, ret)
diff --git a/kernel/api/router.go b/kernel/api/router.go
index 4dfa9b025..09346da5d 100644
--- a/kernel/api/router.go
+++ b/kernel/api/router.go
@@ -81,7 +81,7 @@ func ServeAPI(ginServer *gin.Engine) {
ginServer.Handle("POST", "/api/storage/updateRecentDocViewTime", model.CheckAuth, updateRecentDocViewTime)
ginServer.Handle("POST", "/api/storage/updateRecentDocCloseTime", model.CheckAuth, updateRecentDocCloseTime)
ginServer.Handle("POST", "/api/storage/updateRecentDocOpenTime", model.CheckAuth, updateRecentDocOpenTime)
-
+
ginServer.Handle("POST", "/api/storage/getOutlineStorage", model.CheckAuth, getOutlineStorage)
ginServer.Handle("POST", "/api/storage/setOutlineStorage", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, setOutlineStorage)
ginServer.Handle("POST", "/api/storage/removeOutlineStorage", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, removeOutlineStorage)
@@ -151,9 +151,12 @@ func ServeAPI(ginServer *gin.Engine) {
ginServer.Handle("POST", "/api/history/getHistoryItems", model.CheckAuth, model.CheckAdminRole, getHistoryItems)
ginServer.Handle("POST", "/api/outline/getDocOutline", model.CheckAuth, getDocOutline)
+ ginServer.Handle("POST", "/api/outline/getDocOutlineAndStorage", model.CheckAuth, getDocOutlineAndStorage)
+
ginServer.Handle("POST", "/api/bookmark/getBookmark", model.CheckAuth, getBookmark)
ginServer.Handle("POST", "/api/bookmark/renameBookmark", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, renameBookmark)
ginServer.Handle("POST", "/api/bookmark/removeBookmark", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, removeBookmark)
+
ginServer.Handle("POST", "/api/tag/getTag", model.CheckAuth, getTag)
ginServer.Handle("POST", "/api/tag/renameTag", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, renameTag)
ginServer.Handle("POST", "/api/tag/removeTag", model.CheckAuth, model.CheckAdminRole, model.CheckReadonly, removeTag)