Read more articles
Compose a new article

Chat v3 features/improvements/ideas/suggestions :)

Category: Suggestions
Composed by: that-ben
On: 2023-01-17 20:29:39
Updated by: ssokolow
On: 2024-03-09 11:20:21
Other contributors: OxYGeN , Sukaro

Alright, so next week in late february at some point, we're going to start coding chat v3.  We've been on chat v2 for about 2 years, so it's time for improving it.  Here are the initial ideas, some based on previous feedback, some to improve things that I already hated from day one in v2 :P

 

yes DONE - Dark mode, [color/themes: not done, users can use plugins like "Firefox Color"]

We need dark mode enabled browsers (mostly anything made after like 2015-ish) to be able to automatically show a dark mode theme in the chat.  Ideally, one should be able to define a color theme for themselves by choosing colors for like 10 different elements (background, text, links, admin usernames, normal usernames, guests usernames, etc).  Those settings would be saved in the users profile table and automatically applied after signing in.

 

Chat auto-scrolling

Invert the chat's auto-scrolling feature so that it never auto-scrolls unless you activate the auto-scroll feature.  Instead of auto-scrolling, it will always remain where you scrolled it and when new messages arrive, it will display an overlay button at the bottom of the window to allow you to go to the first unread message near the bottom of the chat.

Ideally, offer at least an option to auto-scroll conditional on the scroll position being bottomed out like IRC clients, Pidgin, Discord, etc. do.

 

yes DONE - Add padding to the bottom of posted pictures

We need to add like 15px of padding at the bottom of pictures so that if the user posts text after the picture, it's easier to read.  Right now, the text is extremely close to the picture and we look quickly, we might not even see that there's text at all.

 

Threads

We need to be able to have rooms or threads for specific topics.  At the beginning, this will only be created by admins to reduce the spam and maintenance work.  Once an admin creates a chat "room" there will be an URL that anybody can visit to participate in that chat topic.  The general/public chat will remain the default room as always.  This can quickly excalate to a bunch of complex features, like to be able to subscribe/unsubscribe to rooms, to be able to see all rooms you're subscribed to on the same chat window or not, etc etc etc... for v3 we should try to keep it relatively simple, otherwise it's gonna take a very long time to code and test.

 

Chat CPU usage

Chat can quickly use a lot of CPU resources when many people are signed in.  There are lots of optimizations that need to be done, such as stop joining users table with chat session tables, create a subset of only active chat sessions (signed in users) in a separate table (temp heap) and only poll from that table, no joins, no HDD DATA reads.

 

Edit posted messages

Allow real time editing of posted messages for up to 30 seconds, then the messages would become read only.  This would be useful for users to be able to fix typos and accidentally submited half sentences :P

---> 5 minutes is more typical. Maybe allow up to 5 minutes if nobody has replied yet?

Also, it would very convenient to borrow Discord's "press the Up Arrow key to trigger editing" keyboard shortcut to reduce the need to switch hands between the keyboard and mouse.

 

Halt sending message in chat when ...

Ask for "Are you sure to send this message or edit" when in the original situation if you 'at' members with text and then getting this : [no user found for "xxxxxxxxx"].   
Gives you the chance to edit the mistype in the member name.  Which then prevents the need to send the same message twice (with the correct 'at'membername).

 

yes DONE - Support 32-bit UTF-8 emojis outside the Unicode Basic Multilingual Plane

Chat currently only supports Unicode characters within the Basic Multilingual Plane. We need to support supplementary/astral plane characters (i.e. characters above U+FFFF) so that all those emojis can be used in the chat.

This has nothing to do with UTF-8 vs. UTF-16, aside from when people mistakenly assume that UTF-16 is a fixed-width encoding and then get bitten when non-BMP characters result in codepoints getting split across a surrogate pair. Emoji with codepoints at or below U+FFFF (such as ❤️) work just fine, as should any other trick which requires only codepoints within the BMP, like z̶̈́͜a̵̬̔l̷͓̐g̶̡̕ô̸̰ ̴̧͌t̸̪̃ĕ̶̡x̵̩̽t̵̲́ or s̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶ ̶w̶i̶t̶h̶o̶u̶t̶ ̶H̶T̶M̶L̶ ̶o̶r̶ ̶C̶S̶S̶.

Read Breaking Our Latin-1 Assumptions and Let's Stop Ascribing Meaning to Code Points by Manish Goregaokar, Dark corners of Unicode by Eevee, and the UTF-8 Everywhere Manifesto for more.

