diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index fbacd5e..b0b24fd 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -11,7 +11,7 @@ jobs:
build:
runs-on: ${{ inputs.os }}
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install Ubuntu dependencies
if: ${{ inputs.os == 'ubuntu-latest' }}
# no need to use clang if gcc 12 becomes default
@@ -90,3 +90,7 @@ jobs:
with:
name: artifact.tar
path: artifact.tar
+
+ - name: Setup tmate session
+ if: ${{ failure() }}
+ uses: mxschmitt/action-tmate@v3
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 02738f1..b9d92b8 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -40,7 +40,7 @@ jobs:
browser: webkit
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Use Node.js latest
uses: actions/setup-node@v3
with:
@@ -62,7 +62,7 @@ jobs:
run: |
npx playwright test --browser ${{ matrix.browser }} test/
- name: Test device
- if: ${{ startsWith(inputs.os, 'macos') }}
+ if: ${{ startsWith(matrix.os, 'macos') }}
run: |
npx playwright test --browser ${{ matrix.browser }} test-device/
@@ -73,7 +73,7 @@ jobs:
permissions:
contents: write
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Download artifact
uses: actions/download-artifact@v3
with:
diff --git a/boost b/boost
index 564e2ac..ab7968a 160000
--- a/boost
+++ b/boost
@@ -1 +1 @@
-Subproject commit 564e2ac16907019696cdaba8a93e3588ec596062
+Subproject commit ab7968a0bbcf574a7859240d1d8443f58ed6f6cf
diff --git a/checksum b/checksum
index a6e5f52..cca871f 100644
--- a/checksum
+++ b/checksum
@@ -1,3 +1,3 @@
-f6a0288a806954b8c0f1d34148aa43e1 public/rime.data
-a05f8632c836fa1a77b833461b454447 public/rime.js
-7a9eb29da23cfb36a4bd427f30df7ee4 public/rime.wasm
+05e34aaf2b388a96e6a52fb941e5299f public/rime.data
+1985fb80ba5768f171d0108174c98abe public/rime.js
+baecfa3a5f7f5fbf2aa7837d3952747a public/rime.wasm
diff --git a/interprocess_patch b/interprocess_patch
deleted file mode 100644
index 602d8ed..0000000
--- a/interprocess_patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/include/boost/interprocess/detail/workaround.hpp b/include/boost/interprocess/detail/workaround.hpp
-index 01b6c6e..9feb3cd 100644
---- a/include/boost/interprocess/detail/workaround.hpp
-+++ b/include/boost/interprocess/detail/workaround.hpp
-@@ -37,7 +37,7 @@
- //////////////////////////////////////////////////////
- //Check for XSI shared memory objects. They are available in nearly all UNIX platforms
- //////////////////////////////////////////////////////
-- #if !defined(__QNXNTO__) && !defined(__ANDROID__) && !defined(__HAIKU__) && !(__VXWORKS__)
-+ #if !defined(__QNXNTO__) && !defined(__ANDROID__) && !defined(__HAIKU__) && !(__VXWORKS__) && !defined(__EMSCRIPTEN__)
- #define BOOST_INTERPROCESS_XSI_SHARED_MEMORY_OBJECTS
- #endif
-
diff --git a/librime b/librime
index d402755..a1c8144 160000
--- a/librime
+++ b/librime
@@ -1 +1 @@
-Subproject commit d4027556b09e1823dddfd771b598d1c759876028
+Subproject commit a1c814443264b49a3b8633ebf89071c6ca667a94
diff --git a/librime-lua b/librime-lua
index 7c297e4..43229d7 160000
--- a/librime-lua
+++ b/librime-lua
@@ -1 +1 @@
-Subproject commit 7c297e4d2e08fcdd3e9b2dcae2a42317b9a217ff
+Subproject commit 43229d766f1e0f3198f61dc9d2e38bc1f921387f
diff --git a/librime_patch b/librime_patch
index 48b1e6f..9a2662c 100644
--- a/librime_patch
+++ b/librime_patch
@@ -1,17 +1,17 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 36301689..44073938 100644
+index 53f9d537..64dfdba1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ cmake_minimum_required(VERSION 3.12)
project(rime)
set(CMAKE_CXX_STANDARD 17)
--set(rime_version 1.9.0)
+-set(rime_version 1.11.2)
+set(rime_version 1.8.5) # keep 1.8.5 so no need to rehash schemas
set(rime_soversion 1)
add_definitions(-DRIME_VERSION="${rime_version}")
-@@ -45,6 +45,9 @@ if (ENABLE_ASAN)
+@@ -46,6 +46,9 @@ if (ENABLE_ASAN)
set(CMAKE_SHARED_LINKER_FLAGS "${asan_lflags} ${CMAKE_SHARED_LINKER_FLAGS}")
endif()
@@ -35,7 +35,7 @@ index 18bf988b..4b9bb5d2 100644
namespace Darts {
diff --git a/src/rime/schema.cc b/src/rime/schema.cc
-index 3026dda9..f29629f8 100644
+index 8f60625c..c3397559 100644
--- a/src/rime/schema.cc
+++ b/src/rime/schema.cc
@@ -4,9 +4,17 @@
@@ -102,14 +102,27 @@ index bb68bcdb..4ef84beb 100644
bool page_down_cycle() const { return page_down_cycle_; }
const string& select_keys() const { return select_keys_; }
void set_select_keys(const string& keys) { select_keys_ = keys; }
+diff --git a/src/rime_api.h b/src/rime_api.h
+index 44b2ea3f..d106a197 100644
+--- a/src/rime_api.h
++++ b/src/rime_api.h
+@@ -422,6 +422,8 @@ RIME_API const char* RimeGetSyncDir(void);
+
+ RIME_API const char* RimeGetUserId(void);
+
++RIME_API Bool RimeChangePage(RimeSessionId session_id, Bool backward);
++
+ /*! The API structure
+ * RimeApi is for rime v1.0+
+ */
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
-index ab64c52a..9e6e1537 100644
+index 090a0fc0..a24cd51f 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
-@@ -54,18 +54,3 @@ install(TARGETS rime_dict_manager DESTINATION ${BIN_INSTALL_DIR})
- install(TARGETS rime_table_decompiler DESTINATION ${BIN_INSTALL_DIR})
+@@ -52,18 +52,3 @@ if(NOT WIN32 OR NOT BUILD_SHARED_LIBS)
- install(TARGETS rime_patch DESTINATION ${BIN_INSTALL_DIR})
+ install(TARGETS rime_table_decompiler DESTINATION ${BIN_INSTALL_DIR})
+ endif()
-
-file(COPY ${PROJECT_SOURCE_DIR}/data/minimal/default.yaml
- DESTINATION ${EXECUTABLE_OUTPUT_PATH})
diff --git a/package.json b/package.json
index 91cd8e7..71faf48 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@libreservice/my-rime",
- "version": "0.10.7",
+ "version": "0.10.8",
"files": [
"dist"
],
@@ -40,52 +40,52 @@
"preview": "vite preview --host"
},
"devDependencies": {
- "@codemirror/language": "^6.10.0",
- "@codemirror/legacy-modes": "^6.3.3",
+ "@codemirror/language": "^6.10.1",
+ "@codemirror/legacy-modes": "^6.4.0",
"@libreservice/lazy-cache": "^0.1.2",
"@libreservice/micro-plum": "^0.2.2",
"@libreservice/my-widget": "^0.1.4",
"@libreservice/my-worker": "^0.4.2",
"@libreservice/wasm-code": "^0.1.5",
- "@playwright/test": "^1.40.1",
+ "@playwright/test": "^1.43.1",
"@rollup/plugin-json": "^6.1.0",
"@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-replace": "^5.0.5",
"@types/js-yaml": "^4.0.9",
- "@typescript-eslint/eslint-plugin": "^6.18.1",
- "@typescript-eslint/parser": "^6.18.1",
+ "@typescript-eslint/eslint-plugin": "^7.8.0",
+ "@typescript-eslint/parser": "^7.8.0",
"@vicons/fa": "^0.12.0",
"@vicons/fluent": "^0.12.0",
"@vicons/material": "^0.12.0",
- "@vitejs/plugin-vue": "^5.0.3",
- "client-zip": "^2.4.4",
+ "@vitejs/plugin-vue": "^5.0.4",
+ "client-zip": "^2.4.5",
"emoji-regex": "^10.3.0",
- "esbuild": "^0.19.11",
+ "esbuild": "^0.20.2",
"eslint": "^8.56.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.29.1",
- "eslint-plugin-n": "^16.6.2",
+ "eslint-plugin-n": "^17.4.0",
"eslint-plugin-promise": "^6.1.1",
- "eslint-plugin-vue": "^9.20.1",
- "glob": "^10.3.10",
+ "eslint-plugin-vue": "^9.25.0",
+ "glob": "^10.3.12",
"idb": "^8.0.0",
"js-yaml": "^4.1.0",
"luaparse": "^0.3.1",
- "naive-ui": "^2.37.3",
+ "naive-ui": "^2.38.2",
"rimraf": "^5.0.5",
- "rollup": "^4.9.5",
- "rollup-plugin-esbuild": "^6.1.0",
+ "rollup": "^4.17.2",
+ "rollup-plugin-esbuild": "^6.1.1",
"rppi": "^0.1.0",
"textarea-caret": "^3.1.0",
"ts-node": "^10.9.2",
"tslib": "^2.6.2",
- "typescript": "^5.3.3",
- "vite": "^5.0.11",
- "vite-plugin-pwa": "^0.17.4",
+ "typescript": "^5.4.5",
+ "vite": "^5.2.11",
+ "vite-plugin-pwa": "^0.20.0",
"vite-plugin-run": "0.4.1",
"vooks": "^0.2.12",
- "vue": "^3.4.13",
- "vue-router": "^4.2.5",
- "vue-tsc": "^1.8.27"
+ "vue": "^3.4.26",
+ "vue-router": "^4.3.2",
+ "vue-tsc": "^2.0.16"
}
}
diff --git a/scripts/build_native.ts b/scripts/build_native.ts
index 877bab1..1b6ca69 100644
--- a/scripts/build_native.ts
+++ b/scripts/build_native.ts
@@ -1,5 +1,4 @@
import {
- renameSync,
rmSync
} from 'fs'
import { platform } from 'os'
@@ -138,9 +137,6 @@ function buildLibrime () {
...CMAKE_DEF_RIME
], spawnArg))
ensure(spawnSync('cmake', ['--build', dstRime], spawnArg))
- if (PLATFORM === 'win32') {
- renameSync(`${dstRime}/lib/rime.dll`, `${dstRime}/bin/rime.dll`)
- }
}
if (PLATFORM !== 'linux') {
diff --git a/scripts/build_wasm.ts b/scripts/build_wasm.ts
index efb99dc..4de7a1c 100644
--- a/scripts/build_wasm.ts
+++ b/scripts/build_wasm.ts
@@ -27,6 +27,7 @@ const exportedFunctions = [
'set_ime',
'process',
'select_candidate_on_current_page',
+ 'change_page',
'deploy',
'reset'
]
diff --git a/scripts/update_submodule.ts b/scripts/update_submodule.ts
index 6685192..61141db 100644
--- a/scripts/update_submodule.ts
+++ b/scripts/update_submodule.ts
@@ -1,7 +1,7 @@
import { mkdirSync, cpSync } from 'fs'
import { cwd, chdir } from 'process'
import { spawnSync, SpawnSyncOptionsWithBufferEncoding } from 'child_process'
-import { ensure, patch } from './util.js'
+import { ensure } from './util.js'
const root = cwd()
const includeBoost = `${root}/build/sysroot/usr/include/boost`
@@ -53,6 +53,7 @@ for (const submodule of [
'date_time',
'describe',
'detail',
+ 'endian',
'format',
'function',
'function_types',
@@ -93,8 +94,5 @@ for (const submodule of [
'winapi'
]) {
update(submodule.split('/')[0], true)
- if (submodule === 'interprocess') {
- patch('interprocess', '../../interprocess_patch')
- }
cpSync(`${submodule}/include/boost`, includeBoost, { recursive: true })
}
diff --git a/src/components/MyPanel.vue b/src/components/MyPanel.vue
index 7ca32a3..4d5b6e2 100644
--- a/src/components/MyPanel.vue
+++ b/src/components/MyPanel.vue
@@ -7,6 +7,7 @@ import getCaretCoordinates from 'textarea-caret'
import emojiRegex from 'emoji-regex'
import {
process,
+ changePage,
selectCandidateOnCurrentPage
} from '../workerAPI'
import {
@@ -312,6 +313,11 @@ async function onClick (key: number) {
return analyze(result, '')
}
+async function onPageChange (backward: boolean) {
+ const result = JSON.parse(await changePage(backward))
+ return analyze(result, '')
+}
+
function singleTouch (e: TouchEvent) {
return e.touches.length === 1 ? e.touches[0] : undefined
}
@@ -414,7 +420,7 @@ defineExpose({
>
diff --git a/src/worker.ts b/src/worker.ts
index 3d53d7f..ead4835 100644
--- a/src/worker.ts
+++ b/src/worker.ts
@@ -172,5 +172,8 @@ expose({
},
selectCandidateOnCurrentPage (index: number): string {
return Module.ccall('select_candidate_on_current_page', 'string', ['number'], [index])
+ },
+ changePage (backward: boolean): void {
+ return Module.ccall('change_page', 'string', ['boolean'], [backward])
}
}, readyPromise)
diff --git a/src/workerAPI.ts b/src/workerAPI.ts
index 1e2c5a6..6cdae0c 100644
--- a/src/workerAPI.ts
+++ b/src/workerAPI.ts
@@ -8,6 +8,7 @@ const setPageSize: (size: number) => Promise = worker.register('setPageSiz
const deploy: () => Promise = worker.register('deploy')
const process: (input: string) => Promise = worker.register('process')
const selectCandidateOnCurrentPage: (index: number) => Promise = worker.register('selectCandidateOnCurrentPage')
+const changePage: (backward: boolean) => Promise = worker.register('changePage')
const resetUserDirectory: () => Promise = worker.register('resetUserDirectory')
const FS = asyncFS(worker)
@@ -20,5 +21,6 @@ export {
deploy,
process,
selectCandidateOnCurrentPage,
+ changePage,
setIME
}
diff --git a/wasm/api.cpp b/wasm/api.cpp
index 49b11df..fc134c0 100644
--- a/wasm/api.cpp
+++ b/wasm/api.cpp
@@ -172,6 +172,12 @@ const char *select_candidate_on_current_page(int index) {
return post_process();
}
+const char *change_page(bool backward) {
+ pre_process();
+ RimeChangePage(session_id, backward);
+ return post_process();
+}
+
void set_ime(const char *ime) {
if (rime_started) {
// Need to reset session when using F4 to select a schema