Skip to content
This repository was archived by the owner on Jul 7, 2025. It is now read-only.

Conversation

@nanu-c
Copy link
Collaborator

@nanu-c nanu-c commented Apr 8, 2021

This is for tracking progress on the groupsv2 support. This is mostly done in the https://github.com/signal-golang/textsecure repository but here is the work coordinated. The coresponding branch is https://github.com/signal-golang/textsecure/tree/groups_v2

Basic support for different group v2 update types signal-golang/textsecure

Basic tasks in signal-golang/textsecure

  • tell signal that we support groupsv2
  • add support for profileKeys and profile name
  • queryGroupChangeFromServer and update the local group state
  • add a members list with user states like
    • admin
    • pending member
    • invited member
    • normal member
  • send message
  • receive groupv2 messages
  • support groups with invitation link
  • accept group invitations
  • handle received message error="not implemented message type unindentified sender%
  • update groupsv1 to groupsv2
  • validate group

Process and decrypt incoming groupsv2 messages

  • AddMembers
  • DeleteMembers
  • ModifyMemberRoles
  • ModifyMemberProfileKeys
  • AddPendingMembers
  • DeletePendingMembers
  • PromotePendingMembers
  • ModifyTitle
  • ModifyAvatar
  • ModifyDisappearingMessagesTimer
  • ModifyAttributesAccess
  • ModifyMemberAccess
  • ModifyAddFromInviteLinkAccess
  • AddRequestingMembers
  • DeleteRequestingMembers
  • PromoteRequestingMembers
  • ModifyInviteLinkPassword

Send and encrypt groupsv2 messages

  • AddMembers
  • DeleteMembers
  • ModifyMemberRoles
  • ModifyMemberProfileKeys
  • AddPendingMembers
  • DeletePendingMembers
  • PromotePendingMembers
  • ModifyTitle
  • ModifyAvatar
  • ModifyDisappearingMessagesTimer
  • ModifyAttributesAccess
  • ModifyMemberAccess
  • ModifyAddFromInviteLinkAccess
  • AddRequestingMembers
  • DeleteRequestingMembers
  • PromoteRequestingMembers
  • ModifyInviteLinkPassword

handle groupsV2 in axolotl + axolotl-web in the user interface

  • Create groups
  • Accept group invitations
  • Show group profile
  • Add group settings while respecting the admin rights
    • AddMembers
    • DeleteMembers
    • ModifyMemberRoles
    • ModifyMemberProfileKeys
    • AddPendingMembers
    • DeletePendingMembers
    • PromotePendingMembers
    • ModifyTitle
    • ModifyAvatar
    • ModifyDisappearingMessagesTimer
    • ModifyAttributesAccess
    • ModifyMemberAccess
    • ModifyAddFromInviteLinkAccess
    • AddRequestingMembers
    • DeleteRequestingMembers
    • PromoteRequestingMembers
    • ModifyInviteLinkPassword

Packaging with rust dependencies

  • clickable armhf
  • clickable arm64
  • deb
  • flatpack
  • appimage
  • ci

Testing all environements

  • clickable armhf
  • clickable arm64
  • deb
  • flatpack
  • appimage

@Flaburgan
Copy link
Collaborator

😱😱 so huge. You probably want to open PR based on that branch and do reviews separately.
Also, I would be interested of what we consider being the minimum viable scope for groupsv2. For example, we don't need admin features from the beginning. Could you indicate that next to the matching tasks?

@olof-nord
Copy link
Collaborator

screamscream so huge. You probably want to open PR based on that branch and do reviews separately.
Also, I would be interested of what we consider being the minimum viable scope for groupsv2. For example, we don't need admin features from the beginning. Could you indicate that next to the matching tasks?

That is a very good idea. Perhaps the list in the PR description could be split up into smaller chunks, which on its own could be completed? Looking at the GitHub Projects tab, it looks like that could be a possible option.

@nanu-c
Copy link
Collaborator Author

nanu-c commented Apr 14, 2021

I think it's ready when, we have at least working.

  • some way to be added to a group
  • to be invited in groups with a group link
  • to be invited in groups without a group link
  • send a message to a group
  • receive messages
  • update the local memberslist when someone joins/leaves the group
  • smooth transition from the latest release to this version without modifying the config file, that means also:
  • support in axolotl-web to set and change the profilename

It's true, the other things we can delay to other mr.
Also I found a shortcut how we can avoid to have to much done in the beginning. The latest state of a group can either received by peers of the group or can be fetched from the signal server. On a change, I now fetch the latest group state from the server and I ignore the messages by my peers. That means more traffic for the server but i don't think groups are changing that often, that we get rate limited.

@nanu-c nanu-c marked this pull request as ready for review May 5, 2021 17:49
@nanu-c
Copy link
Collaborator Author

nanu-c commented May 5, 2021

@olof-nord the file ending up in the click package is always libzkgroup-linux_x86_64-v0.8.0.so Actually a click package is a kind of modified deb package and can be extraced by an archive program. Then in there is data.tar.gz and this is the folder that will be extracted.

@nanu-c
Copy link
Collaborator Author

nanu-c commented May 5, 2021

Maybe it's just the wrong name. Ah no, looking at the code, it's intended like that.

@nanu-c
Copy link
Collaborator Author

nanu-c commented May 5, 2021

now we have $GITHUB_WORKSPACE including all subfolders in in the textsecure.nanuc_0.9.9-grouspv2_armhf.click

@nanu-c nanu-c merged commit bd03513 into main May 28, 2021
@nanu-c nanu-c deleted the groupsv2_2 branch July 3, 2021 22:58
@Id2ndR Id2ndR mentioned this pull request Jul 10, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants