UnimeType runs only the actions you trigger. Opening the keyboard does not send text. Each action has a different capture scope and host result.
| Action | No-selection scope | Host result |
|---|---|---|
| Convert | Current paragraph, with a typed-buffer fallback | Replaces the captured text |
| Polish | Sentence around the caret, with a typed-buffer fallback | Replaces the captured text |
| Explain | Sentence around the caret, with a typed-buffer fallback | Opens a panel; host text is unchanged |
An explicit selection overrides every automatic scope. For capture order and accepted paragraphs, see Text scope strategy.
Convert
Convert sends the captured text to the configured model. Local client code does not decide whether a Latin fragment is English or Pinyin and does not block a paragraph because it looks like code. The model receives instructions for the enabled languages and makes that semantic decision.
Example (illustrative)
- Type:
wo jintian wanshang ba API notes fa gei ni - Place the caret in the paragraph (or select the phrase).
- Run Convert.
- The host paragraph is replaced with the converted result when validation and
replacement succeed. English spans the model keeps (such as
APIor product names) remain part of the output contract the model is instructed to respect; protected tokens are enforced locally.
Retry and Unchanged
If the first model result is identical to the request text, UnimeType retries once with a stronger instruction. Recognized Mini and Lite routes use their Pro counterpart for this retry when available. A second structurally valid unchanged result is reported as Unchanged, not as a failed action.
Failures that block write-back
Local validation may reject a model response before the host is modified. Typical reasons include broken line breaks, moved Markdown structure, missing protected tokens, or an unexpected writing system. When validation fails after repair attempts, UnimeType keeps the original host text and surfaces a status such as AI service error or leaves the text unchanged. See Status and troubleshooting and the technical reference for identifier-level detail.
Polish
Polish keeps the original language mix and information anchors. Local validation
requires line breaks, Markdown prefixes, protected tokens, and number-like
anchors to remain stable. After the model responds, a comma immediately before
Chinese text is normalized from , to ,.
Example (illustrative)
- Draft:
I can bring dessert, but I'll arrive 晚一点. - Place the caret in the sentence or select it.
- Run Polish.
- The sentence is replaced in place when validation succeeds. Meaning anchors and protected values must survive; otherwise UnimeType keeps the original.
Polish is for small in-place wording fixes, not open-ended drafting. For when to use a chat assistant instead, see AI keyboard or ChatGPT?.
Explain
Explain makes one model request and shows a short explanation in a panel near the caret. It never replaces host text. Protected values remain masked during the request and are restored only for local display.
Example (illustrative)
- Select an unfamiliar phrase in a message you received.
- Run Explain.
- Read the panel; the message body in the host app stays exactly as it was.
What never happens automatically
- No request for ordinary typing alone
- No replacement on Explain
- No second action while one is already in flight (Request in flight)
- No write-back when the host text changed during the request (Text changed)