source: Klonkt/src/services/guardianship/notes.js@ e62f65d

main
Last change on this file since e62f65d was e62f65d, checked in by Robin <roboburr@…>, 7 weeks ago

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@…>

  • Property mode set to 100644
File size: 1.1 KB
RevLine 
[6b5d7da]1/**
2 * Guardianship (FEP-633c) — note properties.
3 *
4 * The shaer:helpRequest flag (spec 5.2.1): a ward's call for help, only ever
5 * on direct notes. Everyone who does not speak shaer can ignore it.
6 */
7
8/** Extra JSON-LD properties for an outgoing note built from an ap_outbox row. */
9export function helpRequestProps(post) {
10 return (post && post.visibility === 'direct' && post.help_request)
11 ? { 'shaer:helpRequest': true }
12 : {};
13}
14
15/** True when an incoming (C2S or S2S) note object carries the flag. */
16export function isHelpRequest(object) {
17 return !!object && (object['shaer:helpRequest'] === true || object.helpRequest === true);
18}
19
[e62f65d]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 TracBrowser for help on using the repository browser.