<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-readableRC-core.js</id>
	<title>MediaWiki:Gadget-readableRC-core.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.runerealm.org/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AGadget-readableRC-core.js"/>
	<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;action=history"/>
	<updated>2026-04-11T05:08:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;diff=42207&amp;oldid=prev</id>
		<title>Alex at 11:06, 20 October 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;diff=42207&amp;oldid=prev"/>
		<updated>2024-10-20T11:06:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;amp;diff=42207&amp;amp;oldid=39075&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;diff=39075&amp;oldid=prev</id>
		<title>Alex at 16:15, 17 October 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;diff=39075&amp;oldid=prev"/>
		<updated>2024-10-17T16:15:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:15, 17 October 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 170:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 170:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-groupdiff&#039;).textContent = &#039;diff&#039;;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-groupdiff&#039;).textContent = &#039;diff&#039;;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// new &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.&lt;/del&gt;pages have a text node instead of a link&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// new pages have a text node instead of a link&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else {&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else {&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-links span:first-child&#039;).textContent = &#039;diff&#039;;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-links span:first-child&#039;).textContent = &#039;diff&#039;;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 179:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 179:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-history&#039;).textContent = &#039;hist&#039;;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-history&#039;).textContent = &#039;hist&#039;;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// nonexistent &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.&lt;/del&gt;pages (redirect-suppressed move or deleted) have a text node instead of a link&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// nonexistent pages (redirect-suppressed move or deleted) have a text node instead of a link&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// @todo check for new classname/structure; no example rn&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// @todo check for new classname/structure; no example rn&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else {&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else {&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;diff=34644&amp;oldid=prev</id>
		<title>Alex at 23:10, 16 October 2024</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;diff=34644&amp;oldid=prev"/>
		<updated>2024-10-16T23:10:32Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:10, 17 October 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 170:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 170:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-groupdiff&#039;).textContent = &#039;diff&#039;;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-groupdiff&#039;).textContent = &#039;diff&#039;;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// new pages have a text node instead of a link&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// new &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.&lt;/ins&gt;pages have a text node instead of a link&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else {&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else {&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-links span:first-child&#039;).textContent = &#039;diff&#039;;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-links span:first-child&#039;).textContent = &#039;diff&#039;;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 179:&lt;/td&gt;
  &lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 179:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-history&#039;).textContent = &#039;hist&#039;;&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			row.querySelector(&#039;.mw-changeslist-history&#039;).textContent = &#039;hist&#039;;&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// nonexistent pages (redirect-suppressed move or deleted) have a text node instead of a link&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// nonexistent &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;mw.&lt;/ins&gt;pages (redirect-suppressed move or deleted) have a text node instead of a link&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// @todo check for new classname/structure; no example rn&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		// @todo check for new classname/structure; no example rn&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else {&lt;/div&gt;&lt;/td&gt;
  &lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;
  &lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		else {&lt;/div&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
	<entry>
		<id>https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;diff=898&amp;oldid=prev</id>
		<title>Alex: Created page with &quot;// &lt;nowiki&gt; // Formats the rows on Special:RecentChanges where all the information runs together // into three columns (page, diff/byte change, and user links) to make it more readable // // @author Iiii_I_I_I  ;(function ($, mw) { 	function runReadableRC($content) { 		if (!$content.hasClass(&#039;mw-changeslist&#039;)) { 			return; 		}  		$content.addClass(&#039;gadget-rc-enabled&#039;);  		let rows = document.querySelectorAll( 			&#039;.mw-changeslist-src-mw-edit,&#039; + 			&#039;.mw-changeslist-src-mw...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.runerealm.org/index.php?title=MediaWiki:Gadget-readableRC-core.js&amp;diff=898&amp;oldid=prev"/>
		<updated>2024-10-13T00:53:06Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;// &amp;lt;nowiki&amp;gt; // Formats the rows on Special:RecentChanges where all the information runs together // into three columns (page, diff/byte change, and user links) to make it more readable // // @author Iiii_I_I_I  ;(function ($, mw) { 	function runReadableRC($content) { 		if (!$content.hasClass(&amp;#039;mw-changeslist&amp;#039;)) { 			return; 		}  		$content.addClass(&amp;#039;gadget-rc-enabled&amp;#039;);  		let rows = document.querySelectorAll( 			&amp;#039;.mw-changeslist-src-mw-edit,&amp;#039; + 			&amp;#039;.mw-changeslist-src-mw...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;// &amp;lt;nowiki&amp;gt;&lt;br /&gt;
// Formats the rows on Special:RecentChanges where all the information runs together&lt;br /&gt;
// into three columns (page, diff/byte change, and user links) to make it more readable&lt;br /&gt;
//&lt;br /&gt;
// @author Iiii_I_I_I&lt;br /&gt;
&lt;br /&gt;
;(function ($, mw) {&lt;br /&gt;
	function runReadableRC($content) {&lt;br /&gt;
		if (!$content.hasClass(&amp;#039;mw-changeslist&amp;#039;)) {&lt;br /&gt;
			return;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		$content.addClass(&amp;#039;gadget-rc-enabled&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		let rows = document.querySelectorAll(&lt;br /&gt;
			&amp;#039;.mw-changeslist-src-mw-edit,&amp;#039; +&lt;br /&gt;
			&amp;#039;.mw-changeslist-src-mw-log,&amp;#039; +&lt;br /&gt;
			&amp;#039;.mw-changeslist-src-mw-new&amp;#039;&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		for (let row of rows) {&lt;br /&gt;
			// hover text on timestamp column&lt;br /&gt;
			addRelativeTime(row);&lt;br /&gt;
&lt;br /&gt;
			// nested rows&lt;br /&gt;
			if (row.classList.contains(&amp;#039;mw-rcfilters-ui-highlights-enhanced-nested&amp;#039;)) {&lt;br /&gt;
				if (row.classList.contains(&amp;#039;mw-changeslist-edit&amp;#039;)) {&lt;br /&gt;
					cleanNestedEdit(row);&lt;br /&gt;
				} else {&lt;br /&gt;
					cleanNestedLog(row);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			// top-level rows&lt;br /&gt;
			else {&lt;br /&gt;
				// grouped row&lt;br /&gt;
				if (row.classList.contains(&amp;#039;mw-rcfilters-ui-highlights-enhanced-toplevel&amp;#039;)) {&lt;br /&gt;
					let parent = row.closest(&amp;#039;.mw-changeslist-line&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
					if (parent.classList.contains(&amp;#039;mw-changeslist-edit&amp;#039;)) {&lt;br /&gt;
						cleanGroupedEdit(row);&lt;br /&gt;
					} else {&lt;br /&gt;
						cleanGroupedLog(row);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				// single row&lt;br /&gt;
				else {&lt;br /&gt;
					if (row.classList.contains(&amp;#039;mw-changeslist-edit&amp;#039;)) {&lt;br /&gt;
						cleanSingleEdit(row);&lt;br /&gt;
					} else {&lt;br /&gt;
						cleanSingleLog(row);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// fires every time readableRC runs when new edits come in&lt;br /&gt;
		mw.hook(&amp;#039;ext.gadget.readableRC&amp;#039;).fire();&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function cleanNestedLog(row) {&lt;br /&gt;
		row.classList.add(&amp;#039;gadget-rc-row&amp;#039;, &amp;#039;gadget-rc-log&amp;#039;, &amp;#039;gadget-rc-nested&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// FIRST COLUMN: log timestamp&lt;br /&gt;
		row.querySelector(&amp;#039;.mw-enhanced-rc-time&amp;#039;).classList.add(&amp;#039;gadget-rc-col-1&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// SECOND COLUMN: placeholder with separator dots&lt;br /&gt;
		row.querySelector(&amp;#039;.mw-changeslist-separator&amp;#039;).classList.add(&amp;#039;gadget-rc-col-2&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// THIRD COLUMN: user info&lt;br /&gt;
		let col3 = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		col3.classList.add(&amp;#039;gadget-rc-col-3&amp;#039;);&lt;br /&gt;
		col3.append(&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-log-entry&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-tag-markers&amp;#039;, row)&lt;br /&gt;
		);&lt;br /&gt;
		row.querySelector(&amp;#039;.gadget-rc-col-2&amp;#039;).after(col3);&lt;br /&gt;
		cleanUserLinks(row);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function cleanNestedEdit(row) {&lt;br /&gt;
		row.classList.add(&amp;#039;gadget-rc-row&amp;#039;, &amp;#039;gadget-rc-edit&amp;#039;, &amp;#039;gadget-rc-nested&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// FIRST COLUMN: revision link&lt;br /&gt;
		row.querySelector(&amp;#039;.mw-enhanced-rc-time&amp;#039;).classList.add(&amp;#039;gadget-rc-col-1&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// THIRD COLUMN: user info&lt;br /&gt;
		let col3 = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		col3.classList.add(&amp;#039;gadget-rc-col-3&amp;#039;);&lt;br /&gt;
		col3.append(&lt;br /&gt;
			get(&amp;#039;.mw-userlink&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-usertoollinks&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-enhanced-rc-nested &amp;gt; .history-deleted&amp;#039;, row), // (username removed)&lt;br /&gt;
			get(&amp;#039;.comment&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-pager-tools&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-tag-markers&amp;#039;, row)&lt;br /&gt;
		);&lt;br /&gt;
&lt;br /&gt;
		// SECOND COLUMN: diff text&lt;br /&gt;
		let parent = row.querySelector(&amp;#039;td.mw-enhanced-rc-nested&amp;#039;);&lt;br /&gt;
		let col1 = row.querySelector(&amp;#039;.gadget-rc-col-1&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// detach first column so remaining elements all go in diff column&lt;br /&gt;
		parent.removeChild(col1);&lt;br /&gt;
&lt;br /&gt;
		// wrap elements together inside column 2&lt;br /&gt;
		let col2 = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		col2.classList.add(&amp;#039;gadget-rc-col-2&amp;#039;);&lt;br /&gt;
		while (parent.firstChild) {&lt;br /&gt;
			col2.append(parent.firstChild);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// put everything back together&lt;br /&gt;
		parent.append(col1);&lt;br /&gt;
		parent.append(col2);&lt;br /&gt;
		parent.append(col3);&lt;br /&gt;
&lt;br /&gt;
		cleanUserLinks(row);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function cleanGroupedLog(row) {&lt;br /&gt;
		row.classList.add(&amp;#039;gadget-rc-row&amp;#039;, &amp;#039;gadget-rc-log&amp;#039;, &amp;#039;gadget-rc-grouped&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// FIRST COLUMN: log name&lt;br /&gt;
		row.querySelector(&amp;#039;.mw-rc-unwatched&amp;#039;).classList.add(&amp;#039;gadget-rc-col-1&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// SECOND COLUMN: placeholder with separator dots&lt;br /&gt;
		row.querySelector(&amp;#039;.mw-changeslist-separator&amp;#039;).classList.add(&amp;#039;gadget-rc-col-2&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// THIRD COLUMN: user info&lt;br /&gt;
		row.querySelector(&amp;#039;.changedby&amp;#039;).classList.add(&amp;#039;gadget-rc-col-3&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// remove square brackets from grouped usernames; can&amp;#039;t use remove()&lt;br /&gt;
		// since there might be other text in the same node, eg. &amp;quot;(4×)]&amp;quot;&lt;br /&gt;
		let users = row.querySelector(&amp;#039;.gadget-rc-col-3&amp;#039;).childNodes;&lt;br /&gt;
&lt;br /&gt;
		users[0].textContent = users[0].textContent.slice(1); // [&lt;br /&gt;
		users[users.length - 1].textContent = users[users.length - 1].textContent.slice(0, -1); // ]&lt;br /&gt;
&lt;br /&gt;
		// remove empty text nodes - convert live NodeList to array&lt;br /&gt;
		let children = [...row.querySelector(&amp;#039;.mw-changeslist-line-inner&amp;#039;).childNodes];&lt;br /&gt;
&lt;br /&gt;
		for (let child of children) {&lt;br /&gt;
			if (child.nodeType === Node.TEXT_NODE) {&lt;br /&gt;
				child.remove();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function cleanGroupedEdit(row) {&lt;br /&gt;
		row.classList.add(&amp;#039;gadget-rc-row&amp;#039;, &amp;#039;gadget-rc-edit&amp;#039;, &amp;#039;gadget-rc-grouped&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// FIRST COLUMN: page name&lt;br /&gt;
		row.querySelector(&amp;#039;.mw-title&amp;#039;).classList.add(&amp;#039;gadget-rc-col-1&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// SECOND COLUMN: diff text&lt;br /&gt;
		let col2 = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		col2.classList.add(&amp;#039;gadget-rc-col-2&amp;#039;);&lt;br /&gt;
		col2.append(&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-links&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-diff-bytes&amp;#039;, row)&lt;br /&gt;
		);&lt;br /&gt;
		row.querySelector(&amp;#039;.gadget-rc-col-1&amp;#039;).after(col2);&lt;br /&gt;
&lt;br /&gt;
		// &amp;quot;x changes&amp;quot; -&amp;gt; &amp;quot;diff&amp;quot;&lt;br /&gt;
		if (row.querySelector(&amp;#039;.mw-changeslist-groupdiff&amp;#039;)) {&lt;br /&gt;
			row.querySelector(&amp;#039;.mw-changeslist-groupdiff&amp;#039;).textContent = &amp;#039;diff&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
		// new pages have a text node instead of a link&lt;br /&gt;
		else {&lt;br /&gt;
			row.querySelector(&amp;#039;.mw-changeslist-links span:first-child&amp;#039;).textContent = &amp;#039;diff&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// &amp;quot;history&amp;quot; -&amp;gt; &amp;quot;hist&amp;quot;&lt;br /&gt;
		if (row.querySelector(&amp;#039;.mw-changeslist-history&amp;#039;)) {&lt;br /&gt;
			row.querySelector(&amp;#039;.mw-changeslist-history&amp;#039;).textContent = &amp;#039;hist&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
		// nonexistent pages (redirect-suppressed move or deleted) have a text node instead of a link&lt;br /&gt;
		// @todo check for new classname/structure; no example rn&lt;br /&gt;
		else {&lt;br /&gt;
			// let newHist = row.querySelector(&amp;#039;.mw-changeslist-line-inner&amp;#039;).childNodes[4].nodeValue.replace(&amp;#039;history&amp;#039;, &amp;#039;hist&amp;#039;);&lt;br /&gt;
			// row.querySelector(&amp;#039;.mw-changeslist-line-inner&amp;#039;).childNodes[4].nodeValue = newHist;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// THIRD COLUMN: user info&lt;br /&gt;
		row.querySelector(&amp;#039;.changedby&amp;#039;).classList.add(&amp;#039;gadget-rc-col-3&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// remove square brackets from grouped usernames; cannot simply use remove()&lt;br /&gt;
		// since there might be other text in the same node, eg. &amp;quot;(4×)]&amp;quot;&lt;br /&gt;
		let users = row.querySelector(&amp;#039;.gadget-rc-col-3&amp;#039;).childNodes;&lt;br /&gt;
&lt;br /&gt;
		users[0].textContent = users[0].textContent.slice(1); // [&lt;br /&gt;
		users[users.length - 1].textContent = users[users.length - 1].textContent.slice(0, -1); // ]&lt;br /&gt;
&lt;br /&gt;
		// remove empty text nodes - convert live NodeList to array&lt;br /&gt;
		let children = [...row.querySelector(&amp;#039;.mw-changeslist-line-inner&amp;#039;).childNodes];&lt;br /&gt;
&lt;br /&gt;
		for (let child of children) {&lt;br /&gt;
			if (child.nodeType === Node.TEXT_NODE) {&lt;br /&gt;
				child.remove();&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function cleanSingleLog(row) {&lt;br /&gt;
		row.classList.add(&amp;#039;gadget-rc-row&amp;#039;, &amp;#039;gadget-rc-log&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// FIRST COLUMN: log name&lt;br /&gt;
		row.querySelector(&amp;#039;.mw-changeslist-line-inner-logLink&amp;#039;).classList.add(&amp;#039;gadget-rc-col-1&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// SECOND COLUMN: placeholder with separator dots&lt;br /&gt;
		row.querySelector(&amp;#039;.mw-changeslist-line-inner-separatorAfterLinks&amp;#039;).classList.add(&amp;#039;gadget-rc-col-2&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// THIRD COLUMN: user info&lt;br /&gt;
		let col3 = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		col3.classList.add(&amp;#039;gadget-rc-col-3&amp;#039;);&lt;br /&gt;
		col3.append(&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-logEntry&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-tags&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-watchingUsers&amp;#039;, row)&lt;br /&gt;
		);&lt;br /&gt;
		row.querySelector(&amp;#039;.gadget-rc-col-2&amp;#039;).after(col3);&lt;br /&gt;
		cleanUserLinks(row);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function cleanSingleEdit(row) {&lt;br /&gt;
		row.classList.add(&amp;#039;gadget-rc-row&amp;#039;, &amp;#039;gadget-rc-edit&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// FIRST COLUMN: page name&lt;br /&gt;
		row.querySelector(&amp;#039;.mw-changeslist-line-inner-articleLink&amp;#039;).classList.add(&amp;#039;gadget-rc-col-1&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// SECOND COLUMN: diff text&lt;br /&gt;
		let col2 = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		col2.classList.add(&amp;#039;gadget-rc-col-2&amp;#039;);&lt;br /&gt;
		col2.append(&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-historyLink&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-characterDiff&amp;#039;, row)&lt;br /&gt;
		);&lt;br /&gt;
		row.querySelector(&amp;#039;.gadget-rc-col-1&amp;#039;).after(col2);&lt;br /&gt;
&lt;br /&gt;
		// THIRD COLUMN: user info&lt;br /&gt;
		let col3 = document.createElement(&amp;#039;span&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		col3.classList.add(&amp;#039;gadget-rc-col-3&amp;#039;);&lt;br /&gt;
		col3.append(&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-userLink&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-userTalkLink&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-comment&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-rollback&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-tags&amp;#039;, row),&lt;br /&gt;
			get(&amp;#039;.mw-changeslist-line-inner-watchingUsers&amp;#039;, row)&lt;br /&gt;
		);&lt;br /&gt;
		col2.after(col3);&lt;br /&gt;
		cleanUserLinks(row);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function cleanUserLinks(row) {&lt;br /&gt;
		// if username has been revdeled (shows &amp;quot;(username removed)&amp;quot;), it has no links&lt;br /&gt;
		if (row.querySelector(&amp;#039;.history-deleted&amp;#039;)) return;&lt;br /&gt;
&lt;br /&gt;
		// replace links with first letter of each link&lt;br /&gt;
		let links = row.querySelectorAll(&amp;#039;.mw-usertoollinks a&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		for (let link of links) {&lt;br /&gt;
			link.textContent = link.textContent.slice(0, 1);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// rollback link doesn&amp;#039;t exist if page creation or user does not have the right&lt;br /&gt;
		if (row.querySelector(&amp;#039;.mw-rollback-link&amp;#039;)) {&lt;br /&gt;
			row.querySelector(&amp;#039;.mw-rollback-link a&amp;#039;).textContent = &amp;#039;rollback&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// add relative time (eg. &amp;quot;25m ago&amp;quot;) to timestamp column as hover text&lt;br /&gt;
	function addRelativeTime(row) {&lt;br /&gt;
		// if row is a single row&lt;br /&gt;
		let timestamp = row.getAttribute(&amp;#039;data-mw-ts&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
		// if row is a grouped row&lt;br /&gt;
		if (timestamp === null) {&lt;br /&gt;
			timestamp = row.closest(&amp;#039;table.mw-enhanced-rc&amp;#039;).getAttribute(&amp;#039;data-mw-ts&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		// convert mw timestamp (eg. 20240906020749) to Date (equal to 2024-09-06, 02:07:49 UTC)&lt;br /&gt;
		let {y, m, d, h, min, s} = timestamp.match(/(?&amp;lt;y&amp;gt;\d{4})(?&amp;lt;m&amp;gt;\d{2})(?&amp;lt;d&amp;gt;\d{2})(?&amp;lt;h&amp;gt;\d{2})(?&amp;lt;min&amp;gt;\d{2})(?&amp;lt;s&amp;gt;\d{2})/).groups;&lt;br /&gt;
		let timestampObj = new Date(`${y}-${m}-${d}T${h}:${min}:${s}.000Z`);&lt;br /&gt;
&lt;br /&gt;
		// get time difference, then format into hours and minutes&lt;br /&gt;
		let minsAgo = Math.floor((new Date() - timestampObj) / 1000 / 60);&lt;br /&gt;
		let timeAgo;&lt;br /&gt;
&lt;br /&gt;
		if (minsAgo === 0) {&lt;br /&gt;
			timeAgo = &amp;#039;Now!&amp;#039;;&lt;br /&gt;
		} else if (minsAgo &amp;lt; 60) {&lt;br /&gt;
			timeAgo = minsAgo + &amp;#039;m ago&amp;#039;;&lt;br /&gt;
		} else {&lt;br /&gt;
			timeAgo = Math.floor(minsAgo / 60) + &amp;#039;h &amp;#039; + minsAgo % 60 + &amp;#039;m ago&amp;#039;;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
		get(&amp;#039;.mw-enhanced-rc&amp;#039;, row).setAttribute(&amp;#039;title&amp;#039;, timeAgo);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// return element if it exists; if not, fail silently (unlike querySelector, which returns null)&lt;br /&gt;
	function get(selector, scope = document) {&lt;br /&gt;
		let element = scope.querySelector(selector);&lt;br /&gt;
		return (element) ? element : &amp;#039;&amp;#039;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function init() {&lt;br /&gt;
		mw.hook(&amp;#039;structuredChangeFilters.ui.initialized&amp;#039;).add(function () {&lt;br /&gt;
			// initial load&lt;br /&gt;
			runReadableRC($(&amp;#039;.mw-changeslist&amp;#039;));&lt;br /&gt;
&lt;br /&gt;
			// page refreshed with new edits / &amp;quot;Live updates&amp;quot; on&lt;br /&gt;
			mw.hook(&amp;#039;wikipage.content&amp;#039;).add(runReadableRC);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	$(init);&lt;br /&gt;
})(jQuery, mediaWiki);&lt;br /&gt;
&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alex</name></author>
	</entry>
</feed>