Diff of the two buildlogs:

--
--- b1/build.log	2025-02-05 18:26:20.769116453 +0000
+++ b2/build.log	2025-02-05 18:27:11.498822671 +0000
@@ -1,6 +1,6 @@
 I: pbuilder: network access will be disabled during build
-I: Current time: Wed Feb  5 06:25:35 -12 2025
-I: pbuilder-time-stamp: 1738779935
+I: Current time: Wed Mar 11 14:49:23 +14 2026
+I: pbuilder-time-stamp: 1773190163
 I: Building the build Environment
 I: extracting base tarball [/var/cache/pbuilder/trixie-reproducible-base.tgz]
 I: copying local configuration
@@ -22,52 +22,84 @@
 dpkg-source: info: unpacking fcitx5-chewing_5.1.7-1.debian.tar.xz
 I: Not using root during the build.
 I: Installing the build-deps
-I: user script /srv/workspace/pbuilder/1593129/tmp/hooks/D02_print_environment starting
+I: user script /srv/workspace/pbuilder/4018432/tmp/hooks/D01_modify_environment starting
+debug: Running on codethink03-arm64.
+I: Changing host+domainname to test build reproducibility
+I: Adding a custom variable just for the fun of it...
+I: Changing /bin/sh to bash
+'/bin/sh' -> '/bin/bash'
+lrwxrwxrwx 1 root root 9 Mar 11 00:49 /bin/sh -> /bin/bash
+I: Setting pbuilder2's login shell to /bin/bash
+I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other
+I: user script /srv/workspace/pbuilder/4018432/tmp/hooks/D01_modify_environment finished
+I: user script /srv/workspace/pbuilder/4018432/tmp/hooks/D02_print_environment starting
 I: set
-  BUILDDIR='/build/reproducible-path'
-  BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other'
-  BUILDUSERNAME='pbuilder1'
-  BUILD_ARCH='arm64'
-  DEBIAN_FRONTEND='noninteractive'
+  BASH=/bin/sh
+  BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath
+  BASH_ALIASES=()
+  BASH_ARGC=()
+  BASH_ARGV=()
+  BASH_CMDS=()
+  BASH_LINENO=([0]="12" [1]="0")
+  BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:.
+  BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment")
+  BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="aarch64-unknown-linux-gnu")
+  BASH_VERSION='5.2.37(1)-release'
+  BUILDDIR=/build/reproducible-path
+  BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other'
+  BUILDUSERNAME=pbuilder2
+  BUILD_ARCH=arm64
+  DEBIAN_FRONTEND=noninteractive
   DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=12 '
-  DISTRIBUTION='trixie'
-  HOME='/root'
-  HOST_ARCH='arm64'
+  DIRSTACK=()
+  DISTRIBUTION=trixie
+  EUID=0
+  FUNCNAME=([0]="Echo" [1]="main")
+  GROUPS=()
+  HOME=/root
+  HOSTNAME=i-capture-the-hostname
+  HOSTTYPE=aarch64
+  HOST_ARCH=arm64
   IFS=' 	
   '
-  INVOCATION_ID='2483128dcf634c95a4e2d33113e7f744'
-  LANG='C'
-  LANGUAGE='en_US:en'
-  LC_ALL='C'
-  MAIL='/var/mail/root'
-  OPTIND='1'
-  PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games'
-  PBCURRENTCOMMANDLINEOPERATION='build'
-  PBUILDER_OPERATION='build'
-  PBUILDER_PKGDATADIR='/usr/share/pbuilder'
-  PBUILDER_PKGLIBDIR='/usr/lib/pbuilder'
-  PBUILDER_SYSCONFDIR='/etc'
-  PPID='1593129'
-  PS1='# '
-  PS2='> '
+  INVOCATION_ID=d67cbf8a9cae4f50bb7880cb0d495b53
+  LANG=C
+  LANGUAGE=nl_BE:nl
+  LC_ALL=C
+  MACHTYPE=aarch64-unknown-linux-gnu
+  MAIL=/var/mail/root
+  OPTERR=1
+  OPTIND=1
+  OSTYPE=linux-gnu
+  PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path
+  PBCURRENTCOMMANDLINEOPERATION=build
+  PBUILDER_OPERATION=build
+  PBUILDER_PKGDATADIR=/usr/share/pbuilder
+  PBUILDER_PKGLIBDIR=/usr/lib/pbuilder
+  PBUILDER_SYSCONFDIR=/etc
+  PIPESTATUS=([0]="0")
+  POSIXLY_CORRECT=y
+  PPID=4018432
   PS4='+ '
-  PWD='/'
-  SHELL='/bin/bash'
-  SHLVL='2'
-  SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.igw26khR/pbuilderrc_sb23 --distribution trixie --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.igw26khR/b1 --logfile b1/build.log fcitx5-chewing_5.1.7-1.dsc'
-  SUDO_GID='109'
-  SUDO_UID='104'
-  SUDO_USER='jenkins'
-  TERM='unknown'
-  TZ='/usr/share/zoneinfo/Etc/GMT+12'
-  USER='root'
-  _='/usr/bin/systemd-run'
-  http_proxy='http://192.168.101.4:3128'
+  PWD=/
+  SHELL=/bin/bash
+  SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix
+  SHLVL=3
+  SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.igw26khR/pbuilderrc_JGAA --distribution trixie --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/trixie-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.igw26khR/b2 --logfile b2/build.log fcitx5-chewing_5.1.7-1.dsc'
+  SUDO_GID=109
+  SUDO_UID=104
+  SUDO_USER=jenkins
+  TERM=unknown
+  TZ=/usr/share/zoneinfo/Etc/GMT-14
+  UID=0
+  USER=root
+  _='I: set'
+  http_proxy=http://192.168.101.4:3128
 I: uname -a
-  Linux codethink04-arm64 6.1.0-30-cloud-arm64 #1 SMP Debian 6.1.124-1 (2025-01-12) aarch64 GNU/Linux
+  Linux i-capture-the-hostname 6.1.0-30-cloud-arm64 #1 SMP Debian 6.1.124-1 (2025-01-12) aarch64 GNU/Linux
 I: ls -l /bin
-  lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin
-I: user script /srv/workspace/pbuilder/1593129/tmp/hooks/D02_print_environment finished
+  lrwxrwxrwx 1 root root 7 Nov 22  2024 /bin -> usr/bin
+I: user script /srv/workspace/pbuilder/4018432/tmp/hooks/D02_print_environment finished
  -> Attempting to satisfy build-dependencies
  -> Creating pbuilder-satisfydepends-dummy package
 Package: pbuilder-satisfydepends-dummy
@@ -263,7 +295,7 @@
 Get: 142 http://deb.debian.org/debian trixie/main arm64 libpkgconf3 arm64 1.8.1-4 [35.3 kB]
 Get: 143 http://deb.debian.org/debian trixie/main arm64 pkgconf-bin arm64 1.8.1-4 [29.6 kB]
 Get: 144 http://deb.debian.org/debian trixie/main arm64 pkgconf arm64 1.8.1-4 [26.1 kB]
-Fetched 63.0 MB in 1s (106 MB/s)
+Fetched 63.0 MB in 0s (165 MB/s)
 Preconfiguring packages ...
 Selecting previously unselected package libproc2-0:arm64.
 (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 19957 files and directories currently installed.)
@@ -859,7 +891,11 @@
 Building tag database...
  -> Finished parsing the build-deps
 I: Building the package
-I: Running cd /build/reproducible-path/fcitx5-chewing-5.1.7/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S  > ../fcitx5-chewing_5.1.7-1_source.changes
+I: user script /srv/workspace/pbuilder/4018432/tmp/hooks/A99_set_merged_usr starting
+Not re-configuring usrmerge for trixie
+I: user script /srv/workspace/pbuilder/4018432/tmp/hooks/A99_set_merged_usr finished
+hostname: Name or service not known
+I: Running cd /build/reproducible-path/fcitx5-chewing-5.1.7/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S  > ../fcitx5-chewing_5.1.7-1_source.changes
 dpkg-buildpackage: info: source package fcitx5-chewing
 dpkg-buildpackage: info: source version 5.1.7-1
 dpkg-buildpackage: info: source distribution unstable
@@ -929,7 +965,7 @@
  * Fcitx5Module
  * Gettext
 
--- Configuring done (0.9s)
+-- Configuring done (1.0s)
 -- Generating done (0.0s)
 CMake Warning:
   Manually-specified variables were not used by the project:
@@ -948,14 +984,14 @@
 make  -f CMakeFiles/Makefile2 all
 make[2]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make  -f CMakeFiles/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in-fmt.dir/build.make CMakeFiles/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in-fmt.dir/depend
-make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make  -f src/CMakeFiles/chewing.dir/build.make src/CMakeFiles/chewing.dir/depend
+make  -f src/CMakeFiles/chewing.conf.in-fmt.dir/build.make src/CMakeFiles/chewing.conf.in-fmt.dir/depend
+make  -f src/CMakeFiles/chewing-addon.conf.in-fmt.dir/build.make src/CMakeFiles/chewing-addon.conf.in-fmt.dir/depend
+make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/fcitx5-chewing-5.1.7 /build/reproducible-path/fcitx5-chewing-5.1.7 /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/CMakeFiles/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in-fmt.dir/DependInfo.cmake "--color="
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make  -f src/CMakeFiles/chewing.conf.in-fmt.dir/build.make src/CMakeFiles/chewing.conf.in-fmt.dir/depend
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/fcitx5-chewing-5.1.7 /build/reproducible-path/fcitx5-chewing-5.1.7/src /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/CMakeFiles/chewing.dir/DependInfo.cmake "--color="
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make  -f src/CMakeFiles/chewing-addon.conf.in-fmt.dir/build.make src/CMakeFiles/chewing-addon.conf.in-fmt.dir/depend
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/fcitx5-chewing-5.1.7 /build/reproducible-path/fcitx5-chewing-5.1.7/src /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/CMakeFiles/chewing.conf.in-fmt.dir/DependInfo.cmake "--color="
 make  -f po/CMakeFiles/fcitx5-chewing-translation.dir/build.make po/CMakeFiles/fcitx5-chewing-translation.dir/depend
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
@@ -963,89 +999,89 @@
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/fcitx5-chewing-5.1.7 /build/reproducible-path/fcitx5-chewing-5.1.7/po /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/CMakeFiles/fcitx5-chewing-translation.dir/DependInfo.cmake "--color="
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make  -f src/CMakeFiles/chewing.dir/build.make src/CMakeFiles/chewing.dir/build
+make  -f src/CMakeFiles/chewing.conf.in-fmt.dir/build.make src/CMakeFiles/chewing.conf.in-fmt.dir/build
+make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
+make  -f CMakeFiles/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in-fmt.dir/build.make CMakeFiles/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in-fmt.dir/build
+make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make  -f po/CMakeFiles/fcitx5-chewing-translation.dir/build.make po/CMakeFiles/fcitx5-chewing-translation.dir/build
-[  5%] Building CXX object src/CMakeFiles/chewing.dir/eim.cpp.o
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src && /usr/bin/c++ -DFCITX_GETTEXT_DOMAIN=\"fcitx5-chewing\" -DFCITX_INSTALL_LOCALEDIR=\"/usr/share/locale\" -Dchewing_EXPORTS -isystem /usr/include/Fcitx5/Core -isystem /usr/include/Fcitx5/Config -isystem /usr/include/Fcitx5/Utils -isystem /usr/include/chewing -Wall -Wextra -g -O2 -ffile-prefix-map=/build/reproducible-path/fcitx5-chewing-5.1.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++17 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT src/CMakeFiles/chewing.dir/eim.cpp.o -MF CMakeFiles/chewing.dir/eim.cpp.o.d -o CMakeFiles/chewing.dir/eim.cpp.o -c /build/reproducible-path/fcitx5-chewing-5.1.7/src/eim.cpp
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
+make  -f src/CMakeFiles/chewing.dir/build.make src/CMakeFiles/chewing.dir/build
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make  -f src/CMakeFiles/chewing.conf.in-fmt.dir/build.make src/CMakeFiles/chewing.conf.in-fmt.dir/build
-make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make  -f src/CMakeFiles/chewing-addon.conf.in-fmt.dir/build.make src/CMakeFiles/chewing-addon.conf.in-fmt.dir/build
-make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make  -f CMakeFiles/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in-fmt.dir/build.make CMakeFiles/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in-fmt.dir/build
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-[ 11%] Generating chewing-addon.conf
-[ 17%] Generating fcitx5-chewing-da.mo
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src && /usr/bin/msgfmt --desktop -d /build/reproducible-path/fcitx5-chewing-5.1.7/po --template /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing-addon.conf.in -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing-addon.conf
+make  -f po/CMakeFiles/fcitx5-chewing-translation.dir/build.make po/CMakeFiles/fcitx5-chewing-translation.dir/build
+[  5%] Generating chewing.conf
+[ 11%] Generating org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src && /usr/bin/msgfmt --desktop -d /build/reproducible-path/fcitx5-chewing-5.1.7/po --template /build/reproducible-path/fcitx5-chewing-5.1.7/src/chewing.conf.in -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing.conf
+/usr/bin/msgfmt --xml -d /build/reproducible-path/fcitx5-chewing-5.1.7/po --template /build/reproducible-path/fcitx5-chewing-5.1.7/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml
+make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
+[ 17%] Generating chewing-addon.conf
+make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-[ 23%] Generating fcitx5-chewing-ca.mo
+[ 23%] Building CXX object src/CMakeFiles/chewing.dir/eim.cpp.o
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src && /usr/bin/c++ -DFCITX_GETTEXT_DOMAIN=\"fcitx5-chewing\" -DFCITX_INSTALL_LOCALEDIR=\"/usr/share/locale\" -Dchewing_EXPORTS -isystem /usr/include/Fcitx5/Core -isystem /usr/include/Fcitx5/Config -isystem /usr/include/Fcitx5/Utils -isystem /usr/include/chewing -Wall -Wextra -g -O2 -ffile-prefix-map=/build/reproducible-path/fcitx5-chewing-5.1.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++17 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT src/CMakeFiles/chewing.dir/eim.cpp.o -MF CMakeFiles/chewing.dir/eim.cpp.o.d -o CMakeFiles/chewing.dir/eim.cpp.o -c /build/reproducible-path/fcitx5-chewing-5.1.7/src/eim.cpp
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src && /usr/bin/msgfmt --desktop -d /build/reproducible-path/fcitx5-chewing-5.1.7/po --template /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing-addon.conf.in -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing-addon.conf
+[ 29%] Generating fcitx5-chewing-ca.mo
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-ca.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/ca.po
-[ 29%] Generating fcitx5-chewing-he.mo
+[ 29%] Built target chewing.conf.in-fmt
+make  -f test/inputmethod/CMakeFiles/copy-im.dir/build.make test/inputmethod/CMakeFiles/copy-im.dir/depend
+make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
+[ 29%] Built target org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in-fmt
 [ 35%] Generating fcitx5-chewing-de.mo
