Changeset 5412cbb in Klonkt for test/ward-pwa.test.js


Ignore:
Timestamp:
08/12/2026 08:38:08 PM (3 months ago)
Author:
Robin <roboburr@…>
Children:
2086ea2
Parents:
4bb93aa
Message:

Ward-PWA: de (+) voor een nieuw gesprek

De hemel toont alleen met wie je al sprak; de (+) is de deur naar de
rest. Hij zit op de OORSPRONG van het veld en pant en zoomt met de
gezichten mee, zodat hij altijd het midden van de vliegende avatars is,
waar de hemel ook heen drijft. Precies waar de plaatsing bewust ruimte
vrijhoudt: elk gezicht hangt minstens 1.4 cel naar buiten.

De tik kiest eerst een gezicht en pas daarna de (+), met een raakzone
die meeschaalt met de zoom. De kiezer erachter toont iedereen met een
volgrelatie, welke kant op dan ook: dezelfde bron als de Connect-pagina
(listConnections), want de vraag is dezelfde. Kies iemand en het lege
gesprek opent gewoon; het eerste bericht maakt het echt.

Changed files:
src/routes/ward.js

  • /api/friends: following + followers samengevoegd, met naam en icoon

src/assets/js/ward-sky.js

  • de (+) getekend op de veldoorsprong; onNew naast onPick

src/assets/js/ward.js

  • de vriendenkiezer, die doorvalt in openThread

src/views/pages/ward.ejs + src/assets/css/ward.css

  • de kiezer als dialoog

src/services/i18n.js

  • twee sleutels in nl, en, de

test/ward-pwa.test.js

  • beide richtingen zijn een deur, en elke deur heeft een naam

remarks: 899 tests groen.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • test/ward-pwa.test.js

    r4bb93aa r5412cbb  
    225225  assert.match(css, /#thread\s*\{[^}]*display:\s*flex/);
    226226});
     227
     228test('de vrienden achter de (+) komen uit beide richtingen', async () => {
     229  // Iemand die JIJ volgt en iemand die JOU volgt: allebei een deur. De hemel
     230  // toont alleen met wie je al sprak; de kiezer moet ruimer zijn, anders kun
     231  // je nooit een EERSTE bericht sturen.
     232  db.prepare(`INSERT INTO ap_following (slug, actor_uri, handle, name, icon, follow_id, status)
     233              VALUES ('mee', 'https://elders.example/ap/users/tante', '@tante@elders.example', 'Tante', NULL, 'f-1', 'accepted')`).run();
     234  db.prepare(`INSERT INTO ap_followers (slug, actor_uri, handle, name)
     235              VALUES ('mee', 'https://elders.example/ap/users/neef', '@neef@elders.example', 'Neef')`).run();
     236
     237  const { server, port } = await listen(appWith({ user: { id: 'u1' } }));
     238  try {
     239    const r = await fetch(`http://127.0.0.1:${port}/ward/api/friends`);
     240    assert.equal(r.status, 200);
     241    const { items } = await r.json();
     242    const uris = items.map((f) => f.uri);
     243    assert.ok(uris.includes('https://elders.example/ap/users/tante'), 'wie je volgt ontbreekt');
     244    assert.ok(uris.includes('https://elders.example/ap/users/neef'), 'wie jou volgt ontbreekt');
     245    // Elke deur heeft een leesbare naam, ook zonder display name.
     246    assert.ok(items.every((f) => f.name && f.handle));
     247  } finally { server.close(); }
     248});
Note: See TracChangeset for help on using the changeset viewer.