# # ChangeLog for src/assets in Klonkt # # Generated by Trac 1.6 # 09/09/2026 06:52:21 PM 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: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: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: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: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 ... 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 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 08:25:35 GMT roboburr [977f65d] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) ui: date/time picker in site theme (dark/light follows toggle) + ... Fri, 19 Jun 2026 08:08:06 GMT roboburr [2900f1d] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) fix: button text unreadable on hover (a:hover overrode accent button ... 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 ... 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: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 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: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 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: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: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 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: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 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: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 ... Mon, 15 Jun 2026 03:56:37 GMT roboburr [33886fb] * src/assets/js/embed-player.js (modified) * src/views/shell.ejs (modified) fix: site player now also pauses fallback embeds (mutual exclusion ... Mon, 15 Jun 2026 03:39:37 GMT roboburr [52badd3] * src/assets/css/embed.css (modified) * src/views/shell.ejs (modified) style: Spotify box — inner area back to theme colour (white border ... Mon, 15 Jun 2026 03:27:41 GMT roboburr [7f46817d] * src/assets/css/embed.css (modified) * src/views/shell.ejs (modified) style: Spotify embed in a white rounded box (border + shadow) ... 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 ... Mon, 15 Jun 2026 02:02:56 GMT roboburr [650b601] * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) feat: embed pause applies to every embed (not just .folio-embed) ... Mon, 15 Jun 2026 01:51:37 GMT roboburr [d352b63] * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) feat: site player pauses when an embedded video/audio starts playing ... Mon, 15 Jun 2026 01:29:13 GMT roboburr [e6888ca] * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) feat: audio player persists + resumes across page navigations ... Sun, 14 Jun 2026 23:26:17 GMT roboburr [cb6b1ad] * src/assets/css/audio.css (modified) * src/views/shell.ejs (modified) fix: tablet full-player queue gets full width (660px instead of ... Sun, 14 Jun 2026 23:21:54 GMT roboburr [67d4067] * src/assets/css/audio.css (modified) * src/views/shell.ejs (modified) fix: tablet full-player uses 'safe center' — cover no longer clipped ... Sun, 14 Jun 2026 23:12:05 GMT roboburr [102d2f0] * src/assets/css/audio.css (modified) * src/views/shell.ejs (modified) fix: tablet/auto full-player overrides now win (cascade order) + ... Sun, 14 Jun 2026 22:17:23 GMT roboburr [ddecd9a] * src/assets/css/audio.css (modified) * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) feat: audio player three layouts — desktop mini-only, tablet/auto ... Sun, 14 Jun 2026 04:20:02 GMT roboburr [89d6536] * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) fix: track buttons via event delegation (survives HTMX history- ... Sun, 14 Jun 2026 04:07:28 GMT roboburr [2b52bfb] * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) audio: mobile — back button closes the now-playing sheet (history ... 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 02:40:35 GMT roboburr [9b36f45] * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) audio: mobile — tapping a track automatically opens the now-playing ... 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:14:01 GMT Robin Genis [21522ae] * src/assets/js/audio-player.js (modified) * src/routes/admin-audio.js (modified) * src/routes/admin-playlists.js (modified) * src/routes/audio.js (modified) * src/routes/posts.js (modified) * src/services/AudioStreamService.js (modified) * src/services/PlaylistService.js (modified) * src/views/pages/admin-audio.ejs (modified) * src/views/partials/track-editor.ejs (modified) * src/views/shell.ejs (modified) audio: Spotify-style blob playback + same-origin gate (fix playback ... Thu, 07 May 2026 22:38:43 GMT Robin [8681239] * .beads/issues.jsonl (modified) * src/assets/css/audio.css (modified) * src/assets/js/audio-player.js (modified) * src/views/shell.ejs (modified) audio v3: robust continuous playback — pause+load reset, error auto- ... 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)