+make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/fcitx5-chewing-5.1.7 /build/reproducible-path/fcitx5-chewing-5.1.7/test/inputmethod /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/inputmethod /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/inputmethod/CMakeFiles/copy-im.dir/DependInfo.cmake "--color="
+[ 41%] Generating fcitx5-chewing-da.mo
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-da.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/da.po
-[ 41%] Generating chewing.conf
-[ 47%] Generating fcitx5-chewing-ja.mo
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-de.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/de.po
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-he.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/he.po
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-ja.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/ja.po
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src && /usr/bin/msgfmt --desktop -d /build/reproducible-path/fcitx5-chewing-5.1.7/po --template /build/reproducible-path/fcitx5-chewing-5.1.7/src/chewing.conf.in -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing.conf
-[ 52%] Built target chewing-addon.conf.in-fmt
-[ 52%] Generating org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml
+[ 41%] Built target chewing-addon.conf.in-fmt
+make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
+make  -f test/inputmethod/CMakeFiles/copy-im.dir/build.make test/inputmethod/CMakeFiles/copy-im.dir/build
+make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make  -f test/addon/CMakeFiles/copy-addon.dir/build.make test/addon/CMakeFiles/copy-addon.dir/depend
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-de.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/de.po
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/inputmethod && /usr/bin/cmake -E copy /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing.conf /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/inputmethod/chewing.conf
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/fcitx5-chewing-5.1.7 /build/reproducible-path/fcitx5-chewing-5.1.7/test/addon /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/addon /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/addon/CMakeFiles/copy-addon.dir/DependInfo.cmake "--color="
-/usr/bin/msgfmt --xml -d /build/reproducible-path/fcitx5-chewing-5.1.7/po --template /build/reproducible-path/fcitx5-chewing-5.1.7/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml
-make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
+[ 47%] Generating fcitx5-chewing-he.mo
+[ 52%] Generating fcitx5-chewing-ja.mo
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-he.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/he.po
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-[ 52%] Built target chewing.conf.in-fmt
+[ 52%] Built target copy-im
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make  -f test/addon/CMakeFiles/copy-addon.dir/build.make test/addon/CMakeFiles/copy-addon.dir/build
-make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/addon && /usr/bin/cmake -E copy /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing-addon.conf /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/addon/chewing.conf
-make  -f test/inputmethod/CMakeFiles/copy-im.dir/build.make test/inputmethod/CMakeFiles/copy-im.dir/depend
-[ 52%] Built target org.fcitx.Fcitx5.Addon.Chewing.metainfo.xml.in-fmt
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-ja.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/ja.po
 [ 58%] Generating fcitx5-chewing-ko.mo
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/fcitx5-chewing-5.1.7 /build/reproducible-path/fcitx5-chewing-5.1.7/test/inputmethod /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/inputmethod /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/inputmethod/CMakeFiles/copy-im.dir/DependInfo.cmake "--color="
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/addon && /usr/bin/cmake -E copy /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing-addon.conf /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/addon/chewing.conf
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-ko.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/ko.po
 [ 64%] Generating fcitx5-chewing-ru.mo
-[ 70%] Generating fcitx5-chewing-zh_CN.mo
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make  -f test/inputmethod/CMakeFiles/copy-im.dir/build.make test/inputmethod/CMakeFiles/copy-im.dir/build
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-ru.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/ru.po
-make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/inputmethod && /usr/bin/cmake -E copy /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src/chewing.conf /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/inputmethod/chewing.conf
-[ 76%] Generating fcitx5-chewing-tr.mo
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-zh_CN.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/zh_CN.po
+[ 70%] Generating fcitx5-chewing-tr.mo
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-tr.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/tr.po
-[ 76%] Built target copy-addon
-[ 82%] Generating fcitx5-chewing-zh_TW.mo
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-zh_TW.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/zh_TW.po
-make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-[ 82%] Built target copy-im
+[ 70%] Built target copy-addon
 make  -f test/CMakeFiles/testchewing.dir/build.make test/CMakeFiles/testchewing.dir/depend
+[ 76%] Generating fcitx5-chewing-zh_CN.mo
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-zh_CN.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/zh_CN.po
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /build/reproducible-path/fcitx5-chewing-5.1.7 /build/reproducible-path/fcitx5-chewing-5.1.7/test /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/CMakeFiles/testchewing.dir/DependInfo.cmake "--color="
-[ 82%] Built target fcitx5-chewing-translation
+[ 82%] Generating fcitx5-chewing-zh_TW.mo
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po && /usr/bin/msgfmt -o /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/po/fcitx5-chewing-zh_TW.mo /build/reproducible-path/fcitx5-chewing-5.1.7/po/zh_TW.po
+make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 make  -f test/CMakeFiles/testchewing.dir/build.make test/CMakeFiles/testchewing.dir/build
 make[3]: Entering directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
+[ 82%] Built target fcitx5-chewing-translation
 [ 88%] Building CXX object test/CMakeFiles/testchewing.dir/testchewing.cpp.o
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test && /usr/bin/c++  -I/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test -I/usr/include/Fcitx5/Module/fcitx-module/testfrontend -isystem /usr/include/Fcitx5/Core -isystem /usr/include/Fcitx5/Config -isystem /usr/include/Fcitx5/Utils -Wall -Wextra -g -O2 -ffile-prefix-map=/build/reproducible-path/fcitx5-chewing-5.1.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden -MD -MT test/CMakeFiles/testchewing.dir/testchewing.cpp.o -MF CMakeFiles/testchewing.dir/testchewing.cpp.o.d -o CMakeFiles/testchewing.dir/testchewing.cpp.o -c /build/reproducible-path/fcitx5-chewing-5.1.7/test/testchewing.cpp
 [ 94%] Linking CXX executable testchewing
 cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test && /usr/bin/cmake -E cmake_link_script CMakeFiles/testchewing.dir/link.txt --verbose=1
-[100%] Linking CXX shared module libchewing.so
-cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src && /usr/bin/cmake -E cmake_link_script CMakeFiles/chewing.dir/link.txt --verbose=1
 /usr/bin/c++ -Wall -Wextra -g -O2 -ffile-prefix-map=/build/reproducible-path/fcitx5-chewing-5.1.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,-z,now -Wl,--dependency-file=CMakeFiles/testchewing.dir/link.d CMakeFiles/testchewing.dir/testchewing.cpp.o -o testchewing  /usr/lib/aarch64-linux-gnu/libFcitx5Core.so.5.1.12 /usr/lib/aarch64-linux-gnu/libFcitx5Config.so.5.1.12 /usr/lib/aarch64-linux-gnu/libFcitx5Utils.so.5.1.12
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
-[100%] Built target testchewing
+[ 94%] Built target testchewing
+[100%] Linking CXX shared module libchewing.so
+cd /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/src && /usr/bin/cmake -E cmake_link_script CMakeFiles/chewing.dir/link.txt --verbose=1
 /usr/bin/c++ -fPIC -Wall -Wextra -g -O2 -ffile-prefix-map=/build/reproducible-path/fcitx5-chewing-5.1.7=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -mbranch-protection=standard -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,--dependency-file=CMakeFiles/chewing.dir/link.d -Wl,--no-undefined -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -shared  -o libchewing.so CMakeFiles/chewing.dir/eim.cpp.o  /usr/lib/aarch64-linux-gnu/libFcitx5Core.so.5.1.12 /usr/lib/aarch64-linux-gnu/libFcitx5Config.so.5.1.12 /usr/lib/aarch64-linux-gnu/libFcitx5Utils.so.5.1.12 /usr/lib/aarch64-linux-gnu/libchewing.so
 make[3]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
 [100%] Built target chewing
@@ -1073,58 +1109,58 @@
 1: Test command: /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test/testchewing
 1: Working Directory: /build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu/test
 1: Test timeout computed to be: 10000000
