<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>WIKI TKJ  - Recent changes [en]</title>
		<link>https://noctkj.net/index.php/Special:RecentChanges</link>
		<description>Track the most recent changes to the wiki in this feed.</description>
		<language>en</language>
		<generator>MediaWiki 1.45.3</generator>
		<lastBuildDate>Mon, 06 Jul 2026 11:10:47 GMT</lastBuildDate>
		<item>
			<title>MediaWiki:Mobile.js</title>
			<link>https://noctkj.net/index.php?title=MediaWiki:Mobile.js&amp;diff=1270&amp;oldid=0</link>
			<guid isPermaLink="false">https://noctkj.net/index.php?title=MediaWiki:Mobile.js&amp;diff=1270&amp;oldid=0</guid>
			<description>&lt;p&gt;Enable copy buttons on Minerva/mobile views&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* Load copy-code enhancement for Minerva/mobile views too */&lt;br /&gt;
(function () {&lt;br /&gt;
function fallbackCopy(text) {&lt;br /&gt;
var textarea = document.createElement(&amp;#039;textarea&amp;#039;);&lt;br /&gt;
textarea.value = text;&lt;br /&gt;
textarea.setAttribute(&amp;#039;readonly&amp;#039;, &amp;#039;readonly&amp;#039;);&lt;br /&gt;
textarea.style.position = &amp;#039;absolute&amp;#039;;&lt;br /&gt;
textarea.style.left = &amp;#039;-9999px&amp;#039;;&lt;br /&gt;
document.body.appendChild(textarea);&lt;br /&gt;
textarea.select();&lt;br /&gt;
try {&lt;br /&gt;
document.execCommand(&amp;#039;copy&amp;#039;);&lt;br /&gt;
} finally {&lt;br /&gt;
document.body.removeChild(textarea);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function copyText(text) {&lt;br /&gt;
if (navigator.clipboard &amp;amp;&amp;amp; window.isSecureContext) {&lt;br /&gt;
return navigator.clipboard.writeText(text);&lt;br /&gt;
}&lt;br /&gt;
return new Promise(function (resolve) {&lt;br /&gt;
fallbackCopy(text);&lt;br /&gt;
resolve();&lt;br /&gt;
});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function flashButton(button, label) {&lt;br /&gt;
var original = button.getAttribute(&amp;#039;data-original-label&amp;#039;) || &amp;#039;Copy&amp;#039;;&lt;br /&gt;
button.textContent = label;&lt;br /&gt;
window.setTimeout(function () {&lt;br /&gt;
button.textContent = original;&lt;br /&gt;
}, 1400);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function enhanceCodeBlock(container) {&lt;br /&gt;
var pre = container.matches(&amp;#039;pre&amp;#039;) ? container : container.querySelector(&amp;#039;pre&amp;#039;);&lt;br /&gt;
if (!pre || pre.dataset.instantCopyReady === &amp;#039;1&amp;#039;) {&lt;br /&gt;
return;&lt;br /&gt;
}&lt;br /&gt;
pre.dataset.instantCopyReady = &amp;#039;1&amp;#039;;&lt;br /&gt;
var host = container.classList.contains(&amp;#039;mw-highlight&amp;#039;) ? container : pre;&lt;br /&gt;
var wrapper = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
wrapper.className = &amp;#039;oc-copy-wrap&amp;#039;;&lt;br /&gt;
host.parentNode.insertBefore(wrapper, host);&lt;br /&gt;
wrapper.appendChild(host);&lt;br /&gt;
var button = document.createElement(&amp;#039;button&amp;#039;);&lt;br /&gt;
button.type = &amp;#039;button&amp;#039;;&lt;br /&gt;
button.className = &amp;#039;oc-copy-button&amp;#039;;&lt;br /&gt;
button.textContent = &amp;#039;Copy&amp;#039;;&lt;br /&gt;
button.setAttribute(&amp;#039;data-original-label&amp;#039;, &amp;#039;Copy&amp;#039;);&lt;br /&gt;
button.setAttribute(&amp;#039;aria-label&amp;#039;, &amp;#039;Copy code block&amp;#039;);&lt;br /&gt;
button.addEventListener(&amp;#039;click&amp;#039;, function () {&lt;br /&gt;
copyText(pre.innerText || pre.textContent || &amp;#039;&amp;#039;)&lt;br /&gt;
.then(function () { flashButton(button, &amp;#039;Copied&amp;#039;); })&lt;br /&gt;
.catch(function () { flashButton(button, &amp;#039;Failed&amp;#039;); });&lt;br /&gt;
});&lt;br /&gt;
wrapper.appendChild(button);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function initCopyButtons(rootNode) {&lt;br /&gt;
var root = rootNode &amp;amp;&amp;amp; rootNode.querySelectorAll ? rootNode : document;&lt;br /&gt;
var nodes = root.querySelectorAll(&amp;#039;.mw-highlight, pre&amp;#039;);&lt;br /&gt;
nodes.forEach(function (node) {&lt;br /&gt;
if (node.closest(&amp;#039;.oc-copy-wrap&amp;#039;)) {&lt;br /&gt;
return;&lt;br /&gt;
}&lt;br /&gt;
enhanceCodeBlock(node);&lt;br /&gt;
});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.addEventListener(&amp;#039;DOMContentLoaded&amp;#039;, function () {&lt;br /&gt;
initCopyButtons(document);&lt;br /&gt;
});&lt;br /&gt;
}());&lt;/div&gt;</description>
			<pubDate>Sat, 13 Jun 2026 02:20:48 GMT</pubDate>
			<dc:creator>Novy</dc:creator>
			<comments>https://noctkj.net/index.php/MediaWiki_talk:Mobile.js</comments>
		</item>
		<item>
			<title>MediaWiki:Common.css</title>
			<link>https://noctkj.net/index.php?title=MediaWiki:Common.css&amp;diff=1269&amp;oldid=0</link>
			<guid isPermaLink="false">https://noctkj.net/index.php?title=MediaWiki:Common.css&amp;diff=1269&amp;oldid=0</guid>
			<description>&lt;p&gt;Add styles for code copy button&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;.oc-copy-wrap {&lt;br /&gt;
position: relative;&lt;br /&gt;
margin: 0.6rem 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oc-copy-wrap &amp;gt; pre,&lt;br /&gt;
.oc-copy-wrap &amp;gt; .mw-highlight {&lt;br /&gt;
margin: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oc-copy-button {&lt;br /&gt;
position: absolute;&lt;br /&gt;
top: 0.5rem;&lt;br /&gt;
right: 0.5rem;&lt;br /&gt;
z-index: 5;&lt;br /&gt;
border: 1px solid #c8ccd1;&lt;br /&gt;
background: rgba(255, 255, 255, 0.94);&lt;br /&gt;
color: #202122;&lt;br /&gt;
border-radius: 6px;&lt;br /&gt;
padding: 0.2rem 0.6rem;&lt;br /&gt;
font-size: 0.78rem;&lt;br /&gt;
line-height: 1.2;&lt;br /&gt;
cursor: pointer;&lt;br /&gt;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oc-copy-button:hover {&lt;br /&gt;
background: #f8f9fa;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.oc-copy-button:focus {&lt;br /&gt;
outline: 2px solid #36c;&lt;br /&gt;
outline-offset: 1px;&lt;br /&gt;
}&lt;/div&gt;</description>
			<pubDate>Sat, 13 Jun 2026 02:15:45 GMT</pubDate>
			<dc:creator>Novy</dc:creator>
			<comments>https://noctkj.net/index.php/MediaWiki_talk:Common.css</comments>
		</item>
		<item>
			<title>MediaWiki:Common.js</title>
			<link>https://noctkj.net/index.php?title=MediaWiki:Common.js&amp;diff=1268&amp;oldid=0</link>
			<guid isPermaLink="false">https://noctkj.net/index.php?title=MediaWiki:Common.js&amp;diff=1268&amp;oldid=0</guid>
			<description>&lt;p&gt;Add instant copy button for code blocks&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;(function () {&lt;br /&gt;
function fallbackCopy(text) {&lt;br /&gt;
var textarea = document.createElement(&amp;#039;textarea&amp;#039;);&lt;br /&gt;
textarea.value = text;&lt;br /&gt;
textarea.setAttribute(&amp;#039;readonly&amp;#039;, &amp;#039;readonly&amp;#039;);&lt;br /&gt;
textarea.style.position = &amp;#039;absolute&amp;#039;;&lt;br /&gt;
textarea.style.left = &amp;#039;-9999px&amp;#039;;&lt;br /&gt;
document.body.appendChild(textarea);&lt;br /&gt;
textarea.select();&lt;br /&gt;
try {&lt;br /&gt;
document.execCommand(&amp;#039;copy&amp;#039;);&lt;br /&gt;
} finally {&lt;br /&gt;
document.body.removeChild(textarea);&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function copyText(text) {&lt;br /&gt;
if (navigator.clipboard &amp;amp;&amp;amp; window.isSecureContext) {&lt;br /&gt;
return navigator.clipboard.writeText(text);&lt;br /&gt;
}&lt;br /&gt;
return new Promise(function (resolve) {&lt;br /&gt;
fallbackCopy(text);&lt;br /&gt;
resolve();&lt;br /&gt;
});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function flashButton(button, label) {&lt;br /&gt;
var original = button.getAttribute(&amp;#039;data-original-label&amp;#039;) || &amp;#039;Copy&amp;#039;;&lt;br /&gt;
button.textContent = label;&lt;br /&gt;
window.setTimeout(function () {&lt;br /&gt;
button.textContent = original;&lt;br /&gt;
}, 1400);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function enhanceCodeBlock(container) {&lt;br /&gt;
var pre = container.matches(&amp;#039;pre&amp;#039;) ? container : container.querySelector(&amp;#039;pre&amp;#039;);&lt;br /&gt;
if (!pre || pre.dataset.instantCopyReady === &amp;#039;1&amp;#039;) {&lt;br /&gt;
return;&lt;br /&gt;
}&lt;br /&gt;
pre.dataset.instantCopyReady = &amp;#039;1&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
var host = container.classList.contains(&amp;#039;mw-highlight&amp;#039;) ? container : pre;&lt;br /&gt;
var wrapper = document.createElement(&amp;#039;div&amp;#039;);&lt;br /&gt;
wrapper.className = &amp;#039;oc-copy-wrap&amp;#039;;&lt;br /&gt;
host.parentNode.insertBefore(wrapper, host);&lt;br /&gt;
wrapper.appendChild(host);&lt;br /&gt;
&lt;br /&gt;
var button = document.createElement(&amp;#039;button&amp;#039;);&lt;br /&gt;
button.type = &amp;#039;button&amp;#039;;&lt;br /&gt;
button.className = &amp;#039;oc-copy-button&amp;#039;;&lt;br /&gt;
button.textContent = &amp;#039;Copy&amp;#039;;&lt;br /&gt;
button.setAttribute(&amp;#039;data-original-label&amp;#039;, &amp;#039;Copy&amp;#039;);&lt;br /&gt;
button.setAttribute(&amp;#039;aria-label&amp;#039;, &amp;#039;Copy code block&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
button.addEventListener(&amp;#039;click&amp;#039;, function () {&lt;br /&gt;
copyText(pre.innerText || pre.textContent || &amp;#039;&amp;#039;)&lt;br /&gt;
.then(function () {&lt;br /&gt;
flashButton(button, &amp;#039;Copied&amp;#039;);&lt;br /&gt;
})&lt;br /&gt;
.catch(function () {&lt;br /&gt;
flashButton(button, &amp;#039;Failed&amp;#039;);&lt;br /&gt;
});&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
wrapper.appendChild(button);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function initCopyButtons($content) {&lt;br /&gt;
var root = $content &amp;amp;&amp;amp; $content[0] ? $content[0] : document;&lt;br /&gt;
var nodes = root.querySelectorAll(&amp;#039;.mw-highlight, pre&amp;#039;);&lt;br /&gt;
nodes.forEach(function (node) {&lt;br /&gt;
if (node.closest(&amp;#039;.oc-copy-wrap&amp;#039;)) {&lt;br /&gt;
return;&lt;br /&gt;
}&lt;br /&gt;
enhanceCodeBlock(node);&lt;br /&gt;
});&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (window.mw &amp;amp;&amp;amp; mw.hook) {&lt;br /&gt;
mw.hook(&amp;#039;wikipage.content&amp;#039;).add(initCopyButtons);&lt;br /&gt;
} else {&lt;br /&gt;
document.addEventListener(&amp;#039;DOMContentLoaded&amp;#039;, function () {&lt;br /&gt;
initCopyButtons(document);&lt;br /&gt;
});&lt;br /&gt;
}&lt;br /&gt;
}());&lt;/div&gt;</description>
			<pubDate>Sat, 13 Jun 2026 02:15:45 GMT</pubDate>
			<dc:creator>Novy</dc:creator>
			<comments>https://noctkj.net/index.php/MediaWiki_talk:Common.js</comments>
		</item>
</channel></rss>