remove .vscode, todo.txt

This commit is contained in:
Michael Peters 2022-10-04 21:04:19 -07:00
parent aec8184964
commit 90ab1a0c6e
4 changed files with 3 additions and 285 deletions

View File

@ -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};",
""
]
}
}

View File

@ -1,2 +0,0 @@
{
}

View File

@ -393,9 +393,11 @@ describe('fetchAndVerifyIfNeeded tests', () => {
expect(av.trustedPromise).toBe(trusted.promise);
expect(av.trustedStatus).toBe('verifying');
expect(result).toBeUndefined();
verify.resolve(true);
await disjoint();
expect(result).toBeNull();
expect(av.primaryPromise).toBe(null);
expect(av.trustedPromise).toBe(trusted.promise);
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 () => { */
/* 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
View File

@ -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