-1: D2025-02-05 18:26:15.902742 i18n.cpp:32] Add gettext domain fcitx5 at /usr/share/locale
-1: D2025-02-05 18:26:15.906393 instance.cpp:1995] Trigger Key: Control+space Zenkaku_Hankaku Hangul
-1: I2025-02-05 18:26:15.906422 instance.cpp:1394] Override Enabled Addons: {chewing, testfrontend, testim}
-1: I2025-02-05 18:26:15.906431 instance.cpp:1395] Override Disabled Addons: {all}
-1: D2025-02-05 18:26:15.906685 addonmanager.cpp:167] Call loadAddon() with testim checkDependencies() returns 0 Dep: [] OptDep: []
-1: I2025-02-05 18:26:15.906867 addonmanager.cpp:205] Loaded addon testim
-1: D2025-02-05 18:26:15.906875 addonmanager.cpp:167] Call loadAddon() with testfrontend checkDependencies() returns 0 Dep: [] OptDep: []
-1: I2025-02-05 18:26:15.907011 addonmanager.cpp:205] Loaded addon testfrontend
-1: I2025-02-05 18:26:15.907104 inputmethodmanager.cpp:209] Found 3 input method(s) in addon testim
-1: I2025-02-05 18:26:15.907123 inputmethodmanager.cpp:132] No valid input method group in configuration. Building a default one
-1: I2025-02-05 18:26:15.907146 instance.cpp:382] Items in Default: [InputMethodGroupItem(keyboard-us,layout=)]
-1: I2025-02-05 18:26:15.907156 instance.cpp:387] Generated groups: [Default]
-1: D2025-02-05 18:26:15.907318 addonmanager.cpp:167] Call loadAddon() with chewing checkDependencies() returns 0 Dep: [(core, SemanticVersion(5.1.12))] OptDep: [(chttrans, SemanticVersion(0.1.0))]
-1: D2025-02-05 18:26:15.908870 i18n.cpp:32] Add gettext domain fcitx5-chewing at /usr/share/locale
-1: D2025-02-05 18:26:15.915900 eim.cpp:304] Set layout to: KB_DEFAULT
-1: D2025-02-05 18:26:15.915923 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
-1: I2025-02-05 18:26:15.915933 addonmanager.cpp:205] Loaded addon chewing
-1: D2025-02-05 18:26:15.916002 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.916011 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.916029 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.916034 instance.cpp:2455] Switch reason: 0
-1: D2025-02-05 18:26:15.916040 instance.cpp:2457] Old Input method: keyboard-us
-1: D2025-02-05 18:26:15.916044 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
-1: D2025-02-05 18:26:15.916050 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.916055 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
-1: D2025-02-05 18:26:15.916063 instance.cpp:2495] Input method switched
-1: I2025-02-05 18:26:15.916078 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.916092 eim.cpp:448] KeyEvent: z
-1: D2025-02-05 18:26:15.916103 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
-1: D2025-02-05 18:26:15.916110 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.916117 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.916123 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.916131 eim.cpp:579] Text:  Zuin: ㄈ
-1: I2025-02-05 18:26:15.916138 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.916147 eim.cpp:448] KeyEvent: p
-1: D2025-02-05 18:26:15.916154 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
-1: D2025-02-05 18:26:15.916159 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.916164 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.916169 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.916175 eim.cpp:579] Text:  Zuin: ㄈㄣ
-1: I2025-02-05 18:26:15.916181 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.916190 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.916196 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.916233 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916242 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.916252 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.916256 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.916263 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916269 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.916299 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916309 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "分", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.916328 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.906895 i18n.cpp:32] Add gettext domain fcitx5 at /usr/share/locale
+1: D2026-03-11 00:50:04.915610 instance.cpp:1995] Trigger Key: Control+space Zenkaku_Hankaku Hangul
+1: I2026-03-11 00:50:04.915665 instance.cpp:1394] Override Enabled Addons: {chewing, testfrontend, testim}
+1: I2026-03-11 00:50:04.915689 instance.cpp:1395] Override Disabled Addons: {all}
+1: D2026-03-11 00:50:04.916331 addonmanager.cpp:167] Call loadAddon() with testim checkDependencies() returns 0 Dep: [] OptDep: []
+1: I2026-03-11 00:50:04.916699 addonmanager.cpp:205] Loaded addon testim
+1: D2026-03-11 00:50:04.916723 addonmanager.cpp:167] Call loadAddon() with testfrontend checkDependencies() returns 0 Dep: [] OptDep: []
+1: I2026-03-11 00:50:04.917021 addonmanager.cpp:205] Loaded addon testfrontend
+1: I2026-03-11 00:50:04.917299 inputmethodmanager.cpp:209] Found 3 input method(s) in addon testim
+1: I2026-03-11 00:50:04.917365 inputmethodmanager.cpp:132] No valid input method group in configuration. Building a default one
+1: I2026-03-11 00:50:04.917484 instance.cpp:382] Items in Default: [InputMethodGroupItem(keyboard-us,layout=)]
+1: I2026-03-11 00:50:04.917533 instance.cpp:387] Generated groups: [Default]
+1: D2026-03-11 00:50:04.917814 addonmanager.cpp:167] Call loadAddon() with chewing checkDependencies() returns 0 Dep: [(core, SemanticVersion(5.1.12))] OptDep: [(chttrans, SemanticVersion(0.1.0))]
+1: D2026-03-11 00:50:04.921405 i18n.cpp:32] Add gettext domain fcitx5-chewing at /usr/share/locale
+1: D2026-03-11 00:50:04.931453 eim.cpp:304] Set layout to: KB_DEFAULT
+1: D2026-03-11 00:50:04.931494 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
+1: I2026-03-11 00:50:04.931513 addonmanager.cpp:205] Loaded addon chewing
+1: D2026-03-11 00:50:04.931663 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.931693 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.931743 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.931779 instance.cpp:2455] Switch reason: 0
+1: D2026-03-11 00:50:04.931795 instance.cpp:2457] Old Input method: keyboard-us
+1: D2026-03-11 00:50:04.931815 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
+1: D2026-03-11 00:50:04.931838 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.931854 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
+1: D2026-03-11 00:50:04.931902 instance.cpp:2495] Input method switched
+1: I2026-03-11 00:50:04.931996 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.932059 eim.cpp:448] KeyEvent: z
+1: D2026-03-11 00:50:04.932110 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
+1: D2026-03-11 00:50:04.932145 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.932177 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.932193 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.932229 eim.cpp:579] Text:  Zuin: ㄈ
+1: I2026-03-11 00:50:04.932268 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.932338 eim.cpp:448] KeyEvent: p
+1: D2026-03-11 00:50:04.932407 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
+1: D2026-03-11 00:50:04.932448 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.932475 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.932493 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.932517 eim.cpp:579] Text:  Zuin: ㄈㄣ
+1: I2026-03-11 00:50:04.932549 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.932611 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.932637 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.932762 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.932800 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.932826 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.932843 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.932873 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.932892 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.932975 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.933008 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "分", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.933054 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1145,24 +1181,24 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.916336 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '分))
-1: D2025-02-05 18:26:15.916341 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '分))
-1: D2025-02-05 18:26:15.916346 eim.cpp:579] Text: 分 Zuin: 
-1: I2025-02-05 18:26:15.916353 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.916363 eim.cpp:448] KeyEvent: Down
-1: D2025-02-05 18:26:15.916371 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K57-Down-�-
-1: D2025-02-05 18:26:15.916378 eim.cpp:271] [src/editor/mod.rs:971 chewing::editor] buffer CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.916407 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916414 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.916420 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [1], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.916425 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.916452 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916470 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["分", "紛", "芬", "氛", "吩", "棻", "玢", "酚", "雰", "昐", "鈖", "砏", "翂", "衯", "饙", "梤", "鳻", "汾", "邠", "錀", "岎", "帉", "㤋", "訜", "䭻", "朆", "餴"]
-1: D2025-02-05 18:26:15.916481 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916486 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.916513 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916521 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "分", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.916535 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.933073 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '分))
+1: D2026-03-11 00:50:04.933090 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '分))
+1: D2026-03-11 00:50:04.933108 eim.cpp:579] Text: 分 Zuin: 
+1: I2026-03-11 00:50:04.933135 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.933168 eim.cpp:448] KeyEvent: Down
+1: D2026-03-11 00:50:04.933189 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K57-Down-�-
+1: D2026-03-11 00:50:04.933282 eim.cpp:271] [src/editor/mod.rs:971 chewing::editor] buffer CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.933382 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.933405 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.933427 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [1], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.933443 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.933801 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.933853 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["分", "紛", "芬", "氛", "吩", "棻", "玢", "酚", "雰", "昐", "鈖", "砏", "翂", "衯", "饙", "梤", "鳻", "汾", "邠", "錀", "岎", "帉", "㤋", "訜", "䭻", "朆", "餴"]
+1: D2026-03-11 00:50:04.933897 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.933915 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.933990 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.934017 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "分", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.934061 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1183,24 +1219,24 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.916540 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '分))
-1: D2025-02-05 18:26:15.916546 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '分))
-1: D2025-02-05 18:26:15.916550 eim.cpp:579] Text: 分 Zuin: 
-1: I2025-02-05 18:26:15.916557 testfrontend.cpp:75] KeyEvent key: Down isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.916569 eim.cpp:448] KeyEvent: Return
-1: D2025-02-05 18:26:15.916599 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916607 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K7-N7-7-
-1: D2025-02-05 18:26:15.916634 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916650 eim.cpp:271] [src/editor/mod.rs:1307 chewing::editor] candidates: ["分", "紛", "芬", "氛", "吩", "棻", "玢", "酚", "雰", "昐", "鈖", "砏", "翂", "衯", "饙", "梤", "鳻", "汾", "邠", "錀", "岎", "帉", "㤋", "訜", "䭻", "朆", "餴"]
-1: D2025-02-05 18:26:15.916656 eim.cpp:271] [src/editor/mod.rs:1311 chewing::editor] Auto Shift false
-1: D2025-02-05 18:26:15.916663 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.916670 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [I(0..1, "玢")] } }
-1: D2025-02-05 18:26:15.916674 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.916680 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916685 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.916713 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916723 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.916735 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.934079 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '分))
+1: D2026-03-11 00:50:04.934095 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '分))
+1: D2026-03-11 00:50:04.934110 eim.cpp:579] Text: 分 Zuin: 
+1: I2026-03-11 00:50:04.934146 testfrontend.cpp:75] KeyEvent key: Down isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.934185 eim.cpp:448] KeyEvent: Return
+1: D2026-03-11 00:50:04.934278 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.934301 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K7-N7-7-
+1: D2026-03-11 00:50:04.934377 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.934425 eim.cpp:271] [src/editor/mod.rs:1307 chewing::editor] candidates: ["分", "紛", "芬", "氛", "吩", "棻", "玢", "酚", "雰", "昐", "鈖", "砏", "翂", "衯", "饙", "梤", "鳻", "汾", "邠", "錀", "岎", "帉", "㤋", "訜", "䭻", "朆", "餴"]
+1: D2026-03-11 00:50:04.934444 eim.cpp:271] [src/editor/mod.rs:1311 chewing::editor] Auto Shift false
+1: D2026-03-11 00:50:04.934464 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.934490 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [I(0..1, "玢")] } }
+1: D2026-03-11 00:50:04.934504 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.934525 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.934548 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.934629 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.934661 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.934702 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1221,17 +1257,17 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.916740 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.916745 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.916750 eim.cpp:579] Text: 玢 Zuin: 
-1: I2025-02-05 18:26:15.916758 testfrontend.cpp:75] KeyEvent key: Return isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.916767 eim.cpp:448] KeyEvent: Return
-1: D2025-02-05 18:26:15.916773 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K50-Enter-�-
-1: D2025-02-05 18:26:15.916780 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916785 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.916812 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916821 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.916834 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.934720 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.934733 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.934748 eim.cpp:579] Text: 玢 Zuin: 
+1: I2026-03-11 00:50:04.934775 testfrontend.cpp:75] KeyEvent key: Return isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.934804 eim.cpp:448] KeyEvent: Return
+1: D2026-03-11 00:50:04.934824 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K50-Enter-�-
+1: D2026-03-11 00:50:04.934841 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.934856 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.934939 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.934993 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.935038 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1252,48 +1288,55 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.916839 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.916845 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.916853 eim.cpp:271] [src/editor/mod.rs:660 chewing::editor] buffer CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [I(0..1, "玢")] } }
-1: D2025-02-05 18:26:15.916858 eim.cpp:271] [src/editor/mod.rs:697 chewing::editor] intervals [I(0..1, "玢")]
-1: D2025-02-05 18:26:15.916865 eim.cpp:271] [src/editor/mod.rs:726 chewing::editor] autolearn-1 [S("ㄈㄣ")] as 玢
-1: D2025-02-05 18:26:15.916892 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.916900 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Commit
-1: D2025-02-05 18:26:15.916906 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.916911 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
-1: D2025-02-05 18:26:15.916916 eim.cpp:271] [src/dictionary/trie_buf.rs:246 chewing::dictionary::trie_buf] Reloading...
-1: D2025-02-05 18:26:15.916948 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
-1: I2025-02-05 18:26:15.917046 testfrontend.cpp:28] Commit: 玢
-1: D2025-02-05 18:26:15.917053 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.917060 eim.cpp:579] Text:  Zuin: 
-1: I2025-02-05 18:26:15.917068 testfrontend.cpp:75] KeyEvent key: Return isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.917085 eim.cpp:304] Set layout to: KB_HANYU_PINYIN
-1: D2025-02-05 18:26:15.917096 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Pinyin { key_seq: "", syllable: Syllable { value: 32768, to_string(): "" }, syllable_alt: Syllable { value: 32768, to_string(): "" }, variant: HanyuPinyin }
-1: D2025-02-05 18:26:15.917153 eim.cpp:448] KeyEvent: h
-1: D2025-02-05 18:26:15.917163 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K32-H-h-
-1: D2025-02-05 18:26:15.917170 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.917177 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.917183 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.917189 eim.cpp:579] Text:  Zuin: h
-1: I2025-02-05 18:26:15.917198 testfrontend.cpp:75] KeyEvent key: h isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.917207 eim.cpp:448] KeyEvent: u
-1: D2025-02-05 18:26:15.917214 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K21-U-u-
-1: D2025-02-05 18:26:15.917220 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.917226 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.917231 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.917237 eim.cpp:579] Text:  Zuin: hu
-1: I2025-02-05 18:26:15.917244 testfrontend.cpp:75] KeyEvent key: u isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.917252 eim.cpp:448] KeyEvent: 2
-1: D2025-02-05 18:26:15.917259 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K2-N2-2-
-1: D2025-02-05 18:26:15.917323 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917332 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.917341 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.917346 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.917355 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917361 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.917407 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917417 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.917435 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.935056 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.935069 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.935092 eim.cpp:271] [src/editor/mod.rs:660 chewing::editor] buffer CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [I(0..1, "玢")] } }
+1: D2026-03-11 00:50:04.935107 eim.cpp:271] [src/editor/mod.rs:697 chewing::editor] intervals [I(0..1, "玢")]
+1: D2026-03-11 00:50:04.935124 eim.cpp:271] [src/editor/mod.rs:726 chewing::editor] autolearn-1 [S("ㄈㄣ")] as 玢
+1: D2026-03-11 00:50:04.935204 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.935233 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Commit
+1: D2026-03-11 00:50:04.935252 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.935267 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
+1: D2026-03-11 00:50:04.935284 eim.cpp:271] [src/dictionary/trie_buf.rs:246 chewing::dictionary::trie_buf] Reloading...
+1: D2026-03-11 00:50:04.935362 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
+1: I2026-03-11 00:50:04.935496 testfrontend.cpp:28] Commit: 玢
+1: D2026-03-11 00:50:04.935516 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.935534 eim.cpp:579] Text:  Zuin: 
+1: ID2026-03-11 00:50:04.935604 eim.cpp:271] [src/dictionary/trie_buf.rs:272 chewing::dictionary::trie_buf] Saving snapshot...
+1: D2026-03-11 00:50:04.935634 eim.cpp2026-03-11 00:50:04.935565 testfrontend.cpp:75] KeyEvent key: :271] [src/dictionary/trie_buf.rs:280 chewing::dictionary::trie_buf] Flushing snapshot...
+1: Return isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.935712 eim.cpp:304] Set layout to: KB_HANYU_PINYIN
+1: D2026-03-11 00:50:04.935748 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Pinyin { key_seq: "", syllable: Syllable { value: 32768, to_string(): "" }, syllable_alt: Syllable { value: 32768, to_string(): "" }, variant: HanyuPinyin }
+1: D2026-03-11 00:50:04.935789 eim.cpp:271] [src/dictionary/trie_buf.rs:285 chewing::dictionary::trie_buf]     Done
+1: D2026-03-11 00:50:04.935807 eim.cpp:271] D2026-03-11 00:50:04.935826 eim.cpp:448] KeyEvent: h
+1: [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
+1: D2026-03-11 00:50:04.935886 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K32-H-h-
+1: D2026-03-11 00:50:04.935914 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.935977 eim.cpp:271] [src/dictionary/trie_buf.rs:246 chewing::dictionary::trie_buf] Reloading...
+1: D2026-03-11 00:50:04.936050 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
+1: D2026-03-11 00:50:04.936114 eim.cpp:271] [src/dictionary/trie_buf.rs:260 chewing::dictionary::trie_buf] Aborted. Don't need to checkpoint in memory or clean dictionary.
+1: D2026-03-11 00:50:04.936318 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.936339 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.936355 eim.cpp:579] Text:  Zuin: h
+1: I2026-03-11 00:50:04.936380 testfrontend.cpp:75] KeyEvent key: h isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.936412 eim.cpp:448] KeyEvent: u
+1: D2026-03-11 00:50:04.936433 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K21-U-u-
+1: D2026-03-11 00:50:04.936447 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.936463 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.936477 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.936496 eim.cpp:579] Text:  Zuin: hu
+1: I2026-03-11 00:50:04.936512 testfrontend.cpp:75] KeyEvent key: u isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.936534 eim.cpp:448] KeyEvent: 2
+1: D2026-03-11 00:50:04.936553 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K2-N2-2-
+1: D2026-03-11 00:50:04.936717 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.936747 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.936771 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.936787 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.936806 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.936825 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.936939 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.936977 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.937016 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1314,20 +1357,20 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.917441 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '胡))
-1: D2025-02-05 18:26:15.917447 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '胡))
-1: D2025-02-05 18:26:15.917452 eim.cpp:579] Text: 胡 Zuin: 
-1: I2025-02-05 18:26:15.917460 testfrontend.cpp:75] KeyEvent key: 2 isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.917469 eim.cpp:448] KeyEvent: j
-1: D2025-02-05 18:26:15.917476 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K33-J-j-
-1: D2025-02-05 18:26:15.917482 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.917489 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.917494 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.917501 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917506 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.917555 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917567 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.917579 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.937032 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '胡))
+1: D2026-03-11 00:50:04.937046 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '胡))
+1: D2026-03-11 00:50:04.937062 eim.cpp:579] Text: 胡 Zuin: 
+1: I2026-03-11 00:50:04.937082 testfrontend.cpp:75] KeyEvent key: 2 isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.937107 eim.cpp:448] KeyEvent: j
+1: D2026-03-11 00:50:04.937126 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K33-J-j-
+1: D2026-03-11 00:50:04.937143 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.937163 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.937178 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.937194 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.937261 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.937407 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.937443 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.937485 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1348,20 +1391,20 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.917585 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '胡))
-1: D2025-02-05 18:26:15.917590 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '胡))
-1: D2025-02-05 18:26:15.917596 eim.cpp:579] Text: 胡 Zuin: j
-1: I2025-02-05 18:26:15.917603 testfrontend.cpp:75] KeyEvent key: j isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.917612 eim.cpp:448] KeyEvent: i
-1: D2025-02-05 18:26:15.917619 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K22-I-i-
-1: D2025-02-05 18:26:15.917624 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.917633 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.917638 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.917644 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917650 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.917696 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917707 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.917720 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.937500 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '胡))
+1: D2026-03-11 00:50:04.937512 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '胡))
+1: D2026-03-11 00:50:04.937526 eim.cpp:579] Text: 胡 Zuin: j
+1: I2026-03-11 00:50:04.937545 testfrontend.cpp:75] KeyEvent key: j isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.937571 eim.cpp:448] KeyEvent: i
+1: D2026-03-11 00:50:04.937588 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K22-I-i-
+1: D2026-03-11 00:50:04.937602 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.937620 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.937632 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.937683 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.937698 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.937823 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.937852 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.937893 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1382,20 +1425,20 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.917726 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '胡))
-1: D2025-02-05 18:26:15.917731 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '胡))
-1: D2025-02-05 18:26:15.917736 eim.cpp:579] Text: 胡 Zuin: ji
-1: I2025-02-05 18:26:15.917744 testfrontend.cpp:75] KeyEvent key: i isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.917753 eim.cpp:448] KeyEvent: a
-1: D2025-02-05 18:26:15.917760 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K27-A-a-
-1: D2025-02-05 18:26:15.917765 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.917772 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.917777 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.917784 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917789 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.917837 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917849 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.917861 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.937909 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '胡))
+1: D2026-03-11 00:50:04.937922 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '胡))
+1: D2026-03-11 00:50:04.937934 eim.cpp:579] Text: 胡 Zuin: ji
+1: I2026-03-11 00:50:04.937952 testfrontend.cpp:75] KeyEvent key: i isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.937975 eim.cpp:448] KeyEvent: a
+1: D2026-03-11 00:50:04.937991 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K27-A-a-
+1: D2026-03-11 00:50:04.938005 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.938024 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.938043 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.938060 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.938075 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.938189 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.938223 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.938261 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1416,27 +1459,27 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.917867 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '胡))
-1: D2025-02-05 18:26:15.917872 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '胡))
-1: D2025-02-05 18:26:15.917878 eim.cpp:579] Text: 胡 Zuin: jia
-1: I2025-02-05 18:26:15.917885 testfrontend.cpp:75] KeyEvent key: a isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.917895 eim.cpp:448] KeyEvent: 3
-1: D2025-02-05 18:26:15.917902 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K3-N3-3-
-1: D2025-02-05 18:26:15.917937 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917945 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.917954 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")], gaps: [Begin, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.917959 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.917965 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.917971 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.918536 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918555 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.918568 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918576 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.918582 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918588 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.918620 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918631 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.918650 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.938276 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '胡))
+1: D2026-03-11 00:50:04.938290 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '胡))
+1: D2026-03-11 00:50:04.938304 eim.cpp:579] Text: 胡 Zuin: jia
+1: I2026-03-11 00:50:04.938324 testfrontend.cpp:75] KeyEvent key: a isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.938346 eim.cpp:448] KeyEvent: 3
+1: D2026-03-11 00:50:04.938362 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K3-N3-3-
+1: D2026-03-11 00:50:04.938450 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.938472 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.938498 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")], gaps: [Begin, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.938512 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.938530 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.938544 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.938664 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.938693 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.938721 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.938742 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.938757 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.938769 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.938846 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.938876 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.938923 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1467,26 +1510,26 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.918657 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '胡) (1 2 '假))
-1: D2025-02-05 18:26:15.918663 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(8000 (0 1 '胡) (1 2 '假))
-1: D2025-02-05 18:26:15.918669 eim.cpp:579] Text: 胡假 Zuin: 
-1: I2025-02-05 18:26:15.918683 testfrontend.cpp:75] KeyEvent key: 3 isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.918703 eim.cpp:448] KeyEvent: h
-1: D2025-02-05 18:26:15.918711 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K32-H-h-
-1: D2025-02-05 18:26:15.918718 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.918727 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")], gaps: [Begin, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.918732 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.918741 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918747 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.918798 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918810 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.918820 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918828 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.918834 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918840 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.918872 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918882 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.918899 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.938940 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '胡) (1 2 '假))
+1: D2026-03-11 00:50:04.938953 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(8000 (0 1 '胡) (1 2 '假))
+1: D2026-03-11 00:50:04.938966 eim.cpp:579] Text: 胡假 Zuin: 
+1: I2026-03-11 00:50:04.938983 testfrontend.cpp:75] KeyEvent key: 3 isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.939006 eim.cpp:448] KeyEvent: h
+1: D2026-03-11 00:50:04.939021 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K32-H-h-
+1: D2026-03-11 00:50:04.939037 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.939056 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")], gaps: [Begin, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.939070 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.939086 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.939101 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.939219 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.939250 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.939300 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.939328 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.939343 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.939356 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.939433 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.939466 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.939512 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1517,26 +1560,26 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.918905 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '胡) (1 2 '假))
-1: D2025-02-05 18:26:15.918910 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(8000 (0 1 '胡) (1 2 '假))
-1: D2025-02-05 18:26:15.918916 eim.cpp:579] Text: 胡假 Zuin: h
-1: I2025-02-05 18:26:15.918923 testfrontend.cpp:75] KeyEvent key: h isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.918933 eim.cpp:448] KeyEvent: u
-1: D2025-02-05 18:26:15.918940 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K21-U-u-
-1: D2025-02-05 18:26:15.918945 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.918954 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")], gaps: [Begin, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.918959 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.918966 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.918971 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919017 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919029 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919039 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919047 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.919053 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919058 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919089 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919100 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919115 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.939530 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '胡) (1 2 '假))
+1: D2026-03-11 00:50:04.939544 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(8000 (0 1 '胡) (1 2 '假))
+1: D2026-03-11 00:50:04.939557 eim.cpp:579] Text: 胡假 Zuin: h
+1: I2026-03-11 00:50:04.939598 testfrontend.cpp:75] KeyEvent key: h isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.939625 eim.cpp:448] KeyEvent: u
+1: D2026-03-11 00:50:04.939644 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K21-U-u-
+1: D2026-03-11 00:50:04.939657 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.939677 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")], gaps: [Begin, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.939689 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.939706 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.939731 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.939849 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.939884 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.939913 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.939938 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.939953 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.939968 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.940045 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940079 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.940128 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1567,35 +1610,35 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.919122 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '胡) (1 2 '假))
-1: D2025-02-05 18:26:15.919128 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(8000 (0 1 '胡) (1 2 '假))
-1: D2025-02-05 18:26:15.919133 eim.cpp:579] Text: 胡假 Zuin: hu
-1: I2025-02-05 18:26:15.919140 testfrontend.cpp:75] KeyEvent key: u isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.919150 eim.cpp:448] KeyEvent: 3
-1: D2025-02-05 18:26:15.919156 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K3-N3-3-
-1: D2025-02-05 18:26:15.919178 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919185 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.919194 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")], gaps: [Begin, Normal, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.919200 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.919206 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919211 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919259 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919271 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919281 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919289 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.919300 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919309 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.919315 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919320 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919352 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919362 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919373 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919381 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.919386 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919393 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919413 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919421 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919441 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.940145 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '胡) (1 2 '假))
+1: D2026-03-11 00:50:04.940159 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(8000 (0 1 '胡) (1 2 '假))
+1: D2026-03-11 00:50:04.940172 eim.cpp:579] Text: 胡假 Zuin: hu
+1: I2026-03-11 00:50:04.940189 testfrontend.cpp:75] KeyEvent key: u isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.940214 eim.cpp:448] KeyEvent: 3
+1: D2026-03-11 00:50:04.940230 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K3-N3-3-
+1: D2026-03-11 00:50:04.940292 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940311 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.940339 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")], gaps: [Begin, Normal, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.940356 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.940374 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940391 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.940515 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940551 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.940578 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940599 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.940623 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940646 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.940661 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940676 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.940756 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940783 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.940812 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940834 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.940848 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940865 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.940918 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.940942 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.940997 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 3000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1636,34 +1679,34 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.919447 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
-1: D2025-02-05 18:26:15.919454 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
-1: D2025-02-05 18:26:15.919460 eim.cpp:579] Text: 胡假虎 Zuin: 
-1: I2025-02-05 18:26:15.919467 testfrontend.cpp:75] KeyEvent key: 3 isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.919477 eim.cpp:448] KeyEvent: w
-1: D2025-02-05 18:26:15.919484 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K16-W-w-
-1: D2025-02-05 18:26:15.919490 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.919500 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")], gaps: [Begin, Normal, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.919505 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.919511 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919517 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919567 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919578 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919588 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919595 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.919605 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919614 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.919620 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919625 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919658 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919668 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919677 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919685 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.919691 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919696 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919716 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919725 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919745 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.941014 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
+1: D2026-03-11 00:50:04.941029 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
+1: D2026-03-11 00:50:04.941042 eim.cpp:579] Text: 胡假虎 Zuin: 
+1: I2026-03-11 00:50:04.941060 testfrontend.cpp:75] KeyEvent key: 3 isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.941087 eim.cpp:448] KeyEvent: w
+1: D2026-03-11 00:50:04.941103 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K16-W-w-
+1: D2026-03-11 00:50:04.941117 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.941140 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")], gaps: [Begin, Normal, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.941152 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.941168 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.941182 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.941366 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.941410 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.941440 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.941460 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.941484 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.941506 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.941521 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.941561 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.941639 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.941665 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.941691 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.941726 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.941744 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.941757 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.941803 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.941821 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.941873 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 3000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1704,34 +1747,34 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.919751 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
-1: D2025-02-05 18:26:15.919757 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
-1: D2025-02-05 18:26:15.919762 eim.cpp:579] Text: 胡假虎 Zuin: w
-1: I2025-02-05 18:26:15.919769 testfrontend.cpp:75] KeyEvent key: w isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.919779 eim.cpp:448] KeyEvent: e
-1: D2025-02-05 18:26:15.919786 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K17-E-e-
-1: D2025-02-05 18:26:15.919791 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.919800 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")], gaps: [Begin, Normal, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.919805 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.919812 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919818 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919864 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919873 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919883 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919892 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.919902 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919910 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.919916 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919921 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.919951 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919962 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.919971 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919979 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.919985 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.919990 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.920011 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920018 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.920038 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.941891 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
+1: D2026-03-11 00:50:04.941903 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
+1: D2026-03-11 00:50:04.941918 eim.cpp:579] Text: 胡假虎 Zuin: w
+1: I2026-03-11 00:50:04.941937 testfrontend.cpp:75] KeyEvent key: w isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.941962 eim.cpp:448] KeyEvent: e
+1: D2026-03-11 00:50:04.941978 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K17-E-e-
+1: D2026-03-11 00:50:04.941991 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.942011 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")], gaps: [Begin, Normal, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.942024 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.942040 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.942052 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.942439 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.942473 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.942496 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.942515 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.942542 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.942564 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.942578 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.942590 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.942667 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.942692 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.942718 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.942738 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.942751 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.942764 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.942815 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.942836 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.942889 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 3000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1772,34 +1815,34 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.920044 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
-1: D2025-02-05 18:26:15.920050 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
-1: D2025-02-05 18:26:15.920055 eim.cpp:579] Text: 胡假虎 Zuin: we
-1: I2025-02-05 18:26:15.920063 testfrontend.cpp:75] KeyEvent key: e isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.920071 eim.cpp:448] KeyEvent: i
-1: D2025-02-05 18:26:15.920078 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K22-I-i-
-1: D2025-02-05 18:26:15.920083 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.920093 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")], gaps: [Begin, Normal, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.920100 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.920107 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920112 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.920160 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920169 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.920179 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920187 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.920197 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920205 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.920211 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920217 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.920249 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920257 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.920267 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920275 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.920281 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920286 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.920305 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920313 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.920333 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.942906 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
+1: D2026-03-11 00:50:04.942918 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
+1: D2026-03-11 00:50:04.942932 eim.cpp:579] Text: 胡假虎 Zuin: we
+1: I2026-03-11 00:50:04.942952 testfrontend.cpp:75] KeyEvent key: e isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.942977 eim.cpp:448] KeyEvent: i
+1: D2026-03-11 00:50:04.942992 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K22-I-i-
+1: D2026-03-11 00:50:04.943005 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.943026 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")], gaps: [Begin, Normal, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.943037 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.943053 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943066 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.943181 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943212 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.943236 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943257 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.943280 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943302 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.943319 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943334 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.943407 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943433 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.943458 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943479 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.943492 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943504 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.943553 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943593 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.943648 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 3000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -1840,45 +1883,45 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.920340 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
-1: D2025-02-05 18:26:15.920347 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
-1: D2025-02-05 18:26:15.920352 eim.cpp:579] Text: 胡假虎 Zuin: wei
-1: I2025-02-05 18:26:15.920359 testfrontend.cpp:75] KeyEvent key: i isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.920369 eim.cpp:448] KeyEvent: 1
-1: D2025-02-05 18:26:15.920375 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K1-N1-1-
-1: D2025-02-05 18:26:15.920411 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920420 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.920430 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 4, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.920435 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.920442 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920447 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.920492 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920501 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.920511 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920519 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.920529 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920537 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.920548 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920559 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
-1: D2025-02-05 18:26:15.920565 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920571 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.920603 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920612 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.920621 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920629 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.920639 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920647 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
-1: D2025-02-05 18:26:15.920653 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920658 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.920679 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920687 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.920697 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920706 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
-1: D2025-02-05 18:26:15.920712 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920717 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.920750 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920759 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.920804 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.943666 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
+1: D2026-03-11 00:50:04.943682 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(9000 (0 1 '胡) (1 2 '假) (2 3 '虎))
+1: D2026-03-11 00:50:04.943694 eim.cpp:579] Text: 胡假虎 Zuin: wei
+1: I2026-03-11 00:50:04.943714 testfrontend.cpp:75] KeyEvent key: i isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.943741 eim.cpp:448] KeyEvent: 1
+1: D2026-03-11 00:50:04.943756 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K1-N1-1-
+1: D2026-03-11 00:50:04.943842 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943865 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.943893 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 4, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.943906 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.943924 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.943937 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.944043 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944071 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.944103 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944124 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.944154 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944176 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.944207 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944236 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
+1: D2026-03-11 00:50:04.944253 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944265 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.944341 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944366 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.944398 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944421 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.944456 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944490 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
+1: D2026-03-11 00:50:04.944506 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944518 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.944568 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944592 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.944622 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944646 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
+1: D2026-03-11 00:50:04.944661 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944674 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.944754 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.944781 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.944884 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 4000,
 1:         rule_largest_avgwordlen(): 24000,
