Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-10-27 17:35:33 +08:00
commit 5e4915a512
13 changed files with 234 additions and 71 deletions

View file

@ -17,7 +17,18 @@
<Logo>assets\StoreLogo.png</Logo>
</Properties>
<Resources>
<Resource Language="ar-SA"/>
<Resource Language="de-DE"/>
<Resource Language="en-US"/>
<Resource Language="es-ES"/>
<Resource Language="fr-FR"/>
<Resource Language="he-IL"/>
<Resource Language="it-IT"/>
<Resource Language="ja-JP"/>
<Resource Language="pl-PL"/>
<Resource Language="pt-BR"/>
<Resource Language="ru-RU"/>
<Resource Language="zh-TW"/>
<Resource Language="zh-CN"/>
</Resources>
<Dependencies>

View file

@ -17,7 +17,18 @@
<Logo>assets\StoreLogo.png</Logo>
</Properties>
<Resources>
<Resource Language="ar-SA"/>
<Resource Language="de-DE"/>
<Resource Language="en-US"/>
<Resource Language="es-ES"/>
<Resource Language="fr-FR"/>
<Resource Language="he-IL"/>
<Resource Language="it-IT"/>
<Resource Language="ja-JP"/>
<Resource Language="pl-PL"/>
<Resource Language="pt-BR"/>
<Resource Language="ru-RU"/>
<Resource Language="zh-TW"/>
<Resource Language="zh-CN"/>
</Resources>
<Dependencies>

View file

@ -35,6 +35,9 @@ 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)
### Bugfix

View file

@ -35,6 +35,9 @@
* [改進 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)
### 修復缺陷

View file

@ -35,6 +35,9 @@
* [改进 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)
### 修复缺陷

View file

@ -89,10 +89,20 @@ export const about = {
${window.siyuan.languages.about2}
<div class="b3-label__text">${window.siyuan.languages.about3.replace("${port}", location.port)}</div>
${(() => {
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 `<div class="b3-label__text${ipv4.length > 0 ? "" : " fn__none"}"><code class="fn__code">${ipv4.join("</code> <code class='fn__code'>")}</code></div>
<div class="b3-label__text${ipv6.length > 0 ? "" : " fn__none"}"><code class="fn__code">${ipv6.join("</code> <code class='fn__code'>")}</code></div>`;
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(`<code class="fn__code">${ip}</code>`);
} else {
ipv4Codes.push(`<code class="fn__code">${ip}</code>`);
}
}
return `<div class="b3-label__text${ipv4Codes.length ? "" : " fn__none"}">${ipv4Codes.join(" ")}</div>
<div class="b3-label__text${ipv6Codes.length ? "" : " fn__none"}">${ipv6Codes.join(" ")}</div>`;
})()}
<div class="b3-label__text">${window.siyuan.languages.about18}</div>
</div>

View file

@ -36,10 +36,20 @@ export const initAbout = () => {
<div class="b3-label__text">${window.siyuan.languages.about3.replace("${port}", location.port)}</div>
<div class="fn__hr"></div>
${(() => {
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 `<div class="b3-label__text${ipv4.length > 0 ? "" : " fn__none"}"><code class="fn__code">${ipv4.join("</code> <code class='fn__code'>")}</code></div>
<div class="b3-label__text${ipv6.length > 0 ? "" : " fn__none"}"><code class="fn__code">${ipv6.join("</code> <code class='fn__code'>")}</code></div>`;
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(`<code class="fn__code">${ip}</code>`);
} else {
ipv4Codes.push(`<code class="fn__code">${ip}</code>`);
}
}
return `<div class="b3-label__text${ipv4Codes.length ? "" : " fn__none"}">${ipv4Codes.join(" ")}</div>
<div class="b3-label__text${ipv6Codes.length ? "" : " fn__none"}">${ipv6Codes.join(" ")}</div>`;
})()}
<div class="fn__hr"></div>
<div class="b3-label__text">${window.siyuan.languages.about18}</div>

View file

@ -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)

View file

@ -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)

View file

@ -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
}
}

View file

@ -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-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
@ -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

View file

@ -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-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=

View file

@ -25,5 +25,8 @@ func GetOSPlatform() (plat string) {
if ContainerAndroid == Container {
return "Android " + MobileOSVer
}
if ContainerHarmony == Container {
return "HarmonyOS " + MobileOSVer
}
return "Unknown " + MobileOSVer
}