Add TODO.
This commit is contained in:
parent
d1869cd5d6
commit
404f785f21
1 changed files with 227 additions and 0 deletions
227
TODO.md
Normal file
227
TODO.md
Normal file
|
@ -0,0 +1,227 @@
|
||||||
|
# Weechat Matrix Scrip
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
- [O] Handle disconnects seamlessly
|
||||||
|
- [X] Handle send errors
|
||||||
|
- [X] Handle receive errors
|
||||||
|
- [X] Handle the disconnect properly
|
||||||
|
- [X] Reconnect if there is stuff to do and we're disconnected
|
||||||
|
- [X] Message queue timer.
|
||||||
|
- [O] Server buffer
|
||||||
|
- [X] Create server buffer
|
||||||
|
- [X] Merge with the core buffer if configured to do so
|
||||||
|
- [ ] Informational messages
|
||||||
|
- [X] Debugging
|
||||||
|
- [X] Profiling
|
||||||
|
- [O] Matrix
|
||||||
|
- [X] Login
|
||||||
|
- [ ] Logout
|
||||||
|
- [X] Sync
|
||||||
|
- [X] Send sync request after login
|
||||||
|
- [X] Parse sync response and store important data
|
||||||
|
- [X] Create Buffers for rooms
|
||||||
|
- [X] Populate nicklist
|
||||||
|
- [X] Print out received messages
|
||||||
|
- [O] Message Error handling
|
||||||
|
- [X] Login
|
||||||
|
- [X] Send messages
|
||||||
|
- [X] Sync
|
||||||
|
- [X] Redact
|
||||||
|
- [X] Topic
|
||||||
|
- [X] Join
|
||||||
|
- [X] Part
|
||||||
|
- [X] Invite
|
||||||
|
- [X] Backlog messages
|
||||||
|
- [ ] Try again
|
||||||
|
- [o] Send messages
|
||||||
|
- [X] Text
|
||||||
|
- [o] Html
|
||||||
|
- [X] Attributes
|
||||||
|
- [ ] Color
|
||||||
|
- [o] Parsing html to formated text
|
||||||
|
- [X] Attributes
|
||||||
|
- [X] Color
|
||||||
|
- [ ] Lists
|
||||||
|
- [X] Quotes
|
||||||
|
- [ ] Code
|
||||||
|
- [X] Topic
|
||||||
|
- [X] Print sent messages without waiting for a sync
|
||||||
|
- [X] Old message sync (rooms/{roomid}/messages)
|
||||||
|
- [X] Redactions
|
||||||
|
- [X] Power levels
|
||||||
|
- [X] Invite
|
||||||
|
- [X] Join room
|
||||||
|
- [X] Leave room
|
||||||
|
- [ ] Upload
|
||||||
|
- [ ] Presence
|
||||||
|
- [ ] Presence sending
|
||||||
|
- [ ] Presence setting
|
||||||
|
- [ ] Read marker
|
||||||
|
- [ ] Setting
|
||||||
|
- [ ] Sending
|
||||||
|
- [ ] Typing notifications
|
||||||
|
- [ ] Input change callback
|
||||||
|
- [ ] Sending out the notification
|
||||||
|
- [ ] Timer for the notification reset
|
||||||
|
- [ ] Sending out the reset of the notification
|
||||||
|
- [X] Process the HTTP messages and put them into a queue
|
||||||
|
- [X] Parse the json response
|
||||||
|
- [O] Configuration
|
||||||
|
- [X] Create default configuration
|
||||||
|
- [X] Read configuration from file
|
||||||
|
- [X] Save configuration
|
||||||
|
- [X] Server address
|
||||||
|
- [X] Auto connect
|
||||||
|
- [X] SSL verify on/off
|
||||||
|
- [ ] Presence sending
|
||||||
|
- [X] Sync max backlog
|
||||||
|
- [ ] Encrypt by default
|
||||||
|
- [ ] Typing notification enable/disable
|
||||||
|
- [X] Device name
|
||||||
|
- [X] Default matrix.org server config
|
||||||
|
- [X] Per server config
|
||||||
|
- [X] Look - merge server buffer with core
|
||||||
|
- [X] Global options
|
||||||
|
- [O] Core
|
||||||
|
- [X] Don't use sendall in the send() function
|
||||||
|
- [X] Create a default server if there doesn't exist one
|
||||||
|
- [X] matrix help command
|
||||||
|
- [X] Server add command
|
||||||
|
- [X] Server list command
|
||||||
|
- [X] Server listfull command
|
||||||
|
- [X] Server delete command
|
||||||
|
- [X] Server completion
|
||||||
|
- [X] Create server classes based from the config
|
||||||
|
- [X] Refactor out connection functions for multiple server support
|
||||||
|
- [X] Refactor the server command function
|
||||||
|
- [X] Nicklist groups
|
||||||
|
- [ ] Smart filters
|
||||||
|
- [X] Clear message queue on disconnect
|
||||||
|
- [X] Fix Reconnect handling
|
||||||
|
- [X] Fetch messages if we scroll to the top (hook_signal window_scroll)
|
||||||
|
- [X] Status bar element if we're fetching old messages
|
||||||
|
- [O] Color and attributes.
|
||||||
|
- [X] Parsing the input line
|
||||||
|
- [X] Converting the input to weechat output
|
||||||
|
- [o] Converting the input to html
|
||||||
|
- [X] Attributes
|
||||||
|
- [ ] Colors
|
||||||
|
- [.] Commands
|
||||||
|
- [X] Topic
|
||||||
|
- [X] Redact
|
||||||
|
- [o] Join
|
||||||
|
- [X] Join public rooms
|
||||||
|
- [X] Join private rooms
|
||||||
|
- [ ] Create rooms if they don't exist
|
||||||
|
- [ ] Completion
|
||||||
|
- [ ] Part
|
||||||
|
- [ ] Completion
|
||||||
|
- [ ] Invite
|
||||||
|
- [ ] Completion
|
||||||
|
- [ ] Whois
|
||||||
|
- [ ] Completion
|
||||||
|
- [ ] OP
|
||||||
|
- [ ] Voice
|
||||||
|
- [ ] Password
|
||||||
|
- [ ] Room
|
||||||
|
- [ ] Rename
|
||||||
|
- [ ] Info
|
||||||
|
- [ ] Join rules
|
||||||
|
- [O] Refactoring
|
||||||
|
- [X] Server
|
||||||
|
- [X] API
|
||||||
|
- [ ] Message handling
|
||||||
|
- [X] Colors
|
||||||
|
- [ ] Separate weechat IO from message handling/parsing
|
||||||
|
- [o] Input sanitization
|
||||||
|
- [ ] Rooms ID
|
||||||
|
- [ ] Room aliases
|
||||||
|
- [X] Event ID
|
||||||
|
- [X] User ID
|
||||||
|
- [X] Age
|
||||||
|
- [ ] Display names
|
||||||
|
- [X] Messages
|
||||||
|
- [ ] Topics
|
||||||
|
- [ ] Tests
|
||||||
|
- [ ] Commands
|
||||||
|
- [ ] Message handling
|
||||||
|
- [ ] Utils
|
||||||
|
|
||||||
|
# OLM
|
||||||
|
- [ ] Encrypted messaging
|
||||||
|
- [ ] Generate keys
|
||||||
|
- [ ] Store keys
|
||||||
|
- [ ] Load keys
|
||||||
|
- [ ] Upload keys
|
||||||
|
- [ ] Rotate keys
|
||||||
|
- [ ] Encrypt messages
|
||||||
|
- [ ] Decrypt messages
|
||||||
|
- [ ] Group message encryption
|
||||||
|
- [ ] Device ID storing
|
||||||
|
- [ ] Device ID loading
|
||||||
|
- [ ] Olm command
|
||||||
|
- [ ] info
|
||||||
|
- [ ] verify
|
||||||
|
|
||||||
|
- Keys should be transparently encrypted with your login password. (The lib
|
||||||
|
already does that for us.)
|
||||||
|
- More info [here](https://matrix.org/docs/guides/e2e_implementation.html).
|
||||||
|
|
||||||
|
- Keys are bound to a user and a device.
|
||||||
|
- Ids to store:
|
||||||
|
- user name (same as login user) -> weechat stores this for us
|
||||||
|
- device_id -> store it in a separate data file
|
||||||
|
- server-name -> folder
|
||||||
|
- OLM things to store:
|
||||||
|
- Account info (holds the Identity keypair)
|
||||||
|
- Session info
|
||||||
|
- Group session info
|
||||||
|
|
||||||
|
## Olm weechat data format
|
||||||
|
- Create a matrix folder under the weechat home folder
|
||||||
|
- Create a server folder in the matrix folder
|
||||||
|
- Filenames in this folder should have the form of
|
||||||
|
user_device.extension
|
||||||
|
- Store the device id in <user>.device_id
|
||||||
|
- Example:
|
||||||
|
.weechat
|
||||||
|
└── matrix
|
||||||
|
└── matrix.org
|
||||||
|
├── poljar.device_id
|
||||||
|
├── poljar_<device_id>.account
|
||||||
|
├── poljar_<device_id>.session
|
||||||
|
├── poljar_<device_id>.group_session
|
||||||
|
└── poljar_<device_id>.known_devices
|
||||||
|
|
||||||
|
- File formats:
|
||||||
|
- .device_id -> single line containing the device id
|
||||||
|
- .account -> pickle with the olm lib, encrypt using the user password
|
||||||
|
- .session -> pickle with the olm lib, encrypt using the user password
|
||||||
|
- .group_session -> pickle with the olm lib, encrypt using the user password
|
||||||
|
- .known_devices -> pickle using the pickle module or json, a dict containing a
|
||||||
|
user_id and a device_id
|
||||||
|
|
||||||
|
# DONE Color sending and recieving
|
||||||
|
- [SGR to/from RGB](https://github.com/chadj2/bash-ui/blob/master/COLORS.md#xterm-colorspaces)
|
||||||
|
- [RGB to from HTML/Hex](https://pypi.python.org/pypi/webcolors/1.3)
|
||||||
|
- [Fix broken HTML with Beautiful soup](https://stackoverflow.com/questions/293482/how-do-i-fix-wrongly-nested-unclosed-html-tags)
|
||||||
|
|
||||||
|
# DONE Message Redaction
|
||||||
|
- Store the event id somewhere with the message (the slack plugin replaces the
|
||||||
|
date_printed variable for the message hdata, we can use a custom tag while
|
||||||
|
printing lines)
|
||||||
|
- If we get a redaction event use hdata_pointer to get a list of all printed
|
||||||
|
messages
|
||||||
|
- Strike through or completely delete the message
|
||||||
|
|
||||||
|
# DONE Old message fetching
|
||||||
|
- We can fetch old messages if we have less lines than max buffer lines or lines
|
||||||
|
only younger than max buffer minutes
|
||||||
|
- To print out the messages we need to sort the line_data by date (see hdata)
|
||||||
|
|
||||||
|
# Room command
|
||||||
|
- Create room
|
||||||
|
- Set room join rules
|
||||||
|
- Room power levels
|
||||||
|
- Alias
|
||||||
|
- Encrypt room
|
Loading…
Reference in a new issue