# YazSes v2.10.0-dev.3 — Wave N: Diacritize + SafeGlyph (developer preview)

**Pre-release · not published** (publish workflows are pinned to `v0.x`/`v1.x`; v2 dev tags do
not ship). **v1.4.1 remains the stable release.** Every feature is **OFF by default**.

Continues Wave N (`design/vision/v2-research/16-wave-n.md`) with the i18n & glyph-integrity tier.

## New in dev.3 (all off by default)

- **Diacritize** (ADR-v2-122, `[diacritize]`) — restore the diacritics ASR drops: "cafe" → "café",
  "naive" → "naïve", "creme brulee" → "crème brûlée". `restore_diacritics` — whole-word and
  longest-first phrase replacement from an unambiguous built-in lexicon, case-preserving, with a
  user mapping merged on top. Ambiguous words ("resume", "expose") are deliberately left alone —
  those need context and stay with an optional neural backend. Anchor: NAACL 2024 diacritics
  restoration.
- **SafeGlyph** (ADR-v2-123, `[safeglyph]`) — flag homoglyph hazards in dictated identifiers,
  URLs, and secrets before they are injected: Cyrillic "а" vs Latin "a", Greek look-alikes,
  fullwidth forms, zero-width invisibles, and mixed-script words. `scan_confusables` (findings
  with index + ASCII suggestion) + `normalize_ascii` (UTS-39-style skeleton). Anchor: Unicode
  UTS-39.

`yazses features` now lists **131 capabilities**.

## Wave N remaining
WordFind (reverse-dictionary) · LoadGuard (cognitive-load guardrails) · Echo (own-audio replay) ·
SRPace (screen-reader pacing).

## Quality
1437 tests green across Linux × macOS × Windows on Python 3.11 and 3.12. Both new cores are
unit-tested to 100% with **no new dependency** (pure lexicon + pure UTS-39-subset tables). The
default install and the v1 dictation path are unchanged.
