# dsh.mbt 0.1.27

This version adds macOS IME composition to the native desktop composer and
delivers the previously unreleased Windows 11 x64 native runtime, GPUI desktop,
and zip packaging. Linux x86-64 / ARM64 and macOS Apple Silicon artifacts are
included again. The Mooncakes package is published as source.

0.1.27 supersedes the 0.1.26 Mooncakes package, which was published before the
final native-composition cancel fix and before its native release.

## Changes

- macOS desktop accepts opt-in system IME composition (`DSH_DESKTOP_IME=1`) through gpui.mbt 0.10.0's
  bounded `NSTextInputClient` transport. Preedit is rendered inline with a
  caret underline, the candidate window follows the composer caret, commit
  replaces the captured selection, and cancel discards the preedit.
- Enter commits marked text without sending; Escape cancels without clearing
  the draft; clicking Send commits first and then sends. Closing Settings,
  opening New, switching sessions, approving a tool, cancelling a response, or
  using a Command shortcut finishes the native composition and cancels the
  pending preedit.
- Windows 11 x64 gets the bounded native runtime and Direct3D 11 desktop:
  `dsh run` / `dsh web` / `dsh desktop`, demo and API-key providers,
  read / write / edit / glob, the durable session store and host lock, approval,
  frame capture, and the `dsh-windows-x86_64.zip` package. Shell, external MCP,
  LSP, hooks, subagents, ACP, `dsh mcp`, and ChatGPT SIWC remain unsupported
  and fail closed on Windows.
- The native desktop app enforces the Windows scene text budget and clips long
  text runs at UTF-8 scalar boundaries on every platform.
- The native UI dependency moves to `f4ah6o/gpui@0.10.0`. The new
  `EventKind::Composition` is additive on Apple platforms, but exhaustive
  matches in downstream code need a wildcard or an explicit arm.

## Compatibility

- Session and store schemas are unchanged. The desktop composition state is
  UI-only and is not persisted.
- macOS desktop keeps IME composition opt-in through `DSH_DESKTOP_IME=1`; it is
  not enabled by default. Linux and Windows desktop still use paste; this
  release does not add IME there.
- Windows uses its own data-directory ACL and path rules. Do not reuse a POSIX
  data directory on Windows; back it up first. The Windows zip is unsigned.
- The macOS app remains ad-hoc signed, without Developer ID signing or
  notarization.

## Evidence

- gpui native E2E passes composition start / update / commit / cancel, a
  printable key through `interpretKeyEvents`, Enter commit without a duplicate
  application key, and Escape cancel without a duplicate Escape.
- The dsh macOS desktop offline E2E passes with
  `"ime_composition":true`, including commit, cancel, a candidate caret
  rectangle, the approved workspace write, and durable reload.
- Real Japanese Kotoeri qualification is **NOT RUN**. The opt-in test could
  select Kotoeri on the window input context, but the headless harness could
  not make its process the active application. Do not treat the synthetic pass
  as physical Japanese IME acceptance.
- Windows hosted CI and packaging are separate gates; a local macOS run does
  not establish Windows GUI input behavior.
