Ignore:
Timestamp:
07/25/2026 08:09:19 AM (7 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
c66cbb4
Parents:
e62f65d
Message:

Guardian 2: zwaai-badge in Berichten + snelle antwoorden (item 3 af)

De ontvangende ward ziet een zwaai nu als zodanig: in Berichten staat "X 👋
zwaaide naar je" met snelle-antwoord-knoppen (Wat leuk! / Bel me even / 👋 Terug).
Zo kan het kind terugreageren zonder ooit te publiceren: het antwoord is een prive
direct-note terug naar de guardian (zelfde shaer:wave-leg, cross-instance met
retry). Alleen zichtbaar op een echte zwaai (ap_mentions.wave) en alleen als je
mag schrijven (canMutate).

Changed files:
src/services/ActivityPubService.js

  • getNotifications: mention draagt nu wave + actorUri mee

src/views/partials/msg-item.ejs

  • zwaai-label + quick-reply-formulier (3 voorgebakken knoppen)

src/routes/posts.js

  • POST /messages/quick-reply: canned prive-note terug naar de zwaaier

src/views/pages/messages.ejs

  • success-melding wave_sent

src/services/i18n.js

  • msg.waved_at_you / wave_r1 / wave_r2 / wave_back / wave_sent (nl/en/de)

remarks: npm test 167/167; quick-reply auth-gated (requireSiteManager). Hiermee is
item 3 (DM/zwaai) rond: guardian zwaait, ward ziet het en antwoordt met een tik,
niemand publiceert.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ActivityPubService.js

    re62f65d rad6f62a  
    30273027  } catch { /* ignore */ }
    30283028  try {
    3029     for (const r of db.prepare('SELECT object_uri, note_url, actor_uri, actor_name, actor_handle, actor_icon, actor_url, content, created_at FROM ap_mentions WHERE slug = ? ORDER BY created_at DESC LIMIT ?').all(slug, L)) {
    3030       out.push({ type: 'mention', name: r.actor_name, handle: r.actor_handle, url: r.actor_url || r.actor_uri, icon: r.actor_icon, content: stripLeadingMentions(r.content), note_url: r.note_url || r.object_uri, created_at: r.created_at });
     3029    for (const r of db.prepare('SELECT object_uri, note_url, actor_uri, actor_name, actor_handle, actor_icon, actor_url, content, wave, created_at FROM ap_mentions WHERE slug = ? ORDER BY created_at DESC LIMIT ?').all(slug, L)) {
     3030      out.push({ type: 'mention', name: r.actor_name, handle: r.actor_handle, url: r.actor_url || r.actor_uri, icon: r.actor_icon, content: stripLeadingMentions(r.content), note_url: r.note_url || r.object_uri, wave: r.wave ? 1 : 0, actorUri: r.actor_uri, created_at: r.created_at });
    30313031    }
    30323032  } catch { /* ignore */ }
Note: See TracChangeset for help on using the changeset viewer.