<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title>kJams Wiki  - Recent changes [en]</title>
		<link>https://karaoke.kjams.com/wiki/Special:RecentChanges</link>
		<description>Track the most recent changes to the wiki in this feed.</description>
		<language>en</language>
		<generator>MediaWiki 1.43.0</generator>
		<lastBuildDate>Tue, 09 Jun 2026 06:18:53 GMT</lastBuildDate>
		<item>
			<title>Subscription</title>
			<link>https://karaoke.kjams.com/w/index.php?title=Subscription&amp;diff=13698&amp;oldid=13686</link>
			<guid isPermaLink="false">https://karaoke.kjams.com/w/index.php?title=Subscription&amp;diff=13698&amp;oldid=13686</guid>
			<description>&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Tiers&lt;/span&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 22:19, 8 June 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-multi&quot; lang=&quot;en&quot;&gt;(2 intermediate revisions by the same user not shown)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Some time soon&lt;/del&gt;, kJams will switch to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;an optional &lt;/del&gt;&quot;Subscription Model&quot;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;I say &lt;/del&gt;optional because there will be no requirement for existing users to switch, you will be free to continue using your perpetual license, which will never be revoked. However, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;there will come a time when &lt;/del&gt;new &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;updates &lt;/del&gt;will &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;no longer &lt;/del&gt;be &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;available to existing perpetual licenses&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;except for &lt;/del&gt;critical bug fixes.&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Within the next couple of months&lt;/ins&gt;, kJams will switch to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;a &lt;/ins&gt;&quot;Subscription Model&quot;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;It is &lt;/ins&gt;optional because there will be no requirement for existing users to switch, you will be free to continue using your perpetual license, which will never be revoked. However, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;no &lt;/ins&gt;new &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;development &lt;/ins&gt;will be &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;done on the older editions&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;only &lt;/ins&gt;critical bug fixes&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. I will continue to make updates for at least 6 months&lt;/ins&gt;.&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;br&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;br&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Note this &lt;/del&gt;is not related to licensing &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;at this time&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;ie: if you subscribe, it won&#039;t cause kJams to have a license, and if you unsubscribe, it won&#039;t remove your existing perpetual license. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;If you *just* purchased kJams, feel free to wait a year before &quot;subscribing&quot; since in effect you just paid for a full year up front&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Of course, feel free &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;subscribe anyway&lt;/del&gt;, to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;support the cause&quot; ;-&lt;/del&gt;) &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;In the future it&#039;ll be built in, and WILL manage your license&lt;/del&gt;.&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Currently the Patreon subscription &lt;/ins&gt;is not related to licensing. ie: if you subscribe &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;to Patreon&lt;/ins&gt;, it won&#039;t cause kJams to have a license, and if you unsubscribe, it won&#039;t remove your existing perpetual license.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The new system WILL manage your license&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The new editions will be HomeParty (equivalent &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Lite + Burning)&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;and NightClub (equivalent &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;2&lt;/ins&gt;).&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;br&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;br&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;I&amp;#039;m doing this in order to make my income sustainable, so that I can retire from my day job and work on kJams full time.&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;I&amp;#039;m doing this in order to make my income sustainable, so that I can retire from my day job and work on kJams full time.&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;==Tiers==&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;==Tiers==&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;* Lite: $&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;6 &lt;/del&gt;per month: Includes 1 hour of ETS&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;* Lite: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;HomeParty is &lt;/ins&gt;$&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8 &lt;/ins&gt;per month: Includes 1 hour of ETS&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;* Pro/2: $&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;12 &lt;/del&gt;per month: Includes 2 hours of ETS&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;* Pro/2: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NightClub is &lt;/ins&gt;$&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;16 &lt;/ins&gt;per month: Includes 2 hours of ETS&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;br&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;br&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;This actually works out okay &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;for Pro users&lt;/del&gt;: If you use &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kJams Pro/2 &lt;/del&gt;only 3 months per year, then it only costs you $&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;36 &lt;/del&gt;per year.  Want to use it just over one weekend? That&#039;s $&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;12&lt;/del&gt;. Next time you subscribe, you get ALL the latest updates. If you use it full time, then the yearly cost is about the same as a yearly upgrade. Another example: for a Lite user who only throws a Christmas and a New Year&#039;s party, you only pay $&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;6&lt;/del&gt;!&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;This actually works out okay: If you use &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;NightClub &lt;/ins&gt;only 3 months per year, then it only costs you $&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;45 &lt;/ins&gt;per year.  Want to use it just over one weekend? That&#039;s $&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;15&lt;/ins&gt;. Next time you subscribe, you get ALL the latest updates. If you use it full time, then the yearly cost is about the same as a yearly upgrade. Another example: for a Lite user who only throws a Christmas and a New Year&#039;s party, you only pay $&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8&lt;/ins&gt;!&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;br&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;br&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;==Start Subscribing Now==&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;==Start Subscribing Now==&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;If you&#039;re willing to start supporting the cause NOW, [https://www.patreon.com/kJams please click here]. Later, instead of using Patreon (which only allows monthly subscriptions), we&#039;ll use the built in Paddle engine (which will have more options eg: yearly).&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;If you&#039;re willing to start supporting the cause NOW, [https://www.patreon.com/kJams please click here]. Later, instead of using Patreon (which only allows monthly subscriptions), we&#039;ll use the built in Paddle engine (which will have more options eg: yearly)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. You will be notified by kJams about the new updates&lt;/ins&gt;.&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;br&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;br&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;==Enterprise Tech Support (ETS)==&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;==Enterprise Tech Support (ETS)==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key kjams_www-mw_:diff:1.41:old-13686:rev-13698:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Mon, 08 Jun 2026 22:19:34 GMT</pubDate>
			<dc:creator>Dave</dc:creator>
			<comments>https://karaoke.kjams.com/wiki/Talk:Subscription</comments>
		</item>
		<item>
			<title>Remove Duplicate Index Entries</title>
			<link>https://karaoke.kjams.com/w/index.php?title=Remove_Duplicate_Index_Entries&amp;diff=13695&amp;oldid=13694</link>
			<guid isPermaLink="false">https://karaoke.kjams.com/w/index.php?title=Remove_Duplicate_Index_Entries&amp;diff=13695&amp;oldid=13694</guid>
			<description>&lt;p&gt;rename Path Hash to File Hash (CM_Key_ID_HASH_FILE)&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 21:46, 7 June 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&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;== What the command does ==&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;== What the command does ==&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;br&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;br&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;# Computes a &#039;&#039;&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Path &lt;/del&gt;Hash&#039;&#039;&#039; for each library song that has a resolvable local media path (ZIP, then video, then audio — same priority kJams uses elsewhere).&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;# Computes a &#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;File &lt;/ins&gt;Hash&#039;&#039;&#039; for each library song that has a resolvable local media path (ZIP, then video, then audio — same priority kJams uses elsewhere).&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;# Groups songs with the same hash (same resolved file path).&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;# Groups songs with the same hash (same resolved file path).&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;# Within each group, keeps the entry with the &amp;#039;&amp;#039;&amp;#039;lowest song ID&amp;#039;&amp;#039;&amp;#039; as the canonical copy.&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;# Within each group, keeps the entry with the &amp;#039;&amp;#039;&amp;#039;lowest song ID&amp;#039;&amp;#039;&amp;#039; as the canonical copy.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l27&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&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;* Duplicates defined only by playlist references without duplicate library entries.&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;* Duplicates defined only by playlist references without duplicate library entries.&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;br&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;br&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;== &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Path &lt;/del&gt;Hash column ==&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;== &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;File &lt;/ins&gt;Hash column ==&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;br&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;br&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;After running, you can show the &#039;&#039;&#039;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Path &lt;/del&gt;Hash&#039;&#039;&#039; sort column in the Library to inspect the computed values. Songs with the same hash are duplicates by file path.&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;After running, you can show the &#039;&#039;&#039;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;File &lt;/ins&gt;Hash&#039;&#039;&#039; sort column in the Library to inspect the computed values. Songs with the same hash are duplicates by file path.&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;br&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;br&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;== Before you run ==&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;== Before you run ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key kjams_www-mw_:diff:1.41:old-13694:rev-13695:php=table --&gt;
