v0.16 files

This commit is contained in:
tduva 2022-01-06 10:20:49 +01:00
parent 495d49aa42
commit a13df37802
No known key found for this signature in database
GPG Key ID: 01EB6B81F18C5128
13 changed files with 548 additions and 223 deletions

View File

@ -17,7 +17,10 @@
<p>The Admin Dialog is always opened for the currently active channel, <p>The Admin Dialog is always opened for the currently active channel,
unless there is no channel open (which is the case just after you started Chatty), unless there is no channel open (which is the case just after you started Chatty),
in which case it will open for your own channel (you login with).</p> in which case it will open for your own channel (you login with). The
channel is automatically changed to the currently active channel unless the
"Channel - Fixed" option is enabled in the Admin Dialog context menu
(right-click on an empty space in the Admin Dialog).</p>
<h2><a name="access">Access</a></h2> <h2><a name="access">Access</a></h2>
<p>The Admin Dialog requires the following access:</p> <p>The Admin Dialog requires the following access:</p>
@ -25,6 +28,7 @@
<li><strong>Editor access</strong>: To change the stream title/game</li> <li><strong>Editor access</strong>: To change the stream title/game</li>
<li><strong>Edit broadcast</strong>: To change stream tags</li> <li><strong>Edit broadcast</strong>: To change stream tags</li>
<li><strong>Run commercials</strong>: To run commercials</li> <li><strong>Run commercials</strong>: To run commercials</li>
<li><strong>View/Change blocked terms</strong>: To view and edit blocked terms</li>
</ul> </ul>
<p>If some access is missing, please go to <code>Main - Account</code> in <p>If some access is missing, please go to <code>Main - Account</code> in

View File

@ -19,6 +19,7 @@
<li><a href="#restrict-channel">Restrict to channel</a></li> <li><a href="#restrict-channel">Restrict to channel</a></li>
<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>
</ul> </ul>
</li> </li>
<li> <li>
@ -110,6 +111,11 @@
although the <a href="help.html#commands-chain">/chain command</a> can although the <a href="help.html#commands-chain">/chain command</a> can
be used to achieve something like that.</p> be used to achieve something like that.</p>
<h3><a name="foreach">Foreach</a></h3>
<p>The <a href="help.html#commands-foreach">/foreach command</a> can be used
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>
<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>

View File

