Index: src/views/partials/fedi-node.ejs
===================================================================
--- src/views/partials/fedi-node.ejs	(revision a9956989bad6c7bb7a8d1a6f506374070b001610)
+++ src/views/partials/fedi-node.ejs	(revision 81bb9c588cda25bc4e200a46e001bf780d57c10f)
@@ -14,5 +14,5 @@
   <div class="comment-actions">
     <% if (n.mine && typeof canManageSite !== 'undefined' && canManageSite && n.outboxId) { %>
-      <form method="post" action="<%= _base %>/fediverse/<%= n.outboxId %>/delete" onsubmit="return confirm('<%= t('fedi.delete_confirm') %>')">
+      <form method="post" action="<%= _base %>/fediverse/<%= n.outboxId %>/delete" data-confirm="<%= t('fedi.delete_confirm') %>">
         <button type="submit" class="comment-delete-btn"><%= t('comments.delete') %></button>
       </form>
Index: src/views/partials/footer.ejs
===================================================================
--- src/views/partials/footer.ejs	(revision a9956989bad6c7bb7a8d1a6f506374070b001610)
+++ src/views/partials/footer.ejs	(revision 81bb9c588cda25bc4e200a46e001bf780d57c10f)
@@ -22,5 +22,5 @@
       <% if (typeof langs !== 'undefined' && langs && langs.length > 1) { %>
         <select class="footer-lang" aria-label="<%= t('nav.language') %>"
-                onchange="location.href='/lang/'+this.value+'?r='+encodeURIComponent(location.pathname+location.search)">
+                data-lang-switch>
           <% langs.forEach(function(l){ %><option value="<%= l.code %>"<%= l.active ? ' selected' : '' %>><%= l.name %></option><% }); %>
         </select>
Index: src/views/partials/playlist-editor.ejs
===================================================================
--- src/views/partials/playlist-editor.ejs	(revision a9956989bad6c7bb7a8d1a6f506374070b001610)
+++ src/views/partials/playlist-editor.ejs	(revision 81bb9c588cda25bc4e200a46e001bf780d57c10f)
@@ -442,5 +442,5 @@
       const u = coverEl.value.trim();
       coverThumb.innerHTML = u
-        ? `<img src="${esc(u)}" alt="" onerror="this.parentElement.innerHTML='<span class=\\'pl-cover-empty\\'>⚠️</span>'">`
+        ? `<img src="${esc(u)}" alt="" data-fallback>`
         : `<span class="pl-cover-empty">🎨</span>`;
     });
