remove .vscode, todo.txt
This commit is contained in:
parent
aec8184964
commit
90ab1a0c6e
37
.vscode/cordis.code-snippets
vendored
37
.vscode/cordis.code-snippets
vendored
@ -1,37 +0,0 @@
|
|||||||
{
|
|
||||||
// Place your cordis-ts workspace snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
|
|
||||||
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
|
|
||||||
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
|
|
||||||
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
|
|
||||||
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
|
|
||||||
// Placeholders with the same ids are connected.
|
|
||||||
// Example:
|
|
||||||
// "Print to console": {
|
|
||||||
// "scope": "javascript,typescript",
|
|
||||||
// "prefix": "log",
|
|
||||||
// "body": [
|
|
||||||
// "console.log('$1');",
|
|
||||||
// "$2"
|
|
||||||
// ],
|
|
||||||
// "description": "Log output to console"
|
|
||||||
// }
|
|
||||||
"TSX Base": {
|
|
||||||
"description": "Generally you'll want this when you create a TSX file",
|
|
||||||
"prefix": [ "tsx" ],
|
|
||||||
"body": [
|
|
||||||
"import React, { FC } from 'react';",
|
|
||||||
"",
|
|
||||||
"export interface ${1:Element}Props {",
|
|
||||||
"\ttext: string;",
|
|
||||||
"}",
|
|
||||||
"",
|
|
||||||
"const ${1:Element}: FC<${1:Element}Props> = (props: ${1:Element}Props) => {",
|
|
||||||
"\tconst { text } = props;",
|
|
||||||
"\treturn null;$0",
|
|
||||||
"}",
|
|
||||||
"",
|
|
||||||
"export default ${1:Element};",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@ -1,2 +0,0 @@
|
|||||||
{
|
|
||||||
}
|
|
@ -393,9 +393,11 @@ describe('fetchAndVerifyIfNeeded tests', () => {
|
|||||||
expect(av.trustedPromise).toBe(trusted.promise);
|
expect(av.trustedPromise).toBe(trusted.promise);
|
||||||
expect(av.trustedStatus).toBe('verifying');
|
expect(av.trustedStatus).toBe('verifying');
|
||||||
|
|
||||||
|
expect(result).toBeUndefined();
|
||||||
verify.resolve(true);
|
verify.resolve(true);
|
||||||
await disjoint();
|
await disjoint();
|
||||||
|
|
||||||
|
expect(result).toBeNull();
|
||||||
expect(av.primaryPromise).toBe(null);
|
expect(av.primaryPromise).toBe(null);
|
||||||
expect(av.trustedPromise).toBe(trusted.promise);
|
expect(av.trustedPromise).toBe(trusted.promise);
|
||||||
expect(av.trustedStatus).toBe('none');
|
expect(av.trustedStatus).toBe('none');
|
||||||
@ -409,5 +411,5 @@ describe('fetchAndVerifyIfNeeded tests', () => {
|
|||||||
/* test('primary with value, then trusted with null - cache hit, server deleted', async () => { */
|
/* test('primary with value, then trusted with null - cache hit, server deleted', async () => { */
|
||||||
/* expect(false).toBe(true); */
|
/* expect(false).toBe(true); */
|
||||||
/* }); */
|
/* }); */
|
||||||
// Make sure to do try/catch errors
|
// Make sure to do try/catch errors, verification failures, unverifies in the middle
|
||||||
});
|
});
|
||||||
|
245
todo.txt
245
todo.txt
@ -1,245 +0,0 @@
|
|||||||
Moved to https://cowfield.atlassian.net
|
|
||||||
|
|
||||||
|
|
||||||
------ Minimum Viable Product ------
|
|
||||||
|
|
||||||
Clean up TypeScript type names
|
|
||||||
|
|
||||||
Clean up HTML / CSS
|
|
||||||
|
|
||||||
Get rid of all static classes that store state
|
|
||||||
|
|
||||||
There's a bug with 'undefined' when
|
|
||||||
|
|
||||||
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
|
|
Loading…
Reference in New Issue
Block a user