Commit Graph
125 Commits
Author SHA1 Message Date
Evan Hu 05036a763d docs: describe one repository instead of six
The product README was under windows/ after the move, but it was never a component readme: it is the download page, the feature guide and the contribution guide for the whole product, so it goes back to the root and windows/ gets a real component readme.

AGENTS.md at the root now carries the repository map, the component boundaries that used to be cross-repository rules, and the release process, since the scripts that process drives live at the root. The component files keep what is genuinely theirs and say which paths they are relative to. References that named sibling repositories now name sibling directories, and the lock documentation records that Server, the pages, the GUI framework and the installer are no longer inputs to pin.
2026-09-06 02:40:51 +09:00
Evan Hu 32e722c176 ci: build every component from the one checkout
The product lock existed because five repositories had to be pinned to reproduce one product. Four of them are directories now, so a commit of this repository already pins them and there is nothing left for the lock to say about them. What it still records is what the product consumes from outside: the engine submodule, the helpcodes and the dictionary release.

CI gains a job per component instead of a reusable workflow that checked out locked commits and rebuilt them. The release workflow no longer stages five sibling checkouts under historical names and no longer carries a second sparse checkout for its own scripts; Prepare-PackageFiles.ps1 already took the source directory names as parameters, so it is told the new ones, plus where the product-wide notice now lives.

Two checks the removed cross-repository pins used to provide are replaced in kind: the pages are verified against the engine submodule's web contract in CI rather than by locking UiHtml and Engine together, and the engine bump triage that Server carried moves here and now also says so when a bump leaves the lock behind.
2026-09-06 02:35:49 +09:00
Evan Hu 8a2ec3dfee chore(boundaries): guard the reusable GUI library against product dependencies 2026-09-06 00:33:31 +09:00
Evan d9e2d08dea Merge pull request #4 from metasequoiaime/dependabot/github_actions/actions-7a5a078ad4
chore(deps): bump actions/checkout from 6.1.0 to 7.0.1 in the actions group
2026-09-05 18:07:13 +09:00
Evan Hu 210c38faff test: fail an empty suite and report how many tests ran
CI 日志里 ctest 只显示「1 个测试通过」,因为它把整个套件当作一个测试项,而 --output-on-failure 只在失败时打印用例明细。这样一个一个用例都没注册的套件,看起来和全部通过完全一样。

runner 改为:注册数为零时直接判失败,并在结尾打印实际跑了多少个用例。ctest 改用 --verbose,让用例明细进入 CI 日志。
2026-09-05 17:23:34 +09:00
Evan Hu b8ac8e0b00 test: cover the layout core with unit tests
本仓库此前没有任何测试,CI 只能证明它编译得过。布局系统是这个框架里被所有控件依赖、也最容易在重构中被改坏的部分,而且是纯几何计算,不需要 D2D 设备即可测。

新增 13 个用例,覆盖 Visual 的测量与排列语义(margin 收缩可用尺寸并回填外框、显式尺寸覆盖测量值、min/max 夹取、可用空间封顶、测量缓存的命中与失效、Stretch/Center/Trailing 对齐定位),以及 StackPanel 与 HorizontalStackPanel 的堆叠、间距和 padding 行为。

断言值全部按 src/Layout.cpp 的现有实现推导,用于锁定当前行为,不是按我认为应该如何来写。测试框架沿用 MSIME-Server 的极简写法,但去掉了 fmt 依赖,本仓库不引入任何新依赖。

Grid、WrapPanel 和 ScrollViewer 本次未覆盖,留作后续。
2026-09-05 17:21:10 +09:00
dependabot[bot] 3baf1cf014 chore(deps): bump actions/checkout in the actions group
Bumps the actions group with 1 update: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6.1.0 to 7.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/d23441a48e516b6c34aea4fa41551a30e30af803...3d3c42e5aac5ba805825da76410c181273ba90b1)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-05 08:09:55 +00:00
Evan 7e5d584c03 chore: track dependency updates with dependabot 2026-09-05 16:52:31 +09:00
Evan 94b805105f chore(ci): follow the default branch rename to main 2026-09-05 15:31:11 +09:00
Evan Hu 798ff3c90c fix(build): compile the handwriting demo as C++20
新加的 CI 在 windows-2025 上暴露出 msimeui-handwriting-demo 编译失败:MSVC 14.51 的 STL 对 <experimental/coroutine> 直接 static_assert 报错(STL1011)。

根因是这个 demo 用 C++/WinRT(winrt/Windows.UI.Input.Inking.h)做墨迹识别,而项目全局是 C++17;C++/WinRT 在 C++17 下走 <experimental/coroutine> 回退路径,新版 MSVC STL 已经不再允许。把这一个 target 提到 C++20 即可,库和其余三个 demo 不受影响。
2026-09-05 14:13:40 +09:00
Evan Hu 80c62ab403 ci: build on Windows for every pull request
本仓库此前没有任何 CI,PR 是否能编译只能靠人工在本机验证。加一个最小门禁:windows-2025 上用 MSVC 配置并 Release 构建静态库和四个 demo。

