@@ -6,7 +6,7 @@ import { Plugin } from '@/types/plugin';
66class NovelUpdates implements Plugin . PluginBase {
77 id = 'novelupdates' ;
88 name = 'Novel Updates' ;
9- version = '0.9.5 ' ;
9+ version = '0.9.6 ' ;
1010 icon = 'src/en/novelupdates/icon.png' ;
1111 customCSS = 'src/en/novelupdates/customCSS.css' ;
1212 site = 'https://www.novelupdates.com/' ;
@@ -311,10 +311,15 @@ class NovelUpdates implements Plugin.PluginBase {
311311 chapterContent = loadedCheerio ( '.chapter__content' ) . html ( ) ! ;
312312 break ;
313313 }
314- // Last edited in 0.9.5 by Batorian - 26/12/2025
314+ // Last edited in 0.9.6 by Batorian - 16/01/2026
315315 case 'dreamy-translations' : {
316316 chapterTitle = loadedCheerio ( 'h1 > span' ) . first ( ) . text ( ) ;
317- chapterContent = loadedCheerio ( '.chapter-content' ) . html ( ) ! ;
317+
318+ const content = loadedCheerio ( '.chapter-content > div' ) . first ( ) ;
319+ content . children ( 'em' ) . wrap ( '<p></p>' ) ;
320+
321+ chapterContent = content . html ( ) ! ;
322+ break ;
318323 }
319324 // Last edited in 0.9.0 by Batorian - 19/03/2025
320325 case 'fictionread' : {
@@ -379,10 +384,10 @@ class NovelUpdates implements Plugin.PluginBase {
379384 }
380385 break ;
381386 }
382- // Last edited in 0.9.5 by Batorian - 26/12/2025
383- case 'greenztl ' : {
387+ // Last edited in 0.9.6 by Batorian - 16/01/2026
388+ case 'greenz ' : {
384389 const chapterSlug = chapterPath . split ( '/' ) . pop ( ) ;
385- const apiUrl = `https://greenztl .com/api/chapters/slug/${ chapterSlug } ` ;
390+ const apiUrl = `https://greenz .com/api/chapters/slug/${ chapterSlug } ` ;
386391
387392 try {
388393 const response = await fetchApi ( apiUrl ) ;
@@ -459,6 +464,15 @@ class NovelUpdates implements Plugin.PluginBase {
459464 }
460465 break ;
461466 }
467+ // Last edited in 0.9.6 by Batorian - 16/01/2026
468+ case 'leafstudio' : {
469+ chapterTitle = loadedCheerio ( '.title' ) . first ( ) . text ( ) ;
470+ chapterContent = loadedCheerio ( '.chapter_content' )
471+ . map ( ( _ , el ) => loadedCheerio ( el ) . prop ( 'outerHTML' ) )
472+ . get ( )
473+ . join ( '' ) ;
474+ break ;
475+ }
462476 // Last edited in 0.9.2 by Batorian - 08/09/2025
463477 case 'machineslicedbread' : {
464478 const urlPath = chapterPath . split ( '/' ) . filter ( Boolean ) ;
@@ -925,11 +939,13 @@ class NovelUpdates implements Plugin.PluginBase {
925939 ] . some ( Boolean ) ;
926940
927941 // Handle outlier sites
942+ // Last edited in 0.9.6 - 16/01/2026
928943 const outliers = [
929944 'asuratls' ,
930945 'fictionread' ,
931946 'hiraethtranslation' ,
932947 'infinitenoveltranslations' ,
948+ 'leafstudio' ,
933949 'machineslicedbread' ,
934950 'mirilu' ,
935951 'novelworldtranslations' ,
@@ -943,7 +959,7 @@ class NovelUpdates implements Plugin.PluginBase {
943959 isBlogspot = false ;
944960 }
945961
946- // Last edited in 0.9.5 - 26/12/2025
962+ // Last edited in 0.9.6 - 16/01/2026
947963 /**
948964 * Blogspot sites:
949965 * - ¼-Assed
@@ -963,6 +979,7 @@ class NovelUpdates implements Plugin.PluginBase {
963979 * - Infinite Novel Translations (Outlier)
964980 * - ippotranslations
965981 * - JATranslations
982+ * - Leaf Studio (Outlier)
966983 * - Light Novels Translations
967984 * - Machine Sliced Bread (Outlier)
968985 * - Mirilu - Novel Reader Attempts Translating (Outlier)
0 commit comments