@@ -1987,52 +2030,52 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.920811 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.920817 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.920823 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
-1: D2025-02-05 18:26:15.920829 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.920835 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
-1: D2025-02-05 18:26:15.920841 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.920846 eim.cpp:579] Text: 狐假虎威 Zuin: 
-1: I2025-02-05 18:26:15.920853 testfrontend.cpp:75] KeyEvent key: 1 isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.920868 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.920875 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.920887 eim.cpp:271] [src/editor/mod.rs:826 chewing::editor] buffer CompositionEditor { cursor: 4, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.920898 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920905 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.920915 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [4], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.920919 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.920930 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920938 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["狐假虎威"]
-1: D2025-02-05 18:26:15.920947 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.920953 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.921000 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921009 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.921019 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921027 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.921037 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921046 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.921056 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921067 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
-1: D2025-02-05 18:26:15.921073 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921079 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.921128 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921139 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.921149 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921157 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.921166 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921175 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
-1: D2025-02-05 18:26:15.921181 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921186 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.921207 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921215 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.921226 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921234 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
-1: D2025-02-05 18:26:15.921240 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921245 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.921279 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921288 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.921335 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.944902 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.944915 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.944929 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
+1: D2026-03-11 00:50:04.944942 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.944955 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
+1: D2026-03-11 00:50:04.944967 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.944979 eim.cpp:579] Text: 狐假虎威 Zuin: 
+1: I2026-03-11 00:50:04.944997 testfrontend.cpp:75] KeyEvent key: 1 isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.945028 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.945044 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.945068 eim.cpp:271] [src/editor/mod.rs:826 chewing::editor] buffer CompositionEditor { cursor: 4, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.945096 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945110 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.945132 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [4], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.945143 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.945166 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945183 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["狐假虎威"]
+1: D2026-03-11 00:50:04.945203 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945258 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.945369 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945394 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.945446 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945474 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.945503 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945526 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.945560 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945590 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
+1: D2026-03-11 00:50:04.945607 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945621 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.945699 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945727 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.945750 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945795 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.945824 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945845 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
+1: D2026-03-11 00:50:04.945860 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945873 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.945920 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945939 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.945964 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.945983 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
+1: D2026-03-11 00:50:04.945995 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946010 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.946091 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946113 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.946209 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 4000,
 1:         rule_largest_avgwordlen(): 24000,
@@ -2141,53 +2184,53 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.921342 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.921348 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.921354 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
-1: D2025-02-05 18:26:15.921359 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.921366 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
-1: D2025-02-05 18:26:15.921371 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.921377 eim.cpp:579] Text: 狐假虎威 Zuin: 
-1: I2025-02-05 18:26:15.921386 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.921401 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.921413 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921421 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K57-Down-�-
-1: D2025-02-05 18:26:15.921431 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921441 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921451 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921457 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.921467 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [4], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.921478 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921484 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["虎威"]
-1: D2025-02-05 18:26:15.921491 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921497 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.921546 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921556 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.921566 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921574 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.921584 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921592 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.921603 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921614 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
-1: D2025-02-05 18:26:15.921619 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921625 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.921657 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921666 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.921676 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921684 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.921693 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921702 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
-1: D2025-02-05 18:26:15.921708 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921713 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.921733 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921741 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.921751 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921760 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
-1: D2025-02-05 18:26:15.921766 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921771 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.921804 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.921813 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.921856 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.946226 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.946237 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.946249 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
+1: D2026-03-11 00:50:04.946261 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.946273 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
+1: D2026-03-11 00:50:04.946284 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.946295 eim.cpp:579] Text: 狐假虎威 Zuin: 
+1: I2026-03-11 00:50:04.946314 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.946342 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.946368 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946384 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K57-Down-�-
+1: D2026-03-11 00:50:04.946404 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946424 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946444 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946456 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.946477 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [4], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.946498 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946512 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["虎威"]
+1: D2026-03-11 00:50:04.946527 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946540 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.946640 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946664 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.946694 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946713 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.946739 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946760 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.946788 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946815 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
+1: D2026-03-11 00:50:04.946831 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946844 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.946918 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946939 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.946961 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.946979 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.947002 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947023 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
+1: D2026-03-11 00:50:04.947036 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947048 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.947093 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947112 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.947139 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947160 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
+1: D2026-03-11 00:50:04.947172 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947186 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.947263 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947283 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.947383 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 4000,
 1:         rule_largest_avgwordlen(): 24000,
@@ -2296,52 +2339,52 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.921863 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.921868 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.921874 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
-1: D2025-02-05 18:26:15.921880 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.921886 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
-1: D2025-02-05 18:26:15.921892 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.921897 eim.cpp:579] Text: 狐假虎威 Zuin: 
-1: I2025-02-05 18:26:15.921904 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.921915 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.921926 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.922963 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K57-Down-�-
-1: D2025-02-05 18:26:15.922984 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923025 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923033 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.923046 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [4], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.923083 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923104 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["威", "崴", "偎", "煨", "葳", "隈", "萎", "委", "逶", "烓", "椳", "渨", "碨", "愄", "揋", "葨", "隇", "溾", "詴", "蝛", "覣", "燰", "危", "倭", "微", "薇", "喡", "溦", "蜲", "踒", "喴", "媙", "鰄", "㙎", "嵔", "楲", "鰃"]
-1: D2025-02-05 18:26:15.923122 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923128 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.923182 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923192 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.923203 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923211 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.923222 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923231 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.923242 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923254 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
-1: D2025-02-05 18:26:15.923260 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923267 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.923297 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923306 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.923316 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923324 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.923334 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923343 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
-1: D2025-02-05 18:26:15.923348 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923355 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.923373 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923381 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.923392 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923400 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
-1: D2025-02-05 18:26:15.923406 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923412 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.923443 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923452 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.923501 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.947399 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.947410 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.947422 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
+1: D2026-03-11 00:50:04.947434 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.947447 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
+1: D2026-03-11 00:50:04.947458 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.947469 eim.cpp:579] Text: 狐假虎威 Zuin: 
+1: I2026-03-11 00:50:04.947487 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.947513 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.947541 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947554 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K57-Down-�-
+1: D2026-03-11 00:50:04.947657 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947736 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947759 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.947785 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 3, cursor_stack: [4], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.947863 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947913 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["威", "崴", "偎", "煨", "葳", "隈", "萎", "委", "逶", "烓", "椳", "渨", "碨", "愄", "揋", "葨", "隇", "溾", "詴", "蝛", "覣", "燰", "危", "倭", "微", "薇", "喡", "溦", "蜲", "踒", "喴", "媙", "鰄", "㙎", "嵔", "楲", "鰃"]
+1: D2026-03-11 00:50:04.947948 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.947963 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.948067 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948093 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.948121 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948140 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.948167 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948190 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.948217 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948247 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
+1: D2026-03-11 00:50:04.948262 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948275 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.948353 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948381 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.948409 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948428 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.948460 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948483 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
+1: D2026-03-11 00:50:04.948503 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948518 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.948566 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948593 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.948621 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948644 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
+1: D2026-03-11 00:50:04.948657 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948670 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.948749 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.948771 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.948876 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 4000,
 1:         rule_largest_avgwordlen(): 24000,