(However, if you're using MySQL for the site backend, it could be a "UTF-8 problem" in that MySQL's original UTF-8 implementation is broken in just this way and you need to change everything from utf8 character codings and collations to utf8mb4.)

 

Options for people with sensory processing issues or other disabilities

Some people (eg. it's common among people on the autism spectrum) have what are referred to generally as "sensory processing issues". Ways this can manifest include things like sensitivity to bright lights or loud noises, difficulty dealing with on-screen motion, problems with unexpected noises, etc.

There are also large groups of people who can see, but still have visual disabilities.

As such, I have the following suggestions:

  1. Consider limiting the ability for animations to interfere with reading. (eg. The falling money animation makes reading very difficult, and the darkness of the rain animation less so, so perhaps limit the falling money animation to either the corner of the chat window or scale the bills down and clip it to the bounds of the donation announcement it corresponds to... I think the latter would look more elegant, personally, since it'd be less blurry-pixelly and would better serve the purpose of drawing attention to who donated that equivalent Twitch animations serve.)
  2. Consider honoring the CSS `prefers-reduced-motion` media query that modern browsers set in response to the host OS's accessibility settings (maybe at least substitute non-animated badges (eg. zzz) in the user list) and possibly hooking in a manual preference, either via the same preference that disables Christmas snow or a counterpart to it.
  3. Consider honoring the CSS `prefers-reduced-transparency` media query to accomodate the various example cases given in this StackOverflow answer.

Beyond that, animations currently aren't as effective as communication aides as they could be, because there's no indication of who triggered them, so I'd like to suggest some kind of indication of that, whether it's not omitting the triggering command from the chatlog (which would also help new members learn what the commands are) or inserting some other indication in the log of who triggered what when.

 

A "Download Original" link in the lightbox for images

I like to archive memes and other such things with as little generation loss as possible, and with a conveniently unlikely-to-collide filename. Currently, all I can get is "_resize.jpg".

--> Although this has nothing to do with the chat app, would having sequential numbers (along with the correct file extension of course) be OK instead of _resize.php when you save the picture? FYI, original filenames are similar to 1000000001.jpg, 1000000002.gif, 1000000003.jpg, 1000000004.png and so on.  Would that be OK?

--> It would be helpful, but the most important thing is getting the original, non-resized file. I can type in something like 20230216_1 as the filename if necessary, as long as there's no generation loss.

 

Chat Editing

Summary of what happened in the chat bot.

The ability to edit messages 1 minute after posting for registered users only. VIPs and the poster of the message can see the edit history of a message.

 

Offensive Message Editing.

Instead of just deleting messages with offensive words make it where it'll just refuse to post while leaving the message in the message box anfdhighlighting the offending words giving the poster the opportunity to edit their message.

Or

Auto censoring of offensive words.

 

Polls

Just as it sounds timed Polls like in twitter or GroupMe. Definately should be a VIP only feature and possibly limit the amount of polls a day a user can put up with a 30 minute limit per poll. Maybe even limit the amount of active polls to one per chat.

Also 

Make polls avaliable in articles and software pages but with the option of not having a time limit. 

 

Vertically Growing Text Entry Field

One of the most common reasons I find myself needing to edit posts is that it's too awkward to do a quick proofreading pass before pressing Enter. Discord compromised between the Pidgin approach of always having a multi-line text entry field and the current approach used by MR chat by having its text entry field grow vertically so text word-wraps instead of scrolling without it always being as tall as the longest possible message.

 

Use The User's Timezone For Timestamps When Possible

Instead of always using Toronto time, check if Date.getTimezoneOffset() is available and, if it is, use it to automatically show timestamps in the user's local time... ideally, with an option to manually override it for those of us who turned on privacy.resistFingerprinting for the sites we don't log into and have getTimezoneOffset() lying that we're in UTC.

 

In-page Popup To Avoid Losing Scroll Position or Pending Messages When Re-Login Is Needed

Currently, when something goes weird with my browser or my DSL or anything that invalidates the login cookie, the jump to the login page loses my scrollback position in the full-page chat window and discards any message I was trying to post. It'd be much nicer to have login be achieved through a little popup on top of it which doesn't reset the state, similar to what WordPress's post editor does if you just leave it logged in on a draft long enough for your session to expire.

Please add your suggestions here.  Don't be afraid to explain in detail what you'd like.