# # ChangeLog for src in Klonkt # # Generated by Trac 1.6 # 09/09/2026 11:14:54 PM 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:37:16 GMT roboburr [85d9fda] * src/views/shell.ejs (modified) Fix double page on back/forward (htmx history conflict) On ... 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 16:28:28 GMT roboburr [91d948c] * src/views/pages/post-edit.ejs (modified) Editor: blockquote button is now a real toggle (turning it off works) ... Thu, 18 Jun 2026 08:48:18 GMT roboburr [fbc8628] * src/routes/admin-audio.js (modified) * src/views/pages/admin-audio.ejs (modified) Audio upload: WAV up to 100 MB (other formats remain 50 MB) WAV is ... Thu, 18 Jun 2026 08:02:13 GMT roboburr [03af7f8] * src/views/pages/admin-seo.ejs (modified) SEO page: own style block (label-per-row, clean fields) The ... 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 ... Thu, 18 Jun 2026 07:24:25 GMT roboburr [0dbb5c1] * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) Mini player: clickable on desktop → navigates to the associated post ... Thu, 18 Jun 2026 06:57:17 GMT roboburr [5c261b7] * src/views/pages/circle-feed.ejs (modified) Circle feed: "je" → "mijn" + standalone "Add sites via Admin" ... Thu, 18 Jun 2026 06:53:31 GMT roboburr [8e29f77] * src/views/pages/post.ejs (modified) Post: less blank space above the nav (.post-page margin-top 2rem → ... Thu, 18 Jun 2026 06:48:40 GMT roboburr [74544fb] * src/db/migrations/001-init.sql (modified) * src/routes/admin-sites.js (modified) * src/services/ensurePrimarySite.js (modified) * src/views/pages/post.ejs (modified) New sites: require login to comment on by default + post nav at top ... Thu, 18 Jun 2026 06:44:08 GMT roboburr [fee35fa] * src/views/pages/admin-settings.ejs (modified) Hub settings: hero preview properly full-width (object-fit cover ... Thu, 18 Jun 2026 05:56:15 GMT roboburr [86793f9] * src/routes/admin-sites.js (modified) * src/views/pages/admin-users.ejs (modified) Hub: "give this user a Klonkt" from the users page In hub mode each ... Thu, 18 Jun 2026 05:54:36 GMT roboburr [94a876f] * src/middleware/site.js (modified) Hub: removed dead host-based site resolving (slug == hostname could ... Thu, 18 Jun 2026 03:46:25 GMT roboburr [f735304] * src/middleware/site.js (modified) * src/views/pages/admin-sites.ejs (modified) Hub: /sites/:slug → 301 to canonical /user/:slug (single URL scheme) ... 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) ... Thu, 18 Jun 2026 03:19:09 GMT roboburr [98ecf51] * src/middleware/auth.js (modified) * src/routes/admin-sites.js (modified) * src/services/PermissionsService.js (modified) * src/views/pages/admin-site-edit.ejs (modified) Hub #1+#2: site admin permissions work + assign owner to another user ... Thu, 18 Jun 2026 03:06:02 GMT roboburr [6a2abb1] * src/views/shell.ejs (modified) Fix: colour leaks on back button in hub (htmx history restore does ... Wed, 17 Jun 2026 04:20:33 GMT roboburr [c50f22e] * src/views/pages/admin-settings.ejs (modified) Google login card: collapsible step-by-step setup guide ... Wed, 17 Jun 2026 04:02:46 GMT roboburr [441f5d6] * src/assets/css/style.css (modified) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/topnav.ejs (modified) * src/views/shell.ejs (modified) Login navigation via htmx (audio no longer jumps when opening login) ... Wed, 17 Jun 2026 03:52:13 GMT roboburr [125e0e1] * src/assets/css/audio.css (modified) * src/views/shell.ejs (modified) Fix: audio player floating on the auth/login screen (mobile) The ... Wed, 17 Jun 2026 03:48:04 GMT roboburr [dbde7f8] * src/views/partials/topnav.ejs (modified) Fix: theme toggle stops working after htmx navigation (stacked ... Wed, 17 Jun 2026 03:34:07 GMT roboburr [93d6345] * src/assets/css/style.css (modified) * src/views/partials/footer.ejs (modified) * src/views/shell.ejs (modified) Theme scrollbar + install button in the footer row (no longer a ... Wed, 17 Jun 2026 02:07:28 GMT roboburr [c3ad46d] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) Fix: horizontal clipping on html (not body) — no h-scroll + fixed ... Wed, 17 Jun 2026 02:00:53 GMT roboburr [dd80030] * src/views/pages/prutter-inbox.ejs (modified) Prutter inbox: also hide site footer (same as the chat) ... Wed, 17 Jun 2026 01:59:24 GMT roboburr [d5b9d2a] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) Fix: bottom tab scrolls with the page on mobile (overflow-x ... Wed, 17 Jun 2026 01:52:53 GMT roboburr [8f6a61d] * src/views/pages/prutter-conversation.ejs (modified) Prutter composer: clear after send + Enter behaviour + auto-grow - ... Wed, 17 Jun 2026 01:39:35 GMT roboburr [9611f31] * src/views/pages/prutter-conversation.ejs (modified) Prutter chat: hide site footer (was showing through the fixed chat) ... Wed, 17 Jun 2026 01:28:35 GMT roboburr [d3e2987] * src/views/pages/post-edit.ejs (modified) Post editor: Save bar above the audio player instead of below it ... Wed, 17 Jun 2026 01:24:14 GMT roboburr [2beef82] * src/views/pages/post-edit.ejs (modified) Post-editor: hide site tab bar in the editor (focus screen) On ... Wed, 17 Jun 2026 01:18:19 GMT roboburr [ca253750] * src/views/pages/post-edit.ejs (modified) Post-editor: action bar no longer floats on desktop ... Wed, 17 Jun 2026 01:14:00 GMT roboburr [edc462d] * src/views/pages/post-edit.ejs (modified) Post-editor: default status Published (new posts) + friendlier pin ... Wed, 17 Jun 2026 01:10:17 GMT roboburr [3068cc0] * src/views/pages/admin-site-edit.ejs (modified) Slug field as URL: dimmed host prefix + slug in accent colour The ... Wed, 17 Jun 2026 01:03:25 GMT roboburr [c2a9522] * src/assets/css/style.css (modified) * src/views/partials/topnav.ejs (modified) * src/views/shell.ejs (modified) User-menu dropdown frosted blur now works: masthead backdrop-filter ... Wed, 17 Jun 2026 01:00:03 GMT roboburr [d8693e4] * src/views/partials/topnav.ejs (modified) User-menu dropdown: frosted-glass background (more transparent 66% + ... Wed, 17 Jun 2026 00:55:54 GMT roboburr [dc4c067] * src/views/partials/shared-styles.ejs (modified) View-switcher: pill centred between the two lines (equal space ... Wed, 17 Jun 2026 00:51:18 GMT roboburr [1dca23b] * src/views/partials/shared-styles.ejs (modified) View-switcher: margin-top back to 0.5rem (tight under the profile ... Wed, 17 Jun 2026 00:49:19 GMT roboburr [a3e2f17] * src/middleware/render.js (modified) * src/views/shell.ejs (modified) Fix: update per-site accent + palette on htmx navigation The accent ... Wed, 17 Jun 2026 00:46:48 GMT roboburr [ee25d45] * src/assets/css/style.css (modified) * src/views/partials/shared-styles.ejs (modified) View-switcher: margin-top 1.5rem in shared-styles (the winning inline ... Wed, 17 Jun 2026 00:44:33 GMT roboburr [6b0a8e2] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) View-switcher: symmetric space above/below the pill bar (margin-top ... Wed, 17 Jun 2026 00:34:22 GMT roboburr [cbd1761] * src/views/pages/hub-home.ejs (modified) Hub-home: hero connects directly to the topnav (no gap) + dead hub- ... Wed, 17 Jun 2026 00:29:16 GMT roboburr [79bba6e] * src/routes/prutter.js (modified) * src/views/pages/hub-home.ejs (modified) * src/views/pages/prutter-conversation.ejs (modified) * src/views/partials/chrome.ejs (modified) * src/views/shell.ejs (modified) Audio never jumps + hub topnav + Prutter chat mobile-first - Global ... Wed, 17 Jun 2026 00:12:59 GMT roboburr [44cf44d] * src/views/pages/hub-home.ejs (modified) * src/views/partials/topnav.ejs (modified) Audio: Admin/Account navigation via htmx (player stays alive, no ... Wed, 17 Jun 2026 00:03:39 GMT roboburr [3cd1aaa] * src/assets/css/style.css (modified) * src/middleware/render.js (modified) * src/views/partials/chrome.ejs (added) * src/views/shell.ejs (modified) Hub: chrome in #pcms-chrome slot + out-of-band swap on htmx → header ... Tue, 16 Jun 2026 23:53:53 GMT roboburr [108fd5f] * src/views/shell.ejs (modified) CSS cache-buster style.css v2->v3 (session changes: hide hub header, ... Tue, 16 Jun 2026 23:35:13 GMT roboburr [03bfdce] * src/assets/css/style.css (modified) * src/views/pages/hub-home.ejs (modified) * src/views/partials/topnav.ejs (modified) * src/views/shell.ejs (modified) Hub: always render chrome + CSS toggle (body.on-hub) → hub nav via ... Tue, 16 Jun 2026 23:27:10 GMT roboburr [09ac0a5] * src/views/partials/bottom-tab.ejs (modified) Hub audio: mobile Home back on htmx (persistent player survives → no ... Tue, 16 Jun 2026 22:56:49 GMT roboburr [6224462] * src/services/PermissionsService.js (modified) * src/views/shell.ejs (modified) Hub: show bottom tab (Home/Search/Login) on the hub landing too The ... Tue, 16 Jun 2026 22:53:05 GMT roboburr [9915786] * src/views/partials/bottom-tab.ejs (modified) Hub mobile: Home button goes to the hub root instead of the artist ... Tue, 16 Jun 2026 22:46:39 GMT roboburr [e2a8e31] * src/views/partials/shared-styles.ejs (modified) Login: Google button centred (display:flex, fills the login column ... Tue, 16 Jun 2026 22:28:54 GMT roboburr [2248cd2] * src/config/google.js (modified) * src/routes/admin-settings.js (modified) * src/views/pages/admin-settings.ejs (modified) Google login configurable in-app: Admin → Settings card (no .env ... 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 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 19:02:15 GMT roboburr [62b899d] * src/routes/admin-circle.js (modified) * src/services/CircleFederation.js (modified) * src/services/CircleService.js (modified) * src/views/pages/admin-circle.ejs (modified) Circle: strip shortcodes from summary + "Sync all now" button ... Tue, 16 Jun 2026 18:49:32 GMT roboburr [682d504] * src/routes/circle.js (modified) * src/services/CircleService.js (modified) Circle: remove cached posts on outdated + exclude outdated sites from ... Tue, 16 Jun 2026 18:46:59 GMT roboburr [1be21ba] * src/routes/account.js (modified) * src/views/pages/account.ejs (modified) Account: owner can edit site name + tagline in account settings New ... Tue, 16 Jun 2026 18:45:02 GMT roboburr [e9229f2] * src/routes/auth.js (modified) Phase 4: Fan login (Google) behind premium gate fanLoginReady() = ... Tue, 16 Jun 2026 10:30:37 GMT roboburr [029f047] * src/routes/admin-settings.js (modified) * src/views/pages/admin-settings.ejs (modified) Phase 2: Hub mode behind premium gate (premiumUnlocked) Switching ... 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 08:52:51 GMT roboburr [3f893bf] * src/views/pages/circle-feed.ejs (modified) Circle header: >5 sites = count only (pill), no chips; <=5 = chips ... Tue, 16 Jun 2026 08:22:12 GMT roboburr [04a6b15] * src/views/pages/circle-feed.ejs (modified) Circle header scalable: max 6 chips + "+N more" pill + total count ... 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 07:29:48 GMT roboburr [1578f5d] * src/assets/css/style.css (modified) Archive: also hide the grid-cols picker (archive has no grid) ... Tue, 16 Jun 2026 07:28:52 GMT roboburr [c974223] * src/assets/css/style.css (modified) * src/views/pages/archive.ejs (modified) Archive: always timeline list, ignores grid choice (fix: grid→archive ... Tue, 16 Jun 2026 07:25:15 GMT roboburr [ec2e358] * src/views/shell.ejs (modified) Archive: switcher click navigates back to the feed instead of ... Tue, 16 Jun 2026 07:13:18 GMT roboburr [d15b27f] * src/assets/css/style.css (modified) * src/views/pages/archive.ejs (modified) Archive: Timeline/Grid greyed on archive + back button (+ English ... Tue, 16 Jun 2026 07:09:01 GMT roboburr [544cd86] * src/views/pages/admin-site-edit.ejs (modified) Appearance: full page translated to English (consistent with the rest ... Tue, 16 Jun 2026 07:04:18 GMT roboburr [2c246d4] * src/routes/admin-sites.js (modified) * src/views/pages/admin-site-edit.ejs (modified) Appearance: remove dead profile_name/bio write + Prutter toggle only ... Tue, 16 Jun 2026 06:58:03 GMT roboburr [8aa85d0] * src/middleware/render.js (modified) * src/routes/prutter.js (modified) * src/services/PatreonService.js (modified) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/user.ejs (modified) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/topnav.ejs (modified) Prutter = premium Hub feature: Hub-only + behind premium gate ... Tue, 16 Jun 2026 06:47:31 GMT roboburr [eef691e] * src/views/pages/admin-circle.ejs (modified) Circle UI: Remove button readable (white text on solid red instead of ... Tue, 16 Jun 2026 06:46:10 GMT roboburr [151a72c] * src/services/CircleService.js (modified) * src/views/pages/admin-circle.ejs (modified) Circle UI: reason on its own line + clean word wrapping; message ... Tue, 16 Jun 2026 06:43:49 GMT roboburr [4fee228] * src/views/pages/admin-circle.ejs (modified) Circle UI: show reason for outdated/unknown status instead of silent ... Tue, 16 Jun 2026 06:33:38 GMT roboburr [f63cbc2] * src/routes/federation.js (modified) * src/services/CircleFederation.js (modified) * src/services/CircleService.js (modified) Circles: protocol version enforced via signature binding (update ... 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 05:52:49 GMT roboburr [a9e23f6] * src/views/pages/admin-circle.ejs (modified) Circle: help text visibility clarified (participation, not a privacy ... 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:25:40 GMT roboburr [974de34] * src/views/pages/admin-site-edit.ejs (modified) Style: site-edit dropdowns polished (custom chevron + focus instead ... 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:16:33 GMT roboburr [a742e9f] * src/views/partials/topnav.ejs (modified) Fix: top-nav profile menu shows 'God' for the god role instead of ... 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:38:33 GMT roboburr [00d54bc] * src/middleware/render.js (modified) Fix: htmx-partial 500 on non-ASCII characters in post title The ... Tue, 16 Jun 2026 03:17:44 GMT roboburr [baa2e59] * package-lock.json (modified) * src/middleware/render.js (modified) Branding: last prutfolio remnants (render comment + package-lock ... 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 03:02:30 GMT roboburr [5019e22] * deploy/DEPLOY.md (modified) * src/views/pages/welcome.ejs (modified) * src/views/shell.ejs (modified) Branding: user-facing PrutCMS -> Klonkt (welcome heading, site-title ... 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 02:22:31 GMT roboburr [7917407] * src/routes/circle.js (modified) * src/views/pages/circle-post.ejs (added) Circles: local read page /cirkel/:id (stay on your site) + source in ... Tue, 16 Jun 2026 02:17:52 GMT roboburr [b960185] * src/views/shell.ejs (modified) shell: cache-buster on style.css (?v=2) — CSS changes load without ... Tue, 16 Jun 2026 02:16:38 GMT roboburr [64b90c0] * src/assets/css/style.css (modified) * src/views/pages/circle-feed.ejs (modified) Circles: Solo/Circle as segmented switcher (specificity fix) + ... Tue, 16 Jun 2026 02:14:31 GMT roboburr [d2c43f9] * src/assets/css/style.css (modified) Circles: scope toggle centered instead of left-aligned (margin- ... Tue, 16 Jun 2026 01:56:56 GMT roboburr [9f81a09] * src/assets/css/style.css (modified) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/topnav.ejs (modified) * src/views/partials/view-switcher.ejs (modified) Circles: Solo/Circle scope toggle in the switcher bar (left) + Circle ... Tue, 16 Jun 2026 01:52:09 GMT roboburr [43dbf9c] * src/routes/circle.js (modified) * src/views/pages/circle-feed.ejs (modified) * src/views/partials/post-card.ejs (modified) * src/views/partials/post-tile.ejs (modified) * src/views/shell.ejs (modified) Circles: /cirkel uses the home view (timeline + grid + switcher) - ... Tue, 16 Jun 2026 01:47:04 GMT roboburr [aa7f548] * src/views/pages/circle-feed.ejs (modified) Circles: more neutral /cirkel subheading (no my/your) ... Tue, 16 Jun 2026 01:44:43 GMT roboburr [6e9a95b] * src/views/pages/admin.ejs (modified) Circles: Circle admin button on the Admin page (circle mode) ... Tue, 16 Jun 2026 01:40:49 GMT roboburr [0908b8f] * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/topnav.ejs (modified) Circles: Circle nav link (desktop + mobile) when tenancy=circle ... Tue, 16 Jun 2026 01:15:27 GMT roboburr [57929aa] * src/services/CircleService.js (modified) Circles: lazy prepares in CircleService (fix crash on boot) The ... Tue, 16 Jun 2026 01:12:00 GMT roboburr [0b7ebbf] * docs/cirkels-v1-spec.md (added) * src/config/database.js (modified) * src/routes/admin-circle.js (added) * src/routes/admin-settings.js (modified) * src/routes/circle.js (added) * src/routes/federation.js (added) * src/server.js (modified) * src/services/CircleFederation.js (added) * src/services/CircleService.js (added) * src/services/SettingsService.js (modified) * src/views/pages/admin-circle.ejs (added) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/circle-feed.ejs (added) Merge branch 'feat/cirkels-v1' # Conflicts: # ... Tue, 16 Jun 2026 01:08:28 GMT Robin Genis [63edb0d] * src/routes/admin-settings.js (modified) * src/routes/hub.js (modified) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/hub-home.ejs (modified) hub: hero image upload + dark overlay slider Reconcile of live ... Tue, 16 Jun 2026 01:03:40 GMT roboburr [efdde37] * src/routes/federation.js (modified) Circles v1 — publication disabled in hub mode (solo-to-solo only) ... 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 ...