# # ChangeLog for src/views/shell.ejs in Klonkt # # Generated by Trac 1.6 # 09/09/2026 07:36:13 PM Sun, 21 Jun 2026 20:14:38 GMT roboburr [0251bae] * src/assets/css/style.css (modified) * src/services/ThemeService.js (modified) * src/views/shell.ejs (modified) feat(themes): more colour variety — fewer greens/blues in accents + ... Sat, 20 Jun 2026 14:14:32 GMT roboburr [999aad2] * src/assets/css/style.css (modified) * src/services/ThemeService.js (modified) * src/views/shell.ejs (modified) feat(themes): preview colours synced with real CSS + 4 palettes + 4 ... Sat, 20 Jun 2026 14:04:32 GMT roboburr [83b8b8f] * src/assets/css/style.css (modified) * src/views/partials/topnav.ejs (modified) * src/views/shell.ejs (modified) feat(i18n): styled language dropdown in the header (instead of native ... Sat, 20 Jun 2026 13:59:32 GMT roboburr [2149f5a] * src/assets/css/style.css (modified) * src/views/pages/admin.ejs (modified) * src/views/partials/footer.ejs (modified) * src/views/partials/topnav.ejs (modified) * src/views/shell.ejs (modified) feat(i18n): language dropdown (NL/EN/DE) in the header nav instead of ... Sat, 20 Jun 2026 13:54:27 GMT roboburr [66cfbaa] * src/assets/css/style.css (modified) * src/views/partials/footer.ejs (modified) * src/views/shell.ejs (modified) fix: grid columns (2/3/4) work on all feeds + readable language ... Sat, 20 Jun 2026 09:01:46 GMT roboburr [92bad27] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) revert(layout): remove scrollbar-gutter — caused a phantom dead ... Sat, 20 Jun 2026 08:59:22 GMT roboburr [2e454455] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) fix(layout): scrollbar-gutter: stable — no content shift between ... Sat, 20 Jun 2026 08:55:18 GMT roboburr [703ead3] * src/assets/css/style.css (modified) * src/views/shell.ejs (modified) fix(downloads): post width with higher specificity (.container.post- ... 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: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 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 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: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: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: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 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: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: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: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 09:21:25 GMT roboburr [1080d14] * CHANGELOG.md (modified) * src/views/shell.ejs (modified) ui(nav): scroll to top when navigating to a different post Links ... 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 ... Fri, 19 Jun 2026 07:28:25 GMT roboburr [9b3e12c] * src/views/shell.ejs (modified) fix: post URL now updates in the address bar — htmx:beforeRequest ... Fri, 19 Jun 2026 07:23:36 GMT roboburr [6b8afb1] * src/views/shell.ejs (modified) fix: address bar not updating on post click (htmx history off + hx- ... 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 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 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: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: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: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: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: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 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 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 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: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 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) - ... 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 18:07:51 GMT roboburr [8afbdd6] * README.md (modified) * package.json (modified) * src/middleware/auth.js (modified) * src/middleware/render.js (modified) * src/routes/admin-sites.js (modified) * src/routes/admin-users.js (modified) * src/routes/admin.js (modified) * src/routes/artists.js (added) * src/routes/hub.js (modified) * src/routes/posts.js (modified) * src/routes/prutter.js (modified) * src/server.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/admin-users.ejs (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/artists-directory.ejs (added) * src/views/pages/home.ejs (modified) * src/views/pages/hub-home.ejs (modified) * src/views/pages/my-site.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/pages/viewer-blocked.ejs (added) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/footer.ejs (modified) * src/views/partials/profile-sheet.ejs (modified) * src/views/partials/topnav.ejs (modified) * src/views/shell.ejs (modified) feat: viewer role + artists directory + Klonkt Hub Beta rebrand ... Sun, 14 Jun 2026 17:01:56 GMT roboburr [3c196f9] * src/views/shell.ejs (modified) fix: view switcher on non-feed pages goes to the SITE home, not ... Sun, 14 Jun 2026 16:25:27 GMT roboburr [640b39c] * src/config/database.js (modified) * src/routes/auth.js (modified) * src/server.js (modified) * src/views/shell.ejs (modified) auth: read-only view accounts (view everything, modify nothing) New ... Sun, 14 Jun 2026 16:02:09 GMT roboburr [ccbd6a6] * src/views/shell.ejs (modified) hub: global pages (e.g. /account) bare; PrutFolio chrome only on ... Sun, 14 Jun 2026 15:48:20 GMT roboburr [a7e12de] * src/routes/auth.js (modified) * src/views/shell.ejs (modified) auth: no shell chrome on login/register/reset (headerless focus ... Sun, 14 Jun 2026 15:37:12 GMT roboburr [4c5169f] * 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) * src/views/shell.ejs (modified) hub: overview is a headerless landing with hero image The hub ... 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- ... Thu, 07 May 2026 20:02:41 GMT Robin [cf96890] * src/views/shell.ejs (modified) Cache buster ?v=2 on audio-player.js — prevents Cloudflare 1y stale ... 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)