Ignore:
Timestamp:
07/25/2026 08:01:21 AM (7 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
ad6f62a
Parents:
5c373b8
Message:

Guardian 2: de zwaai (shaer:wave), warmte zonder publiceren

Een guardian kan met één tik naar een ward zwaaien: "denkt aan je". Het is een
prive direct-note met een shaer:wave-marker, spiegelbeeld van de reddingsboei
(shaer:helpRequest): nooit een feed-post, geen boosts, geen timeline. Niet-shaer
clients zien gewoon een DM; een shaer-client kan het als zacht seintje tonen. De
guardian publiceert dus niks.

Rijdt op het bestaande direct-note-pad (delivery.js), dus cross-instance en met
retry. De ward ontvangt 'm als prive-mention (marker opgeslagen in ap_mentions.wave
voor latere weergave).

Changed files:
src/services/guardianship/notes.js

  • waveProps/isWave naast de helpRequest-marker

src/services/guardianship/index.js

  • waveProps/isWave geexporteerd

src/services/guardianship/delivery.js

  • deliverDirectNote neemt een wave-vlag, stempelt ap_outbox.wave

src/services/ActivityPubService.js

  • buildReplyNote stempelt shaer:wave; inbound mention slaat wave op

src/config/database.js

  • ap_outbox.wave + ap_mentions.wave

src/routes/guardian2.js

  • POST /api/wave (alleen naar je eigen ward); wave/waved strings

src/views/pages/guardian2.ejs, src/assets/js/guardian2.js

  • Zwaai-knop op elke ward-kaart

src/services/i18n.js

  • guardian2 wave/waved (nl/en/de)

remarks: npm test 167/167; wave-api auth-gated. Ward-kant toont 'm nu als prive-
mention (de emoji draagt 'm); een wave-badge in Berichten + het DM-antwoord-draadje
zijn de volgende, kleine stap.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/guardianship/notes.js

    r5c373b8 re62f65d  
    1818}
    1919
    20 export default { helpRequestProps, isHelpRequest };
     20/** shaer:wave: a gentle "thinking of you" from a guardian to its ward. A
     21 *  private nudge, never a feed post; non-shaer clients see a plain DM. */
     22export function waveProps(post) {
     23  return (post && post.visibility === 'direct' && post.wave)
     24    ? { 'shaer:wave': true }
     25    : {};
     26}
     27
     28/** True when an incoming note is a wave. */
     29export function isWave(object) {
     30  return !!object && (object['shaer:wave'] === true || object.wave === true);
     31}
     32
     33export default { helpRequestProps, isHelpRequest, waveProps, isWave };
Note: See TracChangeset for help on using the changeset viewer.