@@ -2450,52 +2493,52 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.923509 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.923515 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.923520 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
-1: D2025-02-05 18:26:15.923527 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.923533 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
-1: D2025-02-05 18:26:15.923539 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.923545 eim.cpp:579] Text: 狐假虎威 Zuin: 
-1: I2025-02-05 18:26:15.923560 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.923585 eim.cpp:448] KeyEvent: Return
-1: D2025-02-05 18:26:15.923623 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923632 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K1-N1-1-
-1: D2025-02-05 18:26:15.923665 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923686 eim.cpp:271] [src/editor/mod.rs:1307 chewing::editor] candidates: ["威", "崴", "偎", "煨", "葳", "隈", "萎", "委", "逶", "烓", "椳", "渨", "碨", "愄", "揋", "葨", "隇", "溾", "詴", "蝛", "覣", "燰", "危", "倭", "微", "薇", "喡", "溦", "蜲", "踒", "喴", "媙", "鰄", "㙎", "嵔", "楲", "鰃"]
-1: D2025-02-05 18:26:15.923693 eim.cpp:271] [src/editor/mod.rs:1311 chewing::editor] Auto Shift false
-1: D2025-02-05 18:26:15.923700 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.923711 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 4, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [I(3..4, "威")] } }
-1: D2025-02-05 18:26:15.923716 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.923723 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923729 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.923776 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923785 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.923795 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923803 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.923813 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923822 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.923832 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923844 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
-1: D2025-02-05 18:26:15.923850 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923856 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.923886 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923895 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.923905 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923912 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.923922 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923931 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
-1: D2025-02-05 18:26:15.923937 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923943 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.923962 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923970 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.923980 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.923988 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
-1: D2025-02-05 18:26:15.923994 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924000 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.924030 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924041 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.924086 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.948894 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.948906 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.948919 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
+1: D2026-03-11 00:50:04.948931 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.948943 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
+1: D2026-03-11 00:50:04.948956 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.948968 eim.cpp:579] Text: 狐假虎威 Zuin: 
+1: I2026-03-11 00:50:04.948989 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.949023 eim.cpp:448] KeyEvent: Return
+1: D2026-03-11 00:50:04.949105 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949123 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K1-N1-1-
+1: D2026-03-11 00:50:04.949201 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949307 eim.cpp:271] [src/editor/mod.rs:1307 chewing::editor] candidates: ["威", "崴", "偎", "煨", "葳", "隈", "萎", "委", "逶", "烓", "椳", "渨", "碨", "愄", "揋", "葨", "隇", "溾", "詴", "蝛", "覣", "燰", "危", "倭", "微", "薇", "喡", "溦", "蜲", "踒", "喴", "媙", "鰄", "㙎", "嵔", "楲", "鰃"]
+1: D2026-03-11 00:50:04.949331 eim.cpp:271] [src/editor/mod.rs:1311 chewing::editor] Auto Shift false
+1: D2026-03-11 00:50:04.949355 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.949404 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 4, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [I(3..4, "威")] } }
+1: D2026-03-11 00:50:04.949423 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.949447 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949464 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.949565 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949590 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.949611 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949635 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.949657 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949697 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.949732 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949759 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
+1: D2026-03-11 00:50:04.949770 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949781 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.949871 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949893 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.949917 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949938 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.949959 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.949978 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
+1: D2026-03-11 00:50:04.949991 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950002 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.950044 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950062 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.950090 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950112 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
+1: D2026-03-11 00:50:04.950127 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950139 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.950235 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950267 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.950370 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 4000,
 1:         rule_largest_avgwordlen(): 24000,
@@ -2604,45 +2647,45 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.924094 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.924099 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.924105 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
-1: D2025-02-05 18:26:15.924111 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.924117 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
-1: D2025-02-05 18:26:15.924123 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.924128 eim.cpp:579] Text: 狐假虎威 Zuin: 
-1: I2025-02-05 18:26:15.924138 testfrontend.cpp:75] KeyEvent key: Return isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.924149 eim.cpp:448] KeyEvent: Return
-1: D2025-02-05 18:26:15.924158 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K50-Enter-�-
-1: D2025-02-05 18:26:15.924165 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924171 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.924219 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924228 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.924238 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924246 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
-1: D2025-02-05 18:26:15.924256 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924264 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.924275 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924286 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
-1: D2025-02-05 18:26:15.924292 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924297 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.924330 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924339 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.924348 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924356 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
-1: D2025-02-05 18:26:15.924366 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924374 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
-1: D2025-02-05 18:26:15.924380 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924385 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.924405 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924413 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.924423 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924431 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
-1: D2025-02-05 18:26:15.924437 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924442 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.924476 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924486 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
-1: D2025-02-05 18:26:15.924528 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.950390 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.950403 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.950417 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
+1: D2026-03-11 00:50:04.950429 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.950441 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
+1: D2026-03-11 00:50:04.950453 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.950468 eim.cpp:579] Text: 狐假虎威 Zuin: 
+1: I2026-03-11 00:50:04.950496 testfrontend.cpp:75] KeyEvent key: Return isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.950528 eim.cpp:448] KeyEvent: Return
+1: D2026-03-11 00:50:04.950545 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K50-Enter-�-
+1: D2026-03-11 00:50:04.950561 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950573 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.950676 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950705 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ")] is Some(Phrase(Phrase { phrase: "胡", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.950728 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950748 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ")] is None
+1: D2026-03-11 00:50:04.950778 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950799 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.950828 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950872 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "狐假虎威", freq: 5, last_used: None }))
+1: D2026-03-11 00:50:04.950887 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.950901 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.950974 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.951002 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ")] is Some(Phrase(Phrase { phrase: "假", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.951030 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.951049 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ")] is None
+1: D2026-03-11 00:50:04.951076 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.951103 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] is None
+1: D2026-03-11 00:50:04.951118 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.951130 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.951177 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.951200 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ")] is Some(Phrase(Phrase { phrase: "虎", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.951231 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.951256 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄏㄨˇ"), S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "虎威", freq: 15, last_used: None }))
+1: D2026-03-11 00:50:04.951272 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.951289 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.951360 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.951388 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄨㄟ")] is Some(Phrase(Phrase { phrase: "威", freq: 0, last_used: None }))
+1: D2026-03-11 00:50:04.951480 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 4000,
 1:         rule_largest_avgwordlen(): 24000,
