5-Tier 스택
Tier 1 pylatexenc inline LaTeX → flat Unicode (5 MB) Tier 2 latex2sympy2 + sympy.pretty 2D Unicode block (~30 MB) Tier 3 graphics fallback terminal image (scaffold) Tier 4 bracket fallback [...] 형식의 plain text Tier 5 ASCII guard 렌더 실패 시 원문 그대로 출력
경로 결정
`core/ui/latex.py` 의 detector 가 입력 토큰을 분석해 Tier 를 선택합니다. v0.95–v0.96 의 7 PR 묶음 (#1179 Markdown streaming, #1180 CJK redraw, #1181 detector, #1185 Tier 1 unicode, #1193 path-context, #1196 digit-base + nested superscript, #1199 thinking collapse) 으로 detector PASS ≠ render PASS 케이스, `/` path false-positive, nested superscript, thinking collapse-on-end UX 까지 처리합니다.
토글 + 디버깅
# 렌더 토글 (Ctrl+O) Ctrl+O Tier 1↔Tier 2 ↔ raw 순환 # 진단 로그 GEODE_LATEX_DEBUG=1 geode "...$x^2$..."
회귀 슈트
`tests/test_ui_latex.py` + `tests/test_cli_latex_uiux.py` + `tests/test_interactive_loop_latex.py` 가 multi-line collapse, delimiter-less heuristic, path-context, digit-base 케이스를 지킵니다.
참조: `core/ui/latex.py`, CHANGELOG v0.95.1–v0.96.0, Session 60-61 handoff.