本仓库没有 vcpkg 依赖,只链系统库,所以不需要装依赖步骤。没有测试目标,因此暂不跑 ctest。push 只在 master 上触发,避免特性分支与 PR 重复跑。
2026-09-05 14:11:57 +09:00
Evan Hu 2a2785ab7f chore: add GPL-3.0 license
本仓库此前没有 LICENSE 文件,GitHub 上显示为无许可,外部贡献者无法确认使用和分发条件。补上与水杉输入法其余仓库相同的 GPL-3.0 文本(与 MSIME-Windows、MSIME-Engine 的 LICENSE 逐字节一致),并在 README 末尾加一节说明。
2026-09-05 14:07:12 +09:00
fanlusky a0c4daa9ad Allow Card window shadows to scale for compact surfaces
Add Card::SetShadowScale so the Win11 mist shadow can shrink with the
control. The floating toolbar can then keep the same shadow style without
clipping or a oversized host.
2026-09-02 19:12:01 +08:00
fanlusky 4e66d19614 Optimize the shadow style of the candidate window. 2026-09-02 17:23:03 +08:00
fanlusky 2ac86ea0e2 Stop mapping all Unicode through CJK fonts and cut D2D working-set growth
Custom font fallback no longer covers the whole BMP/SIP, so Segoe UI Emoji
can paint color glyphs again; CJK still prefers Noto Sans SC then YaHei.
Drop GaussianBlur compatible targets during BeginDraw (they retained GPU
memory as the candidate window grew), grow the composition swapchain in
64px steps without shrinking, and reuse Card chrome plus cached text
formats instead of reallocating them every layout.
2026-09-02 16:25:54 +08:00
fanlusky 5421c1dd1b Add SVG icon rendering, toggle switch, and font fallback for MenuFlyoutItem
MenuFlyoutItem gains leading SVG icons (ID2D1SvgDocument), an optional
trailing toggle switch, and content-based width measurement so tray-style
menu items match the HTML menu layout. Default UI font is now Noto Sans SC
with Microsoft YaHei fallback via IDWriteFontFallback; CreateTextFormat
gracefully falls back when the primary family is missing.
2026-09-02 16:03:57 +08:00
fanlusky d16f9f3fea Add DirectComposition hosting and candidate-list chrome for the IME window
Adopt an existing HWND, render through D3D11/DXGI/DirectComposition, and
extend CandidateList with horizontal layout, skin colors, click-to-commit,
and a D2D context menu. Preedit TextBlock draws a caret in a fixed insert
slot so neighboring glyphs reflow instead of using letter-spacing; the
default end caret sits slightly after the last character.
2026-09-02 15:29:14 +08:00
fanlusky 3d7b8a3c24 Add support for svg render. 2026-08-17 04:42:53 +08:00
fanlusky d65928e3de Resolve clangd errors. 2026-08-15 03:11:26 +08:00
fanlusky 64c08a7c02 Adjust some controls for emoji panel. 2026-08-15 02:32:00 +08:00
fanlusky f3c7a9557a Set the initial position setting method for the window. 2026-07-20 23:22:05 +08:00
fanlusky f0759db93e Optimize the rendering smoothness of strokes in the handwriting input area. 2026-07-20 01:37:15 +08:00
fanlusky 4e8e85afd8 Make handwriting recognize demo 2026-07-20 01:32:31 +08:00
fanlusky 548330b8cf Make a demo of an on-screen keyboard. 2026-07-15 18:22:50 +08:00
fanlusky 8bc914b258 Make the scrollbar of the emoji panel demo scrollable. 2026-07-15 18:09:32 +08:00
fanlusky cbeef9e147 Adjust font size and search box height 2026-07-15 17:19:45 +08:00
fanlusky 3a41372f24 Adjust font size and some layouts 2026-07-15 15:50:50 +08:00
fanlusky 59a73b8476 Optimize the emoji panel size. 2026-07-15 15:43:58 +08:00
fanlusky 05a4ada19d Optimize the emoji panel. 2026-07-15 15:34:53 +08:00
fanlusky 604cf987b1 emoji panel demo step01 2026-07-15 14:49:36 +08:00
fanlusky 4f62123699 Support image render 2026-07-15 14:39:55 +08:00
fanlusky 8c6fbcc7f2 docs 2026-06-23 11:23:21 +08:00
fanlusky a91baf56c1 Add dictionary-backed word deletion 2026-06-19 13:46:10 +08:00
fanlusky ab5516da96 Unclamp combo box popups 2026-06-19 13:03:32 +08:00
fanlusky e210c8eb4c Allow popups to scroll out of view 2026-06-19 13:00:35 +08:00
fanlusky 19257221cc Restore popup trigger press feedback 2026-06-19 12:54:41 +08:00
fanlusky 8a20c1461a Remove sticky button focus border 2026-06-19 12:50:00 +08:00
fanlusky 8330d7cf15 Narrow candidate header text slot 2026-06-19 12:06:52 +08:00
fanlusky b1a07ea3f2 Tighten candidate caret spacing 2026-06-19 12:04:06 +08:00
fanlusky 66b359e461 Fix candidate header caret visibility 2026-06-19 12:01:54 +08:00
fanlusky 946ebb1802 Add candidate header caret 2026-06-19 11:58:20 +08:00
fanlusky d2ca118d89 Add candidate hover highlight 2026-06-19 11:52:43 +08:00
fanlusky 7361a13b19 Keep arrow cursor over candidate list 2026-06-19 11:49:15 +08:00
fanlusky 7075c06aee Emphasize candidate highlight bar 2026-06-19 11:46:45 +08:00
fanlusky 6326e0f81d Remove candidate header bottom gap 2026-06-19 11:42:18 +08:00
fanlusky f015dbbb42 Set candidate header top gap to 2px 2026-06-19 11:40:15 +08:00
fanlusky 452b5c6aa0 Lower candidate header baseline 2026-06-19 11:37:10 +08:00
fanlusky 33350ab7c2 Trim candidate header text metrics 2026-06-19 11:34:30 +08:00
fanlusky d153fd0632 Tighten candidate header spacing 2026-06-19 11:29:24 +08:00
fanlusky fffcf648b2 Widen candidate highlight block 2026-06-19 11:24:32 +08:00