Commit Graph
302 Commits
Author SHA1 Message Date
fanlusky 6632e9ebcf Add default IME language and per-app/global CN-EN scope settings.
Wire config + settings UI for default_ime_mode / ime_mode_scope, and sync unified mode across apps when scope is global.
2026-07-28 20:26:25 +08:00
fanlusky 71fa7dddeb feat(voice): allow Esc to cancel active voice input
When the voice overlay is recording, Esc aborts capture and discards audio instead of only relying on RAlt to stop.
2026-07-28 19:31:45 +08:00
fanlusky 6987f336c3 fix(candidate-window): pass mouse input through transparent host area
Clip the stable oversized candidate host to the actual rendered content,
preserving the editor cursor and mouse behavior outside the candidate card.
Temporarily restore the full region when displaying the context menu.
2026-07-28 17:14:37 +08:00
fanlusky 8e6b68b672 feat: persist and apply floating toolbar component settings
- store optional toolbar component preferences in config.toml
- synchronize component settings with the settings application
- apply component visibility changes at runtime
- launch the screen keyboard from the floating toolbar
- resize the toolbar window based on visible components
2026-07-28 16:53:48 +08:00
fanlusky 380e465bb5 feat(theme): add per-surface themes for Direct2D input interfaces
- add independent theme settings for the emoji panel, on-screen keyboard,
  handwriting panel, and voice input overlay
- support follow-global, dark, and light modes
- add light color palettes for each Direct2D interface
- load the shared theme configuration when standalone panels start
- reload the voice overlay theme before it is displayed
- expose the new theme options through the settings backend
2026-07-28 16:14:14 +08:00
fanlusky 2dc4f63cd6 feat(settings): add configurable candidate appearance and page-size digit gating
Expose candidate font, size, text color, and page size settings through the config and WebView bridge. Limit selection digits to the configured page size and apply appearance updates to the live candidate window.
2026-07-28 15:19:46 +08:00
fanlusky 27885a6fa4 fix(candwnd): use stable 720 DIP host with internal card offset
Keep the transparent candidate HWND at wrap-cap width so right-edge
growth adjusts MarginLeft/Top instead of SetWindowPos-moving the host,
which was flashing through layered transparency. Measure/layout keep
horizontal candidates on one row and wrap only inside long items.
2026-07-28 04:06:16 +08:00
fanlusky df07050b7a fix(candwnd): raise candidate wrap width cap to 720 DIP 2026-07-28 03:16:20 +08:00
fanlusky 31defdb3c4 fix: capture ranking entry key before reset so single-code frequency works
ProcessSelectionKey cleared the input before CandidateDatabaseKey(), so single-letter lists (e.g. n) wrote weights under the context key instead of the candidate's real pinyin (na/nv), and ranking never changed.
2026-07-28 03:00:02 +08:00
fanlusky 76bb27ca0c feat(settings): import pure Chinese phrases with cpp-pinyin
Add cpp-pinyin as a submodule to annotate hans-only word lists, insert them
into the quanpin dictionary, and clear the IME dict cache after successful writes.
2026-07-28 02:27:49 +08:00
fanlusky 2afe54c48b feat(settings): support batch import of quanpin user phrases
Add dictionary import parsing for word/pinyin/weight lines, honor apostrophe
syllable splits, and notify the IME server to clear dict cache after writes.
2026-07-28 01:45:43 +08:00
fanlusky c2dc3fe59c fix(candidate-window): preserve caret position during internal refreshes
Only read the full TSF candidate payload for ShowCandidate events.
Keep the last valid caret anchor when rebuilding candidates during
word creation, pinning, deletion, and fixed-position updates to prevent
the candidate window from jumping or flashing at the top-left corner.
2026-07-27 22:40:31 +08:00
fanlusky 26ae578ae9 fix: keep candidate menus within screen bounds 2026-07-27 22:07:08 +08:00
fanlusky 1c023d21fa fix: expand candidate window for context menu overflow 2026-07-27 21:56:07 +08:00
fanlusky 025f966a90 perf: reuse persistent database connections for fixed candidates 2026-07-27 20:46:49 +08:00
fanlusky e8736d66b9 feat: integrate candidate ranking, pinning, and cache refresh 2026-07-27 20:25:27 +08:00
fanlusky d5523dd44d feat: preserve user dictionary changes across updates 2026-07-27 16:32:34 +08:00
fanlusky 02d5a3ff37 fix(candwnd): measure and size candidate wrap at 600 DIP
Force wrap-aware measure, serialize FineTune after measure content
updates, and preserve flip-up host height via MarginTop.

feat: lazily load single-letter Pinyin candidates

