v0.19 files

This commit is contained in:
tduva 2022-07-03 03:11:33 +02:00
parent 595395573f
commit c06efb4c48
No known key found for this signature in database
GPG Key ID: 01EB6B81F18C5128
7 changed files with 271 additions and 66 deletions

View File

@ -11,7 +11,7 @@
<pre>
Copyright (C) 2017-2020 tduva and contributors
Copyright (C) 2017-2022 tduva and contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@ -40,6 +40,9 @@ along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</pre
(<a href="http://www.gnu.org/licenses/gpl-3.0.txt">GPLv2 or later</a>)</li>
<li><a href="https://github.com/rjeschke/txtmark">Txtmark</a>
(<a href="http://www.apache.org/licenses/LICENSE-2.0">"Apache License 2.0"</a>)</li>
<li><a href="https://hc.apache.org/">Apache HttpComponents Client</a> (<a href="http://www.apache.org/licenses/LICENSE-2.0">"Apache License 2.0"</a>)</li>
<li><a href="https://github.com/pngencoder/pngencoder">PNGEncoder</a> (<a href="https://github.com/chatty/chatty/blob/master/src/com/pngencoder/LICENSE">License</a>)</li>
<li><a href="https://github.com/chatty/chatty/blob/master/src/chatty/util/gif/PNGDecoder.java">PNGDecoder</a>
</ul>
<h3>Images / Other resources</h3>

View File

@ -530,11 +530,26 @@
between 0 and what is the first parameter.</dd>
<dt><code>$calc(&lt;simple math expression&gt;)</code></dt>
<dd>Limited support for performing calculations.</dd>
<dd>Limited support for performing calculations, with binary operators
(<code>* / % + -</code>) and functions (<code>sqrt() sin() cos() tan()</code>).</dd>
<dd><em>Example:</em> <code>//echo $calc(2^3) $calc( (3+4\) / 2)</code>
when entered into the inputbox returns <code>8 3.5</code> (note the
parentheses in the second, as well as how the closing parenthesis
needs to be escaped).</dd>
<dd><em>Example:</em> <code>//echo $calc($"sqrt(81) * (1 + 4/2)")</code> outputs <code>27</code>
(this uses <code>$" "</code> to specify <a href="#escaping">literal text</a>
instead of escaping the parenthesis with a backslash).</dd>
<dt><code>$round(&lt;number&gt;,[numDecimalPlaces],[roundingMode],[minNumDecimalPlaces])</code></dt>
<dd>Round a number to the given amount of decimal places,
with a <a href="https://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html">rounding mode</a>
of empty (half-up), <code>ceil</code>, <code>floor</code>,
<code>up</code>, <code>down</code> or <code>half-down</code>, with
the given number of minimum decimal places (fills with 0).</dd>
<dd><em>Example:</em> <code>//echo $round(1.335)</code> outputs <code>1</code></dd>
<dd><em>Example:</em> <code>//echo $round(1.335,2)</code> outputs <code>1.34</code></dd>
<dd><em>Example:</em> <code>//echo $round(345.5,3,floor,3)</code> outputs <code>345.500</code> (fills up to 3 decimal places)</dd>
<dd><em>Example:</em> <code>//echo $round(2.565,2,,2)</code> outputs <code>2.57</code> (uses default rounding mode)</dd>
<dt><code>$urlencode(&lt;input&gt;)</code></dt>
<dd>Uses <a href="https://docs.oracle.com/javase/8/docs/api/java/net/URLEncoder.html#encode-java.lang.String-java.lang.String-">UrlEncoder.encode()</a>

View File

