2023-04-13 00:46:00 +03:00
|
|
|
/- e=epic, g=groups
|
|
|
|
|%
|
2023-07-13 20:46:25 +03:00
|
|
|
:: [compat] protocol-versioning scheme
|
|
|
|
::
|
|
|
|
:: adopted from :groups, slightly modified.
|
|
|
|
::
|
|
|
|
:: for our action/update marks, we
|
|
|
|
:: - *must* support our version (+okay)
|
|
|
|
:: - *should* support previous versions (especially actions)
|
|
|
|
:: - but *can't* support future versions
|
|
|
|
::
|
|
|
|
:: in the case of updates at unsupported protocol versions,
|
|
|
|
:: we backoff and subscribe for version changes (/epic).
|
|
|
|
:: (this alone is unlikely to help with future versions,
|
|
|
|
:: but perhaps our peer will downgrade. in the meantime,
|
|
|
|
:: we wait to be upgraded.)
|
|
|
|
::
|
|
|
|
+| %compat
|
|
|
|
++ okay `epic`0
|
|
|
|
++ mar
|
|
|
|
|%
|
|
|
|
++ base
|
|
|
|
|%
|
|
|
|
+$ act %contact-action
|
|
|
|
+$ upd %contact-update
|
|
|
|
--
|
|
|
|
::
|
|
|
|
++ act `mark`^~((rap 3 *act:base '-' (scot %ud okay) ~))
|
|
|
|
++ upd `mark`^~((rap 3 *upd:base '-' (scot %ud okay) ~))
|
|
|
|
--
|
|
|
|
::
|
|
|
|
+| %types
|
2023-04-13 00:46:00 +03:00
|
|
|
+$ contact
|
|
|
|
$: nickname=@t
|
|
|
|
bio=@t
|
|
|
|
status=@t
|
|
|
|
color=@ux
|
|
|
|
avatar=(unit @t)
|
|
|
|
cover=(unit @t)
|
|
|
|
groups=(set flag:g)
|
|
|
|
==
|
|
|
|
::
|
|
|
|
+$ foreign [for=$@(~ profile) sag=$@(~ saga)]
|
|
|
|
+$ profile [wen=@da con=$@(~ contact)]
|
|
|
|
+$ rolodex (map ship foreign)
|
|
|
|
::
|
|
|
|
+$ epic epic:e
|
|
|
|
+$ saga
|
|
|
|
$@ $? %want :: subscribing
|
|
|
|
%fail :: %want failed
|
|
|
|
%lost :: epic %fail
|
|
|
|
~ :: none intended
|
|
|
|
==
|
|
|
|
saga:e
|
|
|
|
::
|
|
|
|
+$ field
|
|
|
|
$% [%nickname nickname=@t]
|
|
|
|
[%bio bio=@t]
|
|
|
|
[%status status=@t]
|
|
|
|
[%color color=@ux]
|
|
|
|
[%avatar avatar=(unit @t)]
|
|
|
|
[%cover cover=(unit @t)]
|
|
|
|
[%add-group =flag:g]
|
|
|
|
[%del-group =flag:g]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
+$ action
|
|
|
|
:: %anon: delete our profile
|
|
|
|
:: %edit: change our profile
|
|
|
|
:: %meet: track a peer
|
|
|
|
:: %heed: follow a peer
|
|
|
|
:: %drop: discard a peer
|
|
|
|
:: %snub: unfollow a peer
|
|
|
|
::
|
|
|
|
$% [%anon ~]
|
|
|
|
[%edit p=(list field)]
|
|
|
|
[%meet p=(list ship)]
|
|
|
|
[%heed p=(list ship)]
|
|
|
|
[%drop p=(list ship)]
|
|
|
|
[%snub p=(list ship)]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
+$ update :: network
|
|
|
|
$% [%full profile]
|
|
|
|
==
|
|
|
|
::
|
|
|
|
+$ news :: local
|
|
|
|
[who=ship con=$@(~ contact)]
|
|
|
|
--
|