From 44ff3bc66fc62891f2c788f46bc5707e35a8eb98 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Mon, 1 Mar 2021 15:39:27 -0800 Subject: [PATCH] Specification Draft --- SPEC.md | 89 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 SPEC.md diff --git a/SPEC.md b/SPEC.md new file mode 100644 index 0000000..1b83ba8 --- /dev/null +++ b/SPEC.md @@ -0,0 +1,89 @@ +# Specification + +This document outlines the minimal functionality necessary for us to consider Flwtch the canonical +Cwtch UI implementation. + +This functionality is implemented in libCwtch and so this work captures just the UI work +required - any new Cwtch work is beyond the scope of this initial spec. + + +## Home Pane (formally Profile Pane) + +- [ ] Unlock a profile with a password +- [ ] Create a new Profile + - [ ] With a password + - [ ] Without a password +- [ ] Display all unlocked profiles + - [ ] Profile Picture + - [ ] Profile Name + - [ ] Edit Button +- [ ] Navigate to a specific Profile Contacts Pane (when clicking on a Profile row) +- [ ] Navigate to a specific Profile Management Pane (edit Button) +- [ ] Navigate to the Settings Pane (Settings Button in Action bar) + +## Settings Pane + +- [ ] Switch Dark / Light Theme +- [ ] Switch Language +- [ ] Enable/Disable Experiments +- [ ] Accessibility Settings (Zoom etc. - needs a deep dive into flutter) +- [ ] Display Build & Version Info +- [ ] Acknowledgements & Credits + +## Profile Management Pane + +- [ ] Update Profile Name +- [ ] Update Profile Password +- [ ] Delete a Profile +- [ ] Copy Profile Onion Address + +## Profile Pane (formally Contacts Pane) + +- [ ] Display Profile-specific status + - [ ] Profile Name + - [ ] Online Status + - [ ] Add Contact Button Navigates to Add Contact Pane +- [ ] Display all Peer Contacts + - [ ] Profile Picture + - [ ] Name + - [ ] Onion + - [ ] Online Status + - [ ] Unread Messages Badge + - [ ] In Order of Most Recent Message / Activity + - [ ] With Accept / Reject Heart/Trash Bin Option +- [ ] Display all Group Contacts (if experiment is enabled) +- [ ] Navigate to a specific Contact or Group Message Pane (Contact Row) +- [ ] Pressing Back should go back to the home pane + +## Add Contact Pane +- [ ] Allowing Copying the Profile Onion Address for Sharing +- [ ] Allowing Pasting a Peer Onion Address for adding to Contacts (with optional name field) +- [ ] Allowing Pasting a Group Invite / Server Address (if group experiment is enabled) + +## Message Pane + +- [ ] Display Messages from Contacts +- [ ] Allowing copying the text of a specific message (on mobile) +- [ ] Send a message to the specific Contact / Group +- [ ] Display the Acknowledgement status of a message +- [ ] Navigate to the specific Contact or Group Settings Pane ( Settings Button in Action bar) +- [ ] Emoji Support + - [ ] Display in-message emoji text labels e.g. `:label:` as emoji. + - [ ] Functional Emoji Drawer Widget for Selection +- [ ] Display a warning if Contact / Server is offline (Broken Heart) +- [ ] Display a warning for configuring peer history +- [ ] Pressing Back should go back to the contacts pane + +## Contact Settings Pane +- [ ] Update local name of contact +- [ ] Copy contact onion address +- [ ] Block/Unblock a contact +- [ ] Configure Peer History Saving +- [ ] Pressing Back should go back to the message pane + +## Group Settings Pane (experimental) +- [ ] Gated behind group experiment +- [ ] Update local name of group +- [ ] Get Group Invite +- [ ] Leave Group +- [ ] Pressing Back should go back to the message pane for the group