Instead of hiding the chat window immediately when the game enters a
"cutscene" condition, wait until the vanilla chat would've been hidden.
This prevents hiding and unhiding during auto-skipped cutscenes.
- Avoids overriding modifiers after leaving a vanilla text box. This
would prevent you from holding e.g. Ctrl between multiple vanilla text
boxes.
- Reworks linkshell rotation code to fix issues with LS number gaps
causing linkshell rotation to not function.
- Adds new setting "Enable inactivity hide during battle" (default:
true) which determines whether autohide should apply during battle
(thanks @aurieh)
- Adds new setting "Chat channels considered for activity" which allows
customizing which channels incoming messages must match to "bump" the
inactivity timer
- Adds new per-tab setting "Unhide the chat window on activity" to
configure whether it will be considered for "bumping" the inactivity
timer when receiving messages that match the new channel filter. Note
that the foreground tab is currently always considered.
- Extends autohide code to apply to poped-out tabs as well. Each popout
window has its own inactivity timer, but focusing the main window will
restore all popped out windows.
Co-authored-by: Auri <me@aurieh.me>
Prevents switching channels to a non-existent linkshell index (for both
regular linkshells and cross-world linkshells). ExtraChat linkshells are
already validated separately.
Prevents ChatLogWindow Draw failures from causing ChatTwo to grab input
focus each frame if the exception occurs during an Activate event.
Adds two configurable hotkeys (plus the required code infrastructure to
handle configurable hotkeys) for cycling the active chat tab forward by
one and backwards by one.
After not receiving a message for X seconds (configurable) in the
current tab or any tab with unread mode enabled, the chat will be
hidden. Focus can be returned with return or slash as usual.
Having input focus or hovering the mouse over the chat window "bumps"
it every frame.
Also fixes a bug that prevented focus from being restored to tabs with
input disabled. The chat window will be brought back but the activated
event won't be fully processed.
Co-authored-by: Auri <me@aurieh.me>
The Race, Tribe and BuddyAction sheets were skipped as the default
behavior was to include rows from `0..^0` if no range was specified in
the Completion sheet. That range would usually include everything, but
since the ranges were iterated over as integers there is no "last" index
so `^0` equals zero.
Also preloads the AutoTranslate cache on plugin load in a new thread to
avoid a hitch when sending the first message. This behavior is disabled
in DEBUG builds to make profiling easier.
- Replace LiteDB database engine with Sqlite
Note: old databases will not be deleted
- Message duplication detection improvements
- Tolerate parse errors in release builds, log them
Shows path to database (click to copy), database size, database log
size, message count.
Also adds a Ctrl+Shift button to wipe the database permanently. This is
performed by clearing the Messages collection and then rebuilding the
database, which brings it down to around 48KB on my machine (even with
many messages).
In party chat, players from other servers seem to have extra (empty)
text chunks with the same PlayerPayload link. The screenshot mode code
would replace all chunks with the hashed player name.
Changes the screenshot mode code to skip changing the chunk content for
PlayerPayload chunks unless the content contans the player name.
Also censors the tell target above the chat input.
Adds ExtraChat Linkshell channels to tab input channel selector. These are only by index, not by channel name due to limitations in the ExtraChat IPC API.
Adds ExtraChat Linkshell channels to the channel selector in the chat log window. As these aren't real channels in-game, these are handled by just sending the corresponding `/eclX` command which causes ExtraChat to set a channel override.
Moves the options in the "Chat 2" submenu when right clicking a message
to the parent menu if there are no specific context menu items for the
right clicked payload. This moves the "Copy" button to the main context
menu in the majority of cases and reduces the amount of clicks required
to copy.
Changes the "Copy" button to copy directly to the system clipboard and
adds a notification.
Adds a "Copy content" button beneath the "Copy" button which only copies
the message content (not the sender). If the message doesn't have a
sender, this option does not appear as they function identically in such
cases.
Adds a parsing step when constructing `Message` objects that scans the
message content for anything that looks URL-like, and inserts new
`TextChunk`s into the message content with a URIPayload set.
Hovering over a URL shows an on-hover effect. Clicking a URL opens it in
the default browser. Right clicking shows the hostname, with an option
to open and an option to copy the URL to the clipboard.