diff --git a/LOTUS_FEATURES.md b/LOTUS_FEATURES.md index d6a4c2649..095c32b60 100644 --- a/LOTUS_FEATURES.md +++ b/LOTUS_FEATURES.md @@ -706,8 +706,9 @@ KaTeX-rendered math in messages, two paths: - **Spec path (CS-API §11.5):** `` in `formatted_body` renders the attribute's LaTeX (block for div, inline for span); on render failure the element's child fallback content shows instead - **Plain-text path:** `$…$` (inline) and `$$…$$` (block) with conservative rules — escape-aware (`\$`), currency-guarded (`$5 and $10` stays text), never inside `code`/`pre` +- **Outgoing interop:** on send, the composer converts `$…$`/`$$…$$` to spec `` HTML in `formatted_body` (extracted before markdown so LaTeX isn't mangled; off inside code), so math renders on Element and every other client — not just Lotus. The plain `body` keeps literal `$…$` as the fallback - KaTeX + its CSS load lazily on first math encountered — zero cost to the main bundle -- Files: `src/app/utils/mathParse.ts` (+14 tests), `components/math/KaTeX.tsx`, `plugins/react-custom-html-parser.tsx` +- Files: `src/app/utils/mathParse.ts` (+14 tests), `components/math/KaTeX.tsx`, `plugins/react-custom-html-parser.tsx` (render), `components/editor/output.ts` (+ `output.test.ts`, outgoing) ### Image / Video Captions diff --git a/LOTUS_TODO.md b/LOTUS_TODO.md index c244dbb9d..c20d51171 100644 --- a/LOTUS_TODO.md +++ b/LOTUS_TODO.md @@ -153,9 +153,15 @@ After Phases A–C the client spec is ~complete. What's left, flagged by **what A minimal audio editor for soundboard clips and voice content. Scope: (1) **trim/clip** an audio file to a chosen start/end (waveform scrubber, in/out handles); (2) **upload a video file → strip and discard the video track, keep only the audio** (extract audio, then the source video is dropped — never uploaded/stored); (3) minimal edits only (trim, maybe gain/normalize, fade in/out) — not a full DAW. Likely Web Audio API (`AudioContext.decodeAudioData` → trim `AudioBuffer` → re-encode) + `MediaRecorder`/an encoder for output; video demux via a `