@@ -2751,58 +2794,64 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.924534 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.924540 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.924546 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
-1: D2025-02-05 18:26:15.924551 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.924557 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
-1: D2025-02-05 18:26:15.924563 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
-1: D2025-02-05 18:26:15.924575 eim.cpp:271] [src/editor/mod.rs:660 chewing::editor] buffer CompositionEditor { cursor: 4, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [I(3..4, "威")] } }
-1: D2025-02-05 18:26:15.924582 eim.cpp:271] [src/editor/mod.rs:697 chewing::editor] intervals [I(0..4, "狐假虎威")]
-1: D2025-02-05 18:26:15.924592 eim.cpp:271] [src/editor/mod.rs:712 chewing::editor] autolearn-3 [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] as 狐假虎威
-1: D2025-02-05 18:26:15.924603 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924611 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Commit
-1: D2025-02-05 18:26:15.924617 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.924624 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
-1: D2025-02-05 18:26:15.924629 eim.cpp:271] [src/dictionary/trie_buf.rs:222 chewing::dictionary::trie_buf] Aborted. Wait until previous sync is finished.
-1: D2025-02-05 18:26:15.924635 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
-1: D2025-02-05 18:26:15.924640 eim.cpp:271] [src/dictionary/trie_buf.rs:256 chewing::dictionary::trie_buf] Aborted. Wait until previous checkpoint result is handled.
-1: I2025-02-05 18:26:15.924648 testfrontend.cpp:28] Commit: 狐假虎威
-1: D2025-02-05 18:26:15.924654 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.924660 eim.cpp:579] Text:  Zuin: 
-1: I2025-02-05 18:26:15.924666 testfrontend.cpp:75] KeyEvent key: Return isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.924676 eim.cpp:448] KeyEvent: f
-1: D2025-02-05 18:26:15.924683 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K30-F-f-
-1: D2025-02-05 18:26:15.924690 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.924695 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.924701 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.924706 eim.cpp:579] Text:  Zuin: f
-1: I2025-02-05 18:26:15.924713 testfrontend.cpp:75] KeyEvent key: f isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.924722 eim.cpp:448] KeyEvent: e
-1: D2025-02-05 18:26:15.924729 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K17-E-e-
-1: D2025-02-05 18:26:15.924735 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.924741 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.924746 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.924752 eim.cpp:579] Text:  Zuin: fe
-1: I2025-02-05 18:26:15.924759 testfrontend.cpp:75] KeyEvent key: e isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.924767 eim.cpp:448] KeyEvent: n
-1: D2025-02-05 18:26:15.924774 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K43-N-n-
-1: D2025-02-05 18:26:15.924780 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.924785 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.924790 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.924795 eim.cpp:579] Text:  Zuin: fen
-1: I2025-02-05 18:26:15.924802 testfrontend.cpp:75] KeyEvent key: n isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.924812 eim.cpp:448] KeyEvent: 1
-1: D2025-02-05 18:26:15.924819 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K1-N1-1-
-1: D2025-02-05 18:26:15.924852 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924861 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.924868 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.924874 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.924881 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924887 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.924915 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.924924 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 1, last_used: Some(6) }))
-1: D2025-02-05 18:26:15.924938 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.951496 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.951508 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.951522 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(11815 (0 1 '胡) (1 2 '假) (2 4 '虎威))
+1: D2026-03-11 00:50:04.951534 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.951548 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(10000 (0 1 '胡) (1 2 '假) (2 3 '虎) (3 4 '威))
+1: D2026-03-11 00:50:04.951562 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(28005 (0 4 '狐假虎威))
+1: D2026-03-11 00:50:04.951604 eim.cpp:271] [src/editor/mod.rs:660 chewing::editor] buffer CompositionEditor { cursor: 4, cursor_stack: [], inner: Composition { symbols: [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")], gaps: [Begin, Normal, Normal, Normal], selections: [I(3..4, "威")] } }
+1: D2026-03-11 00:50:04.951619 eim.cpp:271] [src/editor/mod.rs:697 chewing::editor] intervals [I(0..4, "狐假虎威")]
+1: D2026-03-11 00:50:04.951640 eim.cpp:271] [src/editor/mod.rs:712 chewing::editor] autolearn-3 [S("ㄏㄨˊ"), S("ㄐㄧㄚˇ"), S("ㄏㄨˇ"), S("ㄨㄟ")] as 狐假虎威
+1: D2026-03-11 00:50:04.951663 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.951678 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Commit
+1: D2026-03-11 00:50:04.951690 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.951703 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
+1: D2026-03-11 00:50:04.951718 eim.cpp:271] [src/dictionary/trie_buf.rs:229 chewing::dictionary::trie_buf] Aborted. The in memory dictionary is already dirty.
+1: D2026-03-11 00:50:04.951734 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
+1: I2026-03-11 00:50:04.951842 testfrontend.cpp:28] Commit: 狐假虎威
+1: D2026-03-11 00:50:04.951859 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.951874 eim.cpp:579] Text:  Zuin: 
+1: I2026-03-11 00:50:04.951900 testfrontend.cpp:75] KeyEvent key: D2026-03-11 00:50:04.951944 eim.cpp:271] [src/dictionary/trie_buf.rs:272 chewing::dictionary::trie_buf] Saving snapshot...
+1: D2026-03-11 00:50:04.952016 eim.cpp:271] [src/dictionary/trie_buf.rs:280 chewing::dictionary::trie_buf] Flushing snapshot...
+1: Return isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.952240 eim.cpp:D2026-03-11 00:50:04.952269 eim.cpp:448] KeyEvent: f
+1: 271] [src/dictionary/trie_buf.rs:285 chewing::dictionary::trie_buf]     Done
+1: D2026-03-11 00:50:04.952340 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
+1: D2026-03-11 00:50:04.952380 eim.cpp:271] [src/dictionary/trie_buf.rs:246 chewing::dictionary::trie_buf] Reloading...
+1: D2026-03-11 00:50:04.952458 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K30-F-f-
+1: D2026-03-11 00:50:04.952484 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
+1: D2026-03-11 00:50:04.952532 eim.cpp:271] [src/dictionary/trie_buf.rs:260 chewing::dictionary::trie_buf] Aborted. Don't need to checkpoint in memory or clean dictionary.
+1: D2026-03-11 00:50:04.952579 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.952604 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.952624 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.952639 eim.cpp:579] Text:  Zuin: f
+1: I2026-03-11 00:50:04.952665 testfrontend.cpp:75] KeyEvent key: f isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.952694 eim.cpp:448] KeyEvent: e
+1: D2026-03-11 00:50:04.952717 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K17-E-e-
+1: D2026-03-11 00:50:04.952734 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.952747 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.952759 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.952777 eim.cpp:579] Text:  Zuin: fe
+1: I2026-03-11 00:50:04.952795 testfrontend.cpp:75] KeyEvent key: e isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.952823 eim.cpp:448] KeyEvent: n
+1: D2026-03-11 00:50:04.952841 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K43-N-n-
+1: D2026-03-11 00:50:04.952853 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.952869 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.952880 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.952895 eim.cpp:579] Text:  Zuin: fen
+1: I2026-03-11 00:50:04.952912 testfrontend.cpp:75] KeyEvent key: n isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.952933 eim.cpp:448] KeyEvent: 1
+1: D2026-03-11 00:50:04.952949 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K1-N1-1-
+1: D2026-03-11 00:50:04.953026 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.953046 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.953069 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.953082 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.953102 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.953117 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.953177 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.953203 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 1, last_used: Some(6) }))
+1: D2026-03-11 00:50:04.953416 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -2825,24 +2874,24 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.924944 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.924950 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.924955 eim.cpp:579] Text: 玢 Zuin: 
-1: I2025-02-05 18:26:15.924963 testfrontend.cpp:75] KeyEvent key: 1 isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.924974 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.924981 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.924989 eim.cpp:271] [src/editor/mod.rs:826 chewing::editor] buffer CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.925018 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925025 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.925032 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [1], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.925037 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.925065 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925082 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["分", "紛", "芬", "氛", "吩", "棻", "玢", "酚", "雰", "昐", "鈖", "砏", "翂", "衯", "饙", "梤", "鳻", "汾", "邠", "錀", "岎", "帉", "㤋", "訜", "䭻", "朆", "餴"]
-1: D2025-02-05 18:26:15.925095 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925119 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.925149 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925159 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 1, last_used: Some(6) }))
-1: D2025-02-05 18:26:15.925176 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.953434 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.953446 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.953457 eim.cpp:579] Text: 玢 Zuin: 
+1: I2026-03-11 00:50:04.953473 testfrontend.cpp:75] KeyEvent key: 1 isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.953502 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.953519 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.953539 eim.cpp:271] [src/editor/mod.rs:826 chewing::editor] buffer CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.953602 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.953620 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.953640 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [1], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.953650 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.953707 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.953746 eim.cpp:271] [capi/src/io.rs:1798 chewing_capi::io] candidates: ["分", "紛", "芬", "氛", "吩", "棻", "玢", "酚", "雰", "昐", "鈖", "砏", "翂", "衯", "饙", "梤", "鳻", "汾", "邠", "錀", "岎", "帉", "㤋", "訜", "䭻", "朆", "餴"]
+1: D2026-03-11 00:50:04.953780 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.953795 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.953853 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.953877 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 1, last_used: Some(6) }))
+1: D2026-03-11 00:50:04.953911 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -2865,19 +2914,19 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.925182 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.925188 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.925193 eim.cpp:579] Text: 玢 Zuin: 
-1: I2025-02-05 18:26:15.925202 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.925215 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.925222 instance.cpp:2455] Switch reason: 1
-1: D2025-02-05 18:26:15.925227 instance.cpp:2457] Old Input method: chewing
-1: D2025-02-05 18:26:15.925232 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
-1: D2025-02-05 18:26:15.925242 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925248 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.925275 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925285 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 1, last_used: Some(6) }))
-1: D2025-02-05 18:26:15.925299 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.953926 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.953936 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.953946 eim.cpp:579] Text: 玢 Zuin: 
+1: I2026-03-11 00:50:04.953960 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.953982 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.953995 instance.cpp:2455] Switch reason: 1
+1: D2026-03-11 00:50:04.954005 instance.cpp:2457] Old Input method: chewing
+1: D2026-03-11 00:50:04.954017 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
+1: D2026-03-11 00:50:04.954042 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.954055 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.954113 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.954137 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 1, last_used: Some(6) }))
+1: D2026-03-11 00:50:04.954172 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -2900,61 +2949,67 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.925305 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.925310 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.925318 eim.cpp:271] [src/editor/mod.rs:660 chewing::editor] buffer CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.925325 eim.cpp:271] [src/editor/mod.rs:697 chewing::editor] intervals [I(0..1, "玢")]
-1: D2025-02-05 18:26:15.925332 eim.cpp:271] [src/editor/mod.rs:726 chewing::editor] autolearn-1 [S("ㄈㄣ")] as 玢
-1: D2025-02-05 18:26:15.925359 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: I2025-02-05 18:26:15.925367 testfrontend.cpp:28] Commit: 玢
-1: D2025-02-05 18:26:15.925373 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.925381 eim.cpp:579] Text:  Zuin: 
-1: D2025-02-05 18:26:15.925388 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.925393 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.925404 instance.cpp:2495] Input method switched
-1: D2025-02-05 18:26:15.925431 eim.cpp:304] Set layout to: KB_DEFAULT
-1: D2025-02-05 18:26:15.925440 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
-1: D2025-02-05 18:26:15.925493 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.925498 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.925509 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.925514 instance.cpp:2455] Switch reason: 0
-1: D2025-02-05 18:26:15.925519 instance.cpp:2457] Old Input method: keyboard-us
-1: D2025-02-05 18:26:15.925524 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
-1: D2025-02-05 18:26:15.925531 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.925536 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
-1: D2025-02-05 18:26:15.925543 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.925549 eim.cpp:579] Text:  Zuin: 
-1: D2025-02-05 18:26:15.925555 instance.cpp:2495] Input method switched
-1: I2025-02-05 18:26:15.925563 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.925577 eim.cpp:448] KeyEvent: z
-1: D2025-02-05 18:26:15.925586 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
-1: D2025-02-05 18:26:15.925592 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.925599 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.925605 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
-1: D2025-02-05 18:26:15.925610 eim.cpp:271] [src/dictionary/trie_buf.rs:222 chewing::dictionary::trie_buf] Aborted. Wait until previous sync is finished.
-1: D2025-02-05 18:26:15.925617 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
-1: D2025-02-05 18:26:15.925623 eim.cpp:271] [src/dictionary/trie_buf.rs:256 chewing::dictionary::trie_buf] Aborted. Wait until previous checkpoint result is handled.
-1: D2025-02-05 18:26:15.925628 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.925634 eim.cpp:579] Text:  Zuin: ㄈ
-1: I2025-02-05 18:26:15.925641 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.925652 eim.cpp:448] KeyEvent: p
-1: D2025-02-05 18:26:15.925658 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
-1: D2025-02-05 18:26:15.925664 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.925670 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.925675 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.925680 eim.cpp:579] Text:  Zuin: ㄈㄣ
-1: I2025-02-05 18:26:15.925687 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.925696 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.925702 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.925731 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925738 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.925746 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.925751 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.925757 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925763 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.925791 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925801 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.925816 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.954185 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.954196 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.954210 eim.cpp:271] [src/editor/mod.rs:660 chewing::editor] buffer CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.954221 eim.cpp:271] [src/editor/mod.rs:697 chewing::editor] intervals [I(0..1, "玢")]
+1: D2026-03-11 00:50:04.954235 eim.cpp:271] [src/editor/mod.rs:726 chewing::editor] autolearn-1 [S("ㄈㄣ")] as 玢
+1: D2026-03-11 00:50:04.954292 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: I2026-03-11 00:50:04.954316 testfrontend.cpp:28] Commit: 玢
+1: D2026-03-11 00:50:04.954328 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.954347 eim.cpp:579] Text:  Zuin: 
+1: D2026-03-11 00:50:04.954361 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.954371 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.954391 instance.cpp:2495] Input method switched
+1: D2026-03-11 00:50:04.954432 eim.cpp:304] Set layout to: KB_DEFAULT
+1: D2026-03-11 00:50:04.954452 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
+1: D2026-03-11 00:50:04.954531 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.954544 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.954570 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.954584 instance.cpp:2455] Switch reason: 0
+1: D2026-03-11 00:50:04.954595 instance.cpp:2457] Old Input method: keyboard-us
+1: D2026-03-11 00:50:04.954608 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
+1: D2026-03-11 00:50:04.954624 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.954634 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
+1: D2026-03-11 00:50:04.954649 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.954662 eim.cpp:579] Text:  Zuin: 
+1: D2026-03-11 00:50:04.954677 instance.cpp:2495] Input method switched
+1: I2026-03-11 00:50:04.954699 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.954734 eim.cpp:448] KeyEvent: z
+1: D2026-03-11 00:50:04.954753 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
+1: D2026-03-11 00:50:04.954765 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.954779 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.954791 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
+1: D2026-03-11 00:50:04.954809 eim.cpp:271] [src/dictionary/trie_buf.rs:229 chewing::dictionary::trie_buf] Aborted. The in memory dictionary is already dirty.
+1: D2026-03-11 00:50:04.954825 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
+1: D2026-03-11 00:50:04.954922 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.954956 eim.cpp:579] Text:  Zuin: ㄈ
+1: ID2026-03-11 00:50:04.9549992026-03-11 00:50:04.955020 eim.cpp: testfrontend.cpp:75] 271] [src/dictionary/trie_buf.rs:272 chewing::dictionary::trie_buf] Saving snapshot...
+1: KeyEvent key: z isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.955106 eim.cppD2026-03-11 00:50:04.955127 eim.cpp:448] KeyEvent: :p
+1: 271] [src/dictionary/trie_buf.rs:280 chewing::dictionary::trie_buf] Flushing snapshot...
+1: D2026-03-11 00:50:04.955238 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
+1: D2026-03-11 00:50:04.955257 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.955272 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.955285 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.955298 eim.cpp:579] Text:  Zuin: ㄈㄣ
+1: I2026-03-11 00:50:04.955315 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.955347 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.955367 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.955409 eim.cpp:271] [src/dictionary/trie_buf.rs:285 chewing::dictionary::trie_buf]     Done
+1: D2026-03-11 00:50:04.955454 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
+1: D2026-03-11 00:50:04.955494 eim.cpp:271] [src/dictionary/trie_buf.rs:246 chewing::dictionary::trie_buf] Reloading...
+1: D2026-03-11 00:50:04.955528 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.955552 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
+1: D2026-03-11 00:50:04.955604 eim.cpp:271] [src/dictionary/trie_buf.rs:260 chewing::dictionary::trie_buf] Aborted. Don't need to checkpoint in memory or clean dictionary.
+1: D2026-03-11 00:50:04.955639 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.955661 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.955673 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.955698 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.955711 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.955771 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.955793 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.955828 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -2977,20 +3032,20 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.925822 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.925827 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.925833 eim.cpp:579] Text: 玢 Zuin: 
-1: I2025-02-05 18:26:15.925840 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.925849 eim.cpp:448] KeyEvent: z
-1: D2025-02-05 18:26:15.925856 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
-1: D2025-02-05 18:26:15.925862 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.925869 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.925874 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.925881 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925887 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.925914 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.925923 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.925937 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.955844 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.955853 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.955863 eim.cpp:579] Text: 玢 Zuin: 
+1: I2026-03-11 00:50:04.955877 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.955901 eim.cpp:448] KeyEvent: z
+1: D2026-03-11 00:50:04.955915 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
+1: D2026-03-11 00:50:04.955925 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.955940 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.955951 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.955973 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.955986 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.956042 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.956065 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.956097 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3013,20 +3068,20 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.925943 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.925948 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.925954 eim.cpp:579] Text: 玢 Zuin: ㄈ
-1: I2025-02-05 18:26:15.925961 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.925970 eim.cpp:448] KeyEvent: p
-1: D2025-02-05 18:26:15.925977 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
-1: D2025-02-05 18:26:15.925982 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.926875 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.926891 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.926906 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.926914 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.926950 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.926961 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.926978 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.956110 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.956120 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.956130 eim.cpp:579] Text: 玢 Zuin: ㄈ
+1: I2026-03-11 00:50:04.956143 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.956184 eim.cpp:448] KeyEvent: p
+1: D2026-03-11 00:50:04.956202 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
+1: D2026-03-11 00:50:04.956214 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.956228 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.956239 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.956257 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.956270 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.956326 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.956349 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.956382 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3049,27 +3104,27 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.926985 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.926990 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.926996 eim.cpp:579] Text: 玢 Zuin: ㄈㄣ
-1: I2025-02-05 18:26:15.927009 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.927031 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.927039 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.927066 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927074 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.927083 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.927088 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.927095 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927101 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.927128 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927137 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.927149 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927157 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1791, last_used: None }))
-1: D2025-02-05 18:26:15.927163 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927169 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.927196 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927205 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.927232 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.956395 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.956405 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.956415 eim.cpp:579] Text: 玢 Zuin: ㄈㄣ
+1: I2026-03-11 00:50:04.956430 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.956449 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.956474 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.956532 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.956550 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.956565 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.956576 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.956617 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.956638 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.956696 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.956717 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.956744 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.956768 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1791, last_used: None }))
+1: D2026-03-11 00:50:04.956781 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.956794 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.956848 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.956867 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.956920 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 12000,
@@ -3123,25 +3178,25 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.927239 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15791 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.927244 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15791 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.927250 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
-1: D2025-02-05 18:26:15.927256 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15791 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.927261 eim.cpp:579] Text: 紛紛 Zuin: 
-1: I2025-02-05 18:26:15.927269 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.927281 eim.cpp:448] KeyEvent: Return
-1: D2025-02-05 18:26:15.927289 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K50-Enter-�-
-1: D2025-02-05 18:26:15.927296 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927301 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.927328 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927337 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.927348 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927357 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1791, last_used: None }))
-1: D2025-02-05 18:26:15.927362 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927368 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.927393 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927402 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.927427 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.956933 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15791 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.956943 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15791 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.956954 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
+1: D2026-03-11 00:50:04.956964 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15791 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.956974 eim.cpp:579] Text: 紛紛 Zuin: 
+1: I2026-03-11 00:50:04.956995 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.957020 eim.cpp:448] KeyEvent: Return
+1: D2026-03-11 00:50:04.957035 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K50-Enter-�-
+1: D2026-03-11 00:50:04.957046 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.957056 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.957110 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.957135 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.957162 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.957180 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1791, last_used: None }))
+1: D2026-03-11 00:50:04.957195 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.957254 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.957315 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.957337 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.957387 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 12000,
@@ -3195,76 +3250,82 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.927433 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15791 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.927439 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15791 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.927445 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
-1: D2025-02-05 18:26:15.927450 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15791 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.927458 eim.cpp:271] [src/editor/mod.rs:660 chewing::editor] buffer CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.927465 eim.cpp:271] [src/editor/mod.rs:697 chewing::editor] intervals [I(0..2, "紛紛")]
-1: D2025-02-05 18:26:15.927473 eim.cpp:271] [src/editor/mod.rs:712 chewing::editor] autolearn-3 [S("ㄈㄣ"), S("ㄈㄣ")] as 紛紛
-1: D2025-02-05 18:26:15.927484 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927491 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Commit
-1: D2025-02-05 18:26:15.927497 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.927503 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
-1: D2025-02-05 18:26:15.927508 eim.cpp:271] [src/dictionary/trie_buf.rs:222 chewing::dictionary::trie_buf] Aborted. Wait until previous sync is finished.
-1: D2025-02-05 18:26:15.927514 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
-1: D2025-02-05 18:26:15.927520 eim.cpp:271] [src/dictionary/trie_buf.rs:256 chewing::dictionary::trie_buf] Aborted. Wait until previous checkpoint result is handled.
-1: I2025-02-05 18:26:15.927527 testfrontend.cpp:28] Commit: 紛紛
-1: D2025-02-05 18:26:15.927533 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.927538 eim.cpp:579] Text:  Zuin: 
-1: I2025-02-05 18:26:15.927544 testfrontend.cpp:75] KeyEvent key: Return isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.927553 eim.cpp:448] KeyEvent: BackSpace
-1: D2025-02-05 18:26:15.927561 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.927567 eim.cpp:579] Text:  Zuin: 
-1: I2025-02-05 18:26:15.927574 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 0
-1: D2025-02-05 18:26:15.927584 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.927591 instance.cpp:2455] Switch reason: 1
-1: D2025-02-05 18:26:15.927596 instance.cpp:2457] Old Input method: chewing
-1: D2025-02-05 18:26:15.927601 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
-1: D2025-02-05 18:26:15.927608 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.927613 eim.cpp:579] Text:  Zuin: 
-1: D2025-02-05 18:26:15.927619 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.927624 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.927633 instance.cpp:2495] Input method switched
-1: D2025-02-05 18:26:15.927656 eim.cpp:304] Set layout to: KB_DEFAULT
-1: D2025-02-05 18:26:15.927665 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
-1: D2025-02-05 18:26:15.927713 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.927719 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.927729 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.927735 instance.cpp:2455] Switch reason: 0
-1: D2025-02-05 18:26:15.927740 instance.cpp:2457] Old Input method: keyboard-us
-1: D2025-02-05 18:26:15.927746 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
-1: D2025-02-05 18:26:15.927753 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.927758 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
-1: D2025-02-05 18:26:15.927766 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.927773 eim.cpp:579] Text:  Zuin: 
-1: D2025-02-05 18:26:15.927779 instance.cpp:2495] Input method switched
-1: I2025-02-05 18:26:15.927787 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.927801 eim.cpp:448] KeyEvent: z
-1: D2025-02-05 18:26:15.927809 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
-1: D2025-02-05 18:26:15.927816 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.927822 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.927827 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.927834 eim.cpp:579] Text:  Zuin: ㄈ
-1: I2025-02-05 18:26:15.927841 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.927851 eim.cpp:448] KeyEvent: p
-1: D2025-02-05 18:26:15.927858 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
-1: D2025-02-05 18:26:15.927863 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.927869 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.927874 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.927880 eim.cpp:579] Text:  Zuin: ㄈㄣ
-1: I2025-02-05 18:26:15.927887 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.927896 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.927903 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.927933 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927940 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.927948 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.927953 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.927959 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.927967 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.927993 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928002 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.928016 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.957400 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15791 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.957410 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15791 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.957437 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
+1: D2026-03-11 00:50:04.957449 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15791 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.957466 eim.cpp:271] [src/editor/mod.rs:660 chewing::editor] buffer CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.957478 eim.cpp:271] [src/editor/mod.rs:697 chewing::editor] intervals [I(0..2, "紛紛")]
+1: D2026-03-11 00:50:04.957492 eim.cpp:271] [src/editor/mod.rs:712 chewing::editor] autolearn-3 [S("ㄈㄣ"), S("ㄈㄣ")] as 紛紛
+1: D2026-03-11 00:50:04.957514 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.957527 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Commit
+1: D2026-03-11 00:50:04.957540 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.957551 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
+1: D2026-03-11 00:50:04.957564 eim.cpp:271] [src/dictionary/trie_buf.rs:229 chewing::dictionary::trie_buf] Aborted. The in memory dictionary is already dirty.
+1: D2026-03-11 00:50:04.957577 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
+1: I2026-03-11 00:50:04.957659 testfrontend.cpp:28] Commit: 紛紛
+1: D2026-03-11 00:50:04.957676 eim.cpp:625] updateUI
+1: DD2026-03-11 00:50:04.957705 eim.cpp2026-03-11 00:50:04.957712 eim.cpp:579] Text:  Zuin: 
+1: :271] I2026-03-11 00:50:04.957826 [src/dictionary/trie_buf.rs:272 chewing::dictionary::trie_buf] Saving snapshot...
+1: testfrontend.cpp:75] KeyEvent key: Return isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.957876 eim.cpp:271] [src/dictionary/trie_buf.rs:280 chewing::dictionary::trie_buf] Flushing snapshot...
+1: D2026-03-11 00:50:04.957934 eim.cpp:448] KeyEvent: BackSpace
+1: D2026-03-11 00:50:04.957955 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.957969 eim.cpp:579] Text:  Zuin: 
+1: I2026-03-11 00:50:04.957984 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 0
+1: D2026-03-11 00:50:04.958002 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.958016 instance.cpp:2455] Switch reason: 1
+1: D2026-03-11 00:50:04.958026 instance.cpp:2457] Old Input method: chewing
+1: D2026-03-11 00:50:04.958038 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
+1: D2026-03-11 00:50:04.958053 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.958064 eim.cpp:579] Text:  Zuin: 
+1: D2026-03-11 00:50:04.958075 instance.cpp:2403] Instance::activateInputMethodD
+1: D2026-03-11 00:50:04.958111 instance.cpp:2408] Activate: [Last]:2026-03-11 00:50:04.958096 eim.cpp:271] [src/dictionary/trie_buf.rs:285 chewing::dictionary::trie_buf]     Done
+1: D2026-03-11 00:50:04.958168 eim.cpp:271] [src/dictionary/trie_buf.rs:219 chewing::dictionary::trie_buf] Synchronize dictionary from disk...
+1: D2026-03-11 00:50:04.958200 eim.cpp:271] [src/dictionary/trie_buf.rs:246 chewing::dictionary::trie_buf] Reloading...
+1:  [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.958244 instance.cpp:2495] Input method switched
+1: D2026-03-11 00:50:04.958276 eim.cpp:271] [src/dictionary/trie_buf.rs:254 chewing::dictionary::trie_buf] Check pointing...
+1: D2026-03-11 00:50:04.958320 eim.cpp:D304] Set layout to: KB_DEFAULT
+1: 2026-03-11 00:50:04.958335 eim.cpp:271] [src/dictionary/trie_buf.rs:260 chewing::dictionary::trie_buf] Aborted. Don't need to checkpoint in memory or clean dictionary.
+1: D2026-03-11 00:50:04.958407 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
+1: D2026-03-11 00:50:04.958494 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.958508 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.958527 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.958538 instance.cpp:2455] Switch reason: 0
+1: D2026-03-11 00:50:04.958550 instance.cpp:2457] Old Input method: keyboard-us
+1: D2026-03-11 00:50:04.958561 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
+1: D2026-03-11 00:50:04.958575 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.958585 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
+1: D2026-03-11 00:50:04.958599 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.958613 eim.cpp:579] Text:  Zuin: 
+1: D2026-03-11 00:50:04.958626 instance.cpp:2495] Input method switched
+1: I2026-03-11 00:50:04.958642 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.958674 eim.cpp:448] KeyEvent: z
+1: D2026-03-11 00:50:04.958692 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
+1: D2026-03-11 00:50:04.958705 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.958716 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.958727 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.958739 eim.cpp:579] Text:  Zuin: ㄈ
+1: I2026-03-11 00:50:04.958752 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.958773 eim.cpp:448] KeyEvent: p
+1: D2026-03-11 00:50:04.958786 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
+1: D2026-03-11 00:50:04.958797 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.958807 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.958818 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.958828 eim.cpp:579] Text:  Zuin: ㄈㄣ
+1: I2026-03-11 00:50:04.958841 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.958861 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.958875 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.958945 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.958964 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.958979 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.958992 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.959005 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.959019 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.959071 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.959090 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.959124 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3287,65 +3348,65 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.928022 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.928028 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.928034 eim.cpp:579] Text: 玢 Zuin: 
-1: I2025-02-05 18:26:15.928040 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.928049 eim.cpp:448] KeyEvent: BackSpace
-1: D2025-02-05 18:26:15.928057 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K52-Backspace-�-
-1: D2025-02-05 18:26:15.928063 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.928068 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.928074 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.928079 eim.cpp:579] Text:  Zuin: 
-1: I2025-02-05 18:26:15.928085 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.928093 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.928098 instance.cpp:2455] Switch reason: 1
-1: D2025-02-05 18:26:15.928103 instance.cpp:2457] Old Input method: chewing
-1: D2025-02-05 18:26:15.928108 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
-1: D2025-02-05 18:26:15.928115 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.928121 eim.cpp:579] Text:  Zuin: 
-1: D2025-02-05 18:26:15.928126 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.928131 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.928138 instance.cpp:2495] Input method switched
-1: D2025-02-05 18:26:15.928150 eim.cpp:304] Set layout to: KB_DEFAULT
-1: D2025-02-05 18:26:15.928157 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
-1: D2025-02-05 18:26:15.928184 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.928189 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.928197 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.928203 instance.cpp:2455] Switch reason: 0
-1: D2025-02-05 18:26:15.928208 instance.cpp:2457] Old Input method: keyboard-us
-1: D2025-02-05 18:26:15.928213 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
-1: D2025-02-05 18:26:15.928219 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.928224 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
-1: D2025-02-05 18:26:15.928231 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.928237 eim.cpp:579] Text:  Zuin: 
-1: D2025-02-05 18:26:15.928243 instance.cpp:2495] Input method switched
-1: I2025-02-05 18:26:15.928250 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.928264 eim.cpp:448] KeyEvent: z
-1: D2025-02-05 18:26:15.928271 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
-1: D2025-02-05 18:26:15.928277 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.928283 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.928288 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.928294 eim.cpp:579] Text:  Zuin: ㄈ
-1: I2025-02-05 18:26:15.928300 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.928309 eim.cpp:448] KeyEvent: p
-1: D2025-02-05 18:26:15.928316 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
-1: D2025-02-05 18:26:15.928322 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.928327 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.928332 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.928338 eim.cpp:579] Text:  Zuin: ㄈㄣ
-1: I2025-02-05 18:26:15.928345 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.928354 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.928360 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.928394 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928402 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.928409 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.928414 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.928421 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928427 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.928452 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928461 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.928476 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.959136 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.959145 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.959155 eim.cpp:579] Text: 玢 Zuin: 
+1: I2026-03-11 00:50:04.959167 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.959182 eim.cpp:448] KeyEvent: BackSpace
+1: D2026-03-11 00:50:04.959196 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K52-Backspace-�-
+1: D2026-03-11 00:50:04.959207 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.959218 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.959228 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.959239 eim.cpp:579] Text:  Zuin: 
+1: I2026-03-11 00:50:04.959251 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.959269 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.959279 instance.cpp:2455] Switch reason: 1
+1: D2026-03-11 00:50:04.959291 instance.cpp:2457] Old Input method: chewing
+1: D2026-03-11 00:50:04.959300 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
+1: D2026-03-11 00:50:04.959316 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.959325 eim.cpp:579] Text:  Zuin: 
+1: D2026-03-11 00:50:04.959336 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.959347 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.959361 instance.cpp:2495] Input method switched
+1: D2026-03-11 00:50:04.959388 eim.cpp:304] Set layout to: KB_DEFAULT
+1: D2026-03-11 00:50:04.959405 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
+1: D2026-03-11 00:50:04.959464 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.959474 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.959490 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.959502 instance.cpp:2455] Switch reason: 0
+1: D2026-03-11 00:50:04.959510 instance.cpp:2457] Old Input method: keyboard-us
+1: D2026-03-11 00:50:04.959521 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
+1: D2026-03-11 00:50:04.959536 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.959545 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
+1: D2026-03-11 00:50:04.959559 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.959593 eim.cpp:579] Text:  Zuin: 
+1: D2026-03-11 00:50:04.959607 instance.cpp:2495] Input method switched
+1: I2026-03-11 00:50:04.959622 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.959654 eim.cpp:448] KeyEvent: z
+1: D2026-03-11 00:50:04.959670 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
+1: D2026-03-11 00:50:04.959682 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.959695 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.959704 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.959722 eim.cpp:579] Text:  Zuin: ㄈ
+1: I2026-03-11 00:50:04.959737 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.959760 eim.cpp:448] KeyEvent: p
+1: D2026-03-11 00:50:04.959775 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
+1: D2026-03-11 00:50:04.959786 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.959798 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.959810 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.959820 eim.cpp:579] Text:  Zuin: ㄈㄣ
+1: I2026-03-11 00:50:04.959834 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.959853 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.959867 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.959938 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.959954 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.959973 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.959985 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.959999 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.960012 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.960060 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.960083 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.960115 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3368,20 +3429,20 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.928482 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.928487 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.928492 eim.cpp:579] Text: 玢 Zuin: 
-1: I2025-02-05 18:26:15.928499 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.928509 eim.cpp:448] KeyEvent: z
-1: D2025-02-05 18:26:15.928516 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
-1: D2025-02-05 18:26:15.928521 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.928528 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.928534 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.928541 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928547 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.928573 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928582 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.928595 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.960127 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.960137 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.960146 eim.cpp:579] Text: 玢 Zuin: 
+1: I2026-03-11 00:50:04.960158 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.960177 eim.cpp:448] KeyEvent: z
+1: D2026-03-11 00:50:04.960200 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
+1: D2026-03-11 00:50:04.960212 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.960227 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.965424 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.965477 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.965493 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.965556 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.965579 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.965613 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3404,20 +3465,20 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.928601 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.928607 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.928612 eim.cpp:579] Text: 玢 Zuin: ㄈ
-1: I2025-02-05 18:26:15.928620 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.928629 eim.cpp:448] KeyEvent: p
-1: D2025-02-05 18:26:15.928636 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
-1: D2025-02-05 18:26:15.928641 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.928648 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.928653 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.928659 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928665 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.928692 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928700 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.928713 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.965626 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.965635 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.965645 eim.cpp:579] Text: 玢 Zuin: ㄈ
+1: I2026-03-11 00:50:04.965689 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.965731 eim.cpp:448] KeyEvent: p
+1: D2026-03-11 00:50:04.965750 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
+1: D2026-03-11 00:50:04.965763 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.965781 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.965792 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.965809 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.965820 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.965872 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.965889 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.965925 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3440,27 +3501,27 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.928719 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.928725 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.928730 eim.cpp:579] Text: 玢 Zuin: ㄈㄣ
-1: I2025-02-05 18:26:15.928737 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.928747 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.928754 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.928781 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928788 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.928796 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.928800 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.928807 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928813 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.928838 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928846 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.928857 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928866 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
-1: D2025-02-05 18:26:15.928871 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928877 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.928902 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.928910 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.928937 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.965935 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.965946 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.965955 eim.cpp:579] Text: 玢 Zuin: ㄈㄣ
+1: I2026-03-11 00:50:04.965968 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.965988 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.966254 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.966303 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.966317 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.966332 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.966341 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.966359 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.966371 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.966418 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.966436 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.966459 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.966476 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
+1: D2026-03-11 00:50:04.966489 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.966498 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.966550 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.966573 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.966620 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 12000,
@@ -3516,22 +3577,22 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.928943 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.928948 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.928955 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
-1: D2025-02-05 18:26:15.928961 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.928966 eim.cpp:579] Text: 紛紛 Zuin: 
-1: I2025-02-05 18:26:15.928973 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.928982 eim.cpp:448] KeyEvent: BackSpace
-1: D2025-02-05 18:26:15.928989 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K52-Backspace-�-
-1: D2025-02-05 18:26:15.928995 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.929002 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.929007 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929013 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929019 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.929045 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929054 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.929068 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.966632 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.966641 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.966650 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
+1: D2026-03-11 00:50:04.966660 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.966668 eim.cpp:579] Text: 紛紛 Zuin: 
+1: I2026-03-11 00:50:04.966679 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.966695 eim.cpp:448] KeyEvent: BackSpace
+1: D2026-03-11 00:50:04.966707 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K52-Backspace-�-
+1: D2026-03-11 00:50:04.966716 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.966727 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.966735 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.966748 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.966757 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.966806 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.966823 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.966850 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3554,69 +3615,69 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.929074 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.929079 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.929084 eim.cpp:579] Text: 玢 Zuin: 
-1: I2025-02-05 18:26:15.929091 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.929118 eim.cpp:448] KeyEvent: BackSpace
-1: D2025-02-05 18:26:15.929126 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K52-Backspace-�-
-1: D2025-02-05 18:26:15.929132 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.929138 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.929143 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929148 eim.cpp:579] Text:  Zuin: 
-1: I2025-02-05 18:26:15.929155 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.929164 eim.cpp:448] KeyEvent: BackSpace
-1: D2025-02-05 18:26:15.929170 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929175 eim.cpp:579] Text:  Zuin: 
-1: I2025-02-05 18:26:15.929182 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 0
-1: D2025-02-05 18:26:15.929190 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.929196 instance.cpp:2455] Switch reason: 1
-1: D2025-02-05 18:26:15.929201 instance.cpp:2457] Old Input method: chewing
-1: D2025-02-05 18:26:15.929206 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
-1: D2025-02-05 18:26:15.929213 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929220 eim.cpp:579] Text:  Zuin: 
-1: D2025-02-05 18:26:15.929226 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.929231 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.929239 instance.cpp:2495] Input method switched
-1: D2025-02-05 18:26:15.929253 eim.cpp:304] Set layout to: KB_DEFAULT
-1: D2025-02-05 18:26:15.929260 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
-1: D2025-02-05 18:26:15.929292 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.929297 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.929306 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.929311 instance.cpp:2455] Switch reason: 0
-1: D2025-02-05 18:26:15.929316 instance.cpp:2457] Old Input method: keyboard-us
-1: D2025-02-05 18:26:15.929321 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
-1: D2025-02-05 18:26:15.929328 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.929333 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
-1: D2025-02-05 18:26:15.929339 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929345 eim.cpp:579] Text:  Zuin: 
-1: D2025-02-05 18:26:15.929351 instance.cpp:2495] Input method switched
-1: I2025-02-05 18:26:15.929359 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.929371 eim.cpp:448] KeyEvent: z
-1: D2025-02-05 18:26:15.929379 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
-1: D2025-02-05 18:26:15.929384 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.929391 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.929396 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929402 eim.cpp:579] Text:  Zuin: ㄈ
-1: I2025-02-05 18:26:15.929408 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.929418 eim.cpp:448] KeyEvent: p
-1: D2025-02-05 18:26:15.929424 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
-1: D2025-02-05 18:26:15.929430 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.929436 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
-1: D2025-02-05 18:26:15.929441 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929446 eim.cpp:579] Text:  Zuin: ㄈㄣ
-1: I2025-02-05 18:26:15.929454 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.929462 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.929469 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.929503 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929511 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.929518 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.929523 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929530 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929536 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.929561 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929571 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.929587 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.966862 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.966870 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.966878 eim.cpp:579] Text: 玢 Zuin: 
+1: I2026-03-11 00:50:04.966889 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.966904 eim.cpp:448] KeyEvent: BackSpace
+1: D2026-03-11 00:50:04.966915 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K52-Backspace-�-
+1: D2026-03-11 00:50:04.966924 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.966934 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.966943 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.966952 eim.cpp:579] Text:  Zuin: 
+1: I2026-03-11 00:50:04.966964 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.966981 eim.cpp:448] KeyEvent: BackSpace
+1: D2026-03-11 00:50:04.966992 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.967002 eim.cpp:579] Text:  Zuin: 
+1: I2026-03-11 00:50:04.967013 testfrontend.cpp:75] KeyEvent key: BackSpace isRelease: 0 accepted: 0
+1: D2026-03-11 00:50:04.967029 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.967040 instance.cpp:2455] Switch reason: 1
+1: D2026-03-11 00:50:04.967050 instance.cpp:2457] Old Input method: chewing
+1: D2026-03-11 00:50:04.967061 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
+1: D2026-03-11 00:50:04.967074 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.967083 eim.cpp:579] Text:  Zuin: 
+1: D2026-03-11 00:50:04.967092 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.967101 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.967118 instance.cpp:2495] Input method switched
+1: D2026-03-11 00:50:04.967158 eim.cpp:304] Set layout to: KB_DEFAULT
+1: D2026-03-11 00:50:04.967172 eim.cpp:271] [src/editor/mod.rs:234 chewing::editor] Set syllable editor: Standard { syllable: Syllable { value: 32768, to_string(): "" } }
+1: D2026-03-11 00:50:04.967245 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.967255 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.967270 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.967279 instance.cpp:2455] Switch reason: 0
+1: D2026-03-11 00:50:04.967286 instance.cpp:2457] Old Input method: keyboard-us
+1: D2026-03-11 00:50:04.967294 instance.cpp:2463] Deactivate: [Last]:keyboard-us [Deactivating]:keyboard-us
+1: D2026-03-11 00:50:04.967304 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.967312 instance.cpp:2408] Activate: [Last]: [Activating]:chewing
+1: D2026-03-11 00:50:04.967322 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.967332 eim.cpp:579] Text:  Zuin: 
+1: D2026-03-11 00:50:04.967343 instance.cpp:2495] Input method switched
+1: I2026-03-11 00:50:04.967354 testfrontend.cpp:75] KeyEvent key: Control+space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.967375 eim.cpp:448] KeyEvent: z
+1: D2026-03-11 00:50:04.967387 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
+1: D2026-03-11 00:50:04.967396 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.967406 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.967414 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.967422 eim.cpp:579] Text:  Zuin: ㄈ
+1: I2026-03-11 00:50:04.967432 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.967446 eim.cpp:448] KeyEvent: p
+1: D2026-03-11 00:50:04.967457 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
+1: D2026-03-11 00:50:04.967465 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.967474 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 0, cursor_stack: [], inner: Composition { symbols: [], gaps: [], selections: [] } }
+1: D2026-03-11 00:50:04.967483 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.967491 eim.cpp:579] Text:  Zuin: ㄈㄣ
+1: I2026-03-11 00:50:04.967503 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.967517 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.967527 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.967610 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.967626 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.967638 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.967648 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.967660 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.967671 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.967717 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.967739 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.967769 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3639,20 +3700,20 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.929593 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.929599 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.929604 eim.cpp:579] Text: 玢 Zuin: 
-1: I2025-02-05 18:26:15.929611 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.929621 eim.cpp:448] KeyEvent: z
-1: D2025-02-05 18:26:15.929628 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
-1: D2025-02-05 18:26:15.929633 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.929640 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.929646 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929652 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929658 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.929685 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929694 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.929708 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.967783 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.967792 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.967801 eim.cpp:579] Text: 玢 Zuin: 
+1: I2026-03-11 00:50:04.967813 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.967833 eim.cpp:448] KeyEvent: z
+1: D2026-03-11 00:50:04.967844 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
+1: D2026-03-11 00:50:04.967854 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.967867 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.967877 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.967890 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.967901 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.967952 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.967969 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.967999 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3675,20 +3736,20 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.929713 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.929719 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.929724 eim.cpp:579] Text: 玢 Zuin: ㄈ
-1: I2025-02-05 18:26:15.929731 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.929741 eim.cpp:448] KeyEvent: p
-1: D2025-02-05 18:26:15.929747 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
-1: D2025-02-05 18:26:15.929753 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.929760 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
-1: D2025-02-05 18:26:15.929764 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929771 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929778 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.929804 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929813 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.929828 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.968013 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.968022 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.968030 eim.cpp:579] Text: 玢 Zuin: ㄈ
+1: I2026-03-11 00:50:04.968044 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.968060 eim.cpp:448] KeyEvent: p
+1: D2026-03-11 00:50:04.968071 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
+1: D2026-03-11 00:50:04.968080 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.968091 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 1, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ")], gaps: [Begin], selections: [] } }
+1: D2026-03-11 00:50:04.968099 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.968110 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968119 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.968162 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968176 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.968199 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 1000,
 1:         rule_largest_avgwordlen(): 6000,
