# # ChangeLog for src/config/database.js in Klonkt # # Generated by Trac 1.6 # 09/09/2026 02:09:45 AM Fri, 31 Jul 2026 18:55:59 GMT Robin [72ec6a4] * src/config/database.js (modified) * src/middleware/render.js (modified) * src/middleware/site.js (modified) * src/routes/admin-settings.js (modified) * src/routes/admin.js (modified) * src/routes/audio.js (modified) * src/routes/download.js (modified) * src/routes/guardian.js (modified) * src/routes/posts.js (modified) * src/routes/search.js (modified) * src/services/ActivityPubService.js (modified) * src/services/SettingsService.js (modified) * src/views/pages/admin-site-edit.ejs (modified) * src/views/pages/admin-users.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/guardian.ejs (modified) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/chrome.ejs (modified) * src/views/partials/topnav.ejs (modified) Hub-modus en guardian-lite eruit Robins besluit (31-7): een ... Fri, 31 Jul 2026 17:43:16 GMT Robin [0ca7e9a4] * node_modules (added) * src/config/database.js (modified) * src/routes/admin-sites.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-site-edit.ejs (modified) * test/move-actor.test.js (modified) Account-verhuizingen slice 2: de uitgaande Move (FEP-7628) De ... Fri, 31 Jul 2026 13:34:46 GMT Robin [ccaa530] * src/config/database.js (modified) * src/routes/admin-sites.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-site-edit.ejs (modified) * test/move-actor.test.js (added) Account-verhuizingen: inkomende Move plus alsoKnownAs-aliassen ... Thu, 30 Jul 2026 08:23:47 GMT Robin [2a10445] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * src/views/partials/post-card.ejs (modified) * src/views/partials/post-tile.ejs (modified) * test/c2s-compose.test.js (modified) De tegel leest zijn beeld uit de content, de cover-kopie is weg ... Thu, 30 Jul 2026 07:02:58 GMT Robin [6089c53] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * test/c2s-compose.test.js (added) Een C2S-post draagt zijn media, en een foto mag het hele bericht zijn ... Wed, 29 Jul 2026 12:36:50 GMT Robin [d56d471] * src/assets/css/guardian.css (modified) * src/assets/js/guardian.js (modified) * src/config/database.js (modified) * src/routes/guardian.js (modified) * src/services/guardianship/gated.js (modified) * src/services/guardianship/handshake.js (modified) * src/services/i18n.js (modified) * test/gated-settings.test.js (modified) Een voorstel krijgt een antwoord, een status en een zichtbare kring ... Wed, 29 Jul 2026 10:04:36 GMT Robin Genis [e27b8db] * src/assets/js/guardian.js (modified) * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/routes/guardian.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/guardianship/gated.js (modified) * src/services/guardianship/index.js (modified) * src/services/guardianship/notes.js (modified) * src/services/i18n.js (modified) * test/gated-settings.test.js (modified) Afspelen in de app als tweede gated feature, en het gat in de gate ... Wed, 29 Jul 2026 07:15:16 GMT Robin Genis [88d7c8f] * src/assets/css/guardian.css (modified) * src/assets/js/guardian.js (modified) * src/config/database.js (modified) * src/routes/guardian.js (modified) * src/services/guardianship/gated.js (modified) * src/services/guardianship/handshake.js (modified) * src/services/i18n.js (modified) * test/gated-settings.test.js (modified) Een gated voorstel bereikte de andere guardians nooit Op de vloot ... Tue, 28 Jul 2026 23:22:07 GMT Robin Genis [6eab7e9] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/routes/guardian.js (modified) * src/services/ActivityPubService.js (modified) * src/services/guardianship/availability.js (added) * src/services/guardianship/delivery.js (modified) * src/services/guardianship/gated.js (modified) * src/services/guardianship/handshake.js (modified) * src/services/guardianship/index.js (modified) * src/services/guardianship/notes.js (modified) * src/services/guardianship/queues.js (modified) * src/services/guardianship/relations.js (modified) * test/activitypub-as2.test.js (modified) * test/availability.test.js (added) Beschikbaarheid van guardians (FEP-633c 3.6): away, dormant, lapse ... Tue, 28 Jul 2026 18:17:36 GMT Robin Genis [d9ad6c5] * src/assets/css/guardian.css (modified) * src/assets/js/guardian.js (modified) * src/config/database.js (modified) * src/middleware/render.js (modified) * src/routes/guardian.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/news.ejs (modified) * src/views/partials/msg-item.ejs (modified) * src/views/partials/note-body.ejs (added) * src/views/partials/shared-styles.ejs (modified) * src/views/partials/tl-item.ejs (modified) * test/help-request-timeline.test.js (added) * test/note-body-shared.test.js (added) Een hulpvraag hoort in Berichten, niet in de Krant Een 🛟 van een ... Tue, 28 Jul 2026 10:40:50 GMT Robin Genis [65abc85] * src/assets/js/guardian.js (modified) * src/config/database.js (modified) * src/routes/guardian.js (modified) * src/services/guardianship/gated.js (added) * src/services/guardianship/handshake.js (modified) * src/services/guardianship/index.js (modified) * src/services/i18n.js (modified) * test/gated-settings.test.js (added) Gated settings federeren: guardians beslissen samen, ook van een ... Tue, 28 Jul 2026 07:53:36 GMT Robin Genis [b258a79] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * src/views/partials/tl-item.ejs (modified) * test/external-embeds.test.js (modified) Fase 3: quotes federeren volgens de FEP, en de geciteerde auteur ... Tue, 28 Jul 2026 07:43:47 GMT Robin Genis [fc40410] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/services/ActivityPubService.js (modified) * src/services/guardianship/index.js (modified) * src/services/guardianship/notes.js (modified) * test/external-embeds.test.js (added) Externe embeds: thumbnail-only, en gated aan de serverkant Fase 2 ... Sun, 26 Jul 2026 09:52:24 GMT Robin Genis [ef1853c] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * src/views/pages/news.ejs (modified) * src/views/partials/fedi-node.ejs (modified) * src/views/partials/msg-item.ejs (modified) * src/views/partials/shared-styles.ejs (modified) Web: custom-emoji ook in messages + threads (Shaer-pariteit) Na de ... Sun, 26 Jul 2026 09:02:17 GMT Robin Genis [f3caf19] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/services/ActivityPubService.js (modified) shaer:booster.emojis: custom-emoji in de booster-naam (X boosted) ... Sun, 26 Jul 2026 08:47:16 GMT Robin Genis [a677616] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/services/ActivityPubService.js (modified) shaer:author.emojis: custom-emoji in de display-naam op de byline ... Sun, 26 Jul 2026 08:20:58 GMT Robin Genis [6fd0e20] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/services/ActivityPubService.js (modified) * test/object-links.test.js (modified) FEP-044f: Klonkt resolvet de geciteerde post voor een ingebedde ... Sun, 26 Jul 2026 08:01:25 GMT Robin Genis [eb36688] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/services/ActivityPubService.js (modified) * test/object-links.test.js (added) FEP-e232 emit: Klonkt bewaart + serveert object-link (quote) tags op ... Sat, 25 Jul 2026 23:32:44 GMT Robin [97bacf2] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/services/ActivityPubService.js (modified) * test/custom-emojis.test.js (added) FEP-9098 emit: Klonkt bewaart + serveert custom-emoji tags (C2S ... Sat, 25 Jul 2026 09:15:34 GMT Robin [2b4252c] * src/config/database.js (modified) * src/routes/guardian2.js (modified) * src/services/ActivityPubService.js (modified) * src/services/guardianship/follows.js (modified) * test/follow-gating.test.js (modified) Cross-instance follow-goedkeuring, gemodelleerd op de guardian-offer ... Sat, 25 Jul 2026 08:37:24 GMT Robin [af5b79b] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * src/services/guardianship/index.js (modified) * src/services/guardianship/notes.js (modified) * test/has-guardians.test.js (added) FEP-633c §2.2: shaer:hasGuardians (outbound stempelen, inbound ... Sat, 25 Jul 2026 08:01:21 GMT Robin [e62f65d] * src/assets/js/guardian2.js (modified) * src/config/database.js (modified) * src/routes/guardian2.js (modified) * src/services/ActivityPubService.js (modified) * src/services/guardianship/delivery.js (modified) * src/services/guardianship/index.js (modified) * src/services/guardianship/notes.js (modified) * src/services/i18n.js (modified) Guardian 2: de zwaai (shaer:wave), warmte zonder publiceren Een ... Sat, 25 Jul 2026 07:51:28 GMT Robin [5c373b8] * src/assets/js/guardian2.js (modified) * src/config/database.js (modified) * src/routes/guardian2.js (modified) * src/services/ActivityPubService.js (modified) * src/services/guardianship/follows.js (added) * src/services/guardianship/index.js (modified) * src/services/i18n.js (modified) * src/views/pages/guardian2.ejs (modified) * test/follow-gating.test.js (added) Guardian 2: follow-goedkeuring (FEP-633c §5.3) Een Follow op een ... Sat, 25 Jul 2026 06:25:15 GMT Robin [05665bc] * src/config/database.js (modified) * src/routes/guardian2.js (modified) * src/views/pages/guardian2.ejs (modified) Guardian 2: losse guardians via uitnodiging (guardian-only accounts) ... Fri, 24 Jul 2026 19:44:15 GMT Robin Genis [780a7c6] * .claude/launch.json (added) * src/assets/css/guardian.css (modified) * src/assets/js/guardian.js (modified) * src/config/database.js (modified) * src/routes/guardian.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/guardianship/handshake.js (modified) * src/services/guardianship/index.js (modified) * src/services/guardianship/offers.js (added) * src/services/guardianship/queues.js (modified) * src/services/guardianship/relations.js (modified) * src/services/i18n.js (modified) * src/views/pages/messages.ejs (modified) * test/guardianship.test.js (modified) Guardianship Fase 0+1: de echte multi-party handshake (FEP-633c §3) ... Fri, 24 Jul 2026 16:56:51 GMT Robin Genis [6b5d7da] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * src/services/BlocklistService.js (added) * src/services/guardianship/context.js (added) * src/services/guardianship/delivery.js (added) * src/services/guardianship/handshake.js (added) * src/services/guardianship/index.js (added) * src/services/guardianship/notes.js (added) * src/services/guardianship/queues.js (added) * src/services/guardianship/relations.js (added) * test/activitypub-as2.test.js (modified) Guardianship als eigen module + gedeelde BlocklistService FEP-633c ... Wed, 22 Jul 2026 07:12:11 GMT Robin [ad10715] * package-lock.json (modified) * package.json (modified) * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/PushService.js (added) * test/push.test.js (added) Feature: web push slice 1, VAPID keys + subscription store The ... Tue, 21 Jul 2026 02:07:18 GMT Robin [c3d12a6] * src/config/database.js (modified) * src/routes/admin-paid.js (modified) * src/routes/paid.js (modified) * src/routes/posts.js (modified) * src/services/PaidPatreonService.js (modified) * src/views/pages/admin-paid.ejs (modified) * src/views/pages/paid-gate.ejs (modified) * src/views/pages/paid-result.ejs (modified) * test/paid-patron.test.js (modified) Feature: a way to actually become a supporter, and a styled expired ... Tue, 21 Jul 2026 01:16:03 GMT Robin [9e9e6f9] * package-lock.json (modified) * package.json (modified) * src/assets/vendor/simplewebauthn-browser.umd.min.js (added) * src/config/database.js (modified) * src/routes/paid.js (added) * src/server.js (modified) * src/services/PaidPatreonService.js (modified) * src/services/PasskeyService.js (added) * src/views/pages/paid-passkey.ejs (added) * src/views/pages/paid-result.ejs (added) * test/paid-patron.test.js (added) Feature: paid posts slice 3, patron link + passkey (cookie-less) ... Tue, 21 Jul 2026 01:06:47 GMT Robin [928d1c7] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/views/pages/paid-gate.ejs (added) * src/views/pages/post-edit.ejs (modified) * test/paid-federation.test.js (added) Feature: paid posts slice 2, post model + teaser gate A post can be ... Tue, 21 Jul 2026 00:38:08 GMT Robin [61e3daf] * docs/paid-posts-design.md (modified) * docs/privacy-betaalde-posts.md (modified) * src/config/database.js (modified) * src/routes/admin-paid.js (added) * src/server.js (modified) * src/services/CryptoBox.js (added) * src/services/PaidPatreonService.js (added) * src/views/pages/admin-paid.ejs (added) * src/views/pages/admin.ejs (modified) * test/paid-patreon.test.js (added) Feature: paid posts slice 1, owner Patreon config (encrypted) The ... Mon, 20 Jul 2026 23:03:52 GMT Robin [7922694] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/services/ActivityPubService.js (modified) * test/c2s-contacts.test.js (added) Feature: owner followers/following carry name + avatar (shaer-aa3) ... Mon, 20 Jul 2026 22:52:58 GMT Robin [155c24e] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * test/c2s-direct.test.js (modified) Feature: emit shaer:helpRequest on direct notes (FEP-633c 5.2.1) ... Mon, 20 Jul 2026 22:08:44 GMT Robin [024f4f8] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * test/c2s-direct.test.js (added) Feature: direct notes are private mentions, not posts (shaer-tqc) A ... Mon, 20 Jul 2026 21:38:41 GMT Robin [81b2e1e] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * test/c2s-visibility.test.js (added) Feature: C2S posts honor to/cc visibility (shaer-60b wire) A note ... Sun, 19 Jul 2026 17:25:26 GMT Robin [feced2c] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/assets/css/reply-editor.css (modified) * src/assets/js/reply-editor.js (modified) * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/partials/fedi-node.ejs (modified) * src/views/partials/reply-editor.ejs (modified) * test/rich-reply.test.js (modified) Feature: media in replies — rich replies phase 2 (klonkt-demo-c7f) ... Sun, 19 Jul 2026 17:08:32 GMT Robin [33e1dbd] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/assets/css/reply-editor.css (added) * src/assets/js/reply-editor.js (added) * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/authorize-interaction.ejs (modified) * src/views/partials/fedi-node.ejs (modified) * src/views/partials/reply-editor.ejs (added) * test/rich-reply.test.js (added) Feature: rich replies phase 1 — shared editor, mobile full-screen, ... Sun, 19 Jul 2026 02:52:55 GMT Robin [d49b60b] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * package.json (modified) * src/config/database.js (modified) * src/routes/oauth.js (added) * src/server.js (modified) * src/services/ActivityPubService.js (modified) * src/services/OAuthService.js (added) * src/services/i18n.js (modified) * src/views/pages/oauth-consent.ejs (added) * test/activitypub-as2.test.js (modified) * test/oauth-c2s.test.js (added) Feature: OAuth 2.0 for ActivityPub C2S (phase 1 — auth handshake) ... Fri, 17 Jul 2026 00:38:54 GMT Robin [67c1f24] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/partials/fedi-node.ejs (modified) * test/reply-moderation.test.js (added) Feature: owner moderation of incoming replies (remove + tombstone + ... Fri, 17 Jul 2026 00:20:48 GMT Robin [3778ddb] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * test/reply-visibility.test.js (added) Fix: private replies (followers-only/DM) no longer render on the ... Thu, 16 Jul 2026 12:20:51 GMT Robin [2d6a9c3] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) Spoor A step 1: bake post display HTML at save (ActivityPub source ... Thu, 16 Jul 2026 12:20:51 GMT Robin [8878814] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/followers.ejs (added) * src/views/partials/fedi-tabs.ejs (modified) Feature: followers list with delivery health for cleanup Adds a ... Wed, 01 Jul 2026 22:28:08 GMT roboburr [3b4095f] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/config/database.js (modified) * src/routes/admin-seo.js (modified) * src/routes/og.js (modified) * src/services/OgImageService.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-seo.ejs (modified) feat(seo): og:image light/dark override setting The auto-generated ... Wed, 01 Jul 2026 22:13:40 GMT roboburr [fe97cc3] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/fedi-notifications.ejs (modified) * test/inbound-mentions.test.js (added) feat(fediverse): notification when mentioned in a non-reply post An ... Wed, 01 Jul 2026 19:26:13 GMT roboburr [737ea05] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/fedi-notifications.ejs (modified) feat(fediverse): receive reports (inbound Flag) → owner's ... Wed, 01 Jul 2026 19:06:45 GMT roboburr [0688b5f] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/Scheduler.js (modified) * src/services/i18n.js (modified) * src/views/pages/post-edit.ejs (modified) * test/activitypub-as2.test.js (modified) * test/post-language.test.js (added) feat(fediverse): post language → AS2 contentMap A post can now ... Wed, 01 Jul 2026 18:55:46 GMT roboburr [d18c60e] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/Scheduler.js (modified) * src/services/i18n.js (modified) * src/views/pages/post-edit.ejs (modified) * src/views/pages/post.ejs (modified) * test/media-alt.test.js (added) feat(fediverse): alt text for images (accessibility → AS2 attachment ... Wed, 01 Jul 2026 18:18:14 GMT roboburr [7b07035] * src/config/database.js (modified) chore(db): add busy_timeout + synchronous=NORMAL for concurrent ... Wed, 01 Jul 2026 12:53:32 GMT roboburr [0403187] * CHANGELOG.de.md (modified) * CHANGELOG.md (modified) * CHANGELOG.nl.md (modified) * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/Scheduler.js (modified) * src/services/i18n.js (modified) * src/views/pages/post-edit.ejs (modified) * src/views/pages/post.ejs (modified) * test/polls.test.js (added) feat(fediverse): host your own polls (federate as AS2 Question) A ... Wed, 01 Jul 2026 07:38:33 GMT Robin Genis [6053c6c] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/news.ejs (modified) feat(fediverse): show + vote on remote polls (Question) in the News ... Tue, 30 Jun 2026 17:29:01 GMT roboburr [1d6f9a2] * src/config/database.js (modified) * src/routes/posts.js (modified) feat(video-cover): backend — convert animated WebP covers to a muted ... Tue, 30 Jun 2026 01:50:00 GMT roboburr [f2eacca] * src/config/database.js (modified) * src/routes/admin-audio.js (modified) * src/routes/audio.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-audio.ejs (modified) feat(music): per-track "share on the fediverse" — federate the file ... Sun, 28 Jun 2026 10:25:40 GMT Robin Genis [c6cdce6] * src/config/database.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/news.ejs (modified) feat(news): show boosts from followed accounts in the News feed An ... Sat, 27 Jun 2026 21:46:03 GMT Robin Genis [abdcf33] * src/config/database.js (modified) * src/routes/admin-sites.js (modified) * src/services/ensurePrimarySite.js (modified) * src/services/i18n.js (modified) chore(cleanup): remove the dead comments_moderation_mode column + ... Sat, 27 Jun 2026 15:01:13 GMT Robin Genis [5f483e3] * .env.example (modified) * deploy/post-receive (modified) * deploy/verify.ps1 (deleted) * package.json (modified) * src/config/database.js (modified) * src/routes/notifications.js (deleted) * src/services/NotificationService.js (deleted) * src/services/i18n.js (modified) * src/views/pages/auth-login.ejs (modified) * src/views/pages/notifications.ejs (deleted) chore: code cleanup — remove dead files, deps, DB tables, Google- ... Sat, 27 Jun 2026 08:10:43 GMT Robin Genis [b7d4458] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/routes/circle.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/Scheduler.js (modified) * src/services/i18n.js (modified) * src/views/pages/post-edit.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/partials/post-card.ejs (modified) * src/views/partials/post-tile.ejs (modified) feat(nsfw): custom content-warning text + blur in the Cirkel - ... Sat, 27 Jun 2026 07:51:44 GMT Robin Genis [837fc9c] * src/assets/css/style.css (modified) * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/Scheduler.js (modified) * src/services/i18n.js (modified) * src/views/pages/post-edit.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/partials/post-card.ejs (modified) * src/views/partials/post-tile.ejs (modified) * src/views/shell.ejs (modified) feat(posts): NSFW / sensitive content Mark a post NSFW (checkbox in ... Fri, 26 Jun 2026 23:50:14 GMT Robin Genis [9d34855] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/views/pages/news.ejs (modified) fix(news): feed like is a toggle too (like/unlike), like boost The ... Fri, 26 Jun 2026 23:38:25 GMT Robin Genis [3d37c67] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/views/pages/authorize-interaction.ejs (modified) feat(fedi): interact page like/boost are 2 icon+label toggle buttons ... Fri, 26 Jun 2026 23:30:21 GMT Robin Genis [3289a64] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/post.ejs (modified) * src/views/partials/fedi-node.ejs (modified) feat(fedi): comment like is a toggle too (Undo Like / un-favourite) ... Fri, 26 Jun 2026 23:25:14 GMT Robin Genis [c745659] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/views/pages/post.ejs (modified) * src/views/partials/fedi-node.ejs (modified) feat(fedi): comment boost is a toggle with state + coloured action ... Fri, 26 Jun 2026 12:00:18 GMT Robin Genis [5045c30] * src/config/database.js (modified) * src/middleware/render.js (modified) * src/routes/circle.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) feat(cirkel): boosted posts also appear in the Cirkel (mixed by date, ... Fri, 26 Jun 2026 07:47:20 GMT Robin Genis [f278df9] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/timeline.ejs (modified) feat(fediverse): auto-boost a followed account ('feature an artist') ... Thu, 25 Jun 2026 05:15:48 GMT Robin Genis [5a6a457] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/server.js (modified) * src/services/ActivityPubService.js (modified) * src/services/Scheduler.js (modified) feat(fediverse): federate on save+scheduler, delivery retry-queue, ... Wed, 24 Jun 2026 16:08:34 GMT Robin Genis [f5c3870] * src/config/database.js (modified) * src/middleware/render.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/blocks.ejs (added) * src/views/pages/timeline.ejs (modified) * src/views/partials/topnav.ejs (modified) feat(fediverse-client): block/defederate accounts & domains Block ... Wed, 24 Jun 2026 15:19:11 GMT Robin Genis [914eb9f] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/timeline.ejs (added) feat(fediverse-client): follow accounts + home timeline Klonkt can ... Wed, 24 Jun 2026 14:19:18 GMT Robin Genis [2e9773f] * src/config/database.js (modified) fix(db): user_notifications boot crash on older DBs (missing columns) ... Wed, 24 Jun 2026 13:24:23 GMT Robin Genis [7d932ce] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/authorize-interaction.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/partials/fedi-node.ejs (added) feat(activitypub): nested threading + delete your own replies Inbox ... Wed, 24 Jun 2026 12:09:08 GMT Robin Genis [55bc7f9] * src/assets/css/style.css (modified) * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/post.ejs (modified) * src/views/shell.ejs (modified) feat(activitypub): reply back to the fediverse (Phase 4 outbound) ... Wed, 24 Jun 2026 11:44:23 GMT Robin Genis [c16e0a5] * src/assets/css/style.css (modified) * src/config/database.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/post.ejs (modified) * src/views/shell.ejs (modified) feat(activitypub): inbound interactions — replies, likes, boosts ... Wed, 24 Jun 2026 10:27:56 GMT Robin Genis [6bd25d1] * src/config/database.js (modified) * src/routes/activitypub.js (added) * src/server.js (modified) * src/services/ActivityPubService.js (added) feat(activitypub): phase 1 — discoverable/fetchable actor (WebFinger, ... Tue, 23 Jun 2026 18:14:27 GMT Robin Genis [834bcc3] * scripts/backfill-durations.mjs (modified) * scripts/reset-admin.mjs (modified) * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (modified) * src/assets/js/smooth-scroll.js (modified) * src/config/database.js (modified) * src/config/features.js (modified) * src/config/google.js (modified) * src/config/mailer.js (modified) * src/middleware/auth.js (modified) * src/middleware/rate-limit.js (modified) * src/middleware/render.js (modified) * src/middleware/site.js (modified) * src/routes/account.js (modified) * src/routes/admin-audio.js (modified) * src/routes/admin-circle.js (modified) * src/routes/admin-comments.js (modified) * src/routes/admin-epk.js (modified) * src/routes/admin-newsletter.js (modified) * src/routes/admin-patreon.js (modified) * src/routes/admin-seo.js (modified) * src/routes/admin-settings.js (modified) * src/routes/admin-shows.js (modified) * src/routes/admin-sites.js (modified) * src/routes/admin-stats.js (modified) * src/routes/admin-updates.js (modified) * src/routes/admin-users.js (modified) * src/routes/admin.js (modified) * src/routes/artists.js (modified) * src/routes/audio.js (modified) * src/routes/auth.js (modified) * src/routes/changelog.js (modified) * src/routes/circle.js (modified) * src/routes/comments.js (modified) * src/routes/download.js (modified) * src/routes/embed.js (modified) * src/routes/epk.js (modified) * src/routes/federation.js (modified) * src/routes/hub.js (modified) * src/routes/lang.js (modified) * src/routes/linkbio.js (modified) * src/routes/newsletter.js (modified) * src/routes/notifications.js (modified) * src/routes/posts.js (modified) * src/routes/search.js (modified) * src/routes/shows.js (modified) * src/server.js (modified) * src/services/AudioEmbedService.js (modified) * src/services/AudioTranscoder.js (modified) * src/services/CircleFederation.js (modified) * src/services/CircleService.js (modified) * src/services/ImageWebpService.js (modified) * src/services/NotificationService.js (modified) * src/services/PatreonService.js (modified) * src/services/PermissionsService.js (modified) * src/services/PlaylistService.js (modified) * src/services/Scheduler.js (modified) * src/services/SettingsService.js (modified) * src/services/StatsService.js (modified) * src/services/SubscriberService.js (modified) * src/services/ThemeService.js (modified) * src/services/ensurePrimarySite.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/admin-circle.ejs (modified) * src/views/pages/admin-google.ejs (modified) * src/views/pages/admin-seo.ejs (modified) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/admin-shows.ejs (modified) * src/views/pages/admin-site-edit.ejs (modified) * src/views/pages/admin-users.ejs (modified) * src/views/pages/auth-login.ejs (modified) * src/views/pages/circle-feed.ejs (modified) * src/views/pages/fan-gate.ejs (modified) * src/views/pages/hub-home.ejs (modified) * src/views/pages/post-edit.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/footer.ejs (modified) * src/views/partials/like-button.ejs (modified) * src/views/partials/post-nav.ejs (modified) * src/views/partials/shared-styles.ejs (modified) * src/views/partials/topnav.ejs (modified) * src/views/partials/track-editor.ejs (modified) i18n: translate Dutch code comments to English across src/ Comments ... Tue, 23 Jun 2026 14:24:46 GMT Robin Genis [8f2f97c] * src/config/database.js (modified) * src/routes/admin-sites.js (modified) * src/routes/posts.js (modified) * src/routes/prutter.js (deleted) * src/server.js (modified) * src/services/PrutterService.js (deleted) * src/views/pages/admin-site-edit.ejs (modified) * src/views/pages/prutter-conversation.ejs (deleted) * src/views/pages/prutter-inbox.ejs (deleted) * src/views/pages/user.ejs (modified) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/topnav.ejs (modified) * src/views/shell.ejs (modified) Prutter (DM feature) fully removed Reason: redundant feature + ... Sun, 21 Jun 2026 18:41:31 GMT roboburr [9a34d31] * src/config/database.js (modified) * src/services/NotificationService.js (modified) fix(notifications): table renamed to user_notifications (collision ... Sun, 21 Jun 2026 18:38:24 GMT roboburr [c9c6a2d] * src/config/database.js (modified) * src/middleware/render.js (modified) * src/routes/comments.js (modified) * src/routes/notifications.js (added) * src/routes/posts.js (modified) * src/server.js (modified) * src/services/NotificationService.js (added) * src/services/i18n.js (modified) * src/views/pages/notifications.ejs (added) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/profile-sheet.ejs (modified) * src/views/partials/topnav.ejs (modified) feat(meldingen): notifications — reply on comment, comment on post, ... Sun, 21 Jun 2026 15:16:51 GMT roboburr [5e61b17] * src/config/database.js (modified) * src/middleware/render.js (modified) * src/routes/account.js (modified) * src/routes/admin-settings.js (modified) * src/routes/lang.js (modified) * src/services/i18n.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/admin-settings.ejs (modified) feat(i18n): admin-configurable language — personal + default for ... Sat, 20 Jun 2026 05:23:08 GMT roboburr [183875b] * src/assets/css/audio.css (modified) * src/config/database.js (modified) * src/routes/admin-audio.js (modified) * src/routes/posts.js (modified) * src/services/AudioEmbedService.js (modified) * src/services/PlaylistService.js (modified) * src/views/partials/track-editor.ejs (modified) * src/views/shell.ejs (modified) feat(audio): per-track "open in" Spotify/YouTube/SoundCloud links ... Sat, 20 Jun 2026 05:04:13 GMT roboburr [0d7acdf] * src/assets/css/audio.css (modified) * src/config/database.js (modified) * src/routes/admin-audio.js (modified) * src/routes/posts.js (modified) * src/services/AudioEmbedService.js (modified) * src/services/AudioTranscoder.js (modified) * src/views/partials/track-editor.ejs (modified) * src/views/shell.ejs (modified) feat(audio): per-track owner/credit + license (+ written to mp3 ID3 ... Fri, 19 Jun 2026 09:49:35 GMT roboburr [535f955] * CHANGELOG.md (modified) * src/config/database.js (modified) * src/routes/posts.js (modified) * src/views/pages/favorites.ejs (added) * src/views/pages/post.ejs (modified) * src/views/partials/like-button.ejs (added) * src/views/partials/profile-sheet.ejs (modified) * src/views/partials/topnav.ejs (modified) feat: post likes + favourites page for logged-in users - New ... Fri, 19 Jun 2026 06:47:40 GMT roboburr [8d32dcf] * src/config/database.js (modified) * src/routes/admin-shows.js (added) * src/routes/shows.js (added) * src/server.js (modified) * src/services/SubscriberService.js (modified) * src/views/pages/admin-shows.ejs (added) * src/views/pages/admin.ejs (modified) * src/views/pages/shows.ejs (added) Show agenda + notify-me (premium feature #8) — last of the 8 - DB: ... Fri, 19 Jun 2026 04:28:02 GMT roboburr [b9dc94c] * src/config/database.js (modified) * src/routes/posts.js (modified) * src/server.js (modified) * src/services/Scheduler.js (added) * src/views/pages/fan-gate.ejs (added) * src/views/pages/post-edit.ejs (modified) Release scheduling + fan-only previews (premium feature #3) - DB: ... Fri, 19 Jun 2026 04:07:24 GMT roboburr [1794fac] * src/config/database.js (modified) * src/routes/admin-stats.js (modified) * src/services/StatsService.js (modified) * src/views/pages/admin-stats.ejs (modified) Pro stats (premium feature #5): referrers + period selector + all- ... Fri, 19 Jun 2026 03:46:42 GMT roboburr [37edecd] * src/config/database.js (modified) * src/routes/admin-stats.js (modified) * src/routes/linkbio.js (added) * src/server.js (modified) * src/views/pages/admin-stats.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/linkbio.ejs (added) Link-in-bio + click stats (premium feature #6) Linktree-style page ... Fri, 19 Jun 2026 01:09:15 GMT roboburr [91094a4] * src/config/database.js (modified) * src/routes/admin-audio.js (modified) * src/routes/download.js (added) * src/server.js (modified) * src/views/pages/admin-audio.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/download.ejs (added) * src/views/pages/downloads.ejs (added) Download-for-email (premium feature #2) Fan leaves their email -> ... Fri, 19 Jun 2026 00:00:48 GMT roboburr [2e247e4] * src/config/database.js (modified) * src/routes/admin-newsletter.js (added) * src/routes/newsletter.js (added) * src/server.js (modified) * src/services/SubscriberService.js (added) * src/views/pages/admin-newsletter.ejs (added) * src/views/pages/admin.ejs (modified) * src/views/pages/newsletter.ejs (added) Newsletter / mailing list (premium feature #1) + SMTP wiring Email ... Thu, 18 Jun 2026 03:28:34 GMT roboburr [7881080] * src/config/database.js (modified) * src/middleware/site.js (modified) * src/routes/account.js (modified) * src/routes/admin-sites.js (modified) * src/routes/admin.js (modified) * src/routes/hub.js (modified) * src/services/ensurePrimarySite.js (modified) * src/views/pages/admin-sites.ejs (modified) Hub #3: explicit is_primary flag + shared getPrimarySite() (DRY) ... Tue, 16 Jun 2026 20:52:32 GMT roboburr [221a209] * src/config/database.js (modified) * src/routes/circle.js (modified) * src/services/CircleFederation.js (modified) * src/services/CircleService.js (modified) * src/views/pages/circle-post.ejs (modified) Circle: carry over + display tags from the original post Publisher ... Tue, 16 Jun 2026 09:41:28 GMT roboburr [d549549] * src/config/database.js (modified) * src/routes/admin-stats.js (added) * src/routes/audio.js (modified) * src/routes/posts.js (modified) * src/server.js (modified) * src/services/StatsService.js (added) * src/views/pages/admin-stats.ejs (added) * src/views/pages/admin.ejs (modified) Statistics module (Phase 3): cookie-free tracking + premium stats ... Tue, 16 Jun 2026 07:35:21 GMT roboburr [8ea3d0d] * src/config/database.js (modified) * src/routes/admin-sites.js (modified) * src/routes/circle.js (modified) * src/services/ensurePrimarySite.js (modified) * src/views/pages/circle-feed.ejs (modified) Defaults: new sites grid + moderate; Circle page graphical header ... Tue, 16 Jun 2026 00:59:24 GMT roboburr [0091cb7] * src/config/database.js (modified) * src/routes/admin-circle.js (added) * src/routes/admin-settings.js (modified) * src/routes/circle.js (added) * src/server.js (modified) * src/services/CircleFederation.js (modified) * src/views/pages/admin-circle.ejs (added) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/circle-feed.ejs (added) Circles v1 — steps 4+5: Admin UI + /cirkel feed - Mode 'Circles' in ... Tue, 16 Jun 2026 00:38:38 GMT roboburr [b300682] * docs/cirkels-v1-spec.md (added) * src/config/database.js (modified) * src/routes/federation.js (added) * src/server.js (modified) * src/services/CircleFederation.js (added) * src/services/SettingsService.js (modified) Circles v1 — foundation: migration + signed own publication Steps ... Sun, 14 Jun 2026 16:25:27 GMT roboburr [640b39c] * src/config/database.js (modified) * src/routes/auth.js (modified) * src/server.js (modified) * src/views/shell.ejs (modified) auth: read-only view accounts (view everything, modify nothing) New ... Sun, 14 Jun 2026 14:53:03 GMT roboburr [52215bc] * src/config/database.js (modified) * src/services/SettingsService.js (modified) * src/views/pages/admin-settings.ejs (modified) tenancy: /gebruikers -> /user/ in settings text + comments (Robin's ... Sun, 14 Jun 2026 08:18:50 GMT roboburr [6351545] * src/config/database.js (modified) * src/middleware/site.js (modified) * src/routes/admin-settings.js (added) * src/routes/admin.js (modified) * src/server.js (modified) * src/services/SettingsService.js (added) * src/views/pages/admin-settings.ejs (added) * src/views/pages/admin.ejs (modified) tenancy: runtime Solo/Hub mode + mode-aware /admin (Phase 1) Admin ... Sun, 14 Jun 2026 04:39:57 GMT roboburr [c80e78b] * .env.example (modified) * src/config/database.js (modified) * src/config/google.js (added) * src/routes/account.js (modified) * src/routes/auth.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/auth-login.ejs (modified) * src/views/pages/welcome.ejs (modified) * src/views/partials/shared-styles.ejs (modified) auth: replace username/password with Google login Listeners (and ... Wed, 06 May 2026 22:18:18 GMT Robin [7bc636b] * .env.example (added) * .gitignore (added) * README.md (added) * ecosystem.config.cjs (added) * package-lock.json (added) * package.json (added) * src/assets/.well-known/assetlinks.json (added) * src/assets/apk/soundfabrics.apk (added) * src/assets/css/audio.css (added) * src/assets/css/style.css (added) * src/assets/fonts/fraunces-latin-full-italic.woff2 (added) * src/assets/fonts/fraunces-latin-full-normal.woff2 (added) * src/assets/fonts/literata-latin-opsz-italic.woff2 (added) * src/assets/fonts/literata-latin-opsz-normal.woff2 (added) * src/assets/fonts/plus-jakarta-sans-latin-wght-italic.woff2 (added) * src/assets/fonts/plus-jakarta-sans-latin-wght-normal.woff2 (added) * src/assets/js/audio-player.js (added) * src/assets/js/htmx.min.js (added) * src/assets/js/install-app.js (added) * src/config/database.js (added) * src/db/migrate.js (added) * src/db/migrations/001-init.sql (added) * src/middleware/auth.js (added) * src/middleware/rate-limit.js (added) * src/middleware/render.js (added) * src/middleware/site.js (added) * src/routes/account.js (added) * src/routes/admin-audio.js (added) * src/routes/admin-comments.js (added) * src/routes/admin-playlists.js (added) * src/routes/admin-sites.js (added) * src/routes/admin-users.js (added) * src/routes/admin.js (added) * src/routes/audio.js (added) * src/routes/auth.js (added) * src/routes/comments.js (added) * src/routes/feed.js (added) * src/routes/posts.js (added) * src/routes/prutter.js (added) * src/routes/search.js (added) * src/routes/tags.js (added) * src/routes/types.js (added) * src/routes/users.js (added) * src/server.js (added) * src/services/AudioEmbedService.js (added) * src/services/AudioStreamService.js (added) * src/services/AudioTranscoder.js (added) * src/services/CRDTService.js (added) * src/services/HtmlSanitizerService.js (added) * src/services/MarkdownService.js (added) * src/services/PermissionsService.js (added) * src/services/PlatformIcons.js (added) * src/services/PlaylistService.js (added) * src/services/PrutterService.js (added) * src/services/SqliteSessionStore.js (added) * src/services/ThemeService.js (added) * src/views/pages/account.ejs (added) * src/views/pages/admin-audio.ejs (added) * src/views/pages/admin-comments.ejs (added) * src/views/pages/admin-playlists.ejs (added) * src/views/pages/admin-site-edit.ejs (added) * src/views/pages/admin-sites.ejs (added) * src/views/pages/admin-users.ejs (added) * src/views/pages/admin.ejs (added) * src/views/pages/archive.ejs (added) * src/views/pages/auth-login.ejs (added) * src/views/pages/auth-register.ejs (added) * src/views/pages/auth-reset-request.ejs (added) * src/views/pages/auth-reset.ejs (added) * src/views/pages/home.ejs (added) * src/views/pages/post-edit.ejs (added) * src/views/pages/post.ejs (added) * src/views/pages/prutter-conversation.ejs (added) * src/views/pages/prutter-inbox.ejs (added) * src/views/pages/search.ejs (added) * src/views/pages/tag.ejs (added) * src/views/pages/type.ejs (added) * src/views/pages/user.ejs (added) * src/views/pages/welcome.ejs (added) * src/views/partials/bottom-tab.ejs (added) * src/views/partials/footer.ejs (added) * src/views/partials/playlist-editor.ejs (added) * src/views/partials/post-card.ejs (added) * src/views/partials/post-tile.ejs (added) * src/views/partials/profile-header.ejs (added) * src/views/partials/profile-sheet.ejs (added) * src/views/partials/shared-styles.ejs (added) * src/views/partials/topnav.ejs (added) * src/views/partials/track-editor.ejs (added) * src/views/partials/view-switcher.ejs (added) * src/views/shell.ejs (added) Initial commit — PrutFolio v1 source (pulled from Hetzner /srv/prutfolio)