@ -17,6 +17,7 @@
<h1><a name="top">Release Information</a></h1>
<p>
<a href="#0.19">0.19</a> |
<a href="#0.18">0.18</a> |
<a href="#0.17">0.17</a> |
<a href="#0.16">0.16</a> |
@ -67,7 +68,46 @@
full list of changes.</p>
<h2>
<a name="0.18">Version 0.18</a> <a name="latest">(This one!)</a> (2022-04-09)
<a name="0.19">Version 0.19</a> <a name="latest">(This one!)</a> (2022-07-03)
<a href="#top" class="top">[back to top]</a>
</h2>
<pre>
### Commands
- Added `/timer` for delaying commands
- Added `/exportText` to write text to a file in the "exported" folder
- Added `/clearUserMessages` to clear User Dialog messages (or just the count
for `config:firstmsg`) for all users
- Added `/triggerNotification` to trigger a special "Triggered by command"
notification (has to be added as an event in the Notification Settings)
- Added Custom Command function `$round()`, added `%` operator to `$calc()`
- Added `/j` as default Custom Command
### Settings
- Added `msg` variant to all text matching prefixes
- Added setting to return to previously active tab when closing tab
- Added settings for pausing animated emotes
- Added Live Streams favorite games to Settings Dialog
- Added setting to change locale
- Added commands `/setSwitch` and `/setList`
### Other
- Restore active tabs when loading layout
- Improved showing Highlight matches for some message types
- Changed formatting of user name for announcements
- Updated Twemoji image set to v14
- Some memory usage improvements
- Improved debug output
- Updated help
### Bugfixes
- Fixed bug where animated emotes with transparency aren't displayed correctly
when the first frame doesn't have transparency
- Fixed Tab Completion popup being stuck when closing tab via hotkey
- Fixed some locale dependent issues
</pre>
<h2>
<a name="0.18">Version 0.18</a> (2022-04-09)
<a href="#top" class="top">[back to top]</a>
</h2>
<pre>

View File

@ -23,6 +23,9 @@
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
<code>/set lafCustomTheme selectionBackgroundColor 255 180 0</code>).</dd>
<dd>For List settings it clears existing items and only sets a single
item, even if the value contains commas. Use <code>/setList</code>
to set several items or <code>/add</code> to add a single item.</dd>
<dd>The <code>/set2</code> command works the same, but in case of Map
settings omits outputting all values of the Map.</dd>
@ -38,6 +41,13 @@
<dd>Sets String (text) settings to an empty String. Removes all entries
from List or Map settings.</dd>
<dt><code>/setSwitch &lt;setting&gt; &lt;value&gt;,&lt;value2&gt;</code></dt>
<dd>Like <code>/set</code>, but it switches between two or more values.</dd>
<dt><code>/setList &lt;setting&gt; &lt;value&gt;,&lt;value2&gt;</code></dt>
<dd>For List settings. Clears the setting and sets the given values as
separate items.</dd>
<dt><code>/add &lt;setting&gt; &lt;value&gt;</code></dt>
<dd>Adds an item to a List setting.</dd>
<dd>The <code>/add2</code> command works the same, but omits outputting

View File

