Index: src/services/Scheduler.js
===================================================================
--- src/services/Scheduler.js	(revision 015ce465e5c0358e84f12cd2ca3297d32e390cee)
+++ src/services/Scheduler.js	(revision d7746798ec30f65765731ccbef3852624ec58f96)
@@ -1,9 +1,9 @@
 /**
- * Scheduler — release-planning (premium #3).
+ * Scheduler — release planning (premium #3).
  *
- * Geplande posts hebben status 'scheduled' + publish_at (toekomst). Een lichte
- * timer zet ze op 'published' zodra publish_at bereikt is. Zo hoeven de publieke
- * queries (status='published') NIET aangepast te worden — een geplande post is
- * gewoon nog niet 'published' en dus nergens publiek zichtbaar tot het moment.
+ * Scheduled posts have status 'scheduled' + publish_at (future). A lightweight
+ * timer flips them to 'published' once publish_at is reached. This means public
+ * queries (status='published') need NO changes — a scheduled post simply isn't
+ * 'published' yet and therefore invisible until that moment.
  */
 
@@ -25,5 +25,5 @@
     for (const p of due) {
       upd.run(p.id);
-      try { fts.run(HtmlSanitizerService.toPlainText(p.content || ''), p.title || '', p.username || '', p.id); } catch { /* FTS niet-fataal */ }
+      try { fts.run(HtmlSanitizerService.toPlainText(p.content || ''), p.title || '', p.username || '', p.id); } catch { /* FTS failure is non-fatal */ }
     }
     return due.length;
@@ -33,7 +33,7 @@
 let _timer = null;
 export function startScheduler() {
-  flipScheduledPosts();                 // direct bij boot
+  flipScheduledPosts();                 // run immediately on boot
   if (_timer) return;
-  _timer = setInterval(flipScheduledPosts, 60 * 1000); // elke minuut
+  _timer = setInterval(flipScheduledPosts, 60 * 1000); // every minute
   if (_timer.unref) _timer.unref();
 }
