v0.18 files

This commit is contained in:
tduva 2022-04-09 21:50:15 +02:00
parent 463a6ffaed
commit 595395573f
No known key found for this signature in database
GPG Key ID: 01EB6B81F18C5128
6 changed files with 212 additions and 14 deletions

View File

@ -20,6 +20,7 @@
<li><a href="#anonymous-custom-commands">Anonymous Custom Commands</a></li> <li><a href="#anonymous-custom-commands">Anonymous Custom Commands</a></li>
<li><a href="#chain-commands">Chaining Commands</a></li> <li><a href="#chain-commands">Chaining Commands</a></li>
<li><a href="#foreach">Foreach</a></li> <li><a href="#foreach">Foreach</a></li>
<li><a href="#runin">Run command in specific channel</a></li>
</ul> </ul>
</li> </li>
<li> <li>
@ -116,6 +117,10 @@
to run the same command for each entry of a space-separated list, for to run the same command for each entry of a space-separated list, for
example a list of channels from the <code>$1-</code> replacement.</p> example a list of channels from the <code>$1-</code> replacement.</p>
<h3><a name="runin">Run command in specific channel</a></h3>
<p>The <a href="help.html#commands-runin">/runin command</a> can be used
to run a command in a specific open channel.</p>
<h2><a name="replacements">Replacements</a></h2> <h2><a name="replacements">Replacements</a></h2>
<ul> <ul>
<li><a href="#simple-replacements">Simple Replacements</a></li> <li><a href="#simple-replacements">Simple Replacements</a></li>
@ -271,7 +276,7 @@
</tr> </tr>
<!-- User Context Menu --> <!-- User Context Menu -->
<tr> <tr>
<th rowspan="5">User Context Menu</th> <th rowspan="6">User Context Menu</th>
<td><code>1</code></td> <td><code>1</code></td>
<td>Name of the user</td> <td>Name of the user</td>
</tr> </tr>
@ -285,6 +290,14 @@
chat you opened the User Contex Menu from, not available for chat you opened the User Contex Menu from, not available for
your own messages)</td> your own messages)</td>
</tr> </tr>
<tr>
<td><code>msg-time</code></td>
<td>Message time of the selected message (depending on the line in
chat you opened the User Contex Menu from, not available for
your own messages), as milliseconds since
1970-01-01 00:00:00 UTC, intended to be used with <code>$datetime()</code>,
e.g. <code>$datetime(datetime,,,$(msg-time))</code></td>
</tr>
<tr> <tr>
<td><code>msg-id</code></td> <td><code>msg-id</code></td>
<td>Message id of the selected message (depending on the line in <td>Message id of the selected message (depending on the line in
@ -299,7 +312,7 @@
</tr> </tr>
<!-- User Dialog --> <!-- User Dialog -->
<tr> <tr>
<th rowspan="7">User Dialog</th> <th rowspan="8">User Dialog</th>
<td><em>All from User Context Menu</em></td> <td><em>All from User Context Menu</em></td>
<td>See above</td> <td>See above</td>
</tr> </tr>
@ -313,6 +326,14 @@
of message, depending on the line in chat you opened it from, of message, depending on the line in chat you opened it from,
not available for your own messages)</td> not available for your own messages)</td>
</tr> </tr>
<tr>
<td><code>msg-time</code></td>
<td>Message time of the selected message (<code>&gt;</code> in front
of message, depending on the line in chat you opened it from,
not available for your own messages), as milliseconds since
1970-01-01 00:00:00 UTC, intended to be used with <code>$datetime()</code>,
e.g. <code>$datetime(datetime,,,$(msg-time))</code></td>
</tr>
<tr> <tr>
<td><code>msg-id</code></td> <td><code>msg-id</code></td>
<td>Message id of the selected message (<code>&gt;</code> in front <td>Message id of the selected message (<code>&gt;</code> in front
@ -395,6 +416,9 @@
<li><code>user-id</code> - The Twitch ID of the user (if available)</li> <li><code>user-id</code> - The Twitch ID of the user (if available)</li>
<li><code>twitch-badges</code> - A textual representation of the Twitch badges (if available)</li> <li><code>twitch-badges</code> - A textual representation of the Twitch badges (if available)</li>
<li><code>twitch-badge-info</code> - Another textual representation of the Twitch badges (if available)</li> <li><code>twitch-badge-info</code> - Another textual representation of the Twitch badges (if available)</li>
<li><code>user-stream</code> - The name of the stream the user talked in</li>
<li><code>user-stream-id</code> - The id of the stream the user talked in</li>
<li><code>user-channel</code> - The name of the channel the user talked in (with leading # if applicable)</li>
</ul> </ul>
<h3>Pre-defined Parameters Example</h3> <h3>Pre-defined Parameters Example</h3>
@ -537,12 +561,13 @@
<dd><em>Example:</em> <code>$input()</code></dd> <dd><em>Example:</em> <code>$input()</code></dd>
<dd><em>Example:</em> <code>$input(Enter a number please)</code></dd> <dd><em>Example:</em> <code>$input(Enter a number please)</code></dd>
<dt><code>$datetime([format],[timezone],[locale])</code></dt> <dt><code>$datetime([format],[timezone],[locale],[unix time])</code></dt>
<dd>Outputs the current date/time. You can optionally give a format <dd>Outputs the current date/time. You can optionally give a format
pattern (based on <a href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns">DateTimeFormatter</a>), pattern (based on <a href="https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#patterns">DateTimeFormatter</a>),
a timezone (based on <a href="https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html">ZoneId</a>, a timezone (based on <a href="https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html">ZoneId</a>,
although something like "New York" should also work) and a locale although something like "New York" should also work) and a locale
(a language tag such as "en").</dd> (a language tag such as "en"). The optional unix time parameter must
be in milliseconds.</dd>
<dd>Predefined formats: <dd>Predefined formats:
<ul style="margin-top:0"> <ul style="margin-top:0">
<li>Short: <code>date</code>, <code>time</code>, <code>datetime</code></li> <li>Short: <code>date</code>, <code>time</code>, <code>datetime</code></li>
@ -588,6 +613,11 @@
<dd>(Custom format, <code>,</code> escaped since it normally <dd>(Custom format, <code>,</code> escaped since it normally
separates function parameters, empty timezone in order to be separates function parameters, empty timezone in order to be
able to specify locale.)</dd> able to specify locale.)</dd>
<dt><code>$datetime(datetime2,Berlin,,1646937275000)</code></dt>
<dd><code>2022-03-10 19:34:35 MEZ GMT+0100</code></dd>
<dd>(Preset format, with timezone, no locale, with a time
specified in milliseconds since 1970-01-01 00:00:00 UTC.)</dd>
</dl> </dl>
</dl> </dl>

View File

@ -42,6 +42,20 @@
re-run the last command of that tab (for example when it couldn't find the re-run the last command of that tab (for example when it couldn't find the
stream, but you want to retry now because you know it's come online).</p> stream, but you want to retry now because you know it's come online).</p>
<h3>Command</h3>
<p>The <code>/livestreamer</code> command can be entered into the inputbox
or used in a Custom Command to run Livestreamer/Streamlink as configured
in the Streamlink dialog.</p>
<dl class="defList">
<dt><code>/livestreamer &lt;stream&gt; [quality]</code></dt>
<dd>The stream is required, if no quality is given the dialog will open
to be able to select it.</dd>
<dd>Instead of specifying a stream <code>$active</code> can be used to
open the stream of the currently active channel.</dd>
<dd>Example: <code>/livestreamer joshimuz best</code></dd>
</dl>
<h2><a name="settings">Settings</a></h2> <h2><a name="settings">Settings</a></h2>
<p>The settings can be changed in the Streamlink dialog.</p> <p>The settings can be changed in the Streamlink dialog.</p>
<dl class="dl-settings"> <dl class="dl-settings">

View File

@ -17,6 +17,7 @@
<h1><a name="top">Release Information</a></h1> <h1><a name="top">Release Information</a></h1>
<p> <p>
<a href="#0.18">0.18</a> |
<a href="#0.17">0.17</a> | <a href="#0.17">0.17</a> |
<a href="#0.16">0.16</a> | <a href="#0.16">0.16</a> |
<a href="#0.15">0.15</a> | <a href="#0.15">0.15</a> |
@ -66,7 +67,63 @@
full list of changes.</p> full list of changes.</p>
<h2> <h2>
<a name="0.17">Version 0.17</a> <a name="latest">(This one!)</a> (2022-01-31) <a name="0.18">Version 0.18</a> <a name="latest">(This one!)</a> (2022-04-09)
<a href="#top" class="top">[back to top]</a>
</h2>
<pre>
### Twitch Features
- Added new Announcement messages and `/announce` command (Twitch hasn't added
commands for the color variants yet)
- Added badge for first message in channel (shown for mods only)
- Added workaround for Twitch filtering out Emoji joiner characters
### Highlight / Ignore Matching
- Added separate `_global_highlightBlacklist` and `_global_ignoreBlacklist`
Matching Preset names
- Added Highlight Matching substitutes / lookalikes
- Added setting and prefix to allow messages to be highlighted even if they
would otherwise have been ignored (Override Ignore if Highlighted)
- Added `if:` Matching prefix to specify conditions with an "or" relationship
### Custom Commands
- Added additional Custom Command identifiers related to user/channel
- Added identifier for User Dialog/Context Menu selected message time
- Added optional unix time input to `$datetime()` Custom Command function
- Added `/runin` command to run a command in a specific channel
### Other Settings
- Added badge scaling settings
- Emote scaling setting now applies to GIFs as well
- Added option to add Stream Uptime to timestamps
- Added search field to Settings Dialog
- Added sound test button to Sound Settings tab
- Added setting to show Connect Dialog (when it usually wouldn't) if login or
channel is missing
- Added hotkey action to switch to a specific tab index/channel
- Added warning to hotkey table when the same key is used more than once
### Other
- Added a new badge context menu entry to hide badges (you could already add a
Custom Badge with no image for that, but this is a bit more straightforward)
- Added "View" menu entry to toggle the userlist, changed default hotkey
- Updated help
### Bugfixes
- Fixed scaling on Emote Details page
- Fixed Favorite Emotes not working properly for Local Emotes
- Make GIF animations (of the same image) more likely to stay synchronized
- Fixed some emotes showing "[modified]" when they weren't actually emotes
modified by channel points
- Added workaround for played sounds sometimes not being cleaned up correctly
- Fixed focus being stolen from the input box when a second channel is opened
- Fixed error sometimes occuring when closing window and moving mouse over chat
- Fixed rare edge case where a PubSub message could reopen a closed channel tab
- Fixed small issues when adding a hidden badge
- Fixed error that could occur when saving the "login" file failed
</pre>
<h2>
<a name="0.17">Version 0.17</a> (2022-01-31)
<a href="#top" class="top">[back to top]</a> <a href="#top" class="top">[back to top]</a>
</h2> </h2>
<p>The Twitch v5 API is scheduled to be shutdown at the end of February 2022 <p>The Twitch v5 API is scheduled to be shutdown at the end of February 2022

View File

@ -1074,6 +1074,17 @@
<li><code>config:!blacklist</code> - Ignore the overall <li><code>config:!blacklist</code> - Ignore the overall
blacklist for this entry. The <code>blacklist:</code> prefix blacklist for this entry. The <code>blacklist:</code> prefix
still applies though.</li> still applies though.</li>
<li><code>config:!ignore</code> - Allows an ignored message to
be highlighted and overrides the ignored status of the
message, so it shows up as a regular highlighted message.
In the Highlight settings you can also enable this for all
Highlight items, without having to apply this prefix to each
one.</li>
<li><code>config:s</code>, <code>config:!s</code> - Enable or
disable Substitutes. You can turn it on for all items by
default in the "Substitutes / Lookalikes" dialog in the
Highlight settings (if no prefix is provided it will use the
default setting).</li>
</ul> </ul>
</li> </li>
<li><a name="Highlight_Prefix-blacklist"><code>blacklist:</code></a> to specify one or more text patterns <li><a name="Highlight_Prefix-blacklist"><code>blacklist:</code></a> to specify one or more text patterns
@ -1093,6 +1104,33 @@
in the message, while <code>blacklist:!cheesecake reg:^!\w+</code> in the message, while <code>blacklist:!cheesecake reg:^!\w+</code>
will only prevent the match when it fully encompasses the regular will only prevent the match when it fully encompasses the regular
text match, so only when the message starts with <code>!cheesecake</code>.</li> text match, so only when the message starts with <code>!cheesecake</code>.</li>
<li><a name="Highlight_Prefix-if"><code>if:</code></a> to specify
additional conditions that have an "or" relationship to eachother.
This is a comma-separated list (enclose spaces and commas in quotes
to ignore them) of Highlight items, whereas at least one has to
match.
<br/><br />
Prefixes in an item always have an "and" relationship, so they all
have to match (<code>cat:abc user:a_name</code> requires the "abc"
Addressbook category <em>and</em> the "a_name" username), the <code>if:</code> allows for
some more flexibility (<code>if:"cat:abc","user:a_name"</code> requires
only one of them).
<br/><br />
Example: <code>config:any if:"config:info start:[AutoMod]"," " reg:complicated regex</code>
<ul>
<li><code>config:any</code> - Match any type of message,
otherwise it would only match regular chat messages, as is
the default</li>
<li>First <code>if:</code> entry: <code>"config:info start:[AutoMod]"</code> - Match info
messages starting with "[AutoMod]" (note the quotes due to
the spaces)</li>
<li>Second <code>if:</code> entry: <code>" "</code> - This one is a bit weird,
it just specifies an empty item, which matches any regular
chat message (could also have <code>reg:.*</code> or something).</li>
<li><code>reg:complicated regex</code> - The other stuff was
just to narrow down which messages to match on, so now match
the actual text.</li>
</ul></li>
</ul> </ul>
<h3><a name="Highlight_Meta_Behaviour">Meta Prefixes (Behaviour)</a></h3> <h3><a name="Highlight_Meta_Behaviour">Meta Prefixes (Behaviour)</a></h3>
@ -1114,6 +1152,12 @@
<ul> <ul>
<li><code>config:silent</code> - Disable sounds for this item</li> <li><code>config:silent</code> - Disable sounds for this item</li>
<li><code>config:!notify</code> - Disable notifications for this item</li> <li><code>config:!notify</code> - Disable notifications for this item</li>
<li><code>config:!ignore</code> - Allows an ignored message to
be highlighted and overrides the ignored status of the
message, so it shows up as a regular highlighted message.
In the Highlight settings you can also enable this for all
Highlight items, without having to apply this prefix to each
one.</li>
</ul> </ul>
</li> </li>
<li><code>n:</code> to provide a note that is ignored for matching. <li><code>n:</code> to provide a note that is ignored for matching.

View File

@ -5,7 +5,7 @@
<link rel="stylesheet" type="text/css" href="style.css" /> <link rel="stylesheet" type="text/css" href="style.css" />
</head> </head>
<body> <body>
<h1><a name="top">Chatty (Version: 0.17)</a></h1> <h1><a name="top">Chatty (Version: 0.18)</a></h1>
<table> <table>
<tr> <tr>
<td valign="top"> <td valign="top">
@ -569,6 +569,59 @@
</dd> </dd>
</dl> </dl>
<h3><a name="commands-runin">Run a command in a specific open channel</a></h3>
<p>The <code>/runin</code> command runs a command in the context of a
specific open channel, as if you had entered it into the channel's
inputbox. Without this, commands usually run in the context of the
currently active channel.</p>
<dl class="defList">
<dt><code>/runin [channel] [command]</code></dt>
<dd>The channel must be a regular channel with or without leading "#" (<code>#channelname</code>)
or a whisper channel (<code>$username</code>).</dd>
<dd>The command can be anything you could enter into a chat inputbox.</dd>
</dl>
<p>Examples:</p>
<dl class="defList">
<dt><code>/runin #chan2 /echo abc</code></dt>
<dd>Outputs the info message "abc" in the channel "#chan2" (if it is
open in Chatty).</dd>
<dt><code>//runin #chan2 //echo Channel context: \\$(chan) -> \$(chan)</code></dt>
<dd>This example is entered directly into a chat inputbox and outputs
an info message about the changed channel context in "#chan2". Let's say the
command is entered in the channel "#chan1".</dd>
<dd>The command begins with two slashes (<code>//</code>), so it is
interpreted as an anonymous Custom Command:
<ul>
<li><code>\\$(chan)</code> turns into <code>\#chan1</code> (the <code>\\</code> escaped
the backslash itself, not the <code>$</code>, so the replacement is performed)</li>
<li><code>\$(chan)</code> turns into <code>$(chan)</code> (this <code>\</code> actually escapes the
<code>$</code>, so the replacement is not performed here)</li>
</ul>
The result <code>/runin #chan2 //echo Channel context: \#chan1 -> $(chan)</code>
is run, which runs <code>//echo Channel context: \#chan1 -> $(chan)</code>
in "#chan2".</dd>
<dd>Yet again, the command begins with two slashes (<code>//</code>) and
is interpreted as an anonymous Custom Command:
<ul>
<li><code>\#chan1</code> turns into <code>#chan1</code> (the
backslash removes any special meaning from the following
characters, which in this case is not necessary, but it you
had entered this in a whisper channel <code>$user1</code>
then the <code>$</code> would have had to be escaped)</li>
<li><code>$(chan)</code> turns into <code>#chan2</code> (this
Custom Command is run in the new channel context, so it
turns into the target channel, which does not need to be
escaped further, even if it were <code>$user2</code>, since
it doesn't get interpreted as a Custom Command after this)</li>
</ul>
The resulting command <code>/echo Channel context: #chan1 -> #chan2</code>
is then run and outputs an info message.
</dd>
</dl>
<h2> <h2>
<a name="login">Twitch Login</a> <a name="login">Twitch Login</a>
<a href="#top" class="top">[back to menu]</a> <a href="#top" class="top">[back to menu]</a>

View File

@ -16,9 +16,9 @@ function loaded() {
{ ceiling: null, text: "$years years ago" } { ceiling: null, text: "$years years ago" }
] ]
} }
document.getElementById("ago").innerHTML = "Version 0.17 released "+humanized_time_span("2022/01/31", Date(), custom_date_formats)+""; document.getElementById("ago").innerHTML = "Version 0.18 released "+humanized_time_span("2022/04/09", Date(), custom_date_formats)+"";
getDownloads("v0.17"); getDownloads("v0.18");
slideshow_init("slideshow"); slideshow_init("slideshow");
} }
@ -158,7 +158,7 @@ function getDownloads(tag) {
<h2 id="download">Download</h2> <h2 id="download">Download</h2>
<p>Choose one of the following downloads of <strong>Chatty Version 0.17</strong><span id="dlCount" style="margin-bottom:7px;"></span>. For older versions or betas go to the <a href="https://github.com/chatty/chatty/releases">GitHub Releases</a>. Checksums for release files are available as <a href="https://tduva.com/chatty/checksums/v0.17/">SHA-256 hashes</a>.</p> <p>Choose one of the following downloads of <strong>Chatty Version 0.18</strong><span id="dlCount" style="margin-bottom:7px;"></span>. For older versions or betas go to the <a href="https://github.com/chatty/chatty/releases">GitHub Releases</a>. Checksums for release files are available as <a href="https://tduva.com/chatty/checksums/v0.18/">SHA-256 hashes</a>.</p>
<p>If this is your first time using Chatty check out the <a href="help/help-getting-started.html"><strong>Getting Started Guide</strong></a>.</p> <p>If this is your first time using Chatty check out the <a href="help/help-getting-started.html"><strong>Getting Started Guide</strong></a>.</p>
<h3>Windows</h3> <h3>Windows</h3>
@ -170,11 +170,11 @@ function getDownloads(tag) {
<tr> <tr>
<td> <td>
<dl> <dl>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.17/Chatty_0.17_win_standalone_setup.exe"><strong>Download Windows Standalone (Installer)</strong></a> <span class="recommended"><sup>Recommended</sup></span></dt> <dt><a href="https://github.com/chatty/chatty/releases/download/v0.18/Chatty_0.18_win_standalone_setup.exe"><strong>Download Windows Standalone (Installer)</strong></a> <span class="recommended"><sup>Recommended</sup></span></dt>
<dd>Install into a folder of your choice and start <code>Chatty.exe</code> (or optionally created shortcuts).</dd> <dd>Install into a folder of your choice and start <code>Chatty.exe</code> (or optionally created shortcuts).</dd>
</dl> </dl>
<dl> <dl>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.17/Chatty_0.17_win_standalone.zip">Download Windows Standalone (.zip)</a></dt> <dt><a href="https://github.com/chatty/chatty/releases/download/v0.18/Chatty_0.18_win_standalone.zip">Download Windows Standalone (.zip)</a></dt>
<dd>Extract the .zip into a folder of your choice and start <code>Chatty.exe</code>.</dd> <dd>Extract the .zip into a folder of your choice and start <code>Chatty.exe</code>.</dd>
</dl> </dl>
@ -182,11 +182,11 @@ function getDownloads(tag) {
</td> </td>
<td> <td>
<dl> <dl>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.17/Chatty_0.17_win_setup.exe">Download JAR-Version (Installer)</a></dt> <dt><a href="https://github.com/chatty/chatty/releases/download/v0.18/Chatty_0.18_win_setup.exe">Download JAR-Version (Installer)</a></dt>
<dd>Install into a folder of your choice and start <code>Chatty.jar</code> (or optionally created shortcuts).</dd> <dd>Install into a folder of your choice and start <code>Chatty.jar</code> (or optionally created shortcuts).</dd>
</dl> </dl>
<dl> <dl>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.17/Chatty_0.17.zip">Download JAR-Version (.zip)</a></dt> <dt><a href="https://github.com/chatty/chatty/releases/download/v0.18/Chatty_0.18.zip">Download JAR-Version (.zip)</a></dt>
<dd>Extract the .zip into a folder of your choice and start <code>Chatty.jar</code>.</dd> <dd>Extract the .zip into a folder of your choice and start <code>Chatty.jar</code>.</dd>
</dl> </dl>
</td> </td>
@ -194,7 +194,7 @@ function getDownloads(tag) {
</table> </table>
<h3>Non-Windows</h3> <h3>Non-Windows</h3>
<p>For OS other than Windows (e.g. Linux or MacOS) you will need to download the <a href="https://github.com/chatty/chatty/releases/download/v0.17/Chatty_0.17.zip">JAR-Version (.zip)</a> and must have Java 8 or later installed on your system. Extract the .zip into a folder of your choice and start <code>Chatty.jar</code>.</p> <p>For OS other than Windows (e.g. Linux or MacOS) you will need to download the <a href="https://github.com/chatty/chatty/releases/download/v0.18/Chatty_0.18.zip">JAR-Version (.zip)</a> and must have Java 8 or later installed on your system. Extract the .zip into a folder of your choice and start <code>Chatty.jar</code>.</p>
<h2 id="feedback">Contact</h2> <h2 id="feedback">Contact</h2>
<p>If you have any feedback or questions feel free to contact me. You can <a href="https://discord.gg/WTuqGeJ">join the Chatty Discord</a> <sup>preferred</sup>, write me an <a href="mailto:chattyclient@gmail.com">E-Mail</a> or use <a href="https://twitter.com/chattyclient">Twitter</a>.</p> <p>If you have any feedback or questions feel free to contact me. You can <a href="https://discord.gg/WTuqGeJ">join the Chatty Discord</a> <sup>preferred</sup>, write me an <a href="mailto:chattyclient@gmail.com">E-Mail</a> or use <a href="https://twitter.com/chattyclient">Twitter</a>.</p>