fix: correct tojson|safe usage in templates and update validator

- Remove |safe from |tojson in HTML attributes (x-data) - quotes must
  become " for browsers to parse correctly
- Update LANG-002 and LANG-003 architecture rules to document correct
  |tojson usage patterns:
  - HTML attributes: |tojson (no |safe)
  - Script blocks: |tojson|safe
- Fix validator to warn when |tojson|safe is used in x-data (breaks
  HTML attribute parsing)
- Improve code quality across services, APIs, and tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-13 22:59:51 +01:00
parent 94d268f330
commit 9920430b9e
123 changed files with 1408 additions and 840 deletions

View File

@@ -58,7 +58,7 @@
{% set positions = {'left': 'left-0', 'right': 'right-0'} %}
{# Uses languageSelector() function per LANG-002 architecture rule #}
<div
x-data="languageSelector('{{ current }}', {{ langs | tojson | safe }})"
x-data="languageSelector('{{ current }}', {{ langs | tojson }})"
class="relative inline-block"
>
<button
@@ -121,7 +121,7 @@
{% set positions = {'left': 'left-0', 'right': 'right-0'} %}
{# Uses languageSelector() function per LANG-002 architecture rule #}
<div
x-data="languageSelector('{{ current }}', {{ langs | tojson | safe }})"
x-data="languageSelector('{{ current }}', {{ langs | tojson }})"
class="relative"
>
<button
@@ -179,7 +179,7 @@
{% set current = current_language if current_language in langs else langs[0] %}
{# Uses languageSelector() function per LANG-002 architecture rule #}
<div
x-data="languageSelector('{{ current }}', {{ langs | tojson | safe }})"
x-data="languageSelector('{{ current }}', {{ langs | tojson }})"
class="inline-flex items-center gap-1 p-1 bg-gray-100 dark:bg-gray-700 rounded-lg"
>
<template x-for="lang in languages" :key="lang">