flutter_app/SPEC.md

90 lines
3.1 KiB
Markdown
Raw Normal View History

2021-03-01 23:39:27 +00:00
# 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