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