# # ChangeLog for src/views in Klonkt # # Generated by Trac 1.6 # 09/09/2026 03:04:30 PM 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 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: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: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 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 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: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 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 ... Mon, 15 Jun 2026 04:21:06 GMT roboburr [af5407f] * src/views/partials/shared-styles.ejs (modified) fix: view-switcher on post — active colour removed, buttons still ... Mon, 15 Jun 2026 04:10:26 GMT roboburr [11a6871] * src/views/partials/shared-styles.ejs (modified) style: grey out view-switcher on a standalone post Timeline/Grid + ... Mon, 15 Jun 2026 04:02:17 GMT roboburr [6117035] * src/routes/posts.js (modified) * src/views/pages/post.ejs (modified) fix: post navigation over ALL posts incl. pinned (no more pinned-only ... 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:44:22 GMT roboburr [1f01b99] * src/views/pages/post.ejs (modified) style: post navigation — Newer on the left, Older on the right ... 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:39:35 GMT roboburr [d54dade] * src/routes/posts.js (modified) * src/views/pages/post.ejs (modified) fix: hub mode — related posts + Newer/Older across ALL users In hub ... 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:29 GMT roboburr [3e86f1c] * package.json (modified) * scripts/backfill-durations.mjs (added) * src/routes/admin-audio.js (modified) * src/services/AudioTranscoder.js (modified) * src/views/partials/track-editor.ejs (modified) feat: automatic track duration — no more manually entering seconds ... 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:48:56 GMT roboburr [1907a18] * src/routes/posts.js (modified) * src/services/AudioEmbedService.js (modified) * src/views/pages/post-edit.ejs (modified) feat: embed media via editor button ([[embed:url]] shortcode) Embed ... Mon, 15 Jun 2026 01:37:31 GMT roboburr [851239c] * src/views/pages/post-edit.ejs (modified) * src/views/partials/topnav.ejs (modified) fix: topnav home button (home icon) + post-edit save/cancel with ... 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 ... Mon, 15 Jun 2026 01:18:56 GMT roboburr [bd7f10d] * src/views/partials/playlist-editor.ejs (modified) fix: playlist cover upload now works on create too (not only edit) ... Mon, 15 Jun 2026 01:14:02 GMT roboburr [f45fc82] * src/routes/admin.js (modified) * src/views/pages/admin.ejs (modified) * src/views/pages/my-site.ejs (modified) feat: posts/drafts list on the dashboard — drafts findable again ... Mon, 15 Jun 2026 01:06:49 GMT roboburr [b50a885] * src/views/pages/post-edit.ejs (modified) * src/views/partials/track-editor.ejs (modified) fix: cover URL field accepts relative /media/ paths (type=url -> ... 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:55:44 GMT roboburr [a1c8cb8] * src/routes/admin-sites.js (modified) * src/routes/artists.js (modified) * src/routes/hub.js (modified) * src/routes/posts.js (modified) * src/server.js (modified) * src/views/pages/artists-directory.ejs (modified) * src/views/pages/hub-home.ejs (modified) feat: directory URL /artiesten -> /leden + count 'N Klonkt's' - ... Sun, 14 Jun 2026 18:48:50 GMT roboburr [74c2473] * src/routes/artists.js (modified) * src/views/pages/artists-directory.ejs (modified) * src/views/pages/hub-home.ejs (modified) copy: hub-home/directory 'Artiesten' -> 'Leden' + feed heading 'our ... Sun, 14 Jun 2026 18:46:13 GMT roboburr [ce8c8c2] * src/routes/artists.js (modified) * src/routes/hub.js (modified) * src/views/pages/hub-home.ejs (modified) feat: hub-home shows main/label account separately (not under ... Sun, 14 Jun 2026 18:35:59 GMT roboburr [a3169f5] * src/middleware/render.js (modified) * src/views/pages/hub-home.ejs (modified) * src/views/partials/profile-sheet.ejs (modified) * src/views/partials/topnav.ejs (modified) fix: viewer now sees the Admin link too (canSeeBeheer) The Admin ... Sun, 14 Jun 2026 18:23:48 GMT roboburr [5e95aac] * src/server.js (modified) * src/views/pages/admin-users.ejs (modified) fix: users list alignment + site icon SF -> K (Klonkt) - ... 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:25:41 GMT roboburr [b94c08e] * src/views/pages/home.ejs (modified) * src/views/pages/post.ejs (modified) * src/views/pages/search.ejs (modified) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/profile-sheet.ejs (modified) fix: all site-scoped links use siteUrlBase in hub mode Follow-up on ... Sun, 14 Jun 2026 17:13:12 GMT roboburr [7963a6e] * src/views/partials/post-card.ejs (modified) * src/views/partials/post-tile.ejs (modified) fix: feed post links use siteUrlBase (clicking did not work in hub) ... Sun, 14 Jun 2026 17:10:16 GMT roboburr [0c2228a] * src/routes/admin-users.js (modified) * src/views/pages/admin-users.ejs (modified) * src/views/partials/topnav.ejs (modified) hub: home button actually visible + delete for every user (cascade) ... Sun, 14 Jun 2026 17:04:48 GMT roboburr [05a6ca0] * src/views/pages/admin-users.ejs (modified) admin: align users list — fixed position for the delete button The ... 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:59:38 GMT roboburr [42081fb] * src/middleware/render.js (modified) * src/views/partials/topnav.ejs (modified) hub: home button on user sites — masthead brand becomes the hub name ... Sun, 14 Jun 2026 16:55:06 GMT roboburr [6150acb] * src/views/pages/account.ejs (modified) account: cleaner profile card — clickable avatar with camera badge ... Sun, 14 Jun 2026 16:49:24 GMT roboburr [ab544fd] * src/middleware/render.js (modified) * src/routes/hub.js (modified) * src/views/pages/hub-home.ejs (modified) * src/views/partials/profile-header.ejs (modified) fix: PrutFolio header + roster show the SITE OWNER's photo, not the ... Sun, 14 Jun 2026 16:28:57 GMT roboburr [a64f642] * src/routes/admin-users.js (modified) * src/views/pages/admin-users.ejs (modified) admin: read-only ("View mode") configurable per user in Admin -> ... 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:17:14 GMT roboburr [8cb1dc7] * src/middleware/auth.js (modified) * src/middleware/render.js (modified) * src/routes/admin-comments.js (modified) * src/routes/admin-sites.js (modified) * src/routes/admin.js (modified) * src/views/pages/admin-comments.ejs (modified) * src/views/pages/hub-home.ejs (modified) * src/views/pages/my-site.ejs (added) * src/views/partials/topnav.ejs (modified) hub: artist self-management — owner manages their own subsite ... 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:42:44 GMT roboburr [337ec5a] * src/views/pages/hub-home.ejs (modified) hub: minimal auth nav over the hero on the overview (login back) ... 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 15:21:25 GMT roboburr [6e0249f] * 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: generic home page (not owned by any user) + admin-managed ... Sun, 14 Jun 2026 15:15:52 GMT roboburr [743bb81] * src/routes/hub.js (modified) * src/views/pages/hub-home.ejs (modified) hub: fix /user/:slug showed the overview instead of the site + ... Sun, 14 Jun 2026 15:09:49 GMT roboburr [4d7443b] * src/routes/hub.js (modified) * src/views/pages/hub-home.ejs (modified) hub: home page redesigned as a label landing page Separate landing ... Sun, 14 Jun 2026 14:59:41 GMT roboburr [bf61be7] * src/middleware/site.js (modified) * src/routes/hub.js (added) * src/server.js (modified) * src/views/pages/hub-home.ejs (added) hub: company overview on / (latest posts from all users) + /user/ ... Sun, 14 Jun 2026 14:53:03 GMT roboburr [52215bc] * src/config/database.js (modified) * src/services/SettingsService.js (modified) * src/views/pages/admin-settings.ejs (modified) tenancy: /gebruikers -> /user/ in settings text + comments (Robin's ... Sun, 14 Jun 2026 08:33:10 GMT roboburr [2cc887b] * src/middleware/render.js (modified) * src/views/pages/admin.ejs (modified) * src/views/partials/bottom-tab.ejs (modified) * src/views/partials/topnav.ejs (modified) tenancy: Prutter in hub only; Account tile removed from admin; ... Sun, 14 Jun 2026 08:29:39 GMT roboburr [8b014ef] * src/routes/admin-sites.js (modified) * src/views/pages/admin-audio.ejs (modified) * src/views/pages/admin-comments.ejs (modified) * src/views/pages/admin-playlists.ejs (modified) * src/views/pages/admin-settings.ejs (modified) * src/views/pages/admin-site-edit.ejs (modified) * src/views/pages/admin-sites.ejs (modified) * src/views/pages/admin-users.ejs (modified) admin: one consistent "← Admin" back button on all admin pages ... Sun, 14 Jun 2026 08:21:55 GMT roboburr [07775b7] * src/routes/admin-sites.js (modified) * src/views/pages/admin-site-edit.ejs (modified) tenancy: Appearance page back link is mode-aware (solo -> Admin ... Sun, 14 Jun 2026 08:18:50 GMT roboburr [6351545] * src/config/database.js (modified) * src/middleware/site.js (modified) * src/routes/admin-settings.js (added) * src/routes/admin.js (modified) * src/server.js (modified) * src/services/SettingsService.js (added) * src/views/pages/admin-settings.ejs (added) * src/views/pages/admin.ejs (modified) tenancy: runtime Solo/Hub mode + mode-aware /admin (Phase 1) Admin ... Sun, 14 Jun 2026 07:31:23 GMT roboburr [9e27d64] * .env.example (modified) * package-lock.json (modified) * package.json (modified) * scripts/reset-admin.mjs (added) * src/config/google.js (modified) * src/config/mailer.js (added) * src/routes/account.js (modified) * src/routes/auth.js (modified) * src/server.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/auth-login.ejs (modified) * src/views/pages/auth-register.ejs (modified) * src/views/pages/auth-reset-request.ejs (modified) * src/views/pages/auth-reset.ejs (modified) * src/views/pages/welcome.ejs (modified) * src/views/partials/shared-styles.ejs (modified) auth: password admin + per-instance Google for listeners (no broker) ... Sun, 14 Jun 2026 04:39:57 GMT roboburr [c80e78b] * .env.example (modified) * src/config/database.js (modified) * src/config/google.js (added) * src/routes/account.js (modified) * src/routes/auth.js (modified) * src/views/pages/account.ejs (modified) * src/views/pages/auth-login.ejs (modified) * src/views/pages/welcome.ejs (modified) * src/views/partials/shared-styles.ejs (modified) auth: replace username/password with Google login Listeners (and ... 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)