# # ChangeLog for src/routes in Klonkt # # Generated by Trac 1.6 # 09/10/2026 11:49:45 AM 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 ... Fri, 26 Jun 2026 09:05:28 GMT Robin Genis [46f3dd6] * src/routes/posts.js (modified) * src/services/i18n.js (modified) * src/views/pages/timeline.ejs (modified) * src/views/pages/volgend.ejs (added) * src/views/partials/profile-sheet.ejs (modified) * src/views/partials/tl-tabs.ejs (added) * src/views/partials/topnav.ejs (modified) feat(fediverse): split Tijdlijn (feed) from Volgend (following) + put ... Fri, 26 Jun 2026 08:53:42 GMT Robin Genis [2c22bb5] * src/middleware/render.js (modified) * src/routes/circle.js (modified) * src/services/ActivityPubService.js (modified) * src/views/partials/view-switcher.ejs (modified) feat(cirkel): rebuild the Cirkel feed on ActivityPub (featured/auto- ... 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') ... Fri, 26 Jun 2026 07:26:26 GMT Robin Genis [283f618] * src/middleware/render.js (modified) * src/routes/activitypub.js (modified) * src/routes/admin-settings.js (modified) * src/services/SettingsService.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/partials/profile-header.ejs (modified) feat(fediverse): add an ActivityPub on/off toggle (off = no ... Thu, 25 Jun 2026 22:25:57 GMT Robin Genis [67fe576] * src/routes/posts.js (modified) * src/services/i18n.js (modified) * src/views/pages/post.ejs (modified) * src/views/partials/fedi-node.ejs (modified) ux(fedi): owner can like/boost a fediverse comment directly too ... Thu, 25 Jun 2026 21:08:20 GMT Robin Genis [8ad1784] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/authorize-interaction.ejs (modified) feat(ap): authorize_interaction handles actor URIs as a Follow The ... Thu, 25 Jun 2026 20:45:02 GMT Robin Genis [75ab393] * src/middleware/rate-limit.js (modified) * src/routes/activitypub.js (modified) feat(ratelimit): cap fediverse endpoints per IP; key IPv6 limiters by ... Thu, 25 Jun 2026 20:13:32 GMT Robin Genis [49edc72] * src/routes/activitypub.js (modified) fix(ap): /ap/notes/:id redirects browsers to the human post page ... Thu, 25 Jun 2026 19:11:19 GMT Robin Genis [0c8768a] * src/routes/admin-patreon.js (modified) * src/services/PatreonService.js (modified) * src/services/i18n.js (modified) premium price: display €14 -> $16 (USD campaign charges $16; gate ... Thu, 25 Jun 2026 18:28:10 GMT Robin Genis [7cc58bb] * src/routes/admin-patreon.js (modified) * src/services/PatreonService.js (modified) * src/services/i18n.js (modified) premium price: $10 -> €14 (~$16) across salespage, i18n (nl/en/de), ... Thu, 25 Jun 2026 17:56:08 GMT Robin Genis [7a235bc] * src/routes/admin-updates.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-updates.ejs (modified) feat(updates): make the in-app updater GitHub/upstream-aware for ... Thu, 25 Jun 2026 09:52:25 GMT Robin Genis [3dd99d3] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/Scheduler.js (modified) harden(fediverse): SSRF guard, remote-URL XSS scheme-guard, scoped ... Thu, 25 Jun 2026 09:13:53 GMT Robin Genis [55bba23] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) fediverse: federate pin order via Add/Remove activities (reliable, ... Thu, 25 Jun 2026 07:18:05 GMT Robin Genis [2af2e69] * src/routes/activitypub.js (modified) fediverse: emit featured collection reversed (Mastodon displays pins ... Thu, 25 Jun 2026 07:08:31 GMT Robin Genis [f1e0c1f] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) fediverse: push actor Update on pin/unpin so Mastodon refreshes the ... Thu, 25 Jun 2026 06:54:59 GMT Robin Genis [75bda38] * src/routes/activitypub.js (modified) * src/services/ActivityPubService.js (modified) feat(fediverse): expose pinned posts via the actor's featured ... Thu, 25 Jun 2026 06:13:00 GMT Robin Genis [30271e6] * src/routes/embed.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/views/shell.ejs (modified) fix(fediverse): player card only for playable (hosted) audio; scope ... Thu, 25 Jun 2026 05:37:12 GMT Robin Genis [ca25f360] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) feat(fediverse): federate post edits as Update (Mastodon refreshes ... Thu, 25 Jun 2026 05:27:29 GMT Robin Genis [4c9c60b] * src/routes/embed.js (modified) * src/views/shell.ejs (modified) feat(fediverse): player card for music posts (embed player, no raw ... Thu, 25 Jun 2026 05:22:51 GMT Robin Genis [e951b7c] * src/middleware/render.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/views/partials/topnav.ejs (modified) feat(fediverse): real bell badge for unseen notifications Track a ... Thu, 25 Jun 2026 05:20:29 GMT Robin Genis [d7526bd] * src/routes/activitypub.js (modified) * src/services/ActivityPubService.js (modified) feat(fediverse): NodeInfo 2.1 + per-note replies collection ... 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 18:05:39 GMT Robin Genis [5410d4d] * src/routes/posts.js (modified) * src/views/pages/favorites.ejs (deleted) * src/views/partials/profile-sheet.ejs (modified) * src/views/partials/topnav.ejs (modified) Remove the dead Favourites feature (local likes replaced by fediverse ... Wed, 24 Jun 2026 17:48:48 GMT Robin Genis [0aa23cf] * src/routes/posts.js (modified) * src/services/i18n.js (modified) * src/views/pages/authorize-interaction.ejs (modified) fix(fediverse): ⭐ star now actually likes (was landing on the reply ... 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 17:23:33 GMT Robin Genis [dd856db] * src/routes/admin-settings.js (modified) * src/services/SettingsService.js (modified) * src/views/pages/admin-settings.ejs (modified) Remove hub mode (step 1/2): keystone coercion + drop hub UI ... 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:27:49 GMT Robin Genis [00f669b] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/fedi-notifications.ejs (added) feat(fediverse-client): notifications inbox (/meldingen) Aggregates ... Wed, 24 Jun 2026 15:23:01 GMT Robin Genis [d988fa0] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/views/pages/timeline.ejs (modified) feat(fediverse-client): like/boost/reply on timeline items Timeline ... 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: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 14:16:57 GMT Robin Genis [075185a] * src/config/google.js (deleted) * src/routes/account.js (modified) * src/routes/admin-settings.js (modified) * src/routes/auth.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/admin-google.ejs (deleted) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/auth-login.ejs (modified) refactor(auth): remove Google login (listeners now interact via the ... Wed, 24 Jun 2026 13:58:33 GMT Robin Genis [c73ac64] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/views/partials/fedi-node.ejs (modified) fix(activitypub): own replies show the site identity to everyone (not ... Wed, 24 Jun 2026 13:53:00 GMT Robin Genis [de3d24b] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) fix(activitypub): link owner's remote-reply to the local post so it ... Wed, 24 Jun 2026 13:45:21 GMT Robin Genis [7c44c12] * src/routes/account.js (modified) * src/services/i18n.js (modified) * src/views/pages/account.ejs (modified) feat(account): editable username (does not affect the fediverse ... 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 13:04:50 GMT Robin Genis [41a7637] * src/routes/posts.js (modified) * src/services/i18n.js (modified) * src/views/pages/authorize-interaction.ejs (modified) fix(activitypub): instant Send + confirmation on remote reply Send ... Wed, 24 Jun 2026 12:44:21 GMT Robin Genis [3d7312a] * src/assets/css/style.css (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) * src/services/i18n.js (modified) * src/views/pages/authorize-interaction.ejs (added) * src/views/pages/post.ejs (modified) * src/views/shell.ejs (modified) feat(activitypub): remote interaction — reply to any fediverse post ... Wed, 24 Jun 2026 12:31:43 GMT Robin Genis [82079ad] * src/middleware/render.js (modified) * src/routes/account.js (modified) * src/routes/posts.js (modified) * src/views/pages/account.ejs (modified) feat: one identity — user avatar falls back to the site photo ... Wed, 24 Jun 2026 12:23:05 GMT Robin Genis [52ea6df] * src/routes/posts.js (modified) * src/views/pages/post.ejs (modified) fix(activitypub): show site avatar on our own fediverse replies ... 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 11:22:49 GMT Robin Genis [eb852c5] * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) feat(activitypub): federate post deletions (Delete + Tombstone) ... Wed, 24 Jun 2026 11:16:28 GMT Robin Genis [5a93ac0] * src/routes/activitypub.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) feat(activitypub): federate images as attachments Cover image + ... Wed, 24 Jun 2026 10:35:48 GMT Robin Genis [5bf63b7] * src/routes/activitypub.js (modified) * src/routes/posts.js (modified) * src/services/ActivityPubService.js (modified) feat(activitypub): phase 1b — Follow/Accept, HTTP Signatures, ... 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 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 16:27:27 GMT Robin Genis [fe6aac9] * src/routes/admin-updates.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-updates.ejs (modified) feat: Updates page shows the last 5 changes (git log) Admin -> ... 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 + ... Tue, 23 Jun 2026 14:11:51 GMT Robin Genis [24cdcc6] * src/routes/auth.js (modified) * src/services/i18n.js (modified) * src/views/pages/auth-register.ejs (modified) setup: first-run wizard (language choice + site name) on ... Mon, 22 Jun 2026 13:58:08 GMT roboburr [c9d48fc] * src/routes/download.js (modified) fix(download): /bestand used storage_path (absolute) -> Bad path; now ... 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 19:31:08 GMT roboburr [b27cde6] * src/routes/posts.js (modified) fix(posts): duplicate title/slug no longer rejected — auto-unique ... 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 17:28:23 GMT roboburr [fefb80c] * src/routes/search.js (modified) fix(zoeken): translate page labels in suggest route (res.locals.t ... Sun, 21 Jun 2026 17:26:47 GMT roboburr [097da22] * src/routes/search.js (modified) * src/services/i18n.js (modified) * src/views/pages/search.ejs (modified) * src/views/partials/topnav.ejs (modified) feat(zoeken): live results while typing + search in events & pages ... Sun, 21 Jun 2026 16:57:54 GMT roboburr [2520dcc] * src/routes/admin-circle.js (modified) * src/views/pages/admin-circle.ejs (modified) feat(cirkel): add site without typing https:// A bare domain ... Sun, 21 Jun 2026 16:48:27 GMT roboburr [421c2d4] * src/middleware/render.js (modified) * src/routes/admin-settings.js (modified) * src/services/i18n.js (modified) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/post-edit.ejs (modified) feat(instellingen): site timezone — all dates + scheduling in chosen ... Sun, 21 Jun 2026 15:54:13 GMT roboburr [11b3ba5] * src/routes/posts.js (modified) * src/services/i18n.js (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): schedule publication behind an on/off toggle (no ... 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 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 12:51:42 GMT roboburr [d0f4c10] * src/routes/admin.js (modified) * src/views/pages/admin-help.ejs (added) * src/views/pages/admin.ejs (modified) feat(admin): searchable Manual in Admin New page /admin/handleiding ... Sat, 20 Jun 2026 08:39:48 GMT roboburr [cc22112] * src/routes/download.js (modified) fix(downloads): compact profile header (on-special) like on a post ... Sat, 20 Jun 2026 08:29:48 GMT roboburr [d8c6a83] * src/assets/css/style.css (modified) * src/routes/download.js (modified) * src/routes/posts.js (modified) * src/views/pages/downloads.ejs (modified) * src/views/shell.ejs (modified) fix(downloads+posts): post nav on downloads page + post images full ... Sat, 20 Jun 2026 07:28:43 GMT roboburr [68b27a4] * src/middleware/render.js (modified) * src/routes/admin-shows.js (modified) * src/routes/shows.js (modified) * src/views/pages/admin-shows.ejs (modified) * src/views/partials/shared-styles.ejs (modified) * src/views/partials/view-switcher.ejs (modified) feat(agenda): Agenda opt-in — only shown when enabled + active on ... Sat, 20 Jun 2026 06:47:41 GMT roboburr [e6ad948] * src/routes/admin-epk.js (modified) * src/routes/epk.js (modified) * src/views/pages/admin-epk.ejs (modified) feat(epk): choose up to 5 tracks for the press kit (instead of auto ... 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 05:37:42 GMT roboburr [d727e92] * src/assets/css/audio.css (modified) * src/routes/admin-audio.js (modified) * src/routes/posts.js (modified) * src/services/AudioEmbedService.js (modified) * src/services/PlaylistService.js (modified) * src/views/pages/admin-audio.ejs (modified) * src/views/shell.ejs (modified) feat(audio): tracks without audio (link-only) — list with open-in ... 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 ... Sat, 20 Jun 2026 04:46:35 GMT roboburr [fef781e] * src/assets/css/embed.css (modified) * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (modified) * src/routes/audio.js (modified) * src/services/AudioEmbedService.js (modified) * src/views/pages/post-edit.ejs (modified) * src/views/shell.ejs (modified) revert: remove YouTube audio functionality (doesn't work) YouTube ... Sat, 20 Jun 2026 04:08:28 GMT roboburr [b56afa7] * src/assets/js/embed-player.js (modified) * src/routes/audio.js (modified) * src/views/shell.ejs (modified) feat(embed): show real YouTube title on the audio-only card YT ... Sat, 20 Jun 2026 03:14:25 GMT roboburr [2fc9b7f] * src/routes/admin-circle.js (modified) fix(circle): do not add hubs/non-circle sites as partner A hub does ... Sat, 20 Jun 2026 02:37:34 GMT roboburr [5f47671] * src/assets/js/audio-player.js (modified) * src/routes/search.js (modified) * src/views/shell.ejs (modified) fix: tablet opens full-player + clean search snippet - ... Sat, 20 Jun 2026 02:33:25 GMT roboburr [1720482] * CHANGELOG.md (modified) * src/routes/search.js (modified) * src/views/pages/search.ejs (modified) feat(search): tracks searchable + prefix-matching for posts - ... Sat, 20 Jun 2026 02:09:51 GMT roboburr [359b9ae] * src/assets/css/style.css (modified) * src/routes/posts.js (modified) * src/services/AudioEmbedService.js (modified) * src/views/shell.ejs (modified) fix(player): scroll-to-track also from album & playlist Album track ... Sat, 20 Jun 2026 01:57:35 GMT roboburr [8f6225c] * src/routes/account.js (modified) * src/routes/admin-audio.js (modified) * src/routes/admin-settings.js (modified) * src/routes/admin-sites.js (modified) * src/routes/posts.js (modified) * src/services/ImageWebpService.js (added) feat(images): new uploads automatically converted to WebP Shared ... Sat, 20 Jun 2026 01:52:46 GMT roboburr [fa08981] * src/assets/js/audio-player.js (modified) * src/routes/audio.js (modified) * src/views/shell.ejs (modified) fix(player): scroll-to-track works for site-wide tracks too ... Sat, 20 Jun 2026 01:25:43 GMT roboburr [dfc5379] * src/routes/admin-circle.js (modified) feat(circle): immediately sync a new circle on add /add now runs ... Sat, 20 Jun 2026 01:24:26 GMT roboburr [6d882b1] * src/routes/account.js (modified) * src/views/pages/account.ejs (modified) feat(account): email address editable Profile form gets an email ... Sat, 20 Jun 2026 01:20:57 GMT roboburr [11ba289] * src/routes/auth.js (modified) fix(auth): Google login matches on linked google_sub first (not ... Fri, 19 Jun 2026 10:03:52 GMT roboburr [09ecc5f] * src/routes/admin-settings.js (modified) * src/views/pages/admin-google.ejs (added) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/admin.ejs (modified) ui(admin): Google login on its own Admin page - New page ... Fri, 19 Jun 2026 09:55:26 GMT roboburr [247988e] * CHANGELOG.md (modified) * src/routes/account.js (modified) * src/routes/auth.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/auth-login.ejs (modified) feat(auth): admin can link Google and use it to log in - Account → ... 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 09:40:04 GMT roboburr [8cdb377] * CHANGELOG.md (modified) * src/routes/posts.js (modified) * src/views/partials/post-nav.ejs (modified) ui(post-nav): show 📌 when the Newer/Older post is pinned ... Fri, 19 Jun 2026 09:38:20 GMT roboburr [1e2e9e7] * CHANGELOG.md (modified) * src/routes/posts.js (modified) * src/views/pages/fan-gate.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/partials/post-nav.ejs (added) ui(fan-gate): show Newer/Older post navigation on the fan gate too ... Fri, 19 Jun 2026 09:31:54 GMT roboburr [f4b7b6a] * CHANGELOG.md (modified) * src/routes/auth.js (modified) * src/views/pages/auth-login.ejs (modified) feat(auth): public login = Google only; admin login hidden at ... 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:37:28 GMT roboburr [da6fd02] * src/middleware/render.js (modified) * src/routes/admin-settings.js (modified) * src/views/pages/admin-settings.ejs (modified) * src/views/partials/footer.ejs (modified) newsletter: optional sign-up in the footer (toggle in Admin → ... Fri, 19 Jun 2026 08:29:28 GMT roboburr [ca507ef] * src/config/mailer.js (modified) * src/routes/admin-settings.js (modified) * src/views/pages/admin-settings.ejs (modified) feat: SMTP configurable via Admin → Settings (app_settings, env ... Fri, 19 Jun 2026 08:20:35 GMT roboburr [13b2986] * src/routes/epk.js (modified) * src/views/pages/epk.ejs (modified) EPK: Music section = top 10 most played (instead of first 6 in order) ... Fri, 19 Jun 2026 08:18:26 GMT roboburr [59e522f] * src/routes/posts.js (modified) 404: unknown slug now falls through to the proper 404 page (instead ... Fri, 19 Jun 2026 08:00:37 GMT roboburr [b919a67] * src/routes/auth.js (modified) * src/views/pages/auth-login.ejs (modified) auth: all Google login errors as clear explanation blocks (codes ... Fri, 19 Jun 2026 07:57:15 GMT roboburr [70679063] * src/routes/auth.js (modified) * src/views/pages/admin-audio.ejs (modified) * src/views/pages/auth-login.ejs (modified) fix: download toggle without page reload + clear explanation page on ... 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 ...