ulysses/static
chrisdvz.io ff81a22285
perf(ui): hoist esc() lookup table and build option lists once (#160)
Hoist the HTML-escape lookup table in static/js/ui.js out of the
String.replace callback so it is allocated once instead of on every
matched character. esc() is the canonical escaper aliased across 27
modules and runs on essentially every render, so this removes a lot of
short-lived garbage on the hottest text path. Output is byte-identical
(verified across null/undefined/emoji/attribute edge cases).

Also build the <select> option lists in cookbook-hwfit.js and group.js
by accumulating a string and assigning innerHTML once, instead of
`innerHTML +=` inside a forEach (which makes the browser re-parse the
element's markup on every iteration). Final DOM is unchanged.

Pure micro-optimizations; no behavior change.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-01 13:09:33 +09:00
..
fonts Odysseus v1.0 2026-05-31 23:58:26 +09:00
js perf(ui): hoist esc() lookup table and build option lists once (#160) 2026-06-01 13:09:33 +09:00
lib Odysseus v1.0 2026-05-31 23:58:26 +09:00
app.js Sidebar Chat button Quality of Life improvement. (#155) 2026-06-01 02:52:10 +00:00
index.html Move email account management to integrations 2026-06-01 13:01:33 +09:00
landing.html Fix landing footer snap and uvicorn docs 2026-06-01 10:51:55 +09:00
login.html Odysseus v1.0 2026-05-31 23:58:26 +09:00
manifest.json Odysseus v1.0 2026-05-31 23:58:26 +09:00
style.css Sidebar Chat button Quality of Life improvement. (#155) 2026-06-01 02:52:10 +00:00
sw.js Odysseus v1.0 2026-05-31 23:58:26 +09:00