Reemplazado innerHTML con template literals por createElement + addEventListener.
Eliminado JSON embebido en atributos HTML. selectAll ahora busca en el array global.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cambio tojson en atributos onclick por data-* con |e.
dataset decodifica automáticamente " → " sin riesgo de romper el atributo.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- _safe() maneja bytes/BLOB, memoryview y cualquier tipo desconocido
- _port() evita ValueError/TypeError si el puerto está vacío o es None
- get_firebird_from_config usa _port() en todos los endpoints
- run-sql y esquema wrapped en try/except → devuelven JSON de error en vez de 500 HTML
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>