Changeset 5f47671 in Klonkt


Ignore:
Timestamp:
06/20/2026 02:37:34 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
16b0c00
Parents:
1720482
Message:

fix: tablet opens full-player + clean search snippet

  • audio-player: the mini-player click only jumps to the post on true desktop (≥1200, no full-player). Tablet + phone now open the full-player (sheet), like mobile. (Was: ≥768 counted as desktop → tablet jumped to the post.) buster audio-player.js?v=20.
  • search: FTS snippet is cleaned up — shortcodes ([[playlist:…]]) and markdown removed, <mark> highlights kept; falls back to the excerpt if nothing readable remains.

Co-Authored-By: Claude <noreply@…>

Location:
src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • src/assets/js/audio-player.js

    r1720482 r5f47671  
    605605  expandTrigger.addEventListener('click', () => {
    606606    const t = queue[currentIndex];
    607     const isDesktop = window.matchMedia && window.matchMedia('(min-width: 768px)').matches;
    608     if (isDesktop && t) {
     607    // Alleen op échte desktop (≥1200, geen full-player) springen we naar de post.
     608    // Tablet + telefoon hebben een full-player → open die (zoals mobiel).
     609    const jumpToPost = !hasFullPlayer();
     610    if (jumpToPost && t) {
    609611      // 1) Track speelde vanuit een post → die URL kennen we al.
    610612      if (t.postUrl) { goToPost(t.postUrl, t.id); return; }
  • src/routes/search.js

    r1720482 r5f47671  
    3737function likeArg(q) {
    3838  return '%' + q.replace(/[%_\\]/g, '\\$&') + '%';
     39}
     40
     41// Maak de FTS-snippet leesbaar: shortcodes ([[...]]) en markdown-tekens eruit.
     42// De <mark>…</mark>-highlights van FTS blijven staan. Valt terug op de excerpt
     43// (geëscaped) als er na het schoonmaken niets leesbaars overblijft.
     44function cleanSnippet(html, excerpt) {
     45  const esc = (s) => s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
     46  const s = (html || '')
     47    .replace(/!\[[^\]]*\]\([^)]*\)/g, ' ')   // markdown-afbeeldingen
     48    .replace(/\[\[[^\]]*?\]\]/g, ' ')         // shortcodes (incl. <mark> erin)
     49    .replace(/\[\[|\]\]/g, ' ')               // losse haakjes door truncatie
     50    .replace(/[#>*_`~]+/g, ' ')               // markdown-opmaaktekens
     51    .replace(/\s+/g, ' ')
     52    .trim();
     53  if (!s || /^[…\s]*$/.test(s)) return esc((excerpt || '').slice(0, 160));
     54  return s;
    3955}
    4056
     
    85101        LIMIT 50
    86102      `).all(ftsQuery, site.id);
     103      results = results.map((r) => ({ ...r, snippet: cleanSnippet(r.snippet, r.excerpt) }));
    87104    } catch (err) {
    88105      queryError = err.message;
  • src/views/shell.ejs

    r1720482 r5f47671  
    300300     ?v=N — cache-buster: bump bij elke audio-player.js wijziging zodat
    301301     Cloudflare (max-age=1y) niet de oude versie blijft serveren. -->
    302 <script src="/assets/js/audio-player.js?v=19"></script>
     302<script src="/assets/js/audio-player.js?v=20"></script>
    303303<!-- Eigen custom media-embeds (YouTube/SoundCloud/Spotify) via de echte
    304304     player-API's + gedeelde mutual-exclusion registry met de site-speler. -->
Note: See TracChangeset for help on using the changeset viewer.