Changeset b67edbd in Klonkt for src/routes/posts.js


Ignore:
Timestamp:
08/18/2026 06:47:58 PM (3 weeks ago)
Author:
Bart <bart@…>
Branches:
main
Children:
7421147
Parents:
9622f20
git-author:
Bart <bart@…> (08/18/2026 12:19:20 AM)
git-committer:
Bart <bart@…> (08/18/2026 06:47:58 PM)
Message:

Leesweergave: /read, en fragmenten in de richting van de scroll

De vorige opzet sprong naar het andere uiteinde van de scroll en schoof het
bericht daarna "vloeiend" in beeld -- de truc van PrutCMS, en een die je voelt.
Nu groeit de stroom gewoon: een schildwacht boven en onder het laatste bericht
haalt het volgende of vorige fragment op en zet het erbij. Bij invoegen BOVEN
wordt de ingevoegde hoogte gemeten en met scrollBy gecompenseerd, anders
verspringt de tekst onder je duim.

De grens tussen berichten is CSS, geen JavaScript: scroll-snap-type: y proximity
op de stroom, scroll-snap-align: start per bericht. Proximity en niet mandatory,
want binnen een lang bericht moet je vrij kunnen scrollen.

En het heet read, niet lees: een pad is geen plek voor een Nederlandse
werkwoordsvorm.

Co-Authored-By: Claude Opus 5 <claude@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/posts.js

    r9622f20 rb67edbd  
    149149  'authorize_interaction', 'fediverse', 'news', 'following', 'notifications', 'blocking',
    150150  'paid', 'push', 'guardian',
    151   // De meeslepende tijdlijn (Barts idee, naar bartoverkamp.nl). Gereserveerd
     151  // De meeslepende leesweergave. Gereserveerd
    152152  // omdat een bericht met deze slug de route anders zou overschaduwen.
    153   'lees',
     153  'read',
    154154]);
    155155
     
    264264//
    265265// ?partial=1 levert alleen het artikel, want dat is wat de schildwacht inruilt.
    266 router.get('/lees/:slug?', (req, res, next) => {
     266router.get('/read/:slug?', (req, res, next) => {
    267267  const site = res.locals.site;
    268268  if (!site) return next();
    269269
    270   // Zonder slug: het nieuwste bericht, zodat /lees een ingang is en niet een
     270  // Zonder slug: het nieuwste bericht, zodat /read een ingang is en niet een
    271271  // fout. Gepind eerst, net als op de voorpagina.
    272272  const post = req.params.slug
     
    291291    post, entry, newerPost, olderPost,
    292292    pageTitle: post.title || site.title,
    293     // on-lees zet de chrome weg; de mini-topnav blijft (chrome.ejs, _headerless).
    294     bodyClass: 'on-lees on-special',
     293    // on-read zet de chrome weg; de mini-topnav blijft (chrome.ejs, _headerless).
     294    bodyClass: 'on-read on-special',
     295    pageJs: 'read',
    295296  };
    296297  if (req.query.partial === '1' || req.headers['hx-request'] === 'true') {
    297     return renderPage(req, res, 'partials/lees-article', model);
     298    return renderPage(req, res, 'partials/read-article', model);
    298299  }
    299300  recordPageview(site.id, req);
    300   return renderPage(req, res, 'pages/lees', model);
     301  return renderPage(req, res, 'pages/read', model);
    301302});
    302303
Note: See TracChangeset for help on using the changeset viewer.