@ -446,13 +446,11 @@
messages, since Twitch handles emotes parsing serverside for those.</p>
<p>With the removal of the old Twitch v5 API in February 2022 this problem
can affect even more Emotes than before. The Emote Dialog provides the
"Highlight endangered emotes" function until the API is removed (see
below).</p>
can affect even more Emotes than before.</p>
<p>Recommendations:</p>
<ul>
<li>Only add Twitch Emotes that you have permament access to.</li>
<li>Only add Twitch Emotes that you have permanent access to.</li>
<li>Only add Emotes that would otherwise not show up in Chatty in your
sent messages or Emote Dialog.</li>
<li><strong>Do not add</strong> Global, Subscriber and Follower Emotes
@ -462,40 +460,19 @@
Settings Dialog).</li>
</ul>
<p>You can add/remove Local Emotes in different ways:</p>
<ul>
<li>The <strong>Emote Context Menu</strong> (e.g. right-click on an emote in chat)
using the <strong>"Add local emote"</strong> option.
For example if you have a favorite emote that you have permanent
access to but that isn't available through the API (meaning it
doesn't show up in the Emote Dialog or when you send a message), you
can send a message with it through Webchat to the same channel you
have joined in Chatty and then use the Context Menu option on it.
</li>
<li>In the <strong>Settings Dialog</strong> in the Emoticon settings you
can view and edit the list of Local Emotes.</li>
<li>The <strong>Emote Dialog "My Emotes" tab</strong> can highlight
Emotes that are only available through the old API, as long as the
old API hasn't been removed. Enable the <strong>"Highlight endangered emotes"</strong>
checkbox to see which Emotes might make sense to add.
<ul>
<li>Magenta border: Only available through old API</li>
<li>Gray border: Only available through old API, but already
added to Local Emotes</li>
</ul>
To add Local Emotes you can use:
<ul>
<li>The Emote Context Menu to add a single Emote</li>
<li>The Section Title Context Menu to add all Emotes of a section</li>
</ul>
<em>Note:</em> You must have a channel joined and all API requests
must have finished for this to show up correctly. For example
Subscriber Emotes should not be highlighted. If the old API has
already been removed, adding Local Emotes through the Emote Dialog
doesn't really make sense, since all shown Emotes would be available
through the new API anyway.
</li>
</ul>
<p>Add Local Emotes through the <strong>Emote Context Menu</strong> (e.g.
right-click on an emote in chat) using the <strong>"Add local emote"</strong>
option. For example if you have a favorite emote that you have permanent
access to but that isn't available through the API (meaning it
doesn't show up in the Emote Dialog or when you send a message), you
can send a message with it through Webchat to the same channel you
have joined in Chatty and then use the Context Menu option on it.
</p>
<p>In the <strong>Settings Dialog</strong> in the Emoticon settings you can
view and edit the list of Local Emotes.</p>
<p>The help on the Emote Dialog's "Highlight endangered emotes" function has
been removed since the old API that it relied on has been turned off.</p>
<h2>
<a name="Fonts">Fonts</a>
@ -926,15 +903,24 @@
When editing a Highlight/Ignore entry you will be warned when a
pattern could be problematic.
</li>
<li>You can prefix all of the above with "msg", such as <code>msgtext:</code>
in order to only match on user-generated messages. For regular chat
messages this makes no difference, however for Subscriptions,
Announcements, Point Redemptions or AutoMod messages it will only
match the attached message rather than the full info message. If
there is no attached message it will not match.<br />
Example: <code>config:any msgtext:bad word</code> will match all
messages (regular and info messages) that have an attached user
message containing "bad word".</li>
</ul>
<p>All Text Matching Prefixes can be inverted (matches when it doesn't find
<p>All Text Matching Prefixes can be <strong>inverted</strong> (matches when it doesn't find
the search text) by prepending an exclamation mark, for example: <code>!start:!bet all</code>.
See the <a href="#Highlight_Prefix-blacklist"><code>blacklist:</code> Prefix description</a>
for further information on the differences between blacklisting and
negated matches.</p>
<p>Additionally, several Text Matching Prefixes can be specified by prepending
<p>Additionally, <strong>several Text Matching Prefixes</strong> can be specified by prepending
a plus sign. In this case the value cannot contain spaces or must be
quoted. Example: <code>+!start:"!bet all" regi:Regular search text</code></p>
@ -1037,6 +1023,9 @@
<li><code>config:firstmsg</code> - Restrict matching to the
first message of this user in this channel during the
current session (first message in User Dialog).<br />
The messages can be reset without restarting Chatty via the
<a href="help.html#commands-clearUserMessages"><code>/clearUserMessages</code></a>
command, so that the prefix triggers again.<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
@ -1063,7 +1052,9 @@
has to match), prefix value with <code>reg:</code> to use
regex matching on the value.</li>
<li><code>config:url</code> - Message must contain a URL (same
as what is made clickable)</li>
as what is made clickable), or <code>config:msgurl</code> to
only match in a user message (see <a href="#Highlight_Matching">Text Matching Prefixes</a>
for explanation).</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

View File