@@ -3711,27 +3772,27 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.929834 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.929839 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
-1: D2025-02-05 18:26:15.929845 eim.cpp:579] Text: 玢 Zuin: ㄈㄣ
-1: I2025-02-05 18:26:15.929852 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.929862 eim.cpp:448] KeyEvent: space
-1: D2025-02-05 18:26:15.929868 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
-1: D2025-02-05 18:26:15.929895 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929902 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.929910 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.929915 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.929922 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929927 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.929953 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929961 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.929972 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.929981 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
-1: D2025-02-05 18:26:15.929987 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.930964 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.931004 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931016 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.931051 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.968238 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.968249 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(7000 (0 1 '玢))
+1: D2026-03-11 00:50:04.968258 eim.cpp:579] Text: 玢 Zuin: ㄈㄣ
+1: I2026-03-11 00:50:04.968273 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.968291 eim.cpp:448] KeyEvent: space
+1: D2026-03-11 00:50:04.968303 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K48-Space- -
+1: D2026-03-11 00:50:04.968348 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968359 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.968373 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.968383 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.968397 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968408 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.968455 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968473 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.968497 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968520 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
+1: D2026-03-11 00:50:04.968536 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968545 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.968588 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968606 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.968655 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 12000,
@@ -3787,28 +3848,28 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.931058 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931064 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931070 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
-1: D2025-02-05 18:26:15.931076 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931082 eim.cpp:579] Text: 紛紛 Zuin: 
-1: I2025-02-05 18:26:15.931098 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.931122 eim.cpp:448] KeyEvent: z
-1: D2025-02-05 18:26:15.931131 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
-1: D2025-02-05 18:26:15.931137 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.931146 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.931152 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.931162 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931168 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.931198 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931207 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.931219 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931229 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
-1: D2025-02-05 18:26:15.931235 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931240 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.931266 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931275 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.931300 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.968666 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.968675 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.968684 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
+1: D2026-03-11 00:50:04.968692 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.968701 eim.cpp:579] Text: 紛紛 Zuin: 
+1: I2026-03-11 00:50:04.968713 testfrontend.cpp:75] KeyEvent key: space isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.968730 eim.cpp:448] KeyEvent: z
+1: D2026-03-11 00:50:04.968740 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K38-Z-z-
+1: D2026-03-11 00:50:04.968749 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.968762 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.968771 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.968782 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968792 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.968841 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968858 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.968881 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968898 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
+1: D2026-03-11 00:50:04.968909 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968920 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.968964 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.968982 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.969026 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 12000,
@@ -3864,28 +3925,28 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.931306 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931312 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931318 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
-1: D2025-02-05 18:26:15.931323 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931329 eim.cpp:579] Text: 紛紛 Zuin: ㄈ
-1: I2025-02-05 18:26:15.931336 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.931347 eim.cpp:448] KeyEvent: p
-1: D2025-02-05 18:26:15.931353 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
-1: D2025-02-05 18:26:15.931359 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
-1: D2025-02-05 18:26:15.931367 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
-1: D2025-02-05 18:26:15.931372 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.931378 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931384 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.931411 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931421 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.931432 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931440 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
-1: D2025-02-05 18:26:15.931446 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931451 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.931477 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931486 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.931510 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.969037 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.969046 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.969055 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
+1: D2026-03-11 00:50:04.969064 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.969073 eim.cpp:579] Text: 紛紛 Zuin: ㄈ
+1: I2026-03-11 00:50:04.969084 testfrontend.cpp:75] KeyEvent key: z isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.969101 eim.cpp:448] KeyEvent: p
+1: D2026-03-11 00:50:04.969112 eim.cpp:271] [src/editor/mod.rs:750 chewing::editor] process_keyevent: key-K24-P-p-
+1: D2026-03-11 00:50:04.969120 eim.cpp:271] [src/editor/mod.rs:769 chewing::editor] last_key_behavior = Absorb
+1: D2026-03-11 00:50:04.969133 eim.cpp:271] [src/editor/mod.rs:770 chewing::editor] comp: CompositionEditor { cursor: 2, cursor_stack: [], inner: Composition { symbols: [S("ㄈㄣ"), S("ㄈㄣ")], gaps: [Begin, Normal], selections: [] } }
+1: D2026-03-11 00:50:04.969140 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.969152 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.969164 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.971741 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.971784 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.971808 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.971822 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
+1: D2026-03-11 00:50:04.971831 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.971841 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.971882 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.971896 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.971952 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 12000,
@@ -3941,27 +4002,27 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.931516 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931521 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931527 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
-1: D2025-02-05 18:26:15.931533 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931538 eim.cpp:579] Text: 紛紛 Zuin: ㄈㄣ
-1: I2025-02-05 18:26:15.931545 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
-1: D2025-02-05 18:26:15.931557 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
-1: D2025-02-05 18:26:15.931563 instance.cpp:2455] Switch reason: 1
-1: D2025-02-05 18:26:15.931568 instance.cpp:2457] Old Input method: chewing
-1: D2025-02-05 18:26:15.931573 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
-1: D2025-02-05 18:26:15.931582 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931587 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.931615 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931624 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.931634 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931643 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
-1: D2025-02-05 18:26:15.931649 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931654 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.931680 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931688 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.931712 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.971962 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.971971 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.971980 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
+1: D2026-03-11 00:50:04.971990 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.972001 eim.cpp:579] Text: 紛紛 Zuin: ㄈㄣ
+1: I2026-03-11 00:50:04.972028 testfrontend.cpp:75] KeyEvent key: p isRelease: 0 accepted: 1
+1: D2026-03-11 00:50:04.972051 instance.cpp:2445] Instance::deactivateInputMethod event_type=4106
+1: D2026-03-11 00:50:04.972060 instance.cpp:2455] Switch reason: 1
+1: D2026-03-11 00:50:04.972068 instance.cpp:2457] Old Input method: chewing
+1: D2026-03-11 00:50:04.972076 instance.cpp:2463] Deactivate: [Last]:chewing [Deactivating]:chewing
+1: D2026-03-11 00:50:04.972092 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972101 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.972154 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972172 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.972189 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972202 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
+1: D2026-03-11 00:50:04.972211 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972219 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.972257 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972273 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.972313 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 12000,
@@ -4017,23 +4078,23 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.931718 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931724 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931730 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
-1: D2025-02-05 18:26:15.931735 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: I2025-02-05 18:26:15.931743 testfrontend.cpp:28] Commit: 紛紛ㄈㄣ
-1: D2025-02-05 18:26:15.931749 eim.cpp:625] updateUI
-1: D2025-02-05 18:26:15.931756 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931761 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.931788 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931797 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.931809 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931818 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
-1: D2025-02-05 18:26:15.931823 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931829 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
-1: D2025-02-05 18:26:15.931857 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
-1: D2025-02-05 18:26:15.931865 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
-1: D2025-02-05 18:26:15.931888 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
+1: D2026-03-11 00:50:04.972323 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.972332 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.972340 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
+1: D2026-03-11 00:50:04.972350 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: I2026-03-11 00:50:04.972362 testfrontend.cpp:28] Commit: 紛紛ㄈㄣ
+1: D2026-03-11 00:50:04.972370 eim.cpp:625] updateUI
+1: D2026-03-11 00:50:04.972383 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972391 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.972432 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972445 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.972462 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972475 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ"), S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "紛紛", freq: 1792, last_used: Some(37) }))
+1: D2026-03-11 00:50:04.972483 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972491 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [] is None
+1: D2026-03-11 00:50:04.972536 eim.cpp:271] [src/dictionary/trie.rs:283 chewing::dictionary::trie] [!] detected empty dictionary.
+1: D2026-03-11 00:50:04.972553 eim.cpp:271] [src/conversion/chewing.rs:171 chewing::conversion::chewing] best phrace for [S("ㄈㄣ")] is Some(Phrase(Phrase { phrase: "玢", freq: 2, last_used: Some(30) }))
+1: D2026-03-11 00:50:04.972597 eim.cpp:271] [src/conversion/chewing.rs:39 chewing::conversion::chewing] paths: [
 1:     PossiblePath {
 1:         rule_largest_sum(): 2000,
 1:         rule_largest_avgwordlen(): 12000,
@@ -4089,23 +4150,23 @@
 1:         ],
 1:     },
 1: ]