- query the top 24 single-letter candidates from the database
- load the complete candidate list on the first page-down action
- apply the same behavior to Shuangpin and Quanpin
- resolve Shuangpin initials according to the active profile
- preserve candidate frequency adjustment and pinning
- disable deletion for single-letter candidates
- add regression tests for Shuangpin v-to-zh mapping and lazy expansion
2026-07-27 16:12:46 +08:00
fanlusky e2af2c49d2 chore(logging): remove server debug logging
- remove OutputDebugString calls across the server
- remove spdlog calls and file logger initialization
- disable IPC and WebView debug output
- remove temporary database performance instrumentation
- update the MetasequoiaImeEngine submodule revision
2026-07-27 15:13:51 +08:00
fanlusky 0dbe4c2c86 Add voice commit modes, InsertText IPC, and Ctrl+Shift+Alt hotkey fix.
Support tsf/sendinput/ctrl_v voice commit, route TSF inserts via worker
InsertText, handle WM_SYSKEYDOWN for Ctrl+Shift+Alt+digit candidate delete,
and skip watchdog when the IME profile is disabled.
2026-07-25 21:30:44 +08:00
fanlusky 5a3b5d71c3 fix: keep tray menu above floating toolbar without flicker
Pin the menu last when it is visible, stop FTB layout from raising Z-order, and raise the menu while still cloaked so it does not flash under the toolbar.
2026-07-24 18:55:42 +08:00
fanlusky 200d3133e2 fix: show langbar menu via session-less Aux pipe
Right-click was gated on the focused TIP Main session, so the menu
failed after focus loss. Route LangbarRightClick over Aux instead and
stop accepting it on Main.
2026-07-24 03:15:58 +08:00
fanlusky 51aadec2eb fix: keep floating toolbar position across IME focus changes
Stop snapping the toolbar back to the bottom-right on every visibility refresh; only use the default corner on initial layout.
2026-07-24 02:37:21 +08:00
fanlusky b01a73e336 fix: stop horizontal candidate wrap flash on long lists
Keep horizontal candidates on one line with max-content/nowrap, and resize the host/WebView before painting so content is never laid out in a still-narrow viewport.
2026-07-24 02:07:27 +08:00
fanlusky 35f7dbd96e fix: adapt IME popups to live DPI changes and cloak WebView warmup
Handle WM_DPICHANGED for the floating toolbar and tray menu, size the menu from cached CSS DIPs on each show, and warm WebView2 hosts on-monitor under DWMWA_CLOAK so startup no longer flashes while candidates still initialize.
2026-07-24 01:37:06 +08:00
fanlusky 4f859d012f fix: stabilize AI/cloud candidate apply to restore paging and prevent duplicate 🤖
Skip async AI/cloud refresh on paging and selection keys, early-exit when the
suggestion is already in the list, and dedupe series-cache inserts so repeated
cache hits no longer reset page_index or accumulate AI rows.
2026-07-24 00:37:23 +08:00
fanlusky f72242f1ca feat: persist and apply appearance theme mode for settings and small windows
Wire theme_mode and per-surface overrides through config, resolve system
theme, and hot-reload cand/ftb/menu HTML plus settings chrome colors.
2026-07-23 23:49:02 +08:00
fanlusky 7f06a1a046 fix: sync tray floating-toolbar toggle from config
Refresh the menu toggle from general.floating_toolbar on show,
navigation, and config reload so it stays aligned with Settings.
Refs metasequoiaime/MetasequoiaImeTsf#17
2026-07-23 21:43:15 +08:00
fanlusky f70804d89f Defer small-window TopMost until WebViews are ready on first show.
Avoid uiAccess + HWND WebView2 init races that blanked the candidate UI,
and stop parking the floating toolbar off-screen until WebView starts.
2026-07-23 11:28:39 +08:00
fanlusky 8bbb73f27d Rename data folder to metasequoiaime 2026-07-21 23:12:17 +08:00
fanlusky 91a7050af5 Add the handwriting recognition board to the settings panel. 2026-07-21 16:05:26 +08:00
fanlusky ab494f44fb Move the TSF custom preedit style settings to the appearance section. 2026-07-21 14:49:36 +08:00
fanlusky 9e13309b70 The server-side candidate window supports custom preedit to be empty or pinyin segmentation. 2026-07-21 14:28:59 +08:00
fanlusky 2bda4a4e28 Add a new TSF preedit style that allows being empty. 2026-07-21 13:48:11 +08:00
fanlusky f50bfb4e4a Fix the issue where preedit is not handled during word creation in TSF preedit pinyin mode. 2026-07-21 13:17:06 +08:00
fanlusky c92bff8734 Preliminarily support customizing preedit on the TSF side. 2026-07-21 13:00:15 +08:00
fanlusky 040975f125 Add a switch for K mode. 2026-07-21 02:24:43 +08:00
fanlusky cd23d78866 Add the U mode description to the settings panel, and add a switch. 2026-07-21 01:39:04 +08:00
fanlusky 320c9ed5e8 Attempt to fix the occasional issue where, after committing a candidate, the candidate window still remains at the cursor position, and the preedit in the candidate window is empty. 2026-07-21 01:15:10 +08:00
fanlusky 09b1523030 Add U mode to support Unicode input. 2026-07-21 00:30:07 +08:00
fanlusky d3d3b4f8e9 Fix the clangd error caused by the expansion of the min/max macros on Windows. 2026-07-20 23:40:27 +08:00
fanlusky 91c33d5f2a Set the default pop-up position of the on-screen keyboard to be slightly below the center of the screen and slightly above the taskbar. 2026-07-20 23:23:05 +08:00
fanlusky 6385c73e7a Add a watchdog program to keep the server alive. 2026-07-20 17:02:47 +08:00
fanlusky 611ba63321 Add anti-multiple-instance to the applications. 2026-07-20 16:55:56 +08:00
fanlusky 7770b77031 Enable the simplified-traditional toggle on the floating toolbar. 2026-07-20 15:53:05 +08:00
fanlusky f0bd72669e Implement simplified-traditional input switching. 2026-07-20 15:36:12 +08:00
fanlusky 636d0c7b18 Optimize the feedback interface. 2026-07-20 13:25:46 +08:00
fanlusky cd29ca88d0 Improve the language bar right-click menu. 2026-07-20 02:07:39 +08:00
fanlusky 4765d72156 Integrate the handwriting recognition board into the server. 2026-07-20 01:57:31 +08:00
fanlusky 3cbec4e790 Add caching to AI prediction results as well. 2026-07-19 23:00:18 +08:00