From ff302af66854f936375c9bf4f2d8a9a32ee7ee7f Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 02:11:42 +0100 Subject: [PATCH 01/10] Update couple of sites --- package.json | 2 +- plugins/english/novelupdates.ts | 33 ++++++++++++++++++++++++++------- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 1d30a90d6..7035e42c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lnreader-plugins", - "version": "3.0.0", + "version": "3.1.0", "description": "Plugins repo for LNReader", "main": "index.js", "type": "module", diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index 26782eb46..9ae227b02 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.5'; + version = '0.9.6'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -311,10 +311,17 @@ class NovelUpdates implements Plugin.PluginBase { chapterContent = loadedCheerio('.chapter__content').html()!; break; } - // Last edited in 0.9.5 by Batorian - 26/12/2025 + // Last edited in 0.9.6 by Batorian - 16/01/2026 case 'dreamy-translations': { chapterTitle = loadedCheerio('h1 > span').first().text(); - chapterContent = loadedCheerio('.chapter-content').html()!; + + const content = loadedCheerio('.chapter-content'); + content.children('em').each((_, el) => { + loadedCheerio(el).wrap('

'); + }); + + chapterContent = content.html()!; + break; } // Last edited in 0.9.0 by Batorian - 19/03/2025 case 'fictionread': { @@ -379,10 +386,10 @@ class NovelUpdates implements Plugin.PluginBase { } break; } - // Last edited in 0.9.5 by Batorian - 26/12/2025 - case 'greenztl': { + // Last edited in 0.9.6 by Batorian - 16/01/2026 + case 'greenz': { const chapterSlug = chapterPath.split('/').pop(); - const apiUrl = `https://greenztl.com/api/chapters/slug/${chapterSlug}`; + const apiUrl = `https://greenz.com/api/chapters/slug/${chapterSlug}`; try { const response = await fetchApi(apiUrl); @@ -459,6 +466,15 @@ class NovelUpdates implements Plugin.PluginBase { } break; } + // Last edited in 0.9.6 by Batorian - 16/01/2026 + case 'leafstudio': { + chapterTitle = loadedCheerio('.title').first().text(); + chapterContent = loadedCheerio('.chapter_content') + .map((_, el) => loadedCheerio(el).html()) + .get() + .join(''); + break; + } // Last edited in 0.9.2 by Batorian - 08/09/2025 case 'machineslicedbread': { const urlPath = chapterPath.split('/').filter(Boolean); @@ -925,11 +941,13 @@ class NovelUpdates implements Plugin.PluginBase { ].some(Boolean); // Handle outlier sites + // Last edited in 0.9.6 - 16/01/2026 const outliers = [ 'asuratls', 'fictionread', 'hiraethtranslation', 'infinitenoveltranslations', + 'leafstudio', 'machineslicedbread', 'mirilu', 'novelworldtranslations', @@ -943,7 +961,7 @@ class NovelUpdates implements Plugin.PluginBase { isBlogspot = false; } - // Last edited in 0.9.5 - 26/12/2025 + // Last edited in 0.9.6 - 16/01/2026 /** * Blogspot sites: * - ΒΌ-Assed @@ -963,6 +981,7 @@ class NovelUpdates implements Plugin.PluginBase { * - Infinite Novel Translations (Outlier) * - ippotranslations * - JATranslations + * - Leaf Studio (Outlier) * - Light Novels Translations * - Machine Sliced Bread (Outlier) * - Mirilu - Novel Reader Attempts Translating (Outlier) From fe47b48fe4905aab1045d3b5fc04d75a7a3366ac Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 02:40:07 +0100 Subject: [PATCH 02/10] fix Dreamy Translations --- plugins/english/novelupdates.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index 9ae227b02..f6e6b525d 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.6'; + version = '0.9.7'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -316,8 +316,10 @@ class NovelUpdates implements Plugin.PluginBase { chapterTitle = loadedCheerio('h1 > span').first().text(); const content = loadedCheerio('.chapter-content'); - content.children('em').each((_, el) => { - loadedCheerio(el).wrap('

'); + content.children('em').wrap('

'); + content.find('em').each((_, el) => { + const $em = loadedCheerio(el); + $em.replaceWith(`${$em.html()}`); }); chapterContent = content.html()!; From 341b4fd6c3794a5cc27c473d44af7ba0742a954c Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 03:17:53 +0100 Subject: [PATCH 03/10] fix --- plugins/english/novelupdates.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index f6e6b525d..28cf8a343 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.7'; + version = '0.9.8'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -316,10 +316,9 @@ class NovelUpdates implements Plugin.PluginBase { chapterTitle = loadedCheerio('h1 > span').first().text(); const content = loadedCheerio('.chapter-content'); - content.children('em').wrap('

'); content.find('em').each((_, el) => { const $em = loadedCheerio(el); - $em.replaceWith(`${$em.html()}`); + $em.replaceWith(`

${$em.html()}

`); }); chapterContent = content.html()!; From 1c5faafa2490b3cf2eb9eeb130bbe4f42f74ba8c Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 03:21:14 +0100 Subject: [PATCH 04/10] fix --- plugins/english/novelupdates.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index 28cf8a343..5ac82039b 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.8'; + version = '0.9.9'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -316,7 +316,7 @@ class NovelUpdates implements Plugin.PluginBase { chapterTitle = loadedCheerio('h1 > span').first().text(); const content = loadedCheerio('.chapter-content'); - content.find('em').each((_, el) => { + content.children('em').each((_, el) => { const $em = loadedCheerio(el); $em.replaceWith(`

${$em.html()}

`); }); From 8f7b29cecba6bf5d673d29adf5089f47eacde8c5 Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 03:37:18 +0100 Subject: [PATCH 05/10] fix --- plugins/english/novelupdates.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index 5ac82039b..26d98836c 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.9'; + version = '0.9.10'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -316,10 +316,9 @@ class NovelUpdates implements Plugin.PluginBase { chapterTitle = loadedCheerio('h1 > span').first().text(); const content = loadedCheerio('.chapter-content'); - content.children('em').each((_, el) => { - const $em = loadedCheerio(el); - $em.replaceWith(`

${$em.html()}

`); - }); + loadedCheerio('.chapter-content') + .children('em') + .replaceWith((_, el) => `

${loadedCheerio(el).html()}

`); chapterContent = content.html()!; break; From a223ced004a9b9d2b984e7c3dc9bac77ffcb4183 Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 03:51:20 +0100 Subject: [PATCH 06/10] fix --- plugins/english/novelupdates.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index 26d98836c..608f8fb08 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.10'; + version = '0.9.12'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -315,10 +315,8 @@ class NovelUpdates implements Plugin.PluginBase { case 'dreamy-translations': { chapterTitle = loadedCheerio('h1 > span').first().text(); - const content = loadedCheerio('.chapter-content'); - loadedCheerio('.chapter-content') - .children('em') - .replaceWith((_, el) => `

${loadedCheerio(el).html()}

`); + const content = loadedCheerio('.chapter-content > div'); + content.children('em').wrap('

'); chapterContent = content.html()!; break; From a58d8fded60aa205982df4fe0ee547e2cdf16e07 Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 04:11:02 +0100 Subject: [PATCH 07/10] revert version --- package.json | 2 +- plugins/english/novelupdates.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 7035e42c4..1d30a90d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lnreader-plugins", - "version": "3.1.0", + "version": "3.0.0", "description": "Plugins repo for LNReader", "main": "index.js", "type": "module", diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index 608f8fb08..7d29b1d4c 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.12'; + version = '0.9.6'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -315,7 +315,7 @@ class NovelUpdates implements Plugin.PluginBase { case 'dreamy-translations': { chapterTitle = loadedCheerio('h1 > span').first().text(); - const content = loadedCheerio('.chapter-content > div'); + const content = loadedCheerio('.chapter-content > div').first(); content.children('em').wrap('

'); chapterContent = content.html()!; From a3858098bc257f85db821798b57c73657deefd59 Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 04:22:27 +0100 Subject: [PATCH 08/10] fix --- package.json | 2 +- plugins/english/novelupdates.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 1d30a90d6..7035e42c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lnreader-plugins", - "version": "3.0.0", + "version": "3.1.0", "description": "Plugins repo for LNReader", "main": "index.js", "type": "module", diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index 7d29b1d4c..e8186824e 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.6'; + version = '0.9.13'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -468,7 +468,7 @@ class NovelUpdates implements Plugin.PluginBase { case 'leafstudio': { chapterTitle = loadedCheerio('.title').first().text(); chapterContent = loadedCheerio('.chapter_content') - .map((_, el) => loadedCheerio(el).html()) + .map((_, el) => loadedCheerio(el).prop('outerHTML')) .get() .join(''); break; From 97f986e946cf8ecda80c6f7b6d9def5a44b9ad68 Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 04:28:13 +0100 Subject: [PATCH 09/10] fix --- plugins/english/novelupdates.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index e8186824e..def6e57f5 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.13'; + version = '0.9.14'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -468,6 +468,10 @@ class NovelUpdates implements Plugin.PluginBase { case 'leafstudio': { chapterTitle = loadedCheerio('.title').first().text(); chapterContent = loadedCheerio('.chapter_content') + .filter((_, el) => { + const style = loadedCheerio(el).attr('style') || ''; + return !/display\s*:\s*none/i.test(style); + }) .map((_, el) => loadedCheerio(el).prop('outerHTML')) .get() .join(''); From 9ebf09c97fe6c495dd926ed476030d5bded2a675 Mon Sep 17 00:00:00 2001 From: Batorian Date: Fri, 16 Jan 2026 04:32:24 +0100 Subject: [PATCH 10/10] revert version --- package.json | 2 +- plugins/english/novelupdates.ts | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 7035e42c4..1d30a90d6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lnreader-plugins", - "version": "3.1.0", + "version": "3.0.0", "description": "Plugins repo for LNReader", "main": "index.js", "type": "module", diff --git a/plugins/english/novelupdates.ts b/plugins/english/novelupdates.ts index def6e57f5..aad76c218 100644 --- a/plugins/english/novelupdates.ts +++ b/plugins/english/novelupdates.ts @@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin'; class NovelUpdates implements Plugin.PluginBase { id = 'novelupdates'; name = 'Novel Updates'; - version = '0.9.14'; + version = '0.9.6'; icon = 'src/en/novelupdates/icon.png'; customCSS = 'src/en/novelupdates/customCSS.css'; site = 'https://www.novelupdates.com/'; @@ -468,10 +468,6 @@ class NovelUpdates implements Plugin.PluginBase { case 'leafstudio': { chapterTitle = loadedCheerio('.title').first().text(); chapterContent = loadedCheerio('.chapter_content') - .filter((_, el) => { - const style = loadedCheerio(el).attr('style') || ''; - return !/display\s*:\s*none/i.test(style); - }) .map((_, el) => loadedCheerio(el).prop('outerHTML')) .get() .join('');