From 5a7e436ba5a95d10f4197089425543268e13f1fc Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 6 Apr 2023 21:56:52 +0800 Subject: [PATCH] :art: Show "What's News" after upgrading https://github.com/siyuan-note/siyuan/issues/7902 --- CHANGELOG.md | 1 + Dockerfile | 1 + .../changelogs}/v0.1.0-v2.8.3.md | 0 {changelogs => app/changelogs}/v2.8.4.md | 0 .../changelogs}/v2.8.4_zh_CN.md | 0 app/electron-builder-darwin-arm64.yml | 8 ++-- app/electron-builder-darwin.yml | 8 ++-- app/electron-builder-linux.yml | 8 ++-- app/electron-builder.yml | 8 ++-- kernel/api/router.go | 1 + kernel/api/system.go | 38 +++++++++++++++++++ kernel/model/conf.go | 2 + 12 files changed, 63 insertions(+), 12 deletions(-) create mode 100644 CHANGELOG.md rename {changelogs => app/changelogs}/v0.1.0-v2.8.3.md (100%) rename {changelogs => app/changelogs}/v2.8.4.md (100%) rename {changelogs => app/changelogs}/v2.8.4_zh_CN.md (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..2bd199882 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1 @@ +Please see app/changelogs/ for details. diff --git a/Dockerfile b/Dockerfile index 4102d1510..7b97fbf7b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,7 @@ RUN apk add --no-cache gcc musl-dev git && \ mv /go/src/github.com/siyuan-note/siyuan/app/appearance/ /opt/siyuan/ && \ mv /go/src/github.com/siyuan-note/siyuan/app/stage/ /opt/siyuan/ && \ mv /go/src/github.com/siyuan-note/siyuan/app/guide/ /opt/siyuan/ && \ + mv /go/src/github.com/siyuan-note/siyuan/app/changelogs/ /opt/siyuan/ && \ mv /go/src/github.com/siyuan-note/siyuan/kernel/kernel /opt/siyuan/ && \ find /opt/siyuan/ -name .git | xargs rm -rf diff --git a/changelogs/v0.1.0-v2.8.3.md b/app/changelogs/v0.1.0-v2.8.3.md similarity index 100% rename from changelogs/v0.1.0-v2.8.3.md rename to app/changelogs/v0.1.0-v2.8.3.md diff --git a/changelogs/v2.8.4.md b/app/changelogs/v2.8.4.md similarity index 100% rename from changelogs/v2.8.4.md rename to app/changelogs/v2.8.4.md diff --git a/changelogs/v2.8.4_zh_CN.md b/app/changelogs/v2.8.4_zh_CN.md similarity index 100% rename from changelogs/v2.8.4_zh_CN.md rename to app/changelogs/v2.8.4_zh_CN.md diff --git a/app/electron-builder-darwin-arm64.yml b/app/electron-builder-darwin-arm64.yml index 66e287a74..e9fda38a4 100644 --- a/app/electron-builder-darwin-arm64.yml +++ b/app/electron-builder-darwin-arm64.yml @@ -29,14 +29,16 @@ mac: arch: "arm64" extraResources: - - from: "appearance/boot" - to: "appearance/boot" - filter: "!**/{.DS_Store}" + - from: "changelogs" + to: "changelogs" - from: "stage" to: "stage" - from: "guide" to: "guide" filter: "!**/{.DS_Store,.git,.gitignore,.idea}" + - from: "appearance/boot" + to: "appearance/boot" + filter: "!**/{.DS_Store}" - from: "appearance/icons" to: "appearance/icons" filter: "!**/{.DS_Store}" diff --git a/app/electron-builder-darwin.yml b/app/electron-builder-darwin.yml index e7924e54d..82787a2d8 100644 --- a/app/electron-builder-darwin.yml +++ b/app/electron-builder-darwin.yml @@ -28,14 +28,16 @@ mac: - target: "dmg" extraResources: - - from: "appearance/boot" - to: "appearance/boot" - filter: "!**/{.DS_Store}" + - from: "changelogs" + to: "changelogs" - from: "stage" to: "stage" - from: "guide" to: "guide" filter: "!**/{.DS_Store,.git,.gitignore,.idea}" + - from: "appearance/boot" + to: "appearance/boot" + filter: "!**/{.DS_Store}" - from: "appearance/icons" to: "appearance/icons" filter: "!**/{.DS_Store}" diff --git a/app/electron-builder-linux.yml b/app/electron-builder-linux.yml index a5bdfc33c..0c4a5d616 100644 --- a/app/electron-builder-linux.yml +++ b/app/electron-builder-linux.yml @@ -25,14 +25,16 @@ linux: - target: "AppImage" extraResources: - - from: "appearance/boot" - to: "appearance/boot" - filter: "!**/{.DS_Store}" + - from: "changelogs" + to: "changelogs" - from: "stage" to: "stage" - from: "guide" to: "guide" filter: "!**/{.DS_Store,.git,.gitignore,.idea}" + - from: "appearance/boot" + to: "appearance/boot" + filter: "!**/{.DS_Store}" - from: "appearance/icons" to: "appearance/icons" filter: "!**/{.DS_Store}" diff --git a/app/electron-builder.yml b/app/electron-builder.yml index f617fbc1c..73fa87d7e 100644 --- a/app/electron-builder.yml +++ b/app/electron-builder.yml @@ -42,14 +42,16 @@ nsis: uninstallerSidebar: "nsis/uninstallerSidebar.bmp" extraResources: - - from: "appearance/boot" - to: "appearance/boot" - filter: "!**/{.DS_Store}" + - from: "changelogs" + to: "changelogs" - from: "stage" to: "stage" - from: "guide" to: "guide" filter: "!**/{.DS_Store,.git,.gitignore,.idea}" + - from: "appearance/boot" + to: "appearance/boot" + filter: "!**/{.DS_Store}" - from: "appearance/icons" to: "appearance/icons" filter: "!**/{.DS_Store}" diff --git a/kernel/api/router.go b/kernel/api/router.go index 089efaf4a..8d7e4cf6f 100644 --- a/kernel/api/router.go +++ b/kernel/api/router.go @@ -56,6 +56,7 @@ func ServeAPI(ginServer *gin.Engine) { ginServer.Handle("POST", "/api/system/getConf", model.CheckAuth, getConf) ginServer.Handle("POST", "/api/system/checkUpdate", model.CheckAuth, checkUpdate) ginServer.Handle("POST", "/api/system/exportLog", model.CheckAuth, exportLog) + ginServer.Handle("POST", "/api/system/getChangelog", model.CheckAuth, getChangelog) ginServer.Handle("POST", "/api/storage/setLocalStorage", model.CheckAuth, setLocalStorage) ginServer.Handle("POST", "/api/storage/getLocalStorage", model.CheckAuth, getLocalStorage) diff --git a/kernel/api/system.go b/kernel/api/system.go index f5808f7fc..dd3da5530 100644 --- a/kernel/api/system.go +++ b/kernel/api/system.go @@ -17,6 +17,7 @@ package api import ( + "github.com/88250/lute" "net/http" "os" "path/filepath" @@ -32,6 +33,43 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func getChangelog(c *gin.Context) { + ret := gulu.Ret.NewResult() + defer c.JSON(http.StatusOK, ret) + + data := map[string]interface{}{"show": false, "html": ""} + + ret.Data = data + + changelogsDir := filepath.Join(util.WorkingDir, "changelogs") + if !gulu.File.IsDir(changelogsDir) { + return + } + + if !model.Conf.ShowChangelog { + return + } + + changelogPath := filepath.Join(changelogsDir, "v"+util.Ver+".md") + if !gulu.File.IsExist(changelogPath) { + logging.LogWarnf("changelog not found: %s", changelogPath) + return + } + + contentData, err := os.ReadFile(changelogPath) + if nil != err { + logging.LogErrorf("read changelog failed: %s", err) + return + } + + luteEngine := lute.New() + htmlContent := luteEngine.Markdown("", contentData) + + data["show"] = true + data["html"] = htmlContent + ret.Data = data +} + func getEmojiConf(c *gin.Context) { ret := gulu.Ret.NewResult() defer c.JSON(http.StatusOK, ret) diff --git a/kernel/model/conf.go b/kernel/model/conf.go index 7de936068..904f5ca2b 100644 --- a/kernel/model/conf.go +++ b/kernel/model/conf.go @@ -75,6 +75,7 @@ type AppConf struct { Api *conf.API `json:"api"` // API Repo *conf.Repo `json:"repo"` // 数据仓库 OpenHelp bool `json:"openHelp"` // 启动后是否需要打开用户指南 + ShowChangelog bool `json:"showChangelog"` // 是否显示版本更新日志 } func InitConf() { @@ -219,6 +220,7 @@ func InitConf() { } else { if 0 < semver.Compare("v"+util.Ver, "v"+Conf.System.KernelVersion) { logging.LogInfof("upgraded from version [%s] to [%s]", Conf.System.KernelVersion, util.Ver) + Conf.ShowChangelog = true } else if 0 > semver.Compare("v"+util.Ver, "v"+Conf.System.KernelVersion) { logging.LogInfof("downgraded from version [%s] to [%s]", Conf.System.KernelVersion, util.Ver) }