@ -5,7 +5,7 @@
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1><a name="top">Chatty (Version: 0.18)</a></h1>
<h1><a name="top">Chatty (Version: 0.19)</a></h1>
<table>
<tr>
<td valign="top">
@ -275,16 +275,13 @@
<code>/color</code>
just like in normal Twitch Chat</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>/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>/part</code> or <code>/close</code> - Leaves the current channel</li>
<li><code>/rejoin</code> - Rejoins the channel (without clearing users or chat)</li>
<li><code>/reconnect</code> - Disconnects and reconnects</li>
<li><code>/fixMods</code> - Temporarily fixes the list of mods (like
<code>/mods</code> but without showing the list of mods in chat)</li>
<li><code>/ignore &lt;user&gt;</code>, <code>/unignore &lt;user&gt;</code> - To ignore/unignore user (chat and whisper)</li>
<li><code>/ignoreChat</code>, <code>/unignoreChat</code>, <code>/ignoreWhisper</code>, <code>/unignoreWhisper</code>
- To ignore/unignore user only from chat/whispering you</li>
<li><code>/clearchat</code> - Clears the current chat window of all text</li>
<li><code>/clearchat</code> - Clears the current chat window of all text (only locally)</li>
<li><code>/connection</code> - Show info about the current connection</li>
</ul>
@ -295,9 +292,15 @@
<h3><a name="commands-twitch">Other Twitch Commands</a></h3>
<ul>
<li><a href="#streamhighlights">Stream Highlights / Markers commands</a> (including <code>/marker</code>)</li>
<li><code>/follow [user]</code>, <code>/unfollow [user]</code> - Follow
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>
<h3><a name="special-commands">Special Commands</a></h3>
<p>These commands change how other commands are run.</p>
<ul>
<li><a href="#commands-chain"><code>/chain</code></a> to run several commands at once</li>
<li><a href="#commands-foreach"><code>/foreach</code></a> to run a command for each value in a list</li>
<li><a href="#commands-runin"><code>/runin</code></a> to run a command in a specific channel context</li>
<li><a href="#commands-timer"><code>/timer</code></a> to run a command on a delay</li>
</ul>
<h3><a name="commands-settings">Settings / Customization commands:</a></h3>
@ -307,6 +310,15 @@
for the given name</li>
<li><a href="#addressbook">Addressbook commands</a></li>
<li><a href="#streamchat">Stream Chat commands</a></li>
<li><code>/favorite [channel]</code>, <code>/unfavorite [channel]</code>
- Edit the Channel Favorites list (defaults to current channel if
none is given)</li>
<li><code>/ignore &lt;user&gt;</code>, <code>/unignore &lt;user&gt;</code>
- Add/remove a user from "Settings - Ignore - Ignored Users" (chat
and whisper, only takes effect locally in Chatty),
<code>/ignoreChat</code>, <code>/unignoreChat</code>,
<code>/ignoreWhisper</code>, <code>/unignoreWhisper</code> to do the
same, except it only affects one type of message</li>
</ul>
<h3><a name="commands-gui">GUI commands:</a></h3>
@ -330,6 +342,12 @@
<li><code>/openFile &lt;path&gt;</code> - Opens the given path in the default application</li>
<li><code>/openFilePrompt &lt;path&gt;</code> - Opens the given path in the default application (with prompt asking for confirmation)</li>
<li><code>/setSize &lt;width&gt; &lt;height&gt;</code> - Sets the main window size</li>
<li><code>/triggerNotification [-hmt] &lt;text&gt;</code> - Triggers a
command notification event that was added in the Notification Settings
(if none is added, this won't do anything), <code>-h</code> to hide
notification popup, <code>-m</code> to don't play sound, <code>-t</code>
to specify the title of the notification popup (e.g.
<code>/triggerNotification -mt "This is the title" This is the text</code>)</li>
<li><a href="#layouts-save-load">Save and load layouts</a></li>
</ul>
@ -345,6 +363,7 @@
<li><code>/showJavaDir</code> / <code>/openJavaDir</code> - Show/open the directory of the JRE used by Chatty</li>
<li><code>/showFallbackFontDir</code> / <code>/openFallbackFontDir</code> - Show/open the directory where Java looks for <a href="help-troubleshooting.html#font">fallback fonts</a></li>
<li><code>/showTempDir</code> / <code>/openTempDir</code> - Show/open the system's temp directory</li>
<li><code>/exportText [-sna] &lt;fileName&gt; &lt;text&gt;</code> - Write the text to a file in the "exported" directory in the settings directory (UTF-8), <code>-s</code> for no info message when writing successfully, <code>-n</code> for replacing "\n" in the text with a newline, <code>-a</code> for appending to the file (Example: <code>/exportText -n abc.txt one\ntwo</code> - Writes "one" and "two" as separate lines)</li>
<li><code>/refresh &lt;emoticons/badges/ffz/ffzglobal/bttvemotes&gt;</code>
- Refresh the given data from it's respective API:
<ul>
@ -358,10 +377,12 @@
if new emotes have been added (it's basicially like pressing
reload in your browser, but only for some select stuff per command).</em></li>
<li><code>/releaseinfo</code> - Opens the help with the release information</li>
<li><code>/myemotes</code> - Show your subscriber emote codes (only works if you
have joined any channel before, this is only a quick info, better emote
integration maybe to be implemented later)</li>
<li><code>/ffz</code>, <code>/ffzGlobal</code> - Shows the FFZ channel emote codes for the current channel/global FFZ emotes</li>
<li><code>/ffz</code> - Shows the FFZ channel emote codes for the current channel</li>
<li><a name="commands-clearUserMessages"><code>/clearUserMessages [-an]</code></a>
- Clears the message history in the User Dialog for all users in the
current channel, <code>-a</code> for all channels, <code>-n</code>
to only clear the number of messages (e.g. so the <code>config:firstmsg</code>
Highlight prefix matches again)</li>
</ul>
<h3><a name="commands-test">Test commands:</a></h3>
@ -622,6 +643,131 @@
</dd>
</dl>
<h3><a name="commands-timer">Execute a command on a delay</a></h3>
<p>The <code>/timer</code> command allows you to run a delayed command after
a duration or at a certain time. The timed command is run as if it was
entered into the inputbox of the same channel that the <code>/timer</code>
command was entered in (the command is not run at all if the channel is
not a regular channel or not open anymore, unless the <code>-a</code>
option is used).</p>
<p>Certain restrictions apply:</p>
<ul>
<li>A timed command can't contain another <code>/timer</code> command as well as some other commands.</li>
<li>A timed message can only be send to regular channels (not whispers)
and only as a moderator of the channel.</li>
<li>Parameters from the context of where <code>/timer</code> is called
do not carry over into the context when the timed command is executed.
Note that in a lot of cases the parameters would already have been
replaced anyway. Consider a button "Test" added to the User Dialog:
<ul>
<li>In case of <code>Test=/timer 1 /echo $(nick)</code>
replacements are performed on <code>/timer 1 /echo $(nick)</code>,
resulting in <code>/timer 1 /echo someusername</code>, resulting in
<code>/echo someusername</code> one second later.</li>
<li>On the other hand <code>Test=/timer 1 //echo \$(nick)</code>
replacements are performed on <code>/timer 1 //echo \$(nick)</code>
(note that <code>\$(nick)</code> is escaped, so it is not
replaced yet), resulting in <code>/timer 1 //echo $(nick)</code>,
resulting in <code>//echo $(nick)</code> one second later, which
(because of the double-slash) is parsed as a Custom Command and
replacements are performed, which won't find the "nick" parameter
because it didn't carry over. Normally there is no reason to do it
like this though.</li>
</ul>
</ul>
<dl class="defList">
<dt><code>/timer [-options] [:id] &lt;duration|time|'list'|'stop'&gt; &lt;timed command&gt;</code></dt>
<dd>Optionally one or several options (<code>-rs</code>) can be specified:
<ul>
<li><code>-r</code> (Keeps the timer through a restart of Chatty
if it hasn't run yet. The timer is saved in the settings and
restored with the same target time, channel and timed
command. If the target time has already been passed when
Chatty is started again it will immediately run the timed
command.)</li>
<li><code>-o</code> (If a timer of the same id already exists,
overwrite it, without this option the new timer would not be
started in such a case.)</li>
<li><code>-s</code> (Silent, starting the timer successfully
doesn't output a message.)</li>
<li><code>-a</code> (Always run the command, even if the channel
the timer was started in is not open anymore or not valid,
which can make sense if the command being run is not
channel-specific, such as modifying the Addressbook. If the
channel is not open anymore the currently active channel is
used, in which case sending messages it not allowed.)</li>
<li>Full example: <code>/timer -rs 10m /echo hello</code>
(Outputs "hello" in 10 minutes, keeps it when Chatty is
restarted within that time and doesn't output a timer
started message.)</li>
</ul>
</dd>
<dd>The id is used to identify a timer after it has been started (e.g.
to stop it). Can be anything (no spaces), if it ends with <code>*</code>
an automatically generated number will be appended to make the id
unique if used more than once. If no id is specified an
automatically generated number without prefix will be used.
<ul>
<li><code>:abc</code> (the id is "abc")</li>
<li><code>:abc*</code> (the id might be "abc1", "abc2", "abc3", ...)</li>
<li><em>Not specified</em> (the id is an automatically generated number)</li>
<li>Full example: <code>/timer :abc 10m /echo hello</code>
(outputs "hello" in 10 minutes, with the timer id "abc")</li>
</ul>
</dd>
<dd>The duration is in seconds by default, but you can also append a
time unit and several durations that get added up (no spaces):
<ul>
<li><code>5ms</code> (milliseconds)</li>
<li><code>5s</code> (seconds)</li>
<li><code>5m</code> (minutes)</li>
<li><code>5h</code> (hours)</li>
<li><code>5h10m</code> (5 hours 10 minutes)</li>
<li><code>5h10</code> (5 hours 10 minutes)</li>
<li><code>5h10m30</code> (5 hours 10 minutes 30 seconds)</li>
<li>Full example: <code>/timer 5h /echo hello</code> (outputs "hello" in 5 hours)</li>
</ul>
</dd>
<dd>An absolute time is written like a digital clock in 24hr format, a
date can be added in front, in which case it has to be enclosed in
<code>[ ]</code>. With no date specified the next occurence of the
time is used, so e.g. if it's already in the evening a time of 5 in
the morning would be on the next day:
<ul>
<li><code>5:30</code> (5:30 in the morning)</li>
<li><code>17:30</code> (5:30 in the afternoon)</li>
<li><code>5:30:50</code> (5:30 and 50 seconds in the morning)</li>
<li><code>[05:20:00]</code> (the time can also be enclosed in
<code>[ ]</code>)</li>
<li><code>[2022-01-10 5:30]</code> (when including the date the
<code>[ ]</code> is required and the date has to always be
the full date in the format YYYY-MM-DD)</li>
<li>Full example: <code>/timer 16:30 /echo hello</code> (outputs
the info message "hello" at 4:30 PM)</li>
</ul>
</dd>
<dd>Output info about currently active timers:
<ul>
<li><code>list</code> (Lists all timers, soonest to run first.)</li>
<li><code>-q list</code> (Same as above, but the list is in timer start order.)</li>
<li><code>:a* list</code> (Outputs information about timers with ids that begin with "a".)</li>
<li><code>list a*</code> (Same as above, but id in place of the timed command.)</li>
<li>Full example: <code>/timer list a*</code> (Shows all active timers with ids that begin with "a".)</li>
</ul>
</dd>
<dd>Stop active timers:
<ul>
<li><code>:abc1 stop</code> (Stops a timer with the id "abc1".)</li>
<li><code>stop abc1</code> (Same as above, but id in place of the timed command.)</li>
<li><code>:abc* stop</code> (Stops all timers with ids that begin with "abc".)</li>
<li><code>:* stop</code> (Stops all active timers.)</li>
<li>Full example: <code>/timer stop *</code> (Stops all active timers.)</li>
</ul>
</dd>
</dl>
<h2>
<a name="login">Twitch Login</a>
<a href="#top" class="top">[back to menu]</a>

View File

@ -16,9 +16,9 @@ function loaded() {
{ ceiling: null, text: "$years years ago" }
]
}
document.getElementById("ago").innerHTML = "Version 0.18 released "+humanized_time_span("2022/04/09", Date(), custom_date_formats)+"";
document.getElementById("ago").innerHTML = "Version 0.19 released "+humanized_time_span("2022/07/03", Date(), custom_date_formats)+"";
getDownloads("v0.18");
getDownloads("v0.19");
slideshow_init("slideshow");
}
@ -158,7 +158,7 @@ function getDownloads(tag) {
<h2 id="download">Download</h2>
<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>Choose one of the following downloads of <strong>Chatty Version 0.19</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.19/">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>
<h3>Windows</h3>
@ -170,11 +170,11 @@ function getDownloads(tag) {
<tr>
<td>
<dl>
<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>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.19/Chatty_0.19_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>
</dl>
<dl>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.18/Chatty_0.18_win_standalone.zip">Download Windows Standalone (.zip)</a></dt>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.19/Chatty_0.19_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>
</dl>
@ -182,11 +182,11 @@ function getDownloads(tag) {
</td>
<td>
<dl>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.18/Chatty_0.18_win_setup.exe">Download JAR-Version (Installer)</a></dt>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.19/Chatty_0.19_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>
</dl>
<dl>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.18/Chatty_0.18.zip">Download JAR-Version (.zip)</a></dt>
<dt><a href="https://github.com/chatty/chatty/releases/download/v0.19/Chatty_0.19.zip">Download JAR-Version (.zip)</a></dt>
<dd>Extract the .zip into a folder of your choice and start <code>Chatty.jar</code>.</dd>
</dl>
</td>
@ -194,7 +194,7 @@ function getDownloads(tag) {
</table>
<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.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>
<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.19/Chatty_0.19.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>
<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>