# # ChangeLog for src in Klonkt # # Generated by Trac 1.6 # 09/09/2026 05:31:01 PM Sat, 20 Jun 2026 08:53:59 GMT roboburr [210a9cb] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) fix(downloads): same post width as a real post .post-page ... Sat, 20 Jun 2026 08:45:30 GMT roboburr [45d22b1] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) fix(posts): cover image shows in full (no crop) .post-cover img had ... 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:35:02 GMT roboburr [d68bcf1] * src/views/pages/downloads.ejs (modified) fix(downloads): post nav pixel-identical to a post (.container.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 08:21:47 GMT roboburr [cf0de0c] * src/views/shell.ejs (modified) fix(nav): syncAria also on pcmsNav + delayed retry (htmx race) ... Sat, 20 Jun 2026 08:19:11 GMT roboburr [1c6d61c] * src/assets/css/style.css (modified) * src/views/partials/shared-styles.ejs (modified) * src/views/partials/view-switcher.ejs (modified) * src/views/shell.ejs (modified) fix(nav): Timeline/Grid active state via aria-selected (htmx-robust) ... Sat, 20 Jun 2026 08:11:45 GMT roboburr [4dcefa1] * src/assets/css/style.css (modified) * src/views/partials/shared-styles.ejs (modified) * src/views/partials/view-switcher.ejs (modified) * src/views/shell.ejs (modified) fix(agenda): robust grey-on-calendar (htmx-proof) via source rule + ... Sat, 20 Jun 2026 08:04:44 GMT roboburr [6eeb459] * src/views/pages/shows.ejs (modified) * src/views/partials/shared-styles.ejs (modified) feat(agenda): rest grey on calendar/downloads + Agenda as standalone ... Sat, 20 Jun 2026 07:57:56 GMT roboburr [1eff06a] * src/views/partials/shared-styles.ejs (modified) * src/views/partials/view-switcher.ejs (modified) refactor(nav): Agenda as its own pill (separate from Timeline/Grid) ... Sat, 20 Jun 2026 07:47:56 GMT roboburr [da4387b] * src/views/partials/shared-styles.ejs (modified) * src/views/shell.ejs (modified) fix(nav): stale page class after htmx nav + Agenda-active white - ... Sat, 20 Jun 2026 07:41:43 GMT roboburr [b200738] * src/views/partials/chrome.ejs (modified) * src/views/partials/shared-styles.ejs (modified) fix(downloads+agenda): downloads list gets header+pill; Solo/Circle ... Sat, 20 Jun 2026 07:35:49 GMT roboburr [d219d56] * src/views/partials/shared-styles.ejs (modified) fix(agenda): Timeline/Grid truly grey on the calendar page ... Sat, 20 Jun 2026 07:33:34 GMT roboburr [bad5c77] * src/views/partials/shared-styles.ejs (modified) fix(agenda): on the calendar page only Agenda active, Timeline/Grid ... Sat, 20 Jun 2026 07:30:37 GMT roboburr [0fcc09c] * src/views/partials/chrome.ejs (modified) feat(agenda): full chrome + pill kept on the calendar page Removed ... 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 07:22:21 GMT roboburr [d7b5a6c] * src/views/partials/shared-styles.ejs (modified) * src/views/partials/view-switcher.ejs (modified) feat(nav): Agenda IN the Timeline/Grid pill (Agenda · Timeline · ... Sat, 20 Jun 2026 07:06:59 GMT roboburr [cf7c2d9] * src/views/pages/admin-shows.ejs (modified) * src/views/pages/shows.ejs (modified) * src/views/partials/shared-styles.ejs (modified) * src/views/partials/view-switcher.ejs (modified) feat(nav): Agenda link in the view-switcher + "shows" → "events" ... Sat, 20 Jun 2026 07:01:49 GMT roboburr [34b126b] * src/views/pages/admin-google.ejs (modified) * src/views/pages/admin-settings.ejs (modified) chore: "Google login (listeners)" → "(visitors)" in the Admin ... Sat, 20 Jun 2026 07:00:03 GMT roboburr [0c7e228] * src/views/pages/admin.ejs (modified) chore(admin): remove dashboard "Edit press kit" link (edit is now on ... Sat, 20 Jun 2026 06:59:07 GMT roboburr [374fbe9] * src/views/pages/epk.ejs (modified) fix(epk): press kit bio respects line breaks (white-space: pre-line) ... Sat, 20 Jun 2026 06:56:39 GMT roboburr [6c574b4] * src/views/pages/admin-epk.ejs (modified) fix(epk): clear custom checkbox instead of unclear native one ... Sat, 20 Jun 2026 06:53:53 GMT roboburr [d252ce8] * src/views/pages/admin-epk.ejs (modified) fix(epk): clear track checkboxes (accent + checked row highlighted) ... Sat, 20 Jun 2026 06:49:21 GMT roboburr [08cfdaa] * src/views/pages/epk.ejs (modified) feat(epk): admin-only "Edit" button on the press kit page itself 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:44:46 GMT roboburr [57b1843] * src/views/pages/admin-epk.ejs (modified) fix(epk): clean form styling on the press kit edit page The .set-* ... 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 06:36:10 GMT roboburr [0f11c69] * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) change(player): player bar only appears on first audio click The ... Sat, 20 Jun 2026 05:45:30 GMT roboburr [903f10b] * src/assets/css/audio.css (modified) * src/views/shell.ejs (modified) fix(audio): larger cover thumbnail on link-only track (44→64px) ... Sat, 20 Jun 2026 05:43:49 GMT roboburr [a66f691] * src/assets/css/audio.css (modified) * src/services/AudioEmbedService.js (modified) * src/views/shell.ejs (modified) fix(audio): link-only track shows cover (instead of music note) A ... 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:09:30 GMT roboburr [459acd9] * src/views/partials/track-editor.ejs (modified) feat(editor): © insert button next to the credit field No more ... Sat, 20 Jun 2026 05:07:40 GMT roboburr [3ec691c] * src/views/partials/track-editor.ejs (modified) chore(editor): credit placeholder = neutral example name instead of ... 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:42:18 GMT roboburr [8ab20b6] * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) fix(player): muted start to work around YouTube autoplay block ... Sat, 20 Jun 2026 04:39:28 GMT roboburr [8d43aa1] * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (modified) * src/views/shell.ejs (modified) fix(player): prewarm hidden YT player (autoplay within gesture) The ... Sat, 20 Jun 2026 04:31:01 GMT roboburr [e056e56] * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (modified) * src/views/shell.ejs (modified) fix(player): YT album via queue expansion (reliable playback) ... Sat, 20 Jun 2026 04:28:31 GMT roboburr [71e8fa5] * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (modified) * src/views/shell.ejs (modified) fix(player): YT playlist now plays (listType:'playlist') ... Sat, 20 Jun 2026 04:22:32 GMT roboburr [d43ea3f] * src/assets/css/embed.css (modified) * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (modified) * src/views/shell.ejs (modified) feat(embed): YouTube playlist/album as audio on the site An ... 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 04:03:58 GMT roboburr [976d36d] * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (modified) * src/views/shell.ejs (modified) fix(embed): bar-free square cover for YouTube audio hqdefault is ... Sat, 20 Jun 2026 03:53:58 GMT roboburr [9e6b54f] * src/assets/css/embed.css (modified) * src/assets/js/audio-player.js (modified) * src/assets/js/embed-player.js (modified) * src/views/shell.ejs (modified) feat(player): YouTube audio via the site audio player (continuous ... Sat, 20 Jun 2026 03:42:00 GMT roboburr [73b41eb] * src/assets/css/embed.css (modified) * src/assets/js/embed-player.js (modified) * src/services/AudioEmbedService.js (modified) * src/views/pages/post-edit.ejs (modified) * src/views/shell.ejs (modified) feat(embed): YouTube audio-only option in posts Per embed you now ... Sat, 20 Jun 2026 03:20:00 GMT roboburr [389aa99] * src/views/shell.ejs (modified) fix(nav): no "bare content" on fast/repeated back-forward The ... 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 03:10:42 GMT roboburr [7990e00] * src/views/shell.ejs (modified) fix(nav): auth form pages via htmx → audio keeps playing Visiting ... Sat, 20 Jun 2026 03:04:22 GMT roboburr [557a76f] * src/assets/css/embed.css (modified) * src/assets/js/embed-player.js (modified) * src/views/shell.ejs (modified) feat(embed): volume slider + mute for YouTube & SoundCloud YT/SC ... Sat, 20 Jun 2026 02:54:09 GMT roboburr [2873b30] * src/assets/js/embed-player.js (modified) * src/views/shell.ejs (modified) fix(embed): Spotify directly as bare iframe (instant, no API wait) ... 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 ... 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:27:07 GMT roboburr [1ee967d] * src/middleware/render.js (modified) fix(render): refresh viewer avatar + role from DB (stale session ... Sat, 20 Jun 2026 02:20:53 GMT roboburr [795c925] * src/services/PlaylistService.js (modified) fix(playlist): album/playlist cover falls back to first track cover ... Sat, 20 Jun 2026 02:17:12 GMT roboburr [5258945] * src/assets/css/style.css (modified) * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) feat(player): persistent highlight on the active track The ... Sat, 20 Jun 2026 02:14:20 GMT roboburr [ddf549f] * src/services/AudioEmbedService.js (modified) fix(player): playlist queue now carries track id (scroll-to-track) ... 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:38:16 GMT roboburr [230e446] * src/assets/css/style.css (modified) * src/assets/js/audio-player.js (modified) * src/services/AudioEmbedService.js (modified) * src/views/shell.ejs (modified) feat(player): mini-player jumps to post AND scrolls to the track ... Sat, 20 Jun 2026 01:32:20 GMT roboburr [d188736] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) feat: images harder to save (right-click + drag blocked) Friction ... Sat, 20 Jun 2026 01:28:36 GMT roboburr [1f0c85b] * src/assets/css/style.css (modified) * src/views/partials/post-tile.ejs (modified) * src/views/shell.ejs (modified) ui(grid): show source site on hover on circle feed tiles Grid tiles ... 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 ... Sat, 20 Jun 2026 01:18:06 GMT roboburr [36afccd] * src/views/pages/auth-login.ejs (modified) fix(auth): "Sign in with Google" text readable on hover The white ... Sat, 20 Jun 2026 01:16:16 GMT roboburr [6fcd0cf] * src/views/pages/account.ejs (modified) fix(account): "Link Google account" button text readable (white text) ... Sat, 20 Jun 2026 01:14:46 GMT roboburr [3ca24f9] * src/views/pages/admin-google.ejs (modified) ui(admin-google): clearer redirect URI instruction Redirect URI ... Sat, 20 Jun 2026 01:09:38 GMT roboburr [3fb8390] * src/views/pages/auth-login.ejs (modified) ui(auth): center subtitle text on login page Co-Authored-By: Claude ... Sat, 20 Jun 2026 01:06:11 GMT roboburr [77b6fca] * src/views/pages/auth-login.ejs (modified) ui(auth): clickable "Administrator?" box on public login → ... Fri, 19 Jun 2026 22:57:07 GMT roboburr [254872f] * src/views/pages/post-edit.ejs (modified) ui(editor): hide "drag image / select text" hint on touch Not ... Fri, 19 Jun 2026 22:56:00 GMT roboburr [b988c96] * src/views/pages/post-edit.ejs (modified) fix(editor): Done button only in fullscreen (specificity) + larger ... Fri, 19 Jun 2026 22:52:51 GMT roboburr [43fea32] * src/views/pages/post-edit.ejs (modified) ui(editor): larger "Done" button in fullscreen Co-Authored-By: ... Fri, 19 Jun 2026 22:44:27 GMT roboburr [9163b15] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) ui(editor): simple inline content layout on touch (toolbar hidden) ... Fri, 19 Jun 2026 22:37:36 GMT roboburr [b12e20d] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) feat(editor): edit content as a fullscreen "page" with back button + ... Fri, 19 Jun 2026 13:13:05 GMT roboburr [c1a4147] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): scroll lock removed — edit page could no longer scroll ... Fri, 19 Jun 2026 13:09:31 GMT roboburr [a623e7e] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) ui(editor): tap-to-edit pill sticky at the bottom instead of centred ... Fri, 19 Jun 2026 12:55:44 GMT roboburr [a4f6827] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): exit fullscreen scrolls to content top + clearer tap ... Fri, 19 Jun 2026 12:50:52 GMT roboburr [61bb585] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) feat(editor): content not typeable inline on touch — editing = ... Fri, 19 Jun 2026 12:45:07 GMT roboburr [5d68686] * CHANGELOG.md (modified) * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) ui(mobile): hide scrollbars on touch (pointer:coarse) @media ... Fri, 19 Jun 2026 12:42:23 GMT roboburr [de21a3b] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): no double scrollbar in fullscreen In fullscreen only ... Fri, 19 Jun 2026 12:38:30 GMT roboburr [e22230e] * src/views/pages/post-edit.ejs (modified) fix(editor): remove 350ms scroll guard + always type fullscreen on ... Fri, 19 Jun 2026 12:35:04 GMT roboburr [f3f43df] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) * src/views/shell.ejs (modified) ui: text fields grow with content instead of scrolling internally (no ... Fri, 19 Jun 2026 12:32:57 GMT roboburr [c01f471] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) feat(editor): always type fullscreen on mobile/tablet (touch) On ... Fri, 19 Jun 2026 12:26:53 GMT roboburr [9217e4e] * CHANGELOG.md (modified) * src/views/shell.ejs (modified) fix(mobile): remove interactive-widget=resizes-content again It ... Fri, 19 Jun 2026 12:24:21 GMT roboburr [7d81265] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): toolbar sticky inside the scroll box on mobile The ... Fri, 19 Jun 2026 12:20:35 GMT roboburr [859bace0] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): mobile writing field as bounded box with internal scroll ... Fri, 19 Jun 2026 12:14:21 GMT roboburr [2d596cf] * src/views/pages/post-edit.ejs (modified) fix(editor): catch async caret scroll on mobile Chrome (empty caret + ... Fri, 19 Jun 2026 12:09:06 GMT roboburr [f8e8f9e] * src/views/pages/post-edit.ejs (modified) fix(editor): more robust anti-jump on formatting (Chrome) ... Fri, 19 Jun 2026 12:06:00 GMT roboburr [cbfbf88] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): no view jump on formatting button — hold scroll position ... Fri, 19 Jun 2026 12:02:20 GMT roboburr [5f7dba2] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) * src/views/shell.ejs (modified) fix(editor): action bar correctly above keyboard (no mid-screen bug) ... Fri, 19 Jun 2026 11:56:37 GMT roboburr [408afc1] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): Save/Cancel bar above the keyboard on mobile The ... Fri, 19 Jun 2026 11:51:57 GMT roboburr [4ad669a] * src/views/pages/admin.ejs (modified) ui(admin): label the Google button in Admin simply "Google" ... Fri, 19 Jun 2026 11:50:23 GMT roboburr [9ef3c56] * CHANGELOG.md (modified) * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) fix(mobile): hide fixed bottom bars when the keyboard is open ... Fri, 19 Jun 2026 11:45:23 GMT roboburr [a0bff44] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): no autofocus on title on mobile (no keyboard popup) ... Fri, 19 Jun 2026 11:42:39 GMT roboburr [06f3791] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): toolbar stays in view in fullscreen on mobile (visual ... Fri, 19 Jun 2026 11:38:22 GMT roboburr [d2078f4] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) feat(editor): full-screen writing mode Button in the editor toolbar ... Fri, 19 Jun 2026 11:35:34 GMT roboburr [16ce669] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) ui(editor): clear active/inactive state for formatting on mobile ... Fri, 19 Jun 2026 10:34:24 GMT roboburr [a7e8e19] * CHANGELOG.md (modified) * src/views/pages/post-edit.ejs (modified) fix(editor): mobile — formatting buttons no longer steal focus ...