# # ChangeLog for src/server.js in Klonkt # # Generated by Trac 1.6 # 09/09/2026 04:08:16 PM Tue, 18 Aug 2026 18:50:08 GMT Bart [af2cc73] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/routes/openwebauth.js (added) * src/routes/posts.js (modified) * src/server.js (modified) * src/services/OpenWebAuthService.js (added) * src/services/PostAccessService.js (modified) * src/services/i18n.js (modified) * src/views/pages/fan-gate.ejs (modified) * test/openwebauth-http.test.js (added) * test/openwebauth.test.js (added) * test/post-access.test.js (modified) Gastlogin via OpenWebAuth: een fan is een volger, geen accounthouder ... Sat, 15 Aug 2026 07:15:55 GMT Robin [732272a] * src/config/database.js (modified) * src/routes/admin-listeners.js (added) * src/server.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/services/music/index.js (modified) * src/services/music/luisteraars.js (added) * src/views/pages/admin-listeners.ejs (added) * src/views/partials/media-tabs.ejs (modified) * test/library-luisteraars.test.js (added) Luisteraars: een eigen tab, want het is een eigen soort relatie ... Thu, 13 Aug 2026 22:34:36 GMT Robin [fbfd7a1] * src/config/database.js (modified) * src/routes/activitypub.js (modified) * src/routes/admin-migrate.js (added) * src/server.js (modified) * src/services/ActivityPubService.js (modified) * src/services/ArchiveImportService.js (modified) * src/services/MigrationService.js (added) * src/services/ap-core.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-migrate.ejs (added) * src/views/pages/admin.ejs (modified) * test/fep1580-migration.test.js (added) Je berichten verhuizen mee: FEP-1580 plus een webinterface ervoor ... Sat, 08 Aug 2026 23:18:23 GMT Robin [c72e45e] * src/server.js (modified) Trust proxy hoort bij waar je draait, niet bij dev of prod (Barts ... Fri, 07 Aug 2026 10:15:44 GMT roboburr [31e63d1] * src/assets/js/guardian.js (modified) * src/server.js (modified) Acties bovenaan, en de push wekt een openstaande pagina (Guardian ... Thu, 06 Aug 2026 09:33:58 GMT Claude (agent) [7842ca1] * scripts/backfill-reactions.mjs (modified) * src/server.js (modified) * src/services/ActivityPubService.js (modified) * test/reactions-characterization.test.js (modified) Reactie-migratie draait bij boot, inclusief hersleutelen (shaer-9e9) ... Wed, 29 Jul 2026 15:38:18 GMT Robin [7a93fcf] * src/server.js (modified) /media zegt nu dat een upload nooit verandert shaer-uwx: de ... Sat, 25 Jul 2026 10:37:37 GMT Robin [f1c50f9] * src/assets/css/guardian.css (modified) * src/assets/css/guardian2.css (deleted) * src/assets/js/guardian.js (modified) * src/assets/js/guardian2.js (deleted) * src/routes/guardian.js (modified) * src/routes/guardian2.js (deleted) * src/server.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/guardian.ejs (modified) * src/views/pages/guardian2.ejs (deleted) Guardian 2 wordt de nieuwe /guardian; oude v1 eruit Robins besluit: ... Sat, 25 Jul 2026 06:06:50 GMT Robin [c1f5c23] * src/assets/css/guardian2.css (added) * src/assets/js/guardian2.js (added) * src/routes/guardian2.js (added) * src/server.js (modified) * src/views/pages/guardian2.ejs (added) Guardian 2: kloon van de Guardian-PWA als groeiplek voor losse ... Fri, 24 Jul 2026 17:03:34 GMT Robin Genis [318d0c2] * src/assets/css/guardian.css (added) * src/assets/js/guardian.js (added) * src/routes/admin-sites.js (modified) * src/routes/guardian.js (added) * src/routes/posts.js (modified) * src/server.js (modified) * src/views/pages/guardian.ejs (added) De Guardian-PWA: /guardian, wards managen, berichtencentrum, eigen ... Wed, 22 Jul 2026 07:12:11 GMT Robin [053bf51] * src/routes/admin-push.js (added) * src/routes/push.js (added) * src/server.js (modified) * src/views/pages/admin-push.ejs (added) * src/views/pages/admin.ejs (modified) Feature: web push slice 2, enable/disable UI + service worker ... Tue, 21 Jul 2026 03:55:26 GMT Robin [e2ea5c4] * src/middleware/render.js (modified) * src/server.js (modified) Fix: online visitors always get the fresh site, never a cached copy ... 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 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 ... 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) ... Thu, 16 Jul 2026 12:20:51 GMT Robin [df9da7d] * src/server.js (modified) Fix: PWA no longer shows stale homepage on flaky cold start The ... Tue, 30 Jun 2026 18:46:32 GMT roboburr [f24b795] * src/routes/admin-media.js (added) * src/server.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-media.ejs (added) * src/views/pages/admin.ejs (modified) feat(media): Beheer -> Media — image library with usage + cleanup of ... Sun, 28 Jun 2026 16:46:38 GMT Robin Genis [74c5abc] * src/middleware/render.js (modified) * src/server.js (modified) * src/services/ActivityPubService.js (modified) * src/services/ThumbnailService.js (modified) * src/views/pages/following.ejs (modified) * src/views/pages/news.ejs (modified) * src/views/partials/fedi-node.ejs (modified) feat(images): downscale remote (fediverse) avatars via a signed proxy ... Sun, 28 Jun 2026 16:32:37 GMT Robin Genis [f79a471] * src/middleware/render.js (modified) * src/server.js (modified) * src/services/ThumbnailService.js (added) * src/views/partials/post-card.ejs (modified) * src/views/partials/post-tile.ejs (modified) feat(images): on-demand lanczos cover thumbnails for crisp grid/list ... Sun, 28 Jun 2026 15:44:15 GMT Robin Genis [81bb9c5] * .env.example (modified) * src/server.js (modified) chore(hsts): make includeSubDomains+preload opt-in via HSTS_STRICT ... Sun, 28 Jun 2026 15:36:22 GMT Robin Genis [f7d142f] * src/server.js (modified) * src/views/pages/admin-audio.ejs (modified) * src/views/pages/admin-newsletter.ejs (modified) * src/views/pages/admin-shows.ejs (modified) * src/views/pages/admin-sites.ejs (modified) * src/views/pages/admin-updates.ejs (modified) * src/views/pages/admin-users.ejs (modified) * src/views/pages/authorize-interaction.ejs (modified) * src/views/pages/following.ejs (modified) * src/views/pages/news.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/pages/viewer-blocked.ejs (modified) * src/views/partials/fedi-node.ejs (modified) * src/views/partials/footer.ejs (modified) * src/views/partials/playlist-editor.ejs (modified) * src/views/shell.ejs (modified) chore(csp): drop the last script unsafe-inline + add Permissions- ... Sun, 28 Jun 2026 14:15:48 GMT Robin Genis [fe9164f] * src/server.js (modified) chore(csp): default-src 'none' (deny by default) + explicit manifest- ... Sun, 28 Jun 2026 14:11:59 GMT Robin Genis [a8b4f10] * src/server.js (modified) chore(headers): Referrer-Policy -> strict-origin-when-cross-origin Sun, 28 Jun 2026 13:55:31 GMT Robin Genis [73abbfd] * src/middleware/render.js (modified) * src/server.js (modified) experiment(csp): strict script-src (nonce + strict-dynamic) — BETA ... Sun, 28 Jun 2026 12:22:06 GMT Robin Genis [931b4cb] * src/server.js (modified) fix(proxy): tolerate leading double-slash paths (Apache [P] proxy) ... Sun, 28 Jun 2026 11:48:20 GMT Robin Genis [5b1115b] * src/server.js (modified) fix(csrf): accept PUBLIC_BASE_URL host + X-Forwarded-Host in same- ... Sun, 28 Jun 2026 11:34:40 GMT Robin Genis [4fdbbe6] * src/middleware/render.js (modified) * src/server.js (modified) * src/views/partials/footer.ejs (modified) chore(branding): drop the 'Beta' label — now just 'Klonkt' (on ... Sun, 28 Jun 2026 11:30:57 GMT Robin Genis [f1ee40e] * src/server.js (modified) chore(server): startup log shows PUBLIC_BASE_URL when set (was ... Sat, 27 Jun 2026 09:37:05 GMT Robin Genis [07de464] * src/middleware/render.js (modified) * src/server.js (modified) fix(csp): global frame-src (https:) for embeds, locked to 'self' on ... Sat, 27 Jun 2026 09:02:29 GMT Robin Genis [a3e0746] * src/server.js (modified) fix(sw): do not intercept cross-origin iframe navigations (PWA ... Fri, 26 Jun 2026 16:56:10 GMT Robin Genis [9327a85] * src/server.js (modified) * src/views/shell.ejs (modified) fix(ios-pwa): drop the top safe-area inset in landscape (island is on ... Fri, 26 Jun 2026 16:49:12 GMT Robin Genis [f6b2c68] * src/server.js (modified) * src/views/partials/topnav.ejs (modified) * src/views/shell.ejs (modified) fix(ios-pwa): pad body for safe-area when masthead is hidden on ... Fri, 26 Jun 2026 16:33:36 GMT Robin Genis [1c85964] * src/server.js (modified) * src/views/shell.ejs (modified) debug(ios): richer safe-area overlay (masthead/profile rects) + SW ... Fri, 26 Jun 2026 15:32:31 GMT Robin Genis [76f0e61] * src/server.js (modified) * src/views/shell.ejs (modified) fix(ios pwa): force masthead safe-area inline + detect standalone + ... Fri, 26 Jun 2026 14:28:50 GMT Robin Genis [79d1281] * src/server.js (modified) fix(fedi): /notifications showed old (tab-less) view — route ... Fri, 26 Jun 2026 12:32:50 GMT Robin Genis [4c47eff] * scripts/migrate-circles.mjs (deleted) * src/server.js (modified) * src/services/ActivityPubService.js (modified) refactor(cirkel): remove the legacy circle auto-migration (no auto- ... Fri, 26 Jun 2026 10:04:14 GMT Robin Genis [b79466e] * src/server.js (modified) * src/services/ActivityPubService.js (modified) feat(fediverse): self-heal the timeline cache once per ... Fri, 26 Jun 2026 09:28:16 GMT Robin Genis [d71ed03] * src/server.js (modified) * src/services/ActivityPubService.js (modified) feat(cirkel): auto-migrate legacy circle_links to auto-boost on boot ... Fri, 26 Jun 2026 09:20:12 GMT Robin Genis [8ef8c3e] * scripts/migrate-circles.mjs (added) * src/middleware/render.js (modified) * src/routes/admin-circle.js (deleted) * src/routes/changelog.js (modified) * src/routes/circle.js (modified) * src/routes/federation.js (deleted) * src/server.js (modified) * src/services/CircleFederation.js (deleted) * src/services/CircleService.js (deleted) * src/services/SettingsService.js (modified) * src/views/pages/admin-circle.ejs (deleted) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/changelog.ejs (modified) * src/views/pages/circle-post.ejs (deleted) feat(cirkel): remove the old Cirkels pull-protocol; Cirkels is now ... 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 17:26:02 GMT Robin Genis [48ca5fc] * src/routes/artists.js (deleted) * src/routes/hub.js (deleted) * src/server.js (modified) * src/views/pages/artists-directory.ejs (deleted) * src/views/pages/hub-home.ejs (deleted) Remove hub mode (step 2/2): delete dead hub routes & views Remove ... Wed, 24 Jun 2026 14:26:32 GMT Robin Genis [59f0170] * src/routes/admin-comments.js (deleted) * src/routes/comments.js (deleted) * src/routes/posts.js (modified) * src/server.js (modified) * src/views/pages/admin-comments.ejs (deleted) * src/views/pages/admin-site-edit.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/my-site.ejs (modified) * src/views/pages/post.ejs (modified) refactor(comments): remove native comments — social is fediverse-only ... Wed, 24 Jun 2026 10:48:18 GMT Robin Genis [dd1028a] * src/server.js (modified) fix(activitypub): content-negotiation on canonical URLs An AP ... 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, ... Wed, 24 Jun 2026 05:26:24 GMT Robin Genis [69815b2] * package-lock.json (modified) * package.json (modified) * src/assets/fonts/fraunces-og.ttf (added) * src/middleware/render.js (modified) * src/routes/og.js (added) * src/server.js (modified) * src/services/OgImageService.js (added) * src/views/shell.ejs (modified) feat: auto-generated per-site OG image from palette + accent New ... Tue, 23 Jun 2026 22:00:00 GMT Robin Genis [f99bbe8] * .env.example (modified) * README.md (modified) * docker-compose.yml (modified) * scripts/install.sh (modified) * src/server.js (modified) security: bind to 127.0.0.1 by default behind a reverse proxy New ... Tue, 23 Jun 2026 21:25:42 GMT Robin Genis [09ee2bd] * .env.example (modified) * README.md (modified) * docker-compose.yml (modified) * src/server.js (modified) feat: auto-generate SESSION_SECRET if not set (zero-config ... 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 15:45:10 GMT Robin Genis [9b851e7] * src/middleware/render.js (modified) * src/server.js (modified) * src/services/ensurePrimarySite.js (modified) * src/views/shell.ejs (modified) fix: fresh install uses klonkt defaults (navy + #e8b04b), not old ... Tue, 23 Jun 2026 14:54:36 GMT Robin Genis [cb01666] * .env.example (modified) * src/config/features.js (added) * src/middleware/render.js (modified) * src/middleware/site.js (modified) * src/routes/posts.js (modified) * src/server.js (modified) * src/views/pages/admin-site-edit.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/partials/profile-header.ejs (modified) feat: lite mode (KLONKT_AUDIO=off) — audio disabled, single codebase ... 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 + ... Mon, 22 Jun 2026 02:52:43 GMT roboburr [dd7e2a2] * src/assets/css/style.css (modified) * src/middleware/render.js (modified) * src/middleware/site.js (modified) * src/routes/admin-sites.js (modified) * src/routes/auth.js (modified) * src/server.js (modified) * src/services/ThemeService.js (modified) * src/views/shell.ejs (modified) feat(theme): default = Klonkt brand (dark navy + yellow, matches ... 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 16:37:18 GMT roboburr [9effb80] * src/server.js (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): CSP blocked blob: image → empty edit dialog img-src ... Sat, 20 Jun 2026 13:39:41 GMT roboburr [03fa548] * src/middleware/render.js (modified) * src/routes/lang.js (added) * src/server.js (modified) * src/services/i18n.js (added) * src/views/partials/footer.ejs (modified) * src/views/partials/post-nav.ejs (modified) * src/views/partials/topnav.ejs (modified) * src/views/partials/view-switcher.ejs (modified) feat(i18n): interface language NL/EN/DE with visitor switcher (phase ... Sat, 20 Jun 2026 06:41:56 GMT roboburr [9d9f3c1] * src/routes/admin-epk.js (added) * src/server.js (modified) * src/views/pages/admin-epk.ejs (added) * src/views/pages/admin.ejs (modified) feat(epk): press kit editable (bio + press contact) via Admin There ... Sat, 20 Jun 2026 02:52:15 GMT roboburr [16b0c00] * src/assets/js/embed-player.js (modified) * src/server.js (modified) * src/views/shell.ejs (modified) fix(embed): Spotify API via CSP whitelist + faster fallback ... Fri, 19 Jun 2026 09:09:45 GMT roboburr [90259da] * CHANGELOG.md (added) * package.json (modified) * src/routes/changelog.js (added) * src/server.js (modified) * src/views/pages/changelog.ejs (added) * src/views/partials/footer.ejs (modified) feat: release tracking — version in footer links to /changelog - ... Fri, 19 Jun 2026 08:16:57 GMT roboburr [3b6e04a] * src/server.js (modified) * src/views/pages/404.ejs (added) 404: proper, mobile-friendly page instead of bare text Catch-all ... 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:13:46 GMT roboburr [6be57b4] * src/routes/admin-audio.js (modified) * src/routes/embed.js (added) * src/server.js (modified) * src/views/pages/admin-audio.ejs (modified) * src/views/pages/embed-player.ejs (added) Embeddable player (premium feature #7) Standalone /embed page (no ... 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 23:49:09 GMT roboburr [255e3d3] * src/routes/epk.js (added) * src/server.js (modified) * src/views/pages/epk.ejs (added) EPK / press kit (premium feature #4): shareable /pers press page per ... Thu, 18 Jun 2026 16:30:54 GMT roboburr [b08b5bc] * src/server.js (modified) SW: intercept navigations only — fix broken images after refresh ... Thu, 18 Jun 2026 07:50:13 GMT roboburr [6623453] * src/routes/admin-seo.js (added) * src/routes/admin-sites.js (modified) * src/server.js (modified) * src/views/pages/admin-seo.ejs (added) * src/views/pages/admin-site-edit.ejs (modified) * src/views/pages/admin.ejs (modified) Admin: dedicated SEO page (/admin/seo) for advanced SEO The ... Tue, 16 Jun 2026 20:43:15 GMT roboburr [fb02cc0] * src/server.js (modified) Circle: /media CORP=cross-origin so circle images load cross-origin ... 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 06:23:28 GMT roboburr [1b4d5dd] * src/middleware/render.js (modified) * src/routes/admin-patreon.js (added) * src/routes/admin-settings.js (modified) * src/server.js (modified) * src/services/PatreonService.js (added) * src/views/pages/admin-settings.ejs (modified) Patreon premium gate (Phase 1): entitlement verification + Connect ... Tue, 16 Jun 2026 04:28:40 GMT roboburr [83faa57] * README.md (modified) * src/middleware/render.js (modified) * src/server.js (modified) * src/views/partials/footer.ejs (modified) Rebrand: "Klonkt Hub Beta" -> "Klonkt Beta" + version number in ... Tue, 16 Jun 2026 04:23:01 GMT roboburr [bdc3c1e] * src/server.js (modified) * src/services/ensurePrimarySite.js (added) * src/views/pages/admin.ejs (modified) Always guarantee a primary site (solo/hub/circle) via ... Tue, 16 Jun 2026 04:05:27 GMT roboburr [5f43245] * src/server.js (modified) Fix: fresh install crashes on first boot (sessions table doesn't ... Tue, 16 Jun 2026 03:16:52 GMT roboburr [7007d4c] * package.json (modified) * src/server.js (modified) Branding: PWA id + npm package name prutfolio -> klonkt PWA id-base ... Tue, 16 Jun 2026 03:10:31 GMT roboburr [8453812] * README.md (modified) * package.json (modified) * scripts/migrate-posts-to-html.js (modified) * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (modified) * src/assets/js/smooth-scroll.js (modified) * src/middleware/site.js (modified) * src/routes/artists.js (modified) * src/routes/hub.js (modified) * src/server.js (modified) * src/services/CircleFederation.js (modified) * src/services/SettingsService.js (modified) * src/views/shell.ejs (modified) Branding: 100% PrutCMS/PrutFolio-free — Klonkt as original product ... Tue, 16 Jun 2026 02:51:47 GMT roboburr [ff08153] * src/routes/admin-updates.js (added) * src/server.js (modified) * src/views/pages/admin-updates.ejs (added) * src/views/pages/admin.ejs (modified) Update feature: Admin -> Updates (git-based v1, per instance) Admin ... 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:52:39 GMT roboburr [25d4041] * src/server.js (modified) * src/services/CircleService.js (added) Circles v1 — step 3: pull side (CircleService.sync) - ... 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 ... Mon, 15 Jun 2026 03:23:14 GMT roboburr [4c9f29a] * src/assets/css/embed.css (added) * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (added) * src/server.js (modified) * src/services/AudioEmbedService.js (modified) * src/views/shell.ejs (modified) feat: on-brand media embeds via the real player APIs Replaces bare ... Sun, 14 Jun 2026 18:55:44 GMT roboburr [a1c8cb8] * src/routes/admin-sites.js (modified) * src/routes/artists.js (modified) * src/routes/hub.js (modified) * src/routes/posts.js (modified) * src/server.js (modified) * src/views/pages/artists-directory.ejs (modified) * src/views/pages/hub-home.ejs (modified) feat: directory URL /artiesten -> /leden + count 'N Klonkt's' - ... Sun, 14 Jun 2026 18:23:48 GMT roboburr [5e95aac] * src/server.js (modified) * src/views/pages/admin-users.ejs (modified) fix: users list alignment + site icon SF -> K (Klonkt) - ... Sun, 14 Jun 2026 18:16:58 GMT roboburr [c869272] * src/server.js (modified) fix: allow inline event handlers (CSP) — avatar upload + role ... Sun, 14 Jun 2026 18:07:51 GMT roboburr [8afbdd6] * README.md (modified) * package.json (modified) * src/middleware/auth.js (modified) * src/middleware/render.js (modified) * src/routes/admin-sites.js (modified) * src/routes/admin-users.js (modified) * src/routes/admin.js (modified) * src/routes/artists.js (added) * src/routes/hub.js (modified) * src/routes/posts.js (modified) * src/routes/prutter.js (modified) * src/server.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/admin-users.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/artists-directory.ejs (added) * src/views/pages/home.ejs (modified) * src/views/pages/hub-home.ejs (modified) * src/views/pages/my-site.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/pages/viewer-blocked.ejs (added) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/footer.ejs (modified) * src/views/partials/profile-sheet.ejs (modified) * src/views/partials/topnav.ejs (modified) * src/views/shell.ejs (modified) feat: viewer role + artists directory + Klonkt Hub Beta rebrand ... 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:59:41 GMT roboburr [bf61be7] * src/middleware/site.js (modified) * src/routes/hub.js (added) * src/server.js (modified) * src/views/pages/hub-home.ejs (added) hub: company overview on / (latest posts from all users) + /user/ ... 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 07:31:23 GMT roboburr [9e27d64] * .env.example (modified) * package-lock.json (modified) * package.json (modified) * scripts/reset-admin.mjs (added) * src/config/google.js (modified) * src/config/mailer.js (added) * src/routes/account.js (modified) * src/routes/auth.js (modified) * src/server.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/auth-login.ejs (modified) * src/views/pages/auth-register.ejs (modified) * src/views/pages/auth-reset-request.ejs (modified) * src/views/pages/auth-reset.ejs (modified) * src/views/pages/welcome.ejs (modified) * src/views/partials/shared-styles.ejs (modified) auth: password admin + per-instance Google for listeners (no broker) ... Sun, 14 Jun 2026 06:32:57 GMT roboburr [ae924a2] * src/server.js (modified) auth: update startup banner (Google login instead of register) ... Sun, 14 Jun 2026 04:01:38 GMT roboburr [942028f] * src/assets/.well-known/assetlinks.json (deleted) * src/assets/apk/soundfabrics.apk (deleted) * src/assets/js/install-app.js (modified) * src/server.js (modified) * src/views/partials/footer.ejs (modified) * src/views/shell.ejs (modified) app: remove APK/TWA variant — PWA-only install Robin: only PWA ... Sun, 14 Jun 2026 01:25:19 GMT Robin Genis [b5bae24] * .well-known/assetlinks.json (added) * deploy/DEPLOY.md (added) * deploy/backup.sh (added) * deploy/nginx.conf.example (added) * deploy/verify.ps1 (added) * scripts/import-v9-posts.js (added) * scripts/migrate-posts-to-html.js (added) * scripts/v9-posts-import.sql (added) * src/assets/js/audio-player.js (modified) * src/assets/js/lenis.min.js (added) * src/assets/js/smooth-scroll.js (added) * src/server.js (modified) * src/views/shell.ejs (modified) reconcile: commit uncommitted live /srv state (playback fix + ... Wed, 20 May 2026 22:19:03 GMT Robin Genis [353c39c] * src/server.js (modified) audio: allow blob: in CSP media-src (fix Step-1 no-play/auto-skip ... 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)