&lt;/table&gt;</description>
			<pubDate>Sun, 07 Jun 2026 21:46:53 GMT</pubDate>
			<dc:creator>Dave</dc:creator>
			<comments>https://karaoke.kjams.com/wiki/Talk:Remove_Duplicate_Index_Entries</comments>
		</item>
		<item>
			<title>Remove Duplicate Index Entries</title>
			<link>https://karaoke.kjams.com/w/index.php?title=Remove_Duplicate_Index_Entries&amp;diff=13694&amp;oldid=0</link>
			<guid isPermaLink="false">https://karaoke.kjams.com/w/index.php?title=Remove_Duplicate_Index_Entries&amp;diff=13694&amp;oldid=0</guid>
			<description>&lt;p&gt;add Remove Duplicate Index Entries help page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Remove Duplicate Index Entries =&lt;br /&gt;
&lt;br /&gt;
This feature is available in the Qt (64-bit) edition of kJams under &amp;#039;&amp;#039;&amp;#039;Advanced → Special → Remove Duplicate Index Entries…&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== What is an &amp;quot;index entry&amp;quot;? ==&lt;br /&gt;
&lt;br /&gt;
Each song in your kJams &amp;#039;&amp;#039;&amp;#039;Library&amp;#039;&amp;#039;&amp;#039; has a unique &amp;#039;&amp;#039;&amp;#039;song ID&amp;#039;&amp;#039;&amp;#039; (index entry). That is separate from a &amp;#039;&amp;#039;&amp;#039;playlist item&amp;#039;&amp;#039;&amp;#039; (a reference to a song in a rotation list, custom playlist, singer list, etc.).&lt;br /&gt;
&lt;br /&gt;
Sometimes the same physical media file is imported or added more than once, creating multiple library index entries (different song IDs) that all point at the &amp;#039;&amp;#039;&amp;#039;same file on disk&amp;#039;&amp;#039;&amp;#039;. This command finds those duplicates and consolidates them.&lt;br /&gt;
&lt;br /&gt;
== What the command does ==&lt;br /&gt;
&lt;br /&gt;
# Computes a &amp;#039;&amp;#039;&amp;#039;Path Hash&amp;#039;&amp;#039;&amp;#039; for each library song that has a resolvable local media path (ZIP, then video, then audio — same priority kJams uses elsewhere).&lt;br /&gt;
# Groups songs with the same hash (same resolved file path).&lt;br /&gt;
# Within each group, keeps the entry with the &amp;#039;&amp;#039;&amp;#039;lowest song ID&amp;#039;&amp;#039;&amp;#039; as the canonical copy.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Updates playlists&amp;#039;&amp;#039;&amp;#039;: any playlist reference to a removed song ID is changed to point at the canonical song ID. If the playlist already contains the canonical entry, the duplicate playlist reference is removed instead.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Deletes&amp;#039;&amp;#039;&amp;#039; the extra library index entries (and their library playlist rows). Your media file on disk is not deleted by this operation (only cache/temp files associated with the removed entries may be cleared, same as normal Remove from Library).&lt;br /&gt;
&lt;br /&gt;
== What is skipped ==&lt;br /&gt;
&lt;br /&gt;
Songs with &amp;#039;&amp;#039;&amp;#039;no resolvable local file path&amp;#039;&amp;#039;&amp;#039; are skipped — for example some streaming entries, some music-store entries without a local file, or songs whose files are missing. They are not hashed and are never merged or deleted by this command.&lt;br /&gt;
&lt;br /&gt;
== What this does &amp;#039;&amp;#039;&amp;#039;not&amp;#039;&amp;#039;&amp;#039; detect ==&lt;br /&gt;
&lt;br /&gt;
* The same audio on disk via &amp;#039;&amp;#039;&amp;#039;different paths&amp;#039;&amp;#039;&amp;#039; (aliases, copies in different folders, hard links with different path strings).&lt;br /&gt;
* Duplicates that share metadata (name/artist/album) but point at &amp;#039;&amp;#039;&amp;#039;different files&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Duplicates defined only by playlist references without duplicate library entries.&lt;br /&gt;
&lt;br /&gt;
== Path Hash column ==&lt;br /&gt;
&lt;br /&gt;
After running, you can show the &amp;#039;&amp;#039;&amp;#039;Path Hash&amp;#039;&amp;#039;&amp;#039; sort column in the Library to inspect the computed values. Songs with the same hash are duplicates by file path.&lt;br /&gt;
&lt;br /&gt;
== Before you run ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Back up your library&amp;#039;&amp;#039;&amp;#039; (Save Database) if you are unsure. This operation removes library entries and cannot be undone from within kJams.&lt;br /&gt;
* Quit any operation that is sorting the library; the command waits for sorting to finish.&lt;br /&gt;
* Read the confirmation dialogs carefully; the second dialog shows counts of groups and entries to be removed.&lt;br /&gt;
&lt;br /&gt;
== Technical notes ==&lt;br /&gt;
&lt;br /&gt;
* Path resolution uses &amp;#039;&amp;#039;&amp;#039;Resolve As Far As You Can&amp;#039;&amp;#039;&amp;#039; so aliases and broken path chains are normalized when possible.&lt;br /&gt;
* Volume names are normalized for consistent hashing on macOS.&lt;br /&gt;
* The feature is compiled only into the Qt build (`#if _QT_`); 32-bit editions do not include this menu item.&lt;/div&gt;</description>
			<pubDate>Sun, 07 Jun 2026 01:41:27 GMT</pubDate>
			<dc:creator>Dave</dc:creator>
			<comments>https://karaoke.kjams.com/wiki/Talk:Remove_Duplicate_Index_Entries</comments>
		</item>
</channel></rss>