90 lines
3.1 KiB
Markdown
90 lines
3.1 KiB
Markdown
|
# 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
|