diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1ba44241a..35a7e6c7f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,17 @@
+
+## [0.16.3](https://github.com/rime/weasel/compare/0.16.2...0.16.3)(2024-10-04)
+
+#### Bug Fixes
+* release channel feed_url not correct. ([fxliang](https://github.com/rime/weasel/commit/0c8bb0f01a929f46160482ae2f4492bed560b7b9))
+* invalid quick return ([Xuesong Peng](https://github.com/rime/weasel/commit/4da263727e16362f01054f6f0bb7522e83ae1e06))
+
+#### Chores
+* add update\bump-version.ps1 to bump version in powershell, when clog is not required ([fxliang](https://github.com/rime/weasel/commit/8770fb3ed1b4341b7875c1d60e98bfa5b42f8ac7))
+* update bump-version.sh, appcast.xml and testing-appcast.xml[skip ci] ([fxliang](https://github.com/rime/weasel/commit/91d5e4e224a0d73b8303a6ce10f03c71dace5cdd))
+
+#### Continuous Integration
+* release and update testing appcast only in rime/weasel ([fxliang](https://github.com/rime/weasel/commit/4af83b6e17f7c3cf78257dd300f4adadbffa1083))
+
## [0.16.2](https://github.com/rime/weasel/compare/0.16.1...0.16.2) (2024-09-28)
@@ -1052,3 +1066,4 @@
* 以Python開發的實驗版本
* 獨創「拼寫運算」技術
* 預裝標調拼音、註音、粵拼、吳語等多種輸入方案
+
diff --git a/build.bat b/build.bat
index 11ab6453d..152d0de85 100644
--- a/build.bat
+++ b/build.bat
@@ -10,7 +10,7 @@ if not defined WEASEL_ROOT set WEASEL_ROOT=%CD%
if not defined VERSION_MAJOR set VERSION_MAJOR=0
if not defined VERSION_MINOR set VERSION_MINOR=16
-if not defined VERSION_PATCH set VERSION_PATCH=2
+if not defined VERSION_PATCH set VERSION_PATCH=3
if not defined WEASEL_VERSION set WEASEL_VERSION=%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_PATCH%
if not defined WEASEL_BUILD set WEASEL_BUILD=0
diff --git a/update/appcast.xml b/update/appcast.xml
index f99ed05c5..380834301 100644
--- a/update/appcast.xml
+++ b/update/appcast.xml
@@ -1,17 +1,17 @@
-
-
-
- 【小狼毫】輸入法更新頻道
- http://rime.github.io/release/weasel/appcast.xml
- 小狼毫 Appcast 更新頻道
- zh
- -
- 小狼毫 0.16.2
- http://rime.github.io/release/weasel/release-notes.html
- Mon, 30 Sep 2024 11:51:10 +0800
-
-
-
-
+
+
+
+ 【小狼毫】輸入法更新頻道
+ http://rime.github.io/release/weasel/appcast.xml
+ 小狼毫 Appcast 更新頻道
+ zh
+ -
+ 小狼毫 0.16.3
+ http://rime.github.io/release/weasel/release-notes.html
+ Fri, 04 Oct 2024 21:08:10 +08:00
+
+
+
+
diff --git a/update/testing-appcast.xml b/update/testing-appcast.xml
index d5e679f5d..546ef60b4 100644
--- a/update/testing-appcast.xml
+++ b/update/testing-appcast.xml
@@ -1,17 +1,17 @@
-
-
-
- 【小狼毫】輸入法測試頻道
- http://rime.github.io/testing/weasel/appcast.xml
- 小狼毫測試版 Appcast 更新頻道
- zh
- -
- 小狼毫 0.16.2
- http://rime.github.io/testing/weasel/release-notes.html
- Mon, 30 Sep 2024 11:51:10 +0800
-
-
-
-
+
+
+
+ 【小狼毫】輸入法測試頻道
+ http://rime.github.io/testing/weasel/appcast.xml
+ 小狼毫測試版 Appcast 更新頻道
+ zh
+ -
+ 小狼毫 0.16.3
+ http://rime.github.io/testing/weasel/release-notes.html
+ Fri, 04 Oct 2024 21:08:10 +08:00
+
+
+
+
diff --git a/xbuild.bat b/xbuild.bat
index 9160df73a..943399c64 100644
--- a/xbuild.bat
+++ b/xbuild.bat
@@ -1,221 +1,221 @@
-@echo off
-setlocal enabledelayedexpansion
-if not defined include (
- echo You should run this inside Developer Command Promt!
- exit /b
-)
-for %%a in ("%include:;=" "%") do (
- echo %%a| findstr /r "ATLMFC\\include" > nul
- if not errorlevel 1 (
- set "atl_lib_dir=%%a"
- set dpi_manifest=!atl_lib_dir:ATLMFC\include=Include\Manifest\PerMonitorHighDPIAware.manifest!
- if not exist ".\PerMonitorHighDPIAware.manifest" (
- copy ""!dpi_manifest!"" .\
- )
- )
-)
-rem ---------------------------------------------------------------------------
-if not exist env.bat copy env.bat.template env.bat
-if exist env.bat call env.bat
-set PRODUCT_VERSION=
-if not defined WEASEL_ROOT set WEASEL_ROOT=%CD%
-if not defined VERSION_MAJOR set VERSION_MAJOR=0
-if not defined VERSION_MINOR set VERSION_MINOR=16
-if not defined VERSION_PATCH set VERSION_PATCH=2
-
-if not defined WEASEL_VERSION set WEASEL_VERSION=%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_PATCH%
-if not defined WEASEL_BUILD set WEASEL_BUILD=0
-
-rem use numeric build version for release build
-set PRODUCT_VERSION=%WEASEL_VERSION%.%WEASEL_BUILD%
-rem for non-release build, try to use git commit hash as product build version
-if not defined RELEASE_BUILD (
- rem check if git is installed and available, then get the short commit id of head
- git --version >nul 2>&1
- if not errorlevel 1 (
- for /f "delims=" %%i in ('git tag --sort=-creatordate ^| findstr /r "%WEASEL_VERSION%"') do (
- set LAST_TAG=%%i
- goto found_tag
- )
- :found_tag
- for /f "delims=" %%i in ('git rev-list %LAST_TAG%..HEAD --count') do (
- set WEASEL_BUILD=%%i
- )
- rem get short commmit id of head
- for /F %%i in ('git rev-parse --short HEAD') do (set PRODUCT_VERSION=%WEASEL_VERSION%.%WEASEL_BUILD%.%%i)
- )
-)
-
-rem FILE_VERSION is always 4 numbers; same as PRODUCT_VERSION in release build
-if not defined FILE_VERSION set FILE_VERSION=%WEASEL_VERSION%.%WEASEL_BUILD%
-echo PRODUCT_VERSION=%PRODUCT_VERSION%
-echo WEASEL_VERSION=%WEASEL_VERSION%
-echo WEASEL_BUILD=%WEASEL_BUILD%
-echo WEASEL_ROOT=%WEASEL_ROOT%
-echo WEASEL_BUNDLED_RECIPES=%WEASEL_BUNDLED_RECIPES%
-echo BOOST_ROOT=%BOOST_ROOT%
-
-if defined GITHUB_ENV (
- setlocal enabledelayedexpansion
- echo git_ref_name=%PRODUCT_VERSION%>>!GITHUB_ENV!
-)
-
-rem ---------------------------------------------------------------------------
-rem parse the command line options
-set build_config=release
-set build_rebuild=0
-set build_boost=0
-set boost_build_variant=release
-set build_data=0
-set build_opencc=0
-set build_rime=0
-set rime_build_variant=release
-set build_weasel=0
-set build_installer=0
-set build_arm64=0
-set build_clean=0
-set build_commands=0
-:parse_cmdline_options
- if "%1" == "" goto end_parsing_cmdline_options
- if "%1" == "debug" (
- set build_config=debug
- set boost_build_variant=debug
- set rime_build_variant=debug
- )
- if "%1" == "release" (
- set build_config=release
- set boost_build_variant=release
- set rime_build_variant=release
- )
- if "%1" == "rebuild" set build_rebuild=1
- if "%1" == "boost" set build_boost=1
- if "%1" == "data" set build_data=1
- if "%1" == "opencc" set build_opencc=1
- if "%1" == "rime" set build_rime=1
- if "%1" == "librime" set build_rime=1
- if "%1" == "weasel" set build_weasel=1
- if "%1" == "installer" set build_installer=1
- if "%1" == "arm64" set build_arm64=1
- if "%1" == "clean" set build_clean=1
- if "%1" == "commands" set build_commands=1
- if "%1" == "all" (
- set build_boost=1
- set build_data=1
- set build_opencc=1
- set build_rime=1
- set build_weasel=1
- set build_installer=1
- set build_arm64=1
- set build_commands=1
- )
- shift
- goto parse_cmdline_options
-:end_parsing_cmdline_options
-
-if %build_weasel% == 0 (
-if %build_boost% == 0 (
-if %build_data% == 0 (
-if %build_opencc% == 0 (
-if %build_rime% == 0 (
-if %build_commands% == 0 (
- set build_weasel=1
-))))))
-rem
-rem quit WeaselServer.exe before building
-cd /d %WEASEL_ROOT%
-if exist output\weaselserver.exe (
- output\weaselserver.exe /q
-)
-
-rem build booost
-if %build_boost% == 1 (
- if %build_arm64% == 1 (
- call build.bat boost arm64
- ) else (
- call build.bat boost
- )
- if errorlevel 1 exit /b 1
- cd /d %WEASEL_ROOT%
-)
-if %build_rime% == 1 (
- call build.bat rime
- if errorlevel 1 exit /b 1
- cd /d %WEASEL_ROOT%
-)
-if %build_data% == 1 (
- call build.bat data
- if errorlevel 1 exit /b 1
- cd /d %WEASEL_ROOT%
-)
-if %build_opencc% == 1 (
- call build.bat opencc
- if errorlevel 1 exit /b 1
- cd /d %WEASEL_ROOT%
-)
-
-if %build_commands% == 1 (
- echo Generating compile_commands.json
- xmake project -k compile_commands -m %build_config%
-)
-
-rem if to clean
-if %build_clean% == 1 ( goto clean )
-if %build_weasel% == 0 ( goto end )
-
-if %build_arm64% == 1 (
- xmake f -a arm64 -m %build_config%
- if %build_rebuild% == 1 ( xmake clean )
- xmake
- if errorlevel 1 goto error
- xmake f -a arm -m %build_config%
- if %build_rebuild% == 1 ( xmake clean )
- xmake
- if errorlevel 1 goto error
-)
-xmake f -a x64 -m %build_config%
-if %build_rebuild% == 1 ( xmake clean )
-xmake
-if errorlevel 1 goto error
-xmake f -a x86 -m %build_config%
-if %build_rebuild% == 1 ( xmake clean )
-xmake
-if errorlevel 1 goto error
-
-if %build_arm64% == 1 (
- pushd arm64x_wrapper
- call build.bat
- if errorlevel 1 goto error
- popd
-
- copy arm64x_wrapper\weaselARM64X.dll output
- if errorlevel 1 goto error
- copy arm64x_wrapper\weaselARM64X.ime output
- if errorlevel 1 goto error
-)
-if %build_installer% == 1 (
- "%ProgramFiles(x86)%"\NSIS\Bin\makensis.exe ^
- /DWEASEL_VERSION=%WEASEL_VERSION% ^
- /DWEASEL_BUILD=%WEASEL_BUILD% ^
- /DPRODUCT_VERSION=%PRODUCT_VERSION% ^
- output\install.nsi
- if errorlevel 1 goto error
-)
-goto end
-
-:clean
- if exist build (
- rmdir /s /q build
- if errorlevel 1 (
- echo error cleaning weasel build
- goto error
- )
- goto end
- )
-
-:error
- echo error building weasel...
- exit /b 1
-
-:end
- cd %WEASEL_ROOT%
-
+@echo off
+setlocal enabledelayedexpansion
+if not defined include (
+ echo You should run this inside Developer Command Promt!
+ exit /b
+)
+for %%a in ("%include:;=" "%") do (
+ echo %%a| findstr /r "ATLMFC\\include" > nul
+ if not errorlevel 1 (
+ set "atl_lib_dir=%%a"
+ set dpi_manifest=!atl_lib_dir:ATLMFC\include=Include\Manifest\PerMonitorHighDPIAware.manifest!
+ if not exist ".\PerMonitorHighDPIAware.manifest" (
+ copy ""!dpi_manifest!"" .\
+ )
+ )
+)
+rem ---------------------------------------------------------------------------
+if not exist env.bat copy env.bat.template env.bat
+if exist env.bat call env.bat
+set PRODUCT_VERSION=
+if not defined WEASEL_ROOT set WEASEL_ROOT=%CD%
+if not defined VERSION_MAJOR set VERSION_MAJOR=0
+if not defined VERSION_MINOR set VERSION_MINOR=16
+if not defined VERSION_PATCH set VERSION_PATCH=3
+
+if not defined WEASEL_VERSION set WEASEL_VERSION=%VERSION_MAJOR%.%VERSION_MINOR%.%VERSION_PATCH%
+if not defined WEASEL_BUILD set WEASEL_BUILD=0
+
+rem use numeric build version for release build
+set PRODUCT_VERSION=%WEASEL_VERSION%.%WEASEL_BUILD%
+rem for non-release build, try to use git commit hash as product build version
+if not defined RELEASE_BUILD (
+ rem check if git is installed and available, then get the short commit id of head
+ git --version >nul 2>&1
+ if not errorlevel 1 (
+ for /f "delims=" %%i in ('git tag --sort=-creatordate ^| findstr /r "%WEASEL_VERSION%"') do (
+ set LAST_TAG=%%i
+ goto found_tag
+ )
+ :found_tag
+ for /f "delims=" %%i in ('git rev-list %LAST_TAG%..HEAD --count') do (
+ set WEASEL_BUILD=%%i
+ )
+ rem get short commmit id of head
+ for /F %%i in ('git rev-parse --short HEAD') do (set PRODUCT_VERSION=%WEASEL_VERSION%.%WEASEL_BUILD%.%%i)
+ )
+)
+
+rem FILE_VERSION is always 4 numbers; same as PRODUCT_VERSION in release build
+if not defined FILE_VERSION set FILE_VERSION=%WEASEL_VERSION%.%WEASEL_BUILD%
+echo PRODUCT_VERSION=%PRODUCT_VERSION%
+echo WEASEL_VERSION=%WEASEL_VERSION%
+echo WEASEL_BUILD=%WEASEL_BUILD%
+echo WEASEL_ROOT=%WEASEL_ROOT%
+echo WEASEL_BUNDLED_RECIPES=%WEASEL_BUNDLED_RECIPES%
+echo BOOST_ROOT=%BOOST_ROOT%
+
+if defined GITHUB_ENV (
+ setlocal enabledelayedexpansion
+ echo git_ref_name=%PRODUCT_VERSION%>>!GITHUB_ENV!
+)
+
+rem ---------------------------------------------------------------------------
+rem parse the command line options
+set build_config=release
+set build_rebuild=0
+set build_boost=0
+set boost_build_variant=release
+set build_data=0
+set build_opencc=0
+set build_rime=0
+set rime_build_variant=release
+set build_weasel=0
+set build_installer=0
+set build_arm64=0
+set build_clean=0
+set build_commands=0
+:parse_cmdline_options
+ if "%1" == "" goto end_parsing_cmdline_options
+ if "%1" == "debug" (
+ set build_config=debug
+ set boost_build_variant=debug
+ set rime_build_variant=debug
+ )
+ if "%1" == "release" (
+ set build_config=release
+ set boost_build_variant=release
+ set rime_build_variant=release
+ )
+ if "%1" == "rebuild" set build_rebuild=1
+ if "%1" == "boost" set build_boost=1
+ if "%1" == "data" set build_data=1
+ if "%1" == "opencc" set build_opencc=1
+ if "%1" == "rime" set build_rime=1
+ if "%1" == "librime" set build_rime=1
+ if "%1" == "weasel" set build_weasel=1
+ if "%1" == "installer" set build_installer=1
+ if "%1" == "arm64" set build_arm64=1
+ if "%1" == "clean" set build_clean=1
+ if "%1" == "commands" set build_commands=1
+ if "%1" == "all" (
+ set build_boost=1
+ set build_data=1
+ set build_opencc=1
+ set build_rime=1
+ set build_weasel=1
+ set build_installer=1
+ set build_arm64=1
+ set build_commands=1
+ )
+ shift
+ goto parse_cmdline_options
+:end_parsing_cmdline_options
+
+if %build_weasel% == 0 (
+if %build_boost% == 0 (
+if %build_data% == 0 (
+if %build_opencc% == 0 (
+if %build_rime% == 0 (
+if %build_commands% == 0 (
+ set build_weasel=1
+))))))
+rem
+rem quit WeaselServer.exe before building
+cd /d %WEASEL_ROOT%
+if exist output\weaselserver.exe (
+ output\weaselserver.exe /q
+)
+
+rem build booost
+if %build_boost% == 1 (
+ if %build_arm64% == 1 (
+ call build.bat boost arm64
+ ) else (
+ call build.bat boost
+ )
+ if errorlevel 1 exit /b 1
+ cd /d %WEASEL_ROOT%
+)
+if %build_rime% == 1 (
+ call build.bat rime
+ if errorlevel 1 exit /b 1
+ cd /d %WEASEL_ROOT%
+)
+if %build_data% == 1 (
+ call build.bat data
+ if errorlevel 1 exit /b 1
+ cd /d %WEASEL_ROOT%
+)
+if %build_opencc% == 1 (
+ call build.bat opencc
+ if errorlevel 1 exit /b 1
+ cd /d %WEASEL_ROOT%
+)
+
+if %build_commands% == 1 (
+ echo Generating compile_commands.json
+ xmake project -k compile_commands -m %build_config%
+)
+
+rem if to clean
+if %build_clean% == 1 ( goto clean )
+if %build_weasel% == 0 ( goto end )
+
+if %build_arm64% == 1 (
+ xmake f -a arm64 -m %build_config%
+ if %build_rebuild% == 1 ( xmake clean )
+ xmake
+ if errorlevel 1 goto error
+ xmake f -a arm -m %build_config%
+ if %build_rebuild% == 1 ( xmake clean )
+ xmake
+ if errorlevel 1 goto error
+)
+xmake f -a x64 -m %build_config%
+if %build_rebuild% == 1 ( xmake clean )
+xmake
+if errorlevel 1 goto error
+xmake f -a x86 -m %build_config%
+if %build_rebuild% == 1 ( xmake clean )
+xmake
+if errorlevel 1 goto error
+
+if %build_arm64% == 1 (
+ pushd arm64x_wrapper
+ call build.bat
+ if errorlevel 1 goto error
+ popd
+
+ copy arm64x_wrapper\weaselARM64X.dll output
+ if errorlevel 1 goto error
+ copy arm64x_wrapper\weaselARM64X.ime output
+ if errorlevel 1 goto error
+)
+if %build_installer% == 1 (
+ "%ProgramFiles(x86)%"\NSIS\Bin\makensis.exe ^
+ /DWEASEL_VERSION=%WEASEL_VERSION% ^
+ /DWEASEL_BUILD=%WEASEL_BUILD% ^
+ /DPRODUCT_VERSION=%PRODUCT_VERSION% ^
+ output\install.nsi
+ if errorlevel 1 goto error
+)
+goto end
+
+:clean
+ if exist build (
+ rmdir /s /q build
+ if errorlevel 1 (
+ echo error cleaning weasel build
+ goto error
+ )
+ goto end
+ )
+
+:error
+ echo error building weasel...
+ exit /b 1
+
+:end
+ cd %WEASEL_ROOT%
+