Changeset 2a10445 in Klonkt for test/c2s-compose.test.js


Ignore:
Timestamp:
07/30/2026 08:23:47 AM (6 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
094f7d0
Parents:
15f1cb5
Message:

De tegel leest zijn beeld uit de content, de cover-kopie is weg

Robins melding: de video stond dubbel op de postpagina, een keer afspeelbaar
in de content en een keer als cover erboven. Terecht; de cover-promotie van
vanmiddag was de verkeerde helft van de oplossing.

Nu doet de tegel wat de Cirkel-kaart al deed: zijn beeld AFLEIDEN uit de
content. post-tile en post-card pakken de eerste video (met zijn poster) of
de eerste afbeelding uit post.content als er geen echte cover is, en de
grid-tegel speelt de video muted-loopend als zijn eigen thumbnail. Het
post-model blijft single-source: c2sCreatePost zet geen covers meer.

En zelfherstel voor wat er al staat: covers die hun eigen content-media
dupliceren (het korte cover-promotie-venster) worden bij boot leeggemaakt;
idempotent en raakt alleen die gevallen.

Changed files:
src/services/ActivityPubService.js

  • c2sCreatePost zet geen covers meer; media leeft alleen in de content

src/views/partials/post-tile.ejs

  • content-afgeleide fallback: video (met poster) of afbeelding

src/views/partials/post-card.ejs

  • dezelfde fallback in de lijstweergave

src/config/database.js

  • zelfherstel: cover-kopieen van content-media leeggemaakt

test/c2s-compose.test.js

  • covers blijven null; de video federeert precies een keer

remarks: 338 tests groen, server start.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/c2s-compose.test.js

    r15f1cb5 r2a10445  
    8585    assert.equal(vid.icon && vid.icon.url, 'https://test.example/media/reply-media/film.mp4.poster.jpg',
    8686      'the poster federates as the attachment icon');
    87     // The web tile plays the video as its own thumbnail (Robins aanwijzing):
    88     // the first video becomes the cover video, with NO cover image beside it,
    89     // because the tile's image branch would win and freeze the tile.
    90     assert.equal(post.cover_video_url, '/media/reply-media/film.mp4');
     87    // NO cover (Robins besluit): a cover next to the content showed the same
     88    // video twice on the post page. The tiles derive their picture from the
     89    // content (post-tile/post-card), so the post model stays single-source.
     90    assert.equal(post.cover_video_url, null);
    9191    assert.equal(post.cover_image_url, null);
    9292    assert.equal((note.attachment || []).filter((a) => a.url.endsWith('film.mp4')).length, 1,
    93       'cover video + attachment dedupe to the one entry that knows its poster');
     93      'and the video federates exactly once');
    9494  } finally {
    9595    if (prev === undefined) delete process.env.MEDIA_PATH; else process.env.MEDIA_PATH = prev;
     
    123123  assert.equal(r.status, 201, 'a picture can be the whole message');
    124124  const post = db.prepare('SELECT * FROM posts WHERE id = ?').get(r.id);
    125   assert.equal(post.cover_image_url, '/media/reply-media/alleen.jpg',
    126     'a photo post fronts its photo instead of the (untitled) gradient');
     125  assert.equal(post.cover_image_url, null, 'no cover: the tile reads the photo from the content');
    127126});
Note: See TracChangeset for help on using the changeset viewer.