@ -20,7 +20,7 @@
<p>If you can't fix this problem and there are no other error messages that <p>If you can't fix this problem and there are no other error messages that
may indicate what is going wrong, then you can still proceed with opening the may indicate what is going wrong, then you can still proceed with opening the
link by clicking on "Open URL" in the dialog (or <a href="https://id.twitch.tv/oauth2/authorize?response_type=token&client_id=spyiu9jqdnfjtwv6l1xjk5zgt8qb91l&redirect_uri=http://127.0.0.1:61324/token/&force_verify=true&scope=channel_subscriptions+moderator:manage:automod+user_read+channel_commercial+user_follows_edit+chat_login+channel_editor+user_subscriptions+channel:moderate+user:edit:broadcast+channel:read:redemptions">this link</a>, which has all permissions Chatty needs). Chatty won't be able to link by clicking on "Open URL" in the dialog (or <a href="https://id.twitch.tv/oauth2/authorize?response_type=token&client_id=spyiu9jqdnfjtwv6l1xjk5zgt8qb91l&redirect_uri=http://127.0.0.1:61324/token/&force_verify=true&scope=channel:moderate+channel:read:redemptions+channel_commercial+channel_editor+channel_subscriptions+chat:edit+chat:read+chat_login+moderator:manage:automod+user:edit:broadcast+user:read:follows+user_read+user_subscriptions+whispers:edit+whispers:read">this link</a>, which has all permissions Chatty needs). Chatty won't be able to
receive the token automatically (your browser will tell you that it can't receive the token automatically (your browser will tell you that it can't
load the page when you get to <code>http://127.0.0.1:61324</code>), so you have to load the page when you get to <code>http://127.0.0.1:61324</code>), so you have to
<strong>read on in the next section</strong>, especially <strong>read on in the next section</strong>, especially

View File

@ -0,0 +1,78 @@
<!DOCTYPE html>
<html>
<title>Chatty Help - Short Guides</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<body>
<div id="backlink"><a href="help.html">Back to main help page</a></div>
<h1><a name="top">Local Subonly Mode (or similar)</a></h1>
<p>You can create your own local subonly mode by ignoring all messages
written by non-subscribers. This can also be applied to e.g. a
manually curated list of users via the Addressbook. The ignored
messages are collected in <code>Channels - Ignored</code>.</p>
<p>Features used: <a href="help-settings.html#Ignore">Ignore System</a>,
<a href="help-addressbook.html">Addressbook</a>,
<a href="help-settings.html#Commands">Custom Commands</a></p>
<h3>Create Ignore Entry</h3>
<p>Go to <code>Main - Settings - Ignore</code> and make sure <code>Enable Ignore</code>
is ticked. Then add to the list (press the Plus-Button):</p>
<p><code>!status:smb chanCat:subonly</code></p>
<p>The <code>status:</code> prefix matches on messages by user status.
The <code>!</code>
in front negates the effect, so in this case it ignores users that
are <em>not</em> a subscriber, moderator or the broadcaster of the
channel. See the <a href="help-settings.html#Highlight_Meta_Matching">Highlight help</a>
for more information on the <code>status:</code> prefix.</p>
<p>The second requirement for a match is <code>chanCat:subonly</code>,
which requires the channel the message was send in to be associated
with the Addressbook category <code>subonly</code>. This isn't quite
necessary, but makes it possible to toggle this Ignore list entry
per channel.</p>
<h3>Toggle the Addressbook category</h3>
<p>If you used the <code>chanCat:</code> prefix as shown above, you need
to add the <code>subonly</code> Addressbook category to a channel.
You can either use the <code>Channels - Addressbook</code> Dialog or
an <a href="help-addressbook.html#commands">Addressbook Command</a>.
In both cases you have to add the <em>channel</em>, so including the
leading <code>#</code>.</p>
<p>An Addressbook command to toggle the category for a channel would be:</p>
<p><code>/ab change #joshimuz !subonly</code></p>
<p>This toggles the <code>subonly</code> category for the given channel, so
when the category is there, it removes the category, and when the category is not there,
it adds the category.</p>
<h3>Create Custom Command to toggle Addressbook category</h3>
<p>To do this a bit more conveniently, you can add it as a custom command. Go
to <code>Main - Settings - Commands</code> and add the following to the
list:</p>
<p><code>/Toggle_Subonly /ab change #$(chan) !subonly</code></p>
<p>If you enter <code>/Toggle_Subonly</code> (you can enter e.g.
<code>/Tog</code> and then press <kbd>TAB</kbd> to TAB Complete the
command), this automatically toggles the Addressbook category for
the channel where you entered the command (<code>$(chan)</code>).</p>
<p>To make this even more convenient, you can also add the Custom Command
to the <code>Commands - Channel Context Menu</code> setting or
trigger it via a button by adding it to the <code>Hotkeys</code>
setting (selecting Custom Command as Action and entering the name of
the added Custom Command).</p>
<h3>Other uses</h3>
<p>This could also be changed or extended to allow users manually added
to the Addressbook. The Ignore entry could be changed to:</p>
<p><code>!status:smb !cat:allow chanCat:subonly</code></p>
<p>The <code>cat:</code> prefix requires the user to be associated with an Addressbook
category, although in this case it is negated with <code>!</code>,
so any user that has the <code>allow</code> category will <em>not</em>
match the Ignore list entry, and thus their message will show.</p>
<p>Users can be added to the category via the User Context Menu
(right-click on a user in chat) or the ways detailed in the other
sections above (although in this case, unlike the <code>chanCat:</code>
prefix, the user name must be added without a leading <code>#</code>).</p>
</body>
</html>

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.16">0.16</a> |
<a href="#0.15">0.15</a> | <a href="#0.15">0.15</a> |
<a href="#0.14">0.14</a> | <a href="#0.14">0.14</a> |
<a href="#0.13.1">0.13.1</a> | <a href="#0.13.1">0.13.1</a> |
@ -64,7 +65,77 @@
full list of changes.</p> full list of changes.</p>
<h2> <h2>
<a name="0.15">Version 0.15</a> <a name="latest">(This one!) (2021-07-03)</a> <a name="0.16">Version 0.16</a> <a name="latest">(This one!)</a> (2022-01-06)
<a href="#top" class="top">[back to top]</a>
</h2>
<p>With the v5 Twitch API shutting down early 2022 more features have been
migrated to the new API, which does not quite provide all the features
or information that you may be used to (or limited to the broadcaster).
However, a new feature (in beta) is the Blocked Terms API that allows
moderators to view and edit a channel's Blocked Terms through the Admin
Dialog.</p>
<p>Some new APIs require new access scopes, so you probably have to renew
your Chatty login (check <span class="m">&lt;Main - Account&gt;</span>).</p>
<pre>
### Twitch Features
- Changed various features to new API, some notes:
- Admin Dialog: New API only allows the broadcaster to set the title/game (old
API is being used for editors until it is turned off)
- Commercials: New API only allows the broadcaster to run commercials (editors
will trigger the chat command instead)
- Subscribers List: Subscription time not available anymore, but subscription
tiers and total subpoints are now available in the new API
- User Dialog: Some information removed that isn't in the new API, added some
subscriber information from the user's subscriber badge (if available)
- Added page to Admin Dialog for viewing and editing Blocked Terms (AutoMod)
- Added info messages about your message being handled by AutoMod
- Added more info messages for Point Redemptions
- Removed follow/unfollow feature because Twitch removed the API
### Settings
- Custom Badges: Added ability to match on message tags
- Matching: Added `config:live` prefix to check for live stream
- Highlight: Added setting to mark matches from all highlight entries instead of
just the first matching one
- Notifications: Added ability to specify several channels in "Channel" field
- Updating: Added setting to only update JAR
- Added ability to set separate buffer size for Highlights/Ignore panel
- Added more User Dialog Message History highlight options
- Added Live Streams settings page with some Live Streams list settings and more
(e.g. you can toggle the new icon in the Live Streams list for open channels)
### Other
- Added FFZ custom VIP badge
- Joining channels:
- Changed /join command to comma-separated list and same features as other
ways to join channels (Connect Dialog, Join Dialog etc.)
- Added more options for joining channels (Addressbook categories, favorites,
live resctriction)
- Some Twitch URLs can be specified for joining channels
- Reduced join delay a bit
- Automatically change channel for Followers/Admin panel, added options in the
panel's context menus to use fixed channel and to manually change the channel
- Added more Setting Commands, including alternatives with less verbose output
- Added option to print output of /proc command
- Added /foreach command
- Made Stream Chat dockable
- Initialize Settings Dialog when first opened to improve startup times
- Various other UI improvements
- Changed to OpenJDK 17 (Adoptium) for Windows Standalone
- Updated help
### Bugfixes
- Added method to interrupt long-running regular expressions which would cause
the program to hang (e.g. catastrophic backtracking)
- Fixed icons in Live Streams List not showing up properly in some cases
- Fixed error when setting maximum tab width too low
- Various other bugfixes
</pre>
<h2>
<a name="0.15">Version 0.15</a> (2021-07-03)
<a href="#top" class="top">[back to top]</a> <a href="#top" class="top">[back to top]</a>
</h2> </h2>
<p>More Tabs/Layouts improvements:</p> <p>More Tabs/Layouts improvements:</p>

View File

@ -23,9 +23,13 @@
toggle it and any other value to disable it.</dd> toggle it and any other value to disable it.</dd>
<dd>Can be used to set the value of a key of a Map setting (for example <dd>Can be used to set the value of a key of a Map setting (for example
<code>/set lafCustomTheme selectionBackgroundColor 255 180 0</code>).</dd> <code>/set lafCustomTheme selectionBackgroundColor 255 180 0</code>).</dd>
<dd>The <code>/set2</code> command works the same, but in case of Map
settings omits outputting all values of the Map.</dd>
<dt><code>/get &lt;setting&gt;</code></dt> <dt><code>/get &lt;setting&gt;</code></dt>
<dd>Shows the current value of a setting.</dd> <dd>Shows the current value of a setting.</dd>
<dd>For Map settings <code>/get &lt;setting&gt; &lt;key&gt;</code> can
be used to get the value of a specific key only.</dd>
<dt><code>/reset &lt;setting&gt;</code></dt> <dt><code>/reset &lt;setting&gt;</code></dt>
<dd>Resets the setting to the default (hard-coded) value.</dd> <dd>Resets the setting to the default (hard-coded) value.</dd>
@ -36,10 +40,19 @@
<dt><code>/add &lt;setting&gt; &lt;value&gt;</code></dt> <dt><code>/add &lt;setting&gt; &lt;value&gt;</code></dt>
<dd>Adds an item to a List setting.</dd> <dd>Adds an item to a List setting.</dd>
<dd>The <code>/add2</code> command works the same, but omits outputting
all values of the List.</dd>
<dt><code>/addUnique &lt;setting&gt; &lt;value&gt;</code></dt>
<dd>Adds an item to a List setting if it hasn't already been added.</dd>
<dd>The <code>/addUnique2</code> command works the same, but omits
outputting all values of the List.</dd>
<dt><code>/remove &lt;setting&gt; &lt;value&gt;</code></dt> <dt><code>/remove &lt;setting&gt; &lt;value&gt;</code></dt>
<dd>Removes an item from a List setting or removes a key (and the <dd>Removes an item from a List setting or removes a key (and the
associated value) from a Map setting.</dd> associated value) from a Map setting.</dd>
<dd>The <code>/remove2</code> command works the same, but omits
outputting all values of the setting.</dd>
</dl> </dl>
<p><em>Tip:</em> You can use <a href="help.html#nickCompletion">TAB Completion</a> <p><em>Tip:</em> You can use <a href="help.html#nickCompletion">TAB Completion</a>

View File

@ -55,12 +55,8 @@
<dd>Connect immediately and join the channels specified in the field <dd>Connect immediately and join the channels specified in the field
below. You can define several channels by seperating them with a below. You can define several channels by seperating them with a
comma.</dd> comma.</dd>
<dd>Can include Addressbook categories, e.g. <code>[vip]</code> to join <dd>For more information on how channels can be specified, such as joining
all entries associated with the "vip" category. Can restrict to just channels by Addressbook category, see <a href="help.html#join">Joining Channels</a>.</dd>
channel entries <code>[vip #]</code> (would only get Addressbook
entries such as "#joshimuz") or non-channel entries <code>[vip !#]</code>
(entries such as "joshimuz"). This can also be used in some other
places for joining channels.</dd>
<dt>Connect and join previously open channels</dt> <dt>Connect and join previously open channels</dt>
<dd>Connect immediately and join the channels you had open when you <dd>Connect immediately and join the channels you had open when you
@ -259,7 +255,8 @@
the category <code>vip</code>)</li> the category <code>vip</code>)</li>
<li>User-related <a href="#Highlight_Meta_Matching">Highlight Matching</a> <li>User-related <a href="#Highlight_Meta_Matching">Highlight Matching</a>
prefixes (e.g. <code>$m:status:r</code>, where <code>status:r</code> prefixes (e.g. <code>$m:status:r</code>, where <code>status:r</code>
is the Highlight Matching prefix)</li> is the Highlight Matching prefix, or <code>$m:config:t|first-msg=1</code>
to match message tags, some of which are also user-related)</li>
<li>Most other <a href="#Usercolors">Usercolors</a> restrictions</li> <li>Most other <a href="#Usercolors">Usercolors</a> restrictions</li>
</ul> </ul>
</dd> </dd>
@ -972,7 +969,11 @@
<ul> <ul>
<li><code>config:firstmsg</code> - Restrict matching to the <li><code>config:firstmsg</code> - Restrict matching to the
first message of this user in this channel during the first message of this user in this channel during the
current session (first message in User Dialog)</li> current session (first message in User Dialog).<br />
To match on the first message of this user in the channel
overall, you can match on the message tags that Twitch
sends: <code>config:t|first-msg=1</code> (as long as Twitch
doesn't change it)</li>
<li><code>config:repeatedmsg</code> - Matches if a user repeats <li><code>config:repeatedmsg</code> - Matches if a user repeats
the same message (this requires the <a href="#RepeatMsg">Repetition Detection</a> in the same message (this requires the <a href="#RepeatMsg">Repetition Detection</a> in
the Moderation settings to be enabled). Can optionally the Moderation settings to be enabled). Can optionally
@ -996,6 +997,13 @@
regex matching on the value.</li> regex matching on the value.</li>
<li><code>config:url</code> - Message must contain a URL (same <li><code>config:url</code> - Message must contain a URL (same
as what is made clickable)</li> as what is made clickable)</li>
<li><code>config:live</code> or <code>config:live|title/game</code> -
Stream must be live, title and game are interpreted as regex
(like the <code>reg:</code> prefix) and match on the stream's
title or game, use <code>!live</code> to negate match<br />
Example: <code>config:live|/"Grand Theft Auto"</code> would match
in any channel with a live stream where <code>Grand Theft Auto</code>
occurs in the currently streamed game/category</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
@ -1655,8 +1663,9 @@
<h3>Event settings (Notification/Sound)</h3> <h3>Event settings (Notification/Sound)</h3>
<dl class="dl-settings"> <dl class="dl-settings">
<dt>Channel</dt> <dt>Channels</dt>
<dd>Name of the channel this item should be restricted to.</dd> <dd>Name of the channel or channels (comma-separated) this item should be
restricted to.</dd>
<dt>Match</dt> <dt>Match</dt>
<dd>Match the given text or message, in the same format as for <dd>Match the given text or message, in the same format as for
@ -1788,11 +1797,18 @@
<a name="Other">Other</a> <a name="Other">Other</a>
<a href="#top" class="top">[back to menu]</a> <a href="#top" class="top">[back to menu]</a>
</h2> </h2>
<h3>Graphic Settings</h3>
<p>More information about <a href="help-troubleshooting.html#visual-glitches">Graphics Glitches</a>
and <a href="help-troubleshooting.html#scaling">UI Scaling</a>.</p>
<h3>Updates</h3>
<dl class="dl-settings">
<dt>Automatically check for new version</dt>
<dd>Checks for new versions every few days and outputs a message about it.</dd>
</dl>
<h3>Other</h3> <h3>Other</h3>
<dl class="dl-settings"> <dl class="dl-settings">
<dt>Inform me about new versions</dt>
<dd>Checks for new versions every few days and outputs a message about it.</dd>
<dt>Auto-Unhost when your stream goes live</dt> <dt>Auto-Unhost when your stream goes live</dt>
<dd>Automatically <dd>Automatically
sends the <code>/unhost</code> command to your channel if you started sends the <code>/unhost</code> command to your channel if you started

View File

@ -7,64 +7,14 @@
<h1><a name="top">More Guides..</a></h1> <h1><a name="top">More Guides..</a></h1>
<p> <p>
<a href="#localsubonly">Local Subscriber-Only Mode</a> | <a href="#localsubonly">Local Subscriber-Only Mode</a> |
<a href="#streamers">Chatty for Streamers</a> | <a href="#streamers">Chatty for Streamers</a>
<a href="#eventchat">Join Eventchat</a>
</p> </p>
<p>Probably shorter guides about some aspects of Chatty.</p> <p>Probably shorter guides about some aspects of Chatty.</p>
<h2><a name="localsubonly">Local Subscriber-Only Mode</a></h2> <h2><a name="localsubonly">Local Subscriber-Only Mode</a></h2>
<p>You can create your own local subonly mode, which ignores all messages <p><em>This has been moved to it's <a href="help-local_subonly.html">own page</a></em></p>
written by non-subscribers.</p>
<p>Features used: <a href="help-settings.html#Ignore">Ignore System</a>, <a href="help-addressbook.html">Addressbook</a>,
<a href="help-settings.html#Commands">Custom Commands</a></p>
<h3>Create Ignore Entry</h3>
<p>Go to <code>Main - Settings - Ignore</code> and make sure <code>Enable Ignore</code>
is ticked. Then add to the list (press the Plus-Button):</p>
<p><code>!status:smbaf chanCat:subonly</code></p>
<p>The <code>!status:smbaf</code> prefix matches on messages send by users that
<em>don't</em> have any of the status levels defined, in this case users
that are neither a subscriber (<code>s</code>), moderator (<code>m</code>), broadcaster (<code>b</code>),
admin (<code>a</code>) or staff (<code>f</code>). So basicially this only matches on normal users.</p>
<p>The second requirement for a match is the <code>chanCat:subonly</code>
prefix, which refers to the channel category <code>subonly</code>, which
means the channel the message was send in needs to have that Addressbook category.
This is used to be able to easily toggle subonly-mode for a channel, and
of course to prevent it being enabled in all channels you join in the
first place.</p>
<h3>Create Custom Command to modify Addressbook</h3>
<p>To make use of the Ignore Entry defined in the previous section, you need
to add the <code>subonly</code> category to the channel you want to have
it enabled for. To do this, you could open the Addressbook Dialog
(<code>Channels - Addressbook</code>) and add the channel with the
category there (channels need a leading # in this case, so e.g. <code>#joshimuz</code>).</p>
<p>You can however also use <a href="help-addressbook.html#commands">Addressbook Commands</a>:</p>
<p><code>/ab change #joshimuz !subonly</code></p>
<p>This toggles the <code>subonly</code> category for the given channel, so
when the category is there, it removes the category, and when the category is not there,
it adds the category.</p>
<p>To do this a bit more conveniently, you can add it as a custom command. Go
to <code>Main - Settings - Commands</code> and add the following to the
list:</p>
<p><code>/Toggle_Subonly /ab change #$$1 !subonly</code></p>
<p>If you enter <code>/Toggle_Subonly joshimuz</code>, this will automatically
run the Addressbook as mentioned above (<code>$$1</code> means this is
being replaced with the first word after the command).</p>
<p>To make this more convenient (entering the command with the correct channel
could be a bit of a hassle), add the Custom Command to the <code>Channel Context Menu</code>
(on the same page in the settings). Just click on <code>Edit</code> and add
the command name (without any parameters):</p>
<p><code>/Toggle_Subonly</code></p>
<p>Now if you right-click on a channel, the context menu that opens should
have an entry <code>Toggle Subonly</code>, which you can
use to turn your own local subonly mode for the current channel on and off.</p>
<h2><a name="streamers">Chatty for Streamers</a></h2> <h2><a name="streamers">Chatty for Streamers</a></h2>
<h3>Stay informed</h3> <h3>Stay informed</h3>
<ul> <ul>
<li>Open the <code>&lt;View - Channel Info&gt;</code> to see your current <li>Open the <code>&lt;View - Channel Info&gt;</code> to see your current
@ -83,8 +33,7 @@
<li>Presets/History for title/game combinations</li> <li>Presets/History for title/game combinations</li>
<li>Favorite games you play often</li> <li>Favorite games you play often</li>
<li>Run commercials on a delay and/or timer</li> <li>Run commercials on a delay and/or timer</li>
<li>Run commercials while playing a game via a global hotkey <li>Run commercials while playing a game via a global hotkey</li>
(Windows only)</li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -104,54 +53,6 @@
you don't want to show).</li> you don't want to show).</li>
</ul> </ul>
<h2><a name="eventchat">Join Eventchat</a></h2>
<p><strong>As of March 2016 Twitch doesn't use separate Event Chat servers
anymore.</strong></p>
<p class="del">When you join a channel of a big event and you don't receive any (or few) messages,
it's possible that the channel is on the Event Chat servers, not the
regular Twitch Chat servers. It's a common problem to run into if you're
not using the website (like any regular IRC client, Chatty and possibly
mobile).</p>
<p class="del">In order to join Event Chat in Chatty, you have to connect to a different
server. See <a href="http://twitchstatus.com/#chat">Twitchstatus.com</a> for an (unofficial) list
of servers (make sure you choose the <code>Event Chat</code> tab and use
a server/port combination that is marked as <code>irc</code> in the
<code>Protocol</code> column).</p>
<p>Since Chatty can only connect to one server at a time, you either have
to only join channels that are on the Event Chat servers, or run two
<a href="help-guide1.html">separate instances</a> of Chatty at the
same time.</p>
<p>There are different ways of connecting to a different server:</p>
<ul>
<li>The <code>/server &lt;host&gt;[:port]</code> command connects to the given server and
port manually (for example <code>/server irc.twitch.tv:443</code>,
replace with an Event Chat server accordingly).</li>
<li>The <code>-server</code> and <code>-port</code> commandline options
allow you to specify a different server when you start Chatty.</li>
<li>The <code>Server</code> and <code>Port</code> settings in the
Settings Dialog under <code>Advanced</code> allows you to set
fixed settings for the server to connect to. This especially makes sense
if you are using <a href="help-guide1.html">separate settings for different instances</a> of Chatty.</li>
</ul>
<p>If you want to switch between servers sometimes, you can create a
custom command to connect to Event Chat so you don't have to enter
the command with the IP and port manually every time. Go to
<code>Settings - Commands</code>, add a new Custom Command and enter:
<code>/eventchat /server &lt;server&gt;:&lt;port&gt;</code> (replace
with the appropriate IP and port of course). Then you
can just enter <code>/eventchat</code> in the inputbox (while not
being connected) and it will connect to Event Chat and if you want to
connect to regular Twitch Chat just connect regularly via the menu
(and it will use <code>irc.twitch.tv</code> if you didn't change the
server settings).</p>
</body> </body>
</html> </html>

View File

@ -32,6 +32,14 @@ joshimuz
-d -d
H:\\Chatty\\settings1</pre> H:\\Chatty\\settings1</pre>
<p>The format has changed in newer Standalone versions, which requires a
prefix on each line:</p>
<pre>
[ArgOptions]
arguments=-channel
arguments=joshimuz</pre>
<p>Note that for this file, backslashes need to be escaped. For this option <p>Note that for this file, backslashes need to be escaped. For this option
you can alternatively also use forward slashes, which Java should you can alternatively also use forward slashes, which Java should
understand.</p> understand.</p>
@ -39,7 +47,7 @@ H:\\Chatty\\settings1</pre>
<p>When you specify any launch options on the commandline/in the shortcut, <p>When you specify any launch options on the commandline/in the shortcut,
then the launch options in the <code>Chatty.cfg</code> are ignored.</p> then the launch options in the <code>Chatty.cfg</code> are ignored.</p>
<h3><a name="cfg-jvm">JVM Options</a></h3> <h3><a name="cfg-jvm">JVM/Java Options</a></h3>
<p>The <code>[JVMOptions]</code> section contains parameters that are given <p>The <code>[JVMOptions]</code> section contains parameters that are given
to the JVM (Java Virtual Machine) when Chatty is started. There should to the JVM (Java Virtual Machine) when Chatty is started. There should
already be a few options there by default, for example:</p> already be a few options there by default, for example:</p>
@ -51,6 +59,14 @@ H:\\Chatty\\settings1</pre>
<p>These restrict the maximum heap (memory usage) to 400MB and disable <p>These restrict the maximum heap (memory usage) to 400MB and disable
Hardware Acceleration to reduce GUI issues.</p> Hardware Acceleration to reduce GUI issues.</p>
<p>In newer Standalone versions this needs to be under the <code>[JavaOptions]</code>
section and also requires a prefix on each line:</p>
<pre>
[JavaOptions]
java-options=-Xmx400M
java-options=-Dsun.java2d.d3d=false</pre>
</body> </body>
</html> </html>

View File

@ -26,6 +26,7 @@
<ul> <ul>
<li><a href="#font">Broken characters / Fallback fonts</a></li> <li><a href="#font">Broken characters / Fallback fonts</a></li>
<li><a href="#visual-glitches">Visual Artifacts/Glitches</a></li> <li><a href="#visual-glitches">Visual Artifacts/Glitches</a></li>
<li><a href="#scaling">Blurry UI Scaling</a></li>
</ul> </ul>
</li> </li>
<li>Other <li>Other
@ -189,14 +190,26 @@
</h2> </h2>
<h3>Windows Standalone Version</h3> <h3>Windows Standalone Version</h3>
<p>The <code>Chatty.exe</code> uses the bundled Java (JRE) to execute the <p>The <code>Chatty.exe</code> uses the bundled Java (JRE) in the <code>runtime</code>
<code>Chatty.jar</code> in the <code>app</code> directory. If nothing directory to execute the <code>Chatty.jar</code> in the <code>app</code>
happens after starting the <code>Chatty.jar</code>, try the following:</p> directory. If you have issues executing the <code>Chatty.exe</code>, try
<ul> the following:</p>
<li>Re-download the Standalone Bundle and make sure it extracts fully.</li>
<li>Make sure that the path where Chatty is located contains only ASCII <dl class="defList">
characters (basicially no non-english letters).</li> <dt>Error: Failed to find JVM..</dt>
</ul> <dd>The <code>Chatty.exe</code> and the bundled Java in the <code>runtime</code>
directory may not be compatible or they weren't installed correctly.
Manually delete the <code>Chatty.exe</code> and the <code>runtime</code>
directory and re-install the Standalone version and make sure it installs or
extracts fully.</dd>
<dt>Error: Class chatty/Chatty not found. / Failed to launch JVM.</dt>
<dd>Make sure that the path where Chatty is located contains only ASCII
characters (basicially no non-english letters).</dd>
<dt>Issue: Nothing happens when executing the Chatty.exe</dt>
<dd>In new Standalone versions (ChattyPortable.exe exists) make sure
that the directory <code>runtime/lib/ext</code> does not exist.</dd>
</dl>
<h3>JAR Version</h3> <h3>JAR Version</h3>
<p>You need to have at least Java 8 JRE (Java Runtime Environment) installed to run Chatty.</p> <p>You need to have at least Java 8 JRE (Java Runtime Environment) installed to run Chatty.</p>
@ -305,6 +318,45 @@
for experiences of other users and possible workarounds, and add your for experiences of other users and possible workarounds, and add your
own data to the discussion.</p> own data to the discussion.</p>
<h2>
<a name="scaling">Blurry UI Scaling</a>
<a href="#top" class="top">[back to menu]</a>
</h2>
<p>When using a High-DPI monitor or changing the monitor scale setting in
Windows, you may experience blurryness in the UI since UI scaling is not
very well supported at the moment.</p>
<h3>Windows</h3>
<p>If an app does not handle scaling Windows will attempt to scale up the
app automatically, which will usually not look very sharp. There are
different ways to tell Windows that Chatty/Java should handle the
scaling:</p>
<ul>
<li>The Windows Standalone (Chatty.exe) contains an application manifest
that should tell Windows that the app will do the scaling.</li>
<li>Some Java executables tell Windows that the app will do the scaling,
however the javaw.exe that is used by default when starting a JAR
may not do that.</li>
<li>You can change the Compatability settings of a Java executable in
order to tell Windows to let the app do the High-DPI scaling. This
however may cause issues when moving the app between differently
scaled screens (e.g. the scaling is done visually, but mouse events
are triggered as if it was scaled differently).</li>
</ul>
<p>Once Windows lets the app do the scaling, there are different
possibilities:</p>
<ul>
<li>Java 8 versions will simply not do any scaling at all, so on
High-DPI Chatty may appear smaller.</li>
<li>Java 9 and higher can scale the UI correctly (although not always
perfectly), except for images, which will still occur blurry.</li>
</ul>
<p>You can change the "UI Scaling" setting under "Main - Settings - Other"
to force a fixed scaling. This may not always work. To avoid blurry
images and other UI issues a scaling of <code>1.0</code> is recommended
(you can change "Look", "Font" and "Emoticons" settings to scale up
fonts and emotes).</p>
<h2> <h2>
<a name="log">Debug log</a> <a name="log">Debug log</a>
<a href="#top" class="top">[back to menu]</a> <a href="#top" class="top">[back to menu]</a>

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.15)</a></h1> <h1><a name="top">Chatty (Version: 0.16)</a></h1>
<table> <table>
<tr> <tr>
<td valign="top"> <td valign="top">
@ -20,6 +20,7 @@
<strong>Chat basics</strong> <strong>Chat basics</strong>
<ul class="menu"> <ul class="menu">
<li><a href="#join">Joining Channels</a>
<li><a href="#symbols">User Status Symbols</a></li> <li><a href="#symbols">User Status Symbols</a></li>
<li><a href="#userlist">Userlist</a></li> <li><a href="#userlist">Userlist</a></li>
<li><a href="#favorites">Favorites / History</a></li> <li><a href="#favorites">Favorites / History</a></li>
@ -89,10 +90,11 @@
<li><a href="help-getting-started.html">Getting Started Guide</a></li> <li><a href="help-getting-started.html">Getting Started Guide</a></li>
<li><a href="help-guide1.html">Run more than one instance of Chatty</a></li> <li><a href="help-guide1.html">Run more than one instance of Chatty</a></li>
<li><a href="help-guide2.html">What to do when getting login fails</a></li> <li><a href="help-guide2.html">What to do when getting login fails</a></li>
<li><a href="help-guide_create_shortcut.html">Create shortcut (launch options/icon)</a></li> <li><a href="help-guide_create_shortcut.html">Create shortcut (launch options/icon)</a></li>
<li><a href="help-bouncer.html">Using a Bouncer</a></li> <li><a href="help-bouncer.html">Using a Bouncer</a></li>
<li><a href="#custom-processes">Run Custom Processes</a></li> <li><a href="#custom-processes">Run Custom Processes</a></li>
<li><a href="help-short_guides.html">More Guides..</a></li> <li><a href="help-short_guides.html">More Guides..</a></li>
<li><a href="help-local_subonly.html">Local Subonly</a></li>
</ul> </ul>
<p style="padding: 10px;">Also check out the official <p style="padding: 10px;">Also check out the official
<a href="http://www.youtube.com/user/chattyclient">YouTube Channel</a> <a href="http://www.youtube.com/user/chattyclient">YouTube Channel</a>
@ -272,7 +274,7 @@
<code>/unhost</code>, <code>/raid</code>, <code>/unraid</code>, <code>/unhost</code>, <code>/raid</code>, <code>/unraid</code>,
<code>/color</code> <code>/color</code>
just like in normal Twitch Chat</li> just like in normal Twitch Chat</li>
<li><code>/join &lt;channel&gt;</code> - Joins the given channel</li> <li><code>/join &lt;channel&gt;</code> - Joins the given channels, see <a href="#join">Joining Channels</a> for more information</li>
<li><code>/part</code> or <code>/close</code> - Leaves the current channel</li> <li><code>/part</code> or <code>/close</code> - Leaves the current channel</li>
<li><code>/joinhosted</code> - Join currently hosted channel (if any)</li> <li><code>/joinhosted</code> - Join currently hosted channel (if any)</li>
<li><code>/favorite [channel]</code> and <code>/unfavorite [channel]</code> - Add/remove a channel to/from the Channel Favorites</li> <li><code>/favorite [channel]</code> and <code>/unfavorite [channel]</code> - Add/remove a channel to/from the Channel Favorites</li>
@ -294,7 +296,8 @@
<ul> <ul>
<li><a href="#streamhighlights">Stream Highlights / Markers commands</a> (including <code>/marker</code>)</li> <li><a href="#streamhighlights">Stream Highlights / Markers commands</a> (including <code>/marker</code>)</li>
<li><code>/follow [user]</code>, <code>/unfollow [user]</code> - Follow <li><code>/follow [user]</code>, <code>/unfollow [user]</code> - Follow
or unfollow the given user, or the current channel if no user is given</li> or unfollow the given user, or the current channel if no user is given
<em>(Following/unfollowing has been removed from the Twitch API)</em></li>
</ul> </ul>
<h3><a name="commands-settings">Settings / Customization commands:</a></h3> <h3><a name="commands-settings">Settings / Customization commands:</a></h3>
@ -386,9 +389,22 @@
<h3><a name="commands-chain">Execute several commands</a></h3> <h3><a name="commands-chain">Execute several commands</a></h3>
<p>The <code>/chain</code> command allows you to run several commands at the <p>The <code>/chain</code> command allows you to run several commands at the
same time. Each part separated by a <code>|</code> is basicially same time. Each part separated by a <code>|</code> is basicially
entered into the inputbox again. Whitespace around each part is trimmed. entered into the inputbox again.</p>
Escape <code>|</code> with <code>|</code> to use it directly.</p>
<dl class="defList">
<dt><code>/chain [command1] | [command2] | [command3]</code></dt>
<dd>Runs command1, then command2, then command3. This can be repeated
further by adding more parts separated by <code>|</code>.</dd>
<dd>Whitespace around each command is trimmed.</dd>
<dd><em>Note:</em> A <code>|</code> character in a command would be
interpreted as a command separator. Escape <code>|</code> with
itself to use the character without special meaning (<code>||</code>).
If used in a Custom Command, the function <code>$cs()</code> (as in
<u>c</u>hain <u>s</u>afe) can be used around replacements for
escaping (e.g. <code>$cs($1-)</code>).</dd>
</dl>
<p>Examples:</p>
<dl class="defList"> <dl class="defList">
<dt><code>/chain /echo a | /echo b</code></dt> <dt><code>/chain /echo a | /echo b</code></dt>
<dd>Outputs <code>a</code> and <code>b</code></dd> <dd>Outputs <code>a</code> and <code>b</code></dd>
@ -401,26 +417,44 @@
replacements, consider the following:</p> replacements, consider the following:</p>
<dl class="defList"> <dl class="defList">
<dt><code>/chain /echo $(msg) | /echo abc</code></dt> <dt><code>/chain /echo $cs($(msg)) | /echo abc</code></dt>
<dd>All replacements are performed before the <code>/chain</code> <dd>All replacements are performed before the <code>/chain</code>
command is executed, so anything in <code>$(msg)</code> is put in command is executed, so anything in <code>$(msg)</code> is put in
first. If <code>$(msg)</code> contained <code>Hello World!</code>:<br /> first. If <code>$(msg)</code> contained <code>Hello World!</code>:<br />
<code>/chain /echo Hello World! | /echo abc</code></dd> <code>/chain /echo Hello World! | /echo abc</code></dd>
<dd>This means that if a replacement contains a <code>|</code> character <dt><code>/chain /echo $(msg) | /echo abc</code></dt>
it would add an additional command. If <code>$(msg)</code> contained <code>Hello | World!</code>, then <code>World!</code> would be <dd>Assuming no escaping were to take place: If <code>$(msg)</code>
separately entered into the inputbox (so it would output two <code>/echo</code> would contain <code>Hello | World!</code> then the <code>|</code>
info messages and send <code>World!</code> to chat):<br /> in it would be interpreted as a command separator and thus <code>World!</code>
would be separately entered into the inputbox (so it would output
two <code>/echo</code> info messages and send <code>World!</code> to
chat):<br />
<code>/chain /echo Hello | World! | /echo abc</code></dd> <code>/chain /echo Hello | World! | /echo abc</code></dd>
<dd>Since this could cause issues, any top-level replacement will escape <dd>This could cause serious issues, so it is recommended to always
the <code>|</code> character automatically if the Custom Command make sure text is safe to be used in the <code>/chain</code> command:
begins with the <code>/chain</code> command (so it would output <ul>
<li>Wrap replacements in the <code>$cs()</code> function (as in <u>c</u>hain <u>s</u>afe)
when used in a <code>/chain</code> command to escape
<code>|</code> characters: <code>$cs($(msg))</code></li>
<li>In addition, any top-level replacement will escape
<code>|</code> characters automatically if the Custom Command
begins with <code>/chain </code> (so the above
example should normally not cause issues). However it is
good practice to always use the <code>$cs()</code> function
anyway (it won't be escaped twice) in case something changes
in the future so that the Custom Command doesn't begin with
<code>/chain</code> anymore.<br />
You can prevent this automatic escaping (if you are
absolutely sure that you want replacements to be able to
insert any command) by adding a backslash in front (this
doesn't work when you enter the <code>/chain</code> command
directly into the inputbox):<br />
<code>\/chain /echo Hello | World! | /echo abc</code></li>
</ul>
When properly escaped, it will turn into this (which outputs
<code>Hello | World!</code> and <code>abc</code>):<br /> <code>Hello | World!</code> and <code>abc</code>):<br />
<code>/chain /echo Hello || World! | /echo abc</code></dd> <code>/chain /echo Hello || World! | /echo abc</code>
<dd>You can prevent this automatic escaping (if you are absolutely sure that </dd>
you want replacements to be able to insert any command) by adding
a backslash in front (this doesn't work when you enter the <code>/chain</code>
command directly into the inputbox):<br />
<code>\/chain /echo Hello | World! | /echo abc</code></dd>
<dt><code>/chain /echo abc $(chain-test)</code></dt> <dt><code>/chain /echo abc $(chain-test)</code></dt>
<dd>You can test this by using the <code>$(chain-test)</code> replacement. <dd>You can test this by using the <code>$(chain-test)</code> replacement.
@ -431,26 +465,131 @@
<code>Test | Message</code></dd> <code>Test | Message</code></dd>
</dl> </dl>
<h3><a name="commands-foreach">Execute the same command for each entry in a list</a></h3>
<p>The <code>/foreach</code> command allows you to run the same command for
each entry of a space separated list. The command section is run as a
Custom Command, with the <code>$1</code> replacement containing a single
list entry.</p>
<dl class="defList">
<dt><code>/foreach [list] > [command]</code></dt>
<dd>The command consist of the comma-separated list, the <code>&gt;</code>
character and the command to execute (whereas the command is run as
it's own Custom Command with the <code>$1</code> replacement).</dd>
<dd>List and command are trimmed for leading and trailing whitespace.</dd>
<dd><em>Note:</em> Everything after the first <code>&gt;</code>
character is interpreted as the command. If you want to use a
<code>&gt;</code> in the list section you have to escape it with
itself for it to be treated literally (<code>&gt;&gt;</code>). Both the
list and command section will consume a single <code>&gt;</code> only
if they are repeated (<code>&gt;&gt;</code> to <code>&gt;</code>, but
<code>></code> unmodified).</dd>
<dd>If you use a Custom Command replacement in the <code>[list]</code>
section, make sure the text is safe to use:
<ul>
<li>Wrap replacements in the <code>$fs()</code> function (as in <u>f</u>oreach <u>s</u>afe)
to escape <code>&gt;</code> characters: <code>$fs($1-)</code></li>
<li>In addition, any top-level replacements will escape <code>&gt;</code>
characters automatically if the Custom Command begins with
<code>/foreach </code>. However it is good practice to
always use the <code>$fs()</code> function anyway (it won't
be escaped twice) in case something changes in the future so
that the Custom Command doesn't begin with <code>/foreach</code>
anymore.</li>
</ul>
</dd>
</dl>
<p>Examples:</p>
<dl class="defList">
<dt><code>/foreach a b c > /echo $1</code></dt>
<dd>Outputs <code>a</code>, <code>b</code> and <code>c</code> when
entered into the chat inputbox.</dd>
<dt><code>//foreach a b c > /echo \$1</code></dt>
<dd>Outputs <code>a</code>, <code>b</code> and <code>c</code> when
entered into the chat inputbox. Note that the double slash at the
start runs this as a Custom Command, so the <code>$1</code> needs to
be escaped, so it is only replaced when the <code>/echo</code> is
run for each list entry.</dd>
<dt><code>/foreach a &lt;b>> c > /echo $1</code></dt>
<dd>Outputs <code>a</code>, <code>&lt;b&gt;</code> and <code>c</code>
when entered into the chat inputbox. Note the escaped <code>&gt;</code>
in the list entry.</dd>
<dt><code>Open Streams=/foreach $fs($1-) > /openUrl https://twitch.tv/\$1</code> (added as a Streams Context menu entry)</dt>
<dd>When several channels are selected and the command run, it will
replace <code>$1-</code> with the list of selected streams and then
open the URL for each one of them. Note that the <code>$1</code> in
the <code>/openUrl</code> command is escaped.</dd>
</dl>
<p>Detailed Explanation Example:</p>
<dl class="defList">
<dt><code>/foreachtest /foreach a b c > /echo \$1</code> (added to the Custom Commands list)</dt>
<dd>Outputs <code>a</code>, <code>b</code> and <code>c</code> when
<code>/foreachtest</code> is entered into the chat inputbox.</dd>
<dd>Note the <code>\$1</code> with the escape character in front, which
preserves it for replacement when the <code>/echo</code> is run.
<p>This is what happens when you enter <code>/foreachtest</code>:</p>
<ol>
<li>Replacements are performed on the Custom Command
<code>/foreach a b c > /echo \$1</code>. Since the <code>$1</code>
is escaped it is treated as plain text and not replaced (the
<code>\</code> is consumed).</li>
<li>The result <code>/foreach a b c > /echo $1</code> is run
and the <code>/foreach</code> command will use everything
after the <code>></code> as the Custom Command to run (and
trim whitespace).</li>
<li>The Custom Command <code>/echo $1</code> is run with <code>a</code>
as parameter, which results in <code>/echo a</code> being
run. The same is repeated for <code>b</code> and <code>c</code>.</li>
</ol>
<p>If the <code>$1</code> is not escaped:</p>
<ol>
<li>Replacements are performed on the Custom Command
<code>/foreach a b c > /echo $1</code>. The <code>$1</code>
is replaced with an empty string (no argument given with the
<code>/foreachtest</code> command).</li>
<li>The result <code>/foreach a b c > /echo </code> is run
and the <code>/foreach</code> command will use everything
after the <code>></code> as the Custom Command to run (and
trim whitespace).</li>
<li>The Custom Command <code>/echo</code> is run with <code>a</code>
as parameter (although there is no replacement to make use
of it), which results in <code>/echo</code> being run,
resulting in an error message. The same is repeated for
<code>b</code> and <code>c</code>.</li>
</ol>
<p>If the <code>$1</code> is not escaped, but you provide a command
argument, e.g. <code>/foreachtest 123</code>, then it will
replace the <code>$1</code> with <code>123</code> in the first
step, so <code>/echo 123</code> will be run three times.</p>
</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>
</h2> </h2>
<p>The login data consists of a <em>username</em> (or account name) and most <p>The login data consists of a <em>username</em> (or account name) and most
importantly an <em>access token</em>, which is sort of a revokable importantly an <em>access token</em>, which is sort of a revokable
password that can also have different types of access associated with password that can also have different types of access (scopes) associated with
it, the ones usable for Chatty being:</p> it. You can see the full list of associated scopes under "Main - Account"
(hover over each entry for more information if available).</p>
<p>Some more information on some scopes:</p>
<dl> <dl>
<dt><code>Chat access</code></dt> <dt><code>Chat access</code></dt>
<dd>Required to connect to chat (required for Chatty).</dd> <dd>Required to connect to chat. Some newer APIs need the "Read chat"
and "Send chat" scopes, although for connecting to chat either should
<dt><code>Read user info</code></dt> work.</dd>
<dd>Required to request the streams you follow, so you can get <a href="#notifications">notified</a>
when they start streaming.</dd>
<dt><code>Editor access</code></dt> <dt><code>Editor access</code></dt>
<dd>Allows you to change the stream title/game on your channel and <dd>Allows you to change the stream title/game on your channel, for
channels you are an editor for (<a href="help-admin.html">Admin Dialog</a>).</dd> editors this only works with the old API
(<a href="help-admin.html">Admin Dialog</a>).</dd>
<dt><code>Edit broadcast</code></dt> <dt><code>Edit broadcast</code></dt>
<dd>Allows you to create Stream Markers/set Stream Tags on your channel <dd>Allows you to create Stream Markers/set Stream Tags on your channel
@ -464,11 +603,6 @@
<dd>Required to view the list of your subscribers <dd>Required to view the list of your subscribers
via the <a href="#followers">Subscribers Dialog</a> (if you have a sub button).</dd> via the <a href="#followers">Subscribers Dialog</a> (if you have a sub button).</dd>
<dt><code>Follow channels</code>
<dd>Gives you access to use the context menu (right-click) entries
<code>Miscellaneous - Follow/Unfollow Channel</code> and use the
<code>/follow</code> and <code>/unfollow</code> commands.</dd>
<dt><code>Your Subscriptions</code></dt> <dt><code>Your Subscriptions</code></dt>
<dd>Enables more accurate display of your emotes (for "Extra - Emotes <dd>Enables more accurate display of your emotes (for "Extra - Emotes
Dialog", TAB Completion and when sending a message).</dd> Dialog", TAB Completion and when sending a message).</dd>
@ -484,45 +618,27 @@
channel.</dd> channel.</dd>
</dl> </dl>
<p>Once requested from Twitch, the login data is stored locally on your
computer along with the other settings of Chatty.
<span style="text-decoration: line-through">Since Twitch gives out the
access token per application, any access token for the same account
requested with Chatty will be invalidated when you request a new access
token</span>.
<span style="text-decoration: underline">This doesn't seem to be the
case anymore.</span></p>
<p>If getting login data fails, read <a href="help-guide2.html">this guide</a>. <p>If getting login data fails, read <a href="help-guide2.html">this guide</a>.
If your login was determined invalid, read <a href="#login-invalid">down below</a>.</p> If your login was determined invalid, read <a href="#login-invalid">down below</a>.</p>
<h3><a name="access">Allow more access</a></h3> <h3><a name="access">Allow more/less access</a></h3>
<p>To allow Chatty more access than it already has (e.g. if you haven't <p>To change what Chatty is allowed to do (e.g. if you haven't selected
selected editor access before, but you want it now), you need to request editor access before, but you want it now), you need to request a new
a new access token. Just go to <code>&lt;Main - Account&gt;</code>, access token. Just go to <code>&lt;Main - Account&gt;</code>,
delete the login and request it again with the necessary access.</p> delete the login and request it again with the access scopes that you
want selected.</p>
<h3>Allow less access</h3>
<p>To allow Chatty less access than it already has (e.g. you don't want it
to have editor access anymore) you need to first revoke access
completely in your Twitch Account
<a href="http://www.twitch.tv/settings/connections">Settings</a>, then
authorize access again. What will not work is just requesting a new
token without selecting the now unwanted access. Twitch will always
respond with a token that has at least as much access as the previous
one.</p>
<h3><a name="login-security">Security</a></h3> <h3><a name="login-security">Security</a></h3>
<p>The access token is saved in the <code>login</code> file in the settings <p>The access token is saved in the <code>login</code> file in the settings
<a href="help-guide_folders.html">directory</a> and can thus be accessed <a href="help-guide_folders.html">directory</a> and can thus be accessed
by anyone having access to your computer. by anyone having access to your computer.
It allows anyone who obtains it to chat in your name and access the other It allows anyone who obtains it to chat in your name and do the other things
things listed above (if you allowed it when getting the token). If you think that you have allowed Chatty to do. If you think the token may have been
the token may have been compromised, please immediately go to your Twitch compromised, please immediately go to your Twitch Settings subsection
Settings subsection
<a href="http://www.twitch.tv/settings/connections">Connections</a> <a href="http://www.twitch.tv/settings/connections">Connections</a>
and <em>revoke the accesss</em> there. You can then request a new one for and <em>revoke the accesss</em> there. This will make all tokens previously
which Twitch will ask you to authorize Chatty again.</p> requested for Chatty associated with that account invalid. You can then
request a new one for which Twitch will ask you to authorize Chatty again.</p>
<h3><a name="login-invalid">Invalid Login</a></h3> <h3><a name="login-invalid">Invalid Login</a></h3>
<p>If your login is determined invalid (either by checking it manually or <p>If your login is determined invalid (either by checking it manually or
@ -552,20 +668,14 @@
</li> </li>
<li>Your login is actually invalid: <li>Your login is actually invalid:
<ul> <ul>
<li><span style="text-decoration: line-through">You have requested new login data for the same Twitch Account from
another instance of Chatty, for example on another Computer, which
has automatically invalidated the previously requested login data
(access token).</span>
<span style="text-decoration: underline">This may or may not
be the case anymore.</span></li>
<li>You have just requested login data and something went wrong, or it <li>You have just requested login data and something went wrong, or it
wasn't loaded properly from the settings.</li> wasn't loaded properly from the settings.</li>
<li>The token was invalidated for some other reason.</li> <li>The token was invalidated for some other reason.</li>
<li>How to proceed: <li>How to proceed:
<ul> <ul>
<li>Go to <code>&lt;Main - Account&gt;</code> to open <li>Go to <code>&lt;Main - Account&gt;</code> to open
the <code>Login configuration</code> (you may the login configuration (if you don't already have
already have it open), click <code>[Remove login]</code> it open), click <code>[Remove login]</code>
and create a new login.</li> and create a new login.</li>
</ul> </ul>
</li> </li>
@ -575,15 +685,59 @@
<p>What happens when your login is no longer valid:</p> <p>What happens when your login is no longer valid:</p>
<ul> <ul>
<li>You can't connect to chat anymore. If you are already connected and <li>You can't connect to chat anymore. If you are already connected, you
stay connected, this doesn't matter.</li> probably stay connected though.</li>
<li>Your followed streams are no longer requested, so you may not be <li>Various features that require authentication may not work anymore,
informed about streams starting anymore (if you had that enabled in the such as showing live streams you follow or changing your stream
first place).</li> title.</li>
<li>Other features that require authentication won't work properly anymore, like
the Admin Dialog.</li>
</ul> </ul>
<h2>
<a name="join">Joining Channels</a>
<a href="#top" class="top">[back to menu]</a>
</h2>
<p>There are various ways of joining channels:</p>
<ul>
<li>The "Settings - Main - On start" setting for when Chatty is started</li>
<li>The "Main - Connect" dialog when connecting</li>
<li>The "Channels - Join Channel" dialog</li>
<li>The "Channels - Favorites / History" dialog</li>
<li>The <code>/join</code> <a href="#commands">command</a></li>
<li>The "Channels - Live Channels" dialog context menu or (if configured
that way) via double-click or space while a stream is selected</li>
<li>Right-clicking a Stream Status Notification</li>
<li>The user context menu</li>
<li>Loading a <a href="#layouts">Layout</a></li>
</ul>
<h3>Channel list format</h3>
<p>In places where you can enter a channel name you can specify several
channels by separating them with a comma. Channels can be entered with
or without leading <code>#</code>. A lot of Twitch links should also
work.</p>
<p>Various special elements can be added that are turned into channels:</p>
<ul>
<li>Can include <a href="help-addressbook.html">Addressbook</a> categories,
e.g. <code>[vip]</code> to join all entries associated with the
"vip" category. Can restrict to just channel entries <code>[vip #]</code>
(would only get Addressbook entries such as "#joshimuz") or
non-channel entries <code>[vip !#]</code> (entries such as "joshimuz").
Note that both channel entries and non-channel entries are otherwise
handled the same, both would join "#joshimuz" in this example.</li>
<li>Instead of Addressbook categories <code>[*]</code> can be used for all
favorited channels (favorited under "Channels - Favorites / History").</li>
<li>Can also restrict to just live channels e.g. <code>[vip live]</code>,
<code>[vip # live]</code> or <code>[* live]</code> (only works for
live channels Chatty already knows the status for, such as followed
channels).</li>
</ul>
<p>Example: <code>/join #joshimuz, esl_csgo, [mod], https://twitch.tv/esamarathon, [* live]</code></p>
(joins <code>#joshimuz</code>, <code>#esl_csgo</code>, any entries
associated with the <code>mod</code> Addressbook category, <code>#esamarathon</code>
and any favorited channels that are live and followed)
<h2> <h2>
<a name="symbols">User Status Symbols</a> <a name="symbols">User Status Symbols</a>
<a href="#top" class="top">[back to menu]</a> <a href="#top" class="top">[back to menu]</a>
@ -1394,7 +1548,7 @@ MiniK http://static-cdn.jtvnw.net/emoticons/v1/25/1.0 set:793 id:3287</pre
This is always available for streams whose channels you have joined in chat, This is always available for streams whose channels you have joined in chat,
but with this feature enabled, this works for all streams you follow even but with this feature enabled, this works for all streams you follow even
without joining their channel.</p> without joining their channel.</p>
<p>This feature requires <code>Read user info</code> access, so Chatty can <p>This feature requires <code>Show followed streams</code> access, so Chatty can
request your followed streams. Read the <a href="#login">section about login</a> request your followed streams. Read the <a href="#login">section about login</a>
to learn more about login data and access.</p> to learn more about login data and access.</p>
<p>You can enable/disable this feature in the Settings under <code>Notifications</code>.</p> <p>You can enable/disable this feature in the Settings under <code>Notifications</code>.</p>
@ -1551,12 +1705,23 @@ MiniK http://static-cdn.jtvnw.net/emoticons/v1/25/1.0 set:793 id:3287</pre
</h2> </h2>
<p>Using the <code>/proc</code> command you can start processes directly out <p>Using the <code>/proc</code> command you can start processes directly out
of Chatty. An example of where this is already integrated into Chatty is of Chatty. An example of where this is already integrated into Chatty is
starting Streamlink, however this is a more basic implementation. starting Streamlink, however this is a more basic implementation.</p>
<em>This is probably only interesting for advanced users.</em></p> <p><em>You should only use this if you know what you are doing, running
system processes can be dangerous if done wrong. Take special care when
unsafe/unpredictable text is being used, for example from chat messages,
which may need to be properly quoted/escaped depending on context.</em></p>
<ul> <ul>
<li><code>/proc exec &lt;command and parameters&gt;</code> - Try to <li><code>/proc exec &lt;command and parameters&gt;</code> - Try to
start a process on your computer.</li> start a process on your computer. The command and parameters are
split by spaces, unless enclosed by quotes.<br /><br />
A quote can be escaped by adding a backslash in front <code>\"</code>
(note that if there is no closing quote, the last quote, even if
escaped, is used as closing quote). Adding another backslash, e.g.
<code>\\"</code> will still escape the quote. The debug log shows
both the original command text and how it was split up.</li>
<li><code>/proc execEcho &lt;command and parameters&gt;</code> - Same as
above, but prints the output of the process to the current tab.</li>
<li><code>/proc list</code> - List of processes currently running out of <li><code>/proc list</code> - List of processes currently running out of
Chatty.</li> Chatty.</li>
<li><code>/proc kill &lt;id&gt;</code> - Forcefully end the process with <li><code>/proc kill &lt;id&gt;</code> - Forcefully end the process with
@ -1644,8 +1809,8 @@ MiniK http://static-cdn.jtvnw.net/emoticons/v1/25/1.0 set:793 id:3287</pre
supply a port a default one is used. If the used port is already supply a port a default one is used. If the used port is already
taken by another program you have to specify one that works or else taken by another program you have to specify one that works or else
no instance of Chatty will be able to start.</dd> no instance of Chatty will be able to start.</dd>
<dd>Currently only the <code>-channel</code> parameter is used when <dd>Currently only the <code>-channel</code> and <code>-cc</code>
forwarded to an already running instance (joining the channel).</dd> parameters are forwarded to an already running instance.</dd>
<dt><code>-cc &lt;name&gt; [parameters]</code></dt> <dt><code>-cc &lt;name&gt; [parameters]</code></dt>
<dd>Execute the Custom Command with the given name on start. The <dd>Execute the Custom Command with the given name on start. The

View File

@ -202,4 +202,8 @@ table.compact td {
td.symbol { td.symbol {
font-size: 1.1em; font-size: 1.1em;
text-align: center; text-align: center;
} }
.m {
font-family: monospace;
}

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.15 released "+humanized_time_span("2021/07/03", Date(), custom_date_formats)+""; document.getElementById("ago").innerHTML = "Version 0.16 released "+humanized_time_span("2022/01/06", Date(), custom_date_formats)+"";
getDownloads("v0.15"); getDownloads("v0.16");
slideshow_init("slideshow"); slideshow_init("slideshow");
} }
@ -108,7 +108,6 @@ function getDownloads(tag) {
<h3>Watching</h3> <h3>Watching</h3>
<ul> <ul>
<li>Get notified when channels you follow go live</li> <li>Get notified when channels you follow go live</li>
<li>Follow and unfollow channels through Chatty</li>
<li>Easily open streams in your browser, or run <a href="https://github.com/chrippa/livestreamer">Livestreamer</a> (or the more up-to-date <a href="https://streamlink.github.io/">Streamlink</a>) out of Chatty</li> <li>Easily open streams in your browser, or run <a href="https://github.com/chrippa/livestreamer">Livestreamer</a> (or the more up-to-date <a href="https://streamlink.github.io/">Streamlink</a>) out of Chatty</li>
</ul> </ul>
</div> </div>
@ -158,7 +157,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.15</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.15/">SHA-256 hashes</a>.</p> <p>Choose one of the following downloads of <strong>Chatty Version 0.16</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.16/">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 +169,11 @@ function getDownloads(tag) {
<tr> <tr>
<td> <td>
<dl> <dl>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.15/Chatty_0.15_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.16/Chatty_0.16_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.15/Chatty_0.15_win_standalone.zip">Download Windows Standalone (.zip)</a></dt> <dt><a href="https://github.com/chatty/chatty/releases/download/v0.16/Chatty_0.16_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 +181,11 @@ function getDownloads(tag) {
</td> </td>
<td> <td>
<dl> <dl>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.15/Chatty_0.15_win_setup.exe">Download JAR-Version (Installer)</a></dt> <dt><a href="https://github.com/chatty/chatty/releases/download/v0.16/Chatty_0.16_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.15/Chatty_0.15.zip">Download JAR-Version (.zip)</a></dt> <dt><a href="https://github.com/chatty/chatty/releases/download/v0.16/Chatty_0.16.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 +193,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.15/Chatty_0.15.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.16/Chatty_0.16.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>