-1: D2025-02-05 18:26:15.931895 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931900 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931906 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
-1: D2025-02-05 18:26:15.931911 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
-1: D2025-02-05 18:26:15.931916 eim.cpp:579] Text: 紛紛 Zuin: 
-1: D2025-02-05 18:26:15.931923 instance.cpp:2403] Instance::activateInputMethod
-1: D2025-02-05 18:26:15.931928 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
-1: D2025-02-05 18:26:15.931938 instance.cpp:2495] Input method switched
-1: D2025-02-05 18:26:15.931960 instance.cpp:1441] Running save...
-1: I2025-02-05 18:26:15.932050 addonmanager.cpp:308] Unloading addon chewing
-1: I2025-02-05 18:26:15.933208 addonmanager.cpp:308] Unloading addon testfrontend
-1: I2025-02-05 18:26:15.933230 addonmanager.cpp:308] Unloading addon testim
-1/1 Test #1: testchewing ......................   Passed    0.04 sec
+1: D2026-03-11 00:50:04.972609 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.972617 eim.cpp:271] [src/conversion/chewing.rs:312 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.972625 eim.cpp:271] [src/conversion/chewing.rs:294 chewing::conversion::chewing] Trim check #PossiblePath(8000 (0 1 '玢) (1 2 '玢))
+1: D2026-03-11 00:50:04.972633 eim.cpp:271] [src/conversion/chewing.rs:300 chewing::conversion::chewing]   Keep #PossiblePath(15792 (0 2 '紛紛))
+1: D2026-03-11 00:50:04.972641 eim.cpp:579] Text: 紛紛 Zuin: 
+1: D2026-03-11 00:50:04.972652 instance.cpp:2403] Instance::activateInputMethod
+1: D2026-03-11 00:50:04.972659 instance.cpp:2408] Activate: [Last]: [Activating]:keyboard-us
+1: D2026-03-11 00:50:04.972674 instance.cpp:2495] Input method switched
+1: D2026-03-11 00:50:04.972701 instance.cpp:1441] Running save...
+1: I2026-03-11 00:50:04.972821 addonmanager.cpp:308] Unloading addon chewing
+1: I2026-03-11 00:50:04.973519 addonmanager.cpp:308] Unloading addon testfrontend
+1: I2026-03-11 00:50:04.973547 addonmanager.cpp:308] Unloading addon testim
+1/1 Test #1: testchewing ......................   Passed    0.08 sec
 
 100% tests passed, 0 tests failed out of 1
 
-Total Test time (real) =   0.05 sec
+Total Test time (real) =   0.08 sec
 make[1]: Leaving directory '/build/reproducible-path/fcitx5-chewing-5.1.7/obj-aarch64-linux-gnu'
    create-stamp debian/debhelper-build-stamp
    dh_prep
@@ -4157,16 +4218,16 @@
    dh_perl
    dh_link
    dh_strip_nondeterminism
-	Normalized debian/fcitx5-chewing/usr/share/locale/he/LC_MESSAGES/fcitx5-chewing.mo
-	Normalized debian/fcitx5-chewing/usr/share/locale/de/LC_MESSAGES/fcitx5-chewing.mo
-	Normalized debian/fcitx5-chewing/usr/share/locale/da/LC_MESSAGES/fcitx5-chewing.mo
-	Normalized debian/fcitx5-chewing/usr/share/locale/ca/LC_MESSAGES/fcitx5-chewing.mo
+	Normalized debian/fcitx5-chewing/usr/share/locale/tr/LC_MESSAGES/fcitx5-chewing.mo
+	Normalized debian/fcitx5-chewing/usr/share/locale/ru/LC_MESSAGES/fcitx5-chewing.mo
 	Normalized debian/fcitx5-chewing/usr/share/locale/zh_TW/LC_MESSAGES/fcitx5-chewing.mo
 	Normalized debian/fcitx5-chewing/usr/share/locale/zh_CN/LC_MESSAGES/fcitx5-chewing.mo
 	Normalized debian/fcitx5-chewing/usr/share/locale/ko/LC_MESSAGES/fcitx5-chewing.mo
 	Normalized debian/fcitx5-chewing/usr/share/locale/ja/LC_MESSAGES/fcitx5-chewing.mo
-	Normalized debian/fcitx5-chewing/usr/share/locale/tr/LC_MESSAGES/fcitx5-chewing.mo
-	Normalized debian/fcitx5-chewing/usr/share/locale/ru/LC_MESSAGES/fcitx5-chewing.mo
+	Normalized debian/fcitx5-chewing/usr/share/locale/he/LC_MESSAGES/fcitx5-chewing.mo
+	Normalized debian/fcitx5-chewing/usr/share/locale/de/LC_MESSAGES/fcitx5-chewing.mo
+	Normalized debian/fcitx5-chewing/usr/share/locale/da/LC_MESSAGES/fcitx5-chewing.mo
+	Normalized debian/fcitx5-chewing/usr/share/locale/ca/LC_MESSAGES/fcitx5-chewing.mo
    dh_compress
    dh_fixperms
    dh_missing
@@ -4191,12 +4252,14 @@
 dpkg-buildpackage: info: binary-only upload (no source included)
 dpkg-genchanges: info: including full source code in upload
 I: copying local configuration
+I: user script /srv/workspace/pbuilder/4018432/tmp/hooks/B01_cleanup starting
+I: user script /srv/workspace/pbuilder/4018432/tmp/hooks/B01_cleanup finished
 I: unmounting dev/ptmx filesystem
 I: unmounting dev/pts filesystem
 I: unmounting dev/shm filesystem
 I: unmounting proc filesystem
 I: unmounting sys filesystem
 I: cleaning the build env 
-I: removing directory /srv/workspace/pbuilder/1593129 and its subdirectories
-I: Current time: Wed Feb  5 06:26:19 -12 2025
-I: pbuilder-time-stamp: 1738779979
+I: removing directory /srv/workspace/pbuilder/4018432 and its subdirectories
+I: Current time: Wed Mar 11 14:50:10 +14 2026
+I: pbuilder-time-stamp: 1773190210