Changeset 15f1cb5 in Klonkt for test/c2s-compose.test.js


Ignore:
Timestamp:
07/30/2026 08:09:51 AM (6 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
2a10445
Parents:
79f00c5
Message:

De tegel speelt de video als zijn eigen thumbnail

Robins aanwijzing (30-7) bij de (untitled)-gradient: een videopost uit de app
mag in het Klonkt-grid de video zelf als thumbnail afspelen. De machinerie
bestond al (animated covers renderen als muted-loop video in de tegel);
C2S-posts zetten alleen nooit een cover.

Nu promoveert de eerste video van een C2S-post tot cover_video_url, met
bewust GEEN cover-image ernaast: de image-tak van de tegel zou winnen en de
tegel bevriezen. Een fotopost krijgt zijn eerste foto als cover, dus ook die
verliest de (untitled)-gradient.

In buildNote schuiven de C2S-entries voor de cover-push: de URL-dedupe houdt
de eerste, en dat moet de entry zijn die zijn mediaType en poster kent,
anders verloor de federatie het icon zodra de video ook cover werd.

Changed files:
src/services/ActivityPubService.js

  • c2sCreatePost: eerste video wordt cover-video, eerste foto cover-image
  • buildNote: C2S-entries voor de covers, zodat de rijke entry wint

test/c2s-compose.test.js

  • de tegelbelofte: cover-video gezet, geen cover-image ernaast, en de dedupe houdt de entry met de poster

remarks: 338 tests groen.

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

File:
1 edited

Legend:

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

    r79f00c5 r15f1cb5  
    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');
     91    assert.equal(post.cover_image_url, null);
     92    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');
    8794  } finally {
    8895    if (prev === undefined) delete process.env.MEDIA_PATH; else process.env.MEDIA_PATH = prev;
     
    115122  });
    116123  assert.equal(r.status, 201, 'a picture can be the whole message');
     124  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');
    117127});
Note: See TracChangeset for help on using the changeset viewer.