diff --git a/frontend/js/views/content-library.js b/frontend/js/views/content-library.js
index 180eb2b..09e7194 100644
--- a/frontend/js/views/content-library.js
+++ b/frontend/js/views/content-library.js
@@ -430,7 +430,7 @@ async function loadContent() {
grid.innerHTML = content.map(c => {
const exp = expiryInfo(c);
return `
-
+
diff --git a/frontend/js/views/designer.js b/frontend/js/views/designer.js
index f936c1a..ea7e719 100644
--- a/frontend/js/views/designer.js
+++ b/frontend/js/views/designer.js
@@ -576,7 +576,7 @@ function redraw() {
break;
case 'countdown':
html += `
-
${el.label || ''}
+
${esc(el.label || '')}
`;
break;
@@ -695,7 +695,7 @@ function updateProps() {
`;
} else if (el.type === 'weather') {
- html += `
+ html += `
@@ -1833,7 +1833,7 @@ async function setupPlaylistActions(device) {
${kioskPages.map(k => `
🖱
-
${k.name}
+
${esc(k.name)}
`).join('') || `
${t('device.assign.no_kiosk')} ${t('device.assign.create_one')}
`}
diff --git a/frontend/js/views/reports.js b/frontend/js/views/reports.js
index 5c7ed20..e1abf8b 100644
--- a/frontend/js/views/reports.js
+++ b/frontend/js/views/reports.js
@@ -39,7 +39,7 @@ export async function render(container) {
-
${w.name}
+
${esc(w.name)}
${t('wall.grid_summary', { cols: w.grid_cols, rows: w.grid_rows, n: w.devices?.length || 0 })}
diff --git a/frontend/js/views/widgets.js b/frontend/js/views/widgets.js
index edda8a2..0d28937 100644
--- a/frontend/js/views/widgets.js
+++ b/frontend/js/views/widgets.js
@@ -213,7 +213,7 @@ function openContentPicker({ multiple = false, title } = {}) {
overlay.style.cssText = 'position:fixed;inset:0;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;z-index:10000;padding:16px';
overlay.innerHTML = `
-
${title || t('widget.picker.default_title')}
+
${esc(title || t('widget.picker.default_title'))}
@@ -400,7 +400,7 @@ export async function render(container) {
break;
case 'weather':
html += `
-
+
`;
@@ -429,7 +429,7 @@ export async function render(container) {
case 'social':
html += `
-
`;
+
`;
break;
case 'directory-board':
html += `
diff --git a/frontend/js/views/workspace-members.js b/frontend/js/views/workspace-members.js
index 9422ee0..d7de86c 100644
--- a/frontend/js/views/workspace-members.js
+++ b/frontend/js/views/workspace-members.js
@@ -289,7 +289,7 @@ export function mapMutationError(err) {
}
function renderError(message) {
- return `
${message}
`;
+ return `
${esc(message)}
`;
}
function formatDate(ts) {