239 lines
7.5 KiB
Plaintext
239 lines
7.5 KiB
Plaintext
------ Minimum Viable Product ------
|
|
|
|
Clean up TypeScript type names
|
|
|
|
Clean up HTML / CSS
|
|
|
|
Unit tests would be pretty nice for the cache stuff
|
|
|
|
Get rid of the duplicate fetch metadata query at startup (fetch-server)
|
|
|
|
Add labels to input boxes
|
|
|
|
Server requests should never be sent if not verified rather than waiting 5 seconds to verify
|
|
- May fix the duplicate fetch-members request
|
|
- However, we probably should wait if nothing is in the DB cache
|
|
- currently there are many requests that are getting sent before verification
|
|
- Relates to the _queryServer function in client-controller.js
|
|
- Especially since everything gets refreshed on verification anyway
|
|
|
|
Rework message data structure to be a linked-list that stores the previous message in the channel (or the message index?)
|
|
- Maybe just the send time is fine too...
|
|
|
|
Create invite token dialog
|
|
|
|
Create invite with privileges
|
|
|
|
Kick out members
|
|
- Do we delete all messages from the member?
|
|
- Probably not, just remove them from the member list and don't let them connect again.
|
|
- Actually, keep them in the member list but don't let them connect
|
|
|
|
When leaving, send a courtesy message to the server so that the member no longer has to show up on the members list.
|
|
|
|
Loading overlay before any servers connected to
|
|
|
|
Re-order text channels for server admins
|
|
Remove text channel for server admins
|
|
|
|
Flavor text length restriction
|
|
|
|
Admin role management
|
|
- Create role
|
|
- Delete role (also removes from all users with specified role)
|
|
- Assign role privileges
|
|
- Apply role to a user
|
|
- Remove role from a user
|
|
|
|
Install server node script?
|
|
For a lower effort, MUCH more contained install, use a sqlite3 database on the server side?
|
|
- uuidv4 id tables? probably switch to integer primary keys
|
|
- hashing data has to be done with node
|
|
|
|
Keep scroll position after clicking try again when loading messages fails
|
|
|
|
More testing with offline servers.
|
|
- How to make a pending-sent message timeout? Does it need to?
|
|
- Don't even send the queryServer requests when the server still is not verified?
|
|
- Again, would be better to have queryServer only called one time to refresh the cache in most situations rather than every time.
|
|
|
|
Packaging and Distribution
|
|
|
|
First-time setup dialog?
|
|
|
|
Custom download directory (and preset to something not hard-coded)
|
|
- Use browser-based download rather than custom download manager
|
|
- Generally use browser-based file transfers rather than fs
|
|
|
|
Sent messages highlight channel / server (notifications)
|
|
|
|
Offline status that does not attempt to connect to server
|
|
|
|
Test multiple connected members at once, multiple connections from the same
|
|
client at 2 servers on the same machine seems to work already
|
|
|
|
Something is causing a fetch-messages-recent request with null channelId
|
|
|
|
Properly figure out TLS so that the server identification can be done with x509 certs rather than an extra challenge-signature
|
|
|
|
Get .cordis file from HTTP request
|
|
|
|
Add hover overlay for ellipsized text
|
|
|
|
Date spacer for messages on new days
|
|
|
|
Member Role Groupings
|
|
|
|
Channel groupings?
|
|
|
|
Show overlay when hovering over ellipsized text
|
|
|
|
Add server avatar to .cordis file
|
|
|
|
Use server name / member display name / channel name as option in log files
|
|
|
|
Default paths for file opening stuff should be properly handled cross-platform
|
|
|
|
Server audit logs
|
|
- Registration times per-user, role changes, who created tokens, etc.
|
|
|
|
------ After Voice Channels ------
|
|
|
|
Kick users for server admins
|
|
- Right click dialogue
|
|
|
|
Per-user audio boost
|
|
|
|
------ SECURITY RISKS ------
|
|
|
|
A DoS attack vector exists by sending oversized socket.io packets
|
|
- The max-size stuff should be good enough for now.
|
|
- socket.io-stream for resource transfers
|
|
|
|
------ Future Goals ------
|
|
|
|
Auto-load things that will need to be fetched later (slowly) when there's nothing else to do.
|
|
|
|
Revoke tokens with a flag rather than a full revocation, allow the user to undo the revocation from the list.
|
|
- Auto-delete tokens after a day of being revoked?
|
|
|
|
Resources are left forever, they need to be garbage collected when no longer in use
|
|
- Server Icon is Changed
|
|
- Avatar is Changed
|
|
- Message is Deleted
|
|
|
|
Don't re-fetch the recent messages if they have already been fetched since the last disconnect
|
|
- I think this also goes for channel list + members
|
|
|
|
Allow SVG profile pictures / image resource elements
|
|
|
|
Clicking maximize a second time should un-maximize
|
|
|
|
For looks, add some images to the overlays
|
|
|
|
BUG: Members not getting moved to the fully correct position. I think this happens when two are updated in VERY quick succession
|
|
|
|
BUG: Overlay closes on mouseup rather than only when clicked on
|
|
|
|
Multiple tokens for the same member on multiple devices
|
|
|
|
Send a message to the server when leaving it (so that the member can be removed)
|
|
|
|
Hello Gamers, this is definitely not needed in the MVP, we can definitely have this security risk sitting around
|
|
- Proper TLS to prevent MITM attacks? (could be forwarded at this point :|)
|
|
|
|
Make **abcd generate "**abcd" instead of <bold>"abdd"</bold>
|
|
- Non-closed _, *, **, *** generate their text if not closed rather than making the rest
|
|
of everything underline/italic/bold/etc.
|
|
- **abc*d** -> <bold>abc*d</bold>
|
|
|
|
Dedupe _queryServer requests?
|
|
|
|
Messages, members, and text channels only need to be cache-checked one time after verification.
|
|
- Convert fetch events to not query the server every time
|
|
|
|
Auto-set away? <- This has privacy concerns
|
|
|
|
Set status across all servers at once
|
|
|
|
Verify and maintain last used status
|
|
|
|
Multiple connections from same member
|
|
- Properly update status
|
|
|
|
Right-click to save images
|
|
|
|
Remove deleted messages after reconnect before updating infinite scroll (corner case!)
|
|
- Since the top/bottom message could be deleted, possibly select messages based on a date range?
|
|
- 'Select-around' where it selects more messages on either-end if messages were deleted. (good for if a lot of messages were deleted)
|
|
- Without this, if a top/bottom message was deleted (and we're not using deleted flags), the
|
|
infinite scroll will get stuck at the deleted message.
|
|
|
|
Socket.io use socket.io-stream for resources
|
|
|
|
Max resource size / text message size per-server config
|
|
|
|
Spam prevention
|
|
|
|
Emojis!
|
|
|
|
Roles
|
|
|
|
Client-side nicknames / notes per-user
|
|
|
|
Should we really be jpegging scaled-down images or would it be better to only store one resource in some situations.
|
|
|
|
Sometimes messages take a long time to send, even on localhost. Find a way to reproduce this.
|
|
|
|
Text channel day dividers
|
|
|
|
Popup image preview css transition
|
|
|
|
Play gif on hover, identify gifs with icon in top-right
|
|
In-memory cache also store one or two larger resource(s) (of GIF size, 5-20 MB) so that when gifs are hovered over, they
|
|
are cached in memory in case they are hovered out and back in quickly
|
|
|
|
Pending sent messages show up within the channel feed and allow for another message to be queued to be sent
|
|
|
|
Delete messages? (make sure to clean up resources)
|
|
Update messages?
|
|
|
|
Private Messages
|
|
|
|
Larger file sharing
|
|
|
|
Cache (in memory) elements returned from q.js rather than re-querying all the time
|
|
|
|
------ Stretch Goals ------
|
|
|
|
PNG -> SVG for any client
|
|
|
|
Test building a list and swapping it out rather than updating the elements (especially for channel-list)
|
|
|
|
Maintain scroll position after reconnect when scrolling through feed
|
|
- Also refresh current feed
|
|
|
|
Peer-to-peer network option
|
|
|
|
Embedded Videos
|
|
|
|
Save Scroll Position
|
|
|
|
Preview more image types? (webp, bmp, etc.)
|
|
|
|
Create registration file dialogue (for server admins)
|
|
|
|
Database encryption?
|
|
|
|
Multiple public keys associated with one member
|
|
|
|
Better server/identity differentiation in cache? (getServerConfigs)
|
|
|
|
Web browser client?
|
|
|
|
Mobile App?
|
|
|
|
Private messages?
|
|
|
|
Bots
|