diff --git a/404.html b/404.html index 69f3a08b..f709df42 100644 --- a/404.html +++ b/404.html @@ -6,7 +6,7 @@
application.yml
",id:"via-an-applicationyml",level:3},{value:"Using the jar
via the command line",id:"using-the-jar-via-the-command-line",level:3},{value:"Using Docker",id:"using-docker",level:3},{value:"Komga seems slow, how can I check what's going on?",id:"komga-seems-slow-how-can-i-check-whats-going-on",level:2},{value:"The memory consumption is huge",id:"the-memory-consumption-is-huge",level:2},{value:"How can I sync reading progress with tracker websites?",id:"how-can-i-sync-reading-progress-with-tracker-websites",level:2},{value:"Webreader double pages are not showing as single page",id:"webreader-double-pages-are-not-showing-as-single-page",level:2},{value:"Media type application/x-7z-compressed is not supported",id:"media-type-applicationx-7z-compressed-is-not-supported",level:2},{value:"My books/series show a different name than the files/folders",id:"my-booksseries-show-a-different-name-than-the-filesfolders",level:2},{value:"This server has already been claimed",id:"this-server-has-already-been-claimed",level:2},{value:"How can I move a library to a different folder?",id:"how-can-i-move-a-library-to-a-different-folder",level:2},{value:"Scan doesn't pick up new files under mergerfs",id:"scan-doesnt-pick-up-new-files-under-mergerfs",level:2},{value:"Docker on Raspberry PI arm32: No monotonic clock was available",id:"docker-on-raspberry-pi-arm32-no-monotonic-clock-was-available",level:2}];function c(e){const s={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.h1,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,o.jsx)(s.h2,{id:"i-forgot-my-password",children:"I forgot my password"}),"\n",(0,o.jsxs)(s.p,{children:["Either ask an admin to reset your password, or use the ",(0,o.jsx)(s.a,{href:"/docs/guides/cli#reset-password-for-a-user",children:"Command Line Interface"})," to reset it by yourself."]}),"\n",(0,o.jsx)(s.h2,{id:"where-can-i-find-the-log-files",children:"Where can I find the log files?"}),"\n",(0,o.jsx)(s.p,{children:"By default (if you haven't changed the configuration), log files are located:"}),"\n",(0,o.jsxs)(s.ul,{children:["\n",(0,o.jsxs)(s.li,{children:["on the Windows app: ",(0,o.jsx)(s.code,{children:"%LOCALAPPDATA%/Komga/logs/komga.log"})]}),"\n",(0,o.jsxs)(s.li,{children:["on the macOS app: ",(0,o.jsx)(s.code,{children:"~/Library/Logs/Komga/komga.log"})]}),"\n",(0,o.jsxs)(s.li,{children:["on Windows: ",(0,o.jsx)(s.code,{children:"%USERPROFILE%/.komga/komga.log"})]}),"\n",(0,o.jsxs)(s.li,{children:["on macOS or Unix: ",(0,o.jsx)(s.code,{children:"~/.komga/komga.log"})]}),"\n",(0,o.jsxs)(s.li,{children:["on Docker: in the directory you mounted as ",(0,o.jsx)(s.code,{children:"/config"}),", in a subdirectory called ",(0,o.jsx)(s.code,{children:"logs"})]}),"\n"]}),"\n",(0,o.jsx)(s.h2,{id:"how-to-enable-debug-or-trace-logs",children:"How to enable DEBUG or TRACE logs?"}),"\n",(0,o.jsxs)(s.h3,{id:"via-an-applicationyml",children:["Via an ",(0,o.jsx)(s.code,{children:"application.yml"})]}),"\n",(0,o.jsxs)(s.p,{children:["Add the following key in your ",(0,o.jsx)(s.code,{children:"application.yml"}),":"]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-yaml",children:"logging.level.org.gotson.komga: DEBUG\n"})}),"\n",(0,o.jsx)(s.p,{children:"or"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-yaml",children:"logging.level.org.gotson.komga: TRACE\n"})}),"\n",(0,o.jsxs)(s.h3,{id:"using-the-jar-via-the-command-line",children:["Using the ",(0,o.jsx)(s.code,{children:"jar"})," via the command line"]}),"\n",(0,o.jsxs)(s.p,{children:["Start the ",(0,o.jsx)(s.code,{children:"jar"})," with the following option:"]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",metastring:"script",children:"java -jar komga-x.y.z.jar --logging.level.org.gotson.komga=DEBUG\n"})}),"\n",(0,o.jsx)(s.p,{children:"or"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",metastring:"script",children:"java -jar komga-x.y.z.jar --logging.level.org.gotson.komga=TRACE\n"})}),"\n",(0,o.jsx)(s.h3,{id:"using-docker",children:"Using Docker"}),"\n",(0,o.jsx)(s.p,{children:"Add the following environment variable:"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",metastring:"script",children:"LOGGING_LEVEL_ORG_GOTSON_KOMGA=DEBUG\n"})}),"\n",(0,o.jsx)(s.p,{children:"or"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",metastring:"script",children:"LOGGING_LEVEL_ORG_GOTSON_KOMGA=TRACE\n"})}),"\n",(0,o.jsx)(s.h2,{id:"komga-seems-slow-how-can-i-check-whats-going-on",children:"Komga seems slow, how can I check what's going on?"}),"\n",(0,o.jsx)(s.p,{children:"If any activity is going on, an animated yellow bar will appear below the top-left logo. Hover your cursor over the bar to see the details of all pending tasks."}),"\n",(0,o.jsxs)("video",{controls:!0,width:"250",children:[(0,o.jsx)("source",{src:"/assets/media/faq/server-activity.webm",type:"video/webm"}),(0,o.jsx)(s.p,{children:"Sorry, your browser doesn't support embedded videos."})]}),"\n",(0,o.jsx)(s.h2,{id:"the-memory-consumption-is-huge",children:"The memory consumption is huge"}),"\n",(0,o.jsxs)(s.p,{children:["TL;DR: The operating system ",(0,o.jsx)(s.em,{children:"does not"})," report the real memory usage of the application, so don't look at those figures."]}),"\n",(0,o.jsxs)(s.p,{children:["Komga runs on the Java Virtual Machine (JVM). The JVM works differently than other native programs in regard to memory consumption.\nOn startup, the JVM will ",(0,o.jsx)(s.em,{children:"reserve"})," some memory from the OS, but that doesn't mean this memory is used by the application. If the OS needs to reclaim that memory, the JVM will try to release it."]}),"\n",(0,o.jsx)(s.p,{children:"By default, the JVM would reserve 1/4th of the physical memory (depends on the total memory and JVM version), for instance if you have 32 Gb of memory, the JVM would reserve 8 Gb."}),"\n",(0,o.jsxs)(s.p,{children:["To increase or limit the maximum memory, see ",(0,o.jsx)(s.a,{href:"/docs/installation/jar#increase-memory-limit",children:"here"})," (jar) and ",(0,o.jsx)(s.a,{href:"/docs/installation/docker#increase-memory-limit",children:"here"})," (Docker)."]}),"\n",(0,o.jsx)(s.h2,{id:"how-can-i-sync-reading-progress-with-tracker-websites",children:"How can I sync reading progress with tracker websites?"}),"\n",(0,o.jsx)(s.p,{children:"Komga does not support this outside the box."}),"\n",(0,o.jsxs)(s.p,{children:["You can try ",(0,o.jsx)(s.a,{href:"https://github.com/MALSync/MALSync",children:"MAL-Sync"})," which integrates with Komga and works with MyAnimeList, Kitsu, Anilist and others."]}),"\n",(0,o.jsx)(s.h2,{id:"webreader-double-pages-are-not-showing-as-single-page",children:"Webreader double pages are not showing as single page"}),"\n",(0,o.jsxs)(s.p,{children:["The double pages feature of the webreader requires image sizes to be available. This feature was added in v",(0,o.jsx)(s.code,{children:"0.51.0"}),". If your books have been analyzed before that version, you will need to re-analyze them in order for the double pages feature to work properly."]}),"\n",(0,o.jsx)(s.h2,{id:"media-type-applicationx-7z-compressed-is-not-supported",children:"Media type application/x-7z-compressed is not supported"}),"\n",(0,o.jsxs)(s.p,{children:["Your files are compressed using 7zip, which is not supported. Extract your archives and compress them again using the ",(0,o.jsx)(s.code,{children:"zip"})," format."]}),"\n",(0,o.jsx)(s.h2,{id:"my-booksseries-show-a-different-name-than-the-filesfolders",children:"My books/series show a different name than the files/folders"}),"\n",(0,o.jsxs)(s.p,{children:["Komga automatically import metadata from ",(0,o.jsx)(s.code,{children:"EPUB"})," files and from ",(0,o.jsx)(s.code,{children:"ComicInfo.xml"})," for ",(0,o.jsx)(s.code,{children:"cbz"}),"/",(0,o.jsx)(s.code,{children:"cbr"}),". The imported metadata will override the file/folder name."]}),"\n",(0,o.jsx)(s.h2,{id:"this-server-has-already-been-claimed",children:"This server has already been claimed"}),"\n",(0,o.jsxs)(s.p,{children:["The server cannot be claimed if a user already exists in the database. It can happen when you start Komga for the first time without the ",(0,o.jsx)(s.code,{children:"claim"})," profile as Komga will generate a default user."]}),"\n",(0,o.jsxs)(s.p,{children:["You can solve the issue by deleting the database. By default it is located in ",(0,o.jsx)(s.code,{children:"~/.komga/database.sqlite"}),". ",(0,o.jsx)(s.code,{children:"~"})," is your home directory on Unix, and your User profile on Windows."]}),"\n",(0,o.jsx)(s.h2,{id:"how-can-i-move-a-library-to-a-different-folder",children:"How can I move a library to a different folder?"}),"\n",(0,o.jsx)(s.p,{children:"You can follow those steps:"}),"\n",(0,o.jsxs)(s.ol,{children:["\n",(0,o.jsxs)(s.li,{children:["Make sure ",(0,o.jsx)(s.a,{href:"/docs/guides/libraries#compute-hash-for-files",children:"File Hashing"})," is enabled on the library."]}),"\n",(0,o.jsxs)(s.li,{children:["Disable ",(0,o.jsx)(s.a,{href:"/docs/guides/trash#automatically-empty-trash",children:"automatically emptying the trash"})," for the library."]}),"\n",(0,o.jsx)(s.li,{children:"Perform a scan on the library and let all tasks finish. This will ensure all files are hashed."}),"\n",(0,o.jsx)(s.li,{children:"Stop Komga."}),"\n",(0,o.jsx)(s.li,{children:"Move/copy the files to the new folder."}),"\n",(0,o.jsx)(s.li,{children:"Start Komga."}),"\n",(0,o.jsx)(s.li,{children:"Edit the library and choose the new folder as the library root directory."}),"\n",(0,o.jsx)(s.li,{children:"A scan will be triggered automatically after saving the library. The scan could take some time depending on the size of the library."}),"\n",(0,o.jsx)(s.li,{children:"Once the scan is finished, the series and books should have been matched with the files in the new folder."}),"\n"]}),"\n",(0,o.jsx)(s.h2,{id:"scan-doesnt-pick-up-new-files-under-mergerfs",children:"Scan doesn't pick up new files under mergerfs"}),"\n",(0,o.jsxs)(s.p,{children:["Add ",(0,o.jsx)(s.code,{children:"func.getattr=newest"})," to the options in your ",(0,o.jsx)(s.code,{children:"/etc/fstab"})," entry for the mergerfs volume. By default, mergerfs doesn't update the modified times for everything for performance reasons. This forces it to. In most cases the performance impact is negligible."]}),"\n",(0,o.jsx)(s.p,{children:"Example:"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",children:"/media/user/disk* /media/user/storage fuse.mergerfs defaults,nonempty,allow_other,use_ino,cache.files=off,moveonenospc=true,dropcacheonclose=true,minfreespace=50G,category.create=mfs,func.getattr=newest,fsname=mergerfs 0 0\n"})}),"\n",(0,o.jsx)(s.h2,{id:"docker-on-raspberry-pi-arm32-no-monotonic-clock-was-available",children:"Docker on Raspberry PI arm32: No monotonic clock was available"}),"\n",(0,o.jsx)(s.p,{children:"If you encounter the following message when starting the container:"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-log",children:"OpenJDK Server VM warning: No monotonic clock was available - timed services may be adversely affected if the time-of-day clock changes\n"})}),"\n",(0,o.jsx)(s.p,{children:"Your host system needs to have installed:"}),"\n",(0,o.jsxs)(s.ul,{children:["\n",(0,o.jsxs)(s.li,{children:["Docker version ",(0,o.jsx)(s.code,{children:"19.03.9"})," or newer"]}),"\n",(0,o.jsxs)(s.li,{children:["libseccomp version ",(0,o.jsx)(s.code,{children:"2.4.2"})," or newer"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,r.a)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},1670:(e,s,n)=>{n.d(s,{Z:()=>l,a:()=>a});var o=n(7378);const r={},i=o.createContext(r);function a(e){const s=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(i.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[836],{2334:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>t,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>l,toc:()=>d});var o=n(4246),r=n(1670);const i={},a="Frequently Asked Questions",l={id:"faq",title:"Frequently Asked Questions",description:"I forgot my password",source:"@site/docs/faq.md",sourceDirName:".",slug:"/faq",permalink:"/docs/faq",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/faq.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Community",permalink:"/docs/community"}},t={},d=[{value:"I forgot my password",id:"i-forgot-my-password",level:2},{value:"Where can I find the log files?",id:"where-can-i-find-the-log-files",level:2},{value:"How to enable DEBUG or TRACE logs?",id:"how-to-enable-debug-or-trace-logs",level:2},{value:"Via an application.yml
",id:"via-an-applicationyml",level:3},{value:"Using the jar
via the command line",id:"using-the-jar-via-the-command-line",level:3},{value:"Using Docker",id:"using-docker",level:3},{value:"Komga seems slow, how can I check what's going on?",id:"komga-seems-slow-how-can-i-check-whats-going-on",level:2},{value:"The memory consumption is huge",id:"the-memory-consumption-is-huge",level:2},{value:"How can I sync reading progress with tracker websites?",id:"how-can-i-sync-reading-progress-with-tracker-websites",level:2},{value:"Webreader double pages are not showing as single page",id:"webreader-double-pages-are-not-showing-as-single-page",level:2},{value:"Media type application/x-7z-compressed is not supported",id:"media-type-applicationx-7z-compressed-is-not-supported",level:2},{value:"My books/series show a different name than the files/folders",id:"my-booksseries-show-a-different-name-than-the-filesfolders",level:2},{value:"This server has already been claimed",id:"this-server-has-already-been-claimed",level:2},{value:"How can I move a library to a different folder?",id:"how-can-i-move-a-library-to-a-different-folder",level:2},{value:"Scan doesn't pick up new files under mergerfs",id:"scan-doesnt-pick-up-new-files-under-mergerfs",level:2},{value:"Docker on Raspberry PI arm32: No monotonic clock was available",id:"docker-on-raspberry-pi-arm32-no-monotonic-clock-was-available",level:2}];function c(e){const s={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s.h1,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,o.jsx)(s.h2,{id:"i-forgot-my-password",children:"I forgot my password"}),"\n",(0,o.jsxs)(s.p,{children:["Either ask an admin to reset your password, or use the ",(0,o.jsx)(s.a,{href:"/docs/guides/cli#reset-password-for-a-user",children:"Command Line Interface"})," to reset it by yourself."]}),"\n",(0,o.jsx)(s.h2,{id:"where-can-i-find-the-log-files",children:"Where can I find the log files?"}),"\n",(0,o.jsx)(s.p,{children:"By default (if you haven't changed the configuration), log files are located:"}),"\n",(0,o.jsxs)(s.ul,{children:["\n",(0,o.jsxs)(s.li,{children:["on the Windows app: ",(0,o.jsx)(s.code,{children:"%LOCALAPPDATA%/Komga/logs/komga.log"})]}),"\n",(0,o.jsxs)(s.li,{children:["on the macOS app: ",(0,o.jsx)(s.code,{children:"~/Library/Logs/Komga/komga.log"})]}),"\n",(0,o.jsxs)(s.li,{children:["on Windows: ",(0,o.jsx)(s.code,{children:"%USERPROFILE%/.komga/komga.log"})]}),"\n",(0,o.jsxs)(s.li,{children:["on macOS or Unix: ",(0,o.jsx)(s.code,{children:"~/.komga/komga.log"})]}),"\n",(0,o.jsxs)(s.li,{children:["on Docker: in the directory you mounted as ",(0,o.jsx)(s.code,{children:"/config"}),", in a subdirectory called ",(0,o.jsx)(s.code,{children:"logs"})]}),"\n"]}),"\n",(0,o.jsx)(s.h2,{id:"how-to-enable-debug-or-trace-logs",children:"How to enable DEBUG or TRACE logs?"}),"\n",(0,o.jsxs)(s.h3,{id:"via-an-applicationyml",children:["Via an ",(0,o.jsx)(s.code,{children:"application.yml"})]}),"\n",(0,o.jsxs)(s.p,{children:["Add the following key in your ",(0,o.jsx)(s.code,{children:"application.yml"}),":"]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-yaml",children:"logging.level.org.gotson.komga: DEBUG\n"})}),"\n",(0,o.jsx)(s.p,{children:"or"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-yaml",children:"logging.level.org.gotson.komga: TRACE\n"})}),"\n",(0,o.jsxs)(s.h3,{id:"using-the-jar-via-the-command-line",children:["Using the ",(0,o.jsx)(s.code,{children:"jar"})," via the command line"]}),"\n",(0,o.jsxs)(s.p,{children:["Start the ",(0,o.jsx)(s.code,{children:"jar"})," with the following option:"]}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",metastring:"script",children:"java -jar komga-x.y.z.jar --logging.level.org.gotson.komga=DEBUG\n"})}),"\n",(0,o.jsx)(s.p,{children:"or"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",metastring:"script",children:"java -jar komga-x.y.z.jar --logging.level.org.gotson.komga=TRACE\n"})}),"\n",(0,o.jsx)(s.h3,{id:"using-docker",children:"Using Docker"}),"\n",(0,o.jsx)(s.p,{children:"Add the following environment variable:"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",metastring:"script",children:"LOGGING_LEVEL_ORG_GOTSON_KOMGA=DEBUG\n"})}),"\n",(0,o.jsx)(s.p,{children:"or"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",metastring:"script",children:"LOGGING_LEVEL_ORG_GOTSON_KOMGA=TRACE\n"})}),"\n",(0,o.jsx)(s.h2,{id:"komga-seems-slow-how-can-i-check-whats-going-on",children:"Komga seems slow, how can I check what's going on?"}),"\n",(0,o.jsx)(s.p,{children:"If any activity is going on, an animated yellow bar will appear below the top-left logo. Hover your cursor over the bar to see the details of all pending tasks."}),"\n",(0,o.jsxs)("video",{controls:!0,width:"250",children:[(0,o.jsx)("source",{src:"/assets/media/faq/server-activity.webm",type:"video/webm"}),(0,o.jsx)(s.p,{children:"Sorry, your browser doesn't support embedded videos."})]}),"\n",(0,o.jsx)(s.h2,{id:"the-memory-consumption-is-huge",children:"The memory consumption is huge"}),"\n",(0,o.jsxs)(s.p,{children:["TL;DR: The operating system ",(0,o.jsx)(s.em,{children:"does not"})," report the real memory usage of the application, so don't look at those figures."]}),"\n",(0,o.jsxs)(s.p,{children:["Komga runs on the Java Virtual Machine (JVM). The JVM works differently than other native programs in regard to memory consumption.\nOn startup, the JVM will ",(0,o.jsx)(s.em,{children:"reserve"})," some memory from the OS, but that doesn't mean this memory is used by the application. If the OS needs to reclaim that memory, the JVM will try to release it."]}),"\n",(0,o.jsx)(s.p,{children:"By default, the JVM would reserve 1/4th of the physical memory (depends on the total memory and JVM version), for instance if you have 32 Gb of memory, the JVM would reserve 8 Gb."}),"\n",(0,o.jsxs)(s.p,{children:["To increase or limit the maximum memory, see ",(0,o.jsx)(s.a,{href:"/docs/installation/jar#increase-memory-limit",children:"here"})," (jar) and ",(0,o.jsx)(s.a,{href:"/docs/installation/docker#increase-memory-limit",children:"here"})," (Docker)."]}),"\n",(0,o.jsx)(s.h2,{id:"how-can-i-sync-reading-progress-with-tracker-websites",children:"How can I sync reading progress with tracker websites?"}),"\n",(0,o.jsx)(s.p,{children:"Komga does not support this outside the box."}),"\n",(0,o.jsxs)(s.p,{children:["You can try ",(0,o.jsx)(s.a,{href:"https://github.com/MALSync/MALSync",children:"MAL-Sync"})," which integrates with Komga and works with MyAnimeList, Kitsu, Anilist and others."]}),"\n",(0,o.jsx)(s.h2,{id:"webreader-double-pages-are-not-showing-as-single-page",children:"Webreader double pages are not showing as single page"}),"\n",(0,o.jsxs)(s.p,{children:["The double pages feature of the webreader requires image sizes to be available. This feature was added in v",(0,o.jsx)(s.code,{children:"0.51.0"}),". If your books have been analyzed before that version, you will need to re-analyze them in order for the double pages feature to work properly."]}),"\n",(0,o.jsx)(s.h2,{id:"media-type-applicationx-7z-compressed-is-not-supported",children:"Media type application/x-7z-compressed is not supported"}),"\n",(0,o.jsxs)(s.p,{children:["Your files are compressed using 7zip, which is not supported. Extract your archives and compress them again using the ",(0,o.jsx)(s.code,{children:"zip"})," format."]}),"\n",(0,o.jsx)(s.h2,{id:"my-booksseries-show-a-different-name-than-the-filesfolders",children:"My books/series show a different name than the files/folders"}),"\n",(0,o.jsxs)(s.p,{children:["Komga automatically import metadata from ",(0,o.jsx)(s.code,{children:"EPUB"})," files and from ",(0,o.jsx)(s.code,{children:"ComicInfo.xml"})," for ",(0,o.jsx)(s.code,{children:"cbz"}),"/",(0,o.jsx)(s.code,{children:"cbr"}),". The imported metadata will override the file/folder name."]}),"\n",(0,o.jsx)(s.h2,{id:"this-server-has-already-been-claimed",children:"This server has already been claimed"}),"\n",(0,o.jsxs)(s.p,{children:["The server cannot be claimed if a user already exists in the database. It can happen when you start Komga for the first time without the ",(0,o.jsx)(s.code,{children:"claim"})," profile as Komga will generate a default user."]}),"\n",(0,o.jsxs)(s.p,{children:["You can solve the issue by deleting the database. By default it is located in ",(0,o.jsx)(s.code,{children:"~/.komga/database.sqlite"}),". ",(0,o.jsx)(s.code,{children:"~"})," is your home directory on Unix, and your User profile on Windows."]}),"\n",(0,o.jsx)(s.h2,{id:"how-can-i-move-a-library-to-a-different-folder",children:"How can I move a library to a different folder?"}),"\n",(0,o.jsx)(s.p,{children:"You can follow those steps:"}),"\n",(0,o.jsxs)(s.ol,{children:["\n",(0,o.jsxs)(s.li,{children:["Make sure ",(0,o.jsx)(s.a,{href:"/docs/guides/libraries#compute-hash-for-files",children:"File Hashing"})," is enabled on the library."]}),"\n",(0,o.jsxs)(s.li,{children:["Disable ",(0,o.jsx)(s.a,{href:"/docs/guides/trash#automatically-empty-trash",children:"automatically emptying the trash"})," for the library."]}),"\n",(0,o.jsx)(s.li,{children:"Perform a scan on the library and let all tasks finish. This will ensure all files are hashed."}),"\n",(0,o.jsx)(s.li,{children:"Stop Komga."}),"\n",(0,o.jsx)(s.li,{children:"Move/copy the files to the new folder."}),"\n",(0,o.jsx)(s.li,{children:"Start Komga."}),"\n",(0,o.jsx)(s.li,{children:"Edit the library and choose the new folder as the library root directory."}),"\n",(0,o.jsx)(s.li,{children:"A scan will be triggered automatically after saving the library. The scan could take some time depending on the size of the library."}),"\n",(0,o.jsx)(s.li,{children:"Once the scan is finished, the series and books should have been matched with the files in the new folder."}),"\n"]}),"\n",(0,o.jsx)(s.h2,{id:"scan-doesnt-pick-up-new-files-under-mergerfs",children:"Scan doesn't pick up new files under mergerfs"}),"\n",(0,o.jsxs)(s.p,{children:["Add ",(0,o.jsx)(s.code,{children:"func.getattr=newest"})," to the options in your ",(0,o.jsx)(s.code,{children:"/etc/fstab"})," entry for the mergerfs volume. By default, mergerfs doesn't update the modified times for everything for performance reasons. This forces it to. In most cases the performance impact is negligible."]}),"\n",(0,o.jsx)(s.p,{children:"Example:"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-shell",children:"/media/user/disk* /media/user/storage fuse.mergerfs defaults,nonempty,allow_other,use_ino,cache.files=off,moveonenospc=true,dropcacheonclose=true,minfreespace=50G,category.create=mfs,func.getattr=newest,fsname=mergerfs 0 0\n"})}),"\n",(0,o.jsx)(s.h2,{id:"docker-on-raspberry-pi-arm32-no-monotonic-clock-was-available",children:"Docker on Raspberry PI arm32: No monotonic clock was available"}),"\n",(0,o.jsx)(s.p,{children:"If you encounter the following message when starting the container:"}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-log",children:"OpenJDK Server VM warning: No monotonic clock was available - timed services may be adversely affected if the time-of-day clock changes\n"})}),"\n",(0,o.jsx)(s.p,{children:"Your host system needs to have installed:"}),"\n",(0,o.jsxs)(s.ul,{children:["\n",(0,o.jsxs)(s.li,{children:["Docker version ",(0,o.jsx)(s.code,{children:"19.03.9"})," or newer"]}),"\n",(0,o.jsxs)(s.li,{children:["libseccomp version ",(0,o.jsx)(s.code,{children:"2.4.2"})," or newer"]}),"\n"]})]})}function h(e={}){const{wrapper:s}={...(0,r.a)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},1670:(e,s,n)=>{n.d(s,{Z:()=>l,a:()=>a});var o=n(7378);const r={},i=o.createContext(r);function a(e){const s=o.useContext(i);return o.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),o.createElement(i.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/0920ba86.5d22ae11.js b/assets/js/0920ba86.04abcb38.js
similarity index 99%
rename from assets/js/0920ba86.5d22ae11.js
rename to assets/js/0920ba86.04abcb38.js
index 032ebcc4..d7c21080 100644
--- a/assets/js/0920ba86.5d22ae11.js
+++ b/assets/js/0920ba86.04abcb38.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2239],{3477:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>d});var i=t(4246),n=t(1670);const r={},a="User accounts",l={id:"guides/user-accounts",title:"User accounts",description:"The administrator of a Komga server has the ability to create other User Accounts for that server.",source:"@site/docs/guides/user-accounts.md",sourceDirName:"guides",slug:"/guides/user-accounts",permalink:"/docs/guides/user-accounts",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/user-accounts.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Local Artwork Assets",permalink:"/docs/guides/local-artwork-assets"},next:{title:"Server settings & management",permalink:"/docs/guides/server-settings"}},o={},d=[{value:"Creating Users",id:"creating-users",level:2},{value:"User Roles",id:"user-roles",level:2},{value:"Administrator",id:"administrator",level:3},{value:"Page Streaming",id:"page-streaming",level:3},{value:"File Download",id:"file-download",level:3},{value:"Shared Libraries",id:"shared-libraries",level:2},{value:"Content Restrictions",id:"content-restrictions",level:2},{value:"Age Rating",id:"age-rating",level:3},{value:"Labels",id:"labels",level:3},{value:"Multiple restrictions",id:"multiple-restrictions",level:3},{value:"Deleting Users",id:"deleting-users",level:2}];function c(e){const s={admonition:"admonition",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,n.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.h1,{id:"user-accounts",children:"User accounts"}),"\n",(0,i.jsx)(s.p,{children:"The administrator of a Komga server has the ability to create other User Accounts for that server."}),"\n",(0,i.jsxs)(s.p,{children:["You can manage Users in ",(0,i.jsx)(s.em,{children:"Server Settings > Users"}),"."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/users-management.png",style:{maxHeight:"300px"},alt:"Users management"}),"\n",(0,i.jsx)(s.h2,{id:"creating-users",children:"Creating Users"}),"\n",(0,i.jsxs)(s.p,{children:["You can add a user by clicking on the ",(0,i.jsx)(s.em,{children:"+"})," button."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/add-user.png",style:{maxHeight:"200px"},alt:"Add User"}),"\n",(0,i.jsxs)(s.p,{children:["A dialog will show up. Fill in all the required information, and press ",(0,i.jsx)(s.em,{children:"Add"}),"."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/add-user-dialog.png",style:{maxHeight:"400px"},alt:"Add User Dialog"}),"\n",(0,i.jsx)(s.h2,{id:"user-roles",children:"User Roles"}),"\n",(0,i.jsx)(s.p,{children:"Users can have different roles, giving them the ability to do certain things."}),"\n",(0,i.jsx)(s.h3,{id:"administrator",children:"Administrator"}),"\n",(0,i.jsx)(s.p,{children:"An administrator can perform all the management actions:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"add, edit, and delete libraries"}),"\n",(0,i.jsx)(s.li,{children:"add, edit, and delete users"}),"\n",(0,i.jsx)(s.li,{children:"add, edit, and delete collections"}),"\n",(0,i.jsx)(s.li,{children:"edit series and book metadata"}),"\n",(0,i.jsx)(s.li,{children:"manually scan, analyze and refresh metadata"}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"page-streaming",children:"Page Streaming"}),"\n",(0,i.jsx)(s.p,{children:"A user with this role will be able to stream individual pages, for example to read using the Webreader."}),"\n",(0,i.jsx)(s.h3,{id:"file-download",children:"File Download"}),"\n",(0,i.jsx)(s.p,{children:"A user with this role will be able to download the file of a book."}),"\n",(0,i.jsx)(s.h2,{id:"shared-libraries",children:"Shared Libraries"}),"\n",(0,i.jsxs)(s.p,{children:["An administrator can limit what libraries users can access. This is done via the ",(0,i.jsx)(s.em,{children:"Edit Restrictions"})," button."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/edit-libraries.png",style:{maxHeight:"50px"},alt:"Edit Restrictions"}),"\n",(0,i.jsxs)(s.p,{children:["Choose the libraries the user will be able to access, or select ",(0,i.jsx)(s.em,{children:"All libraries"})," for unrestricted access (default option)."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/edit-libraries-dialog.png",style:{maxHeight:"400px"},alt:"Edit Shared Libraries"}),"\n",(0,i.jsx)(s.h2,{id:"content-restrictions",children:"Content Restrictions"}),"\n",(0,i.jsx)(s.p,{children:"Content restrictions lets you control more finely the content you share. You can select specific age rating as well as content that you\u2019ve set with a specific Label."}),"\n",(0,i.jsx)(s.p,{children:"Content restriction is performed at series level, and will also apply to books, collections and reading lists."}),"\n",(0,i.jsx)(s.h3,{id:"age-rating",children:"Age Rating"}),"\n",(0,i.jsx)(s.p,{children:"Select which age rating you wish to only allow or exclude. For instance, if you choose to only allow content under 10 as the restriction, then only content that has an age rating of 10 or under will be shared . If you choose to exclude content over 16 then those will be hidden."}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/restriction-age-allow.png",style:{maxHeight:"400px"},alt:"Age Restriction Allow under"}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/restriction-age-exclude.png",style:{maxHeight:"400px"},alt:"Age Restriction Exclude over"}),"\n",(0,i.jsx)(s.h3,{id:"labels",children:"Labels"}),"\n",(0,i.jsx)(s.p,{children:"You can create arbitrary Labels when editing library content. When sharing, you can then choose to allow one or more Labels to have content matching those Labels shared. You can also exclude labels."}),"\n",(0,i.jsx)(s.p,{children:"Labels are defined on Series:"}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/series-sharing.png",style:{maxHeight:"400px"},alt:"Edit Shared Libraries"}),"\n",(0,i.jsx)(s.h3,{id:"multiple-restrictions",children:"Multiple restrictions"}),"\n",(0,i.jsx)(s.p,{children:"When combining multiple restrictions, the following rules apply:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Exclusion rules have always priority over allow rules."}),"\n",(0,i.jsxs)(s.li,{children:["Allow rules apply with an ",(0,i.jsx)(s.em,{children:"OR"}),' condition: for example allowing a user to access content rated 10 or under, or labelled "kids", the user will be able to access content matching one or the other.']}),"\n"]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/restrictions-dialog.png",style:{maxHeight:"400px"},alt:"Edit Restrictions"}),"\n",(0,i.jsx)(s.h2,{id:"deleting-users",children:"Deleting Users"}),"\n",(0,i.jsxs)(s.admonition,{type:"danger",children:[(0,i.jsx)(s.p,{children:"Deleting a user will remove all read progress for this user."}),(0,i.jsx)(s.p,{children:"This cannot be undone."})]})]})}function h(e={}){const{wrapper:s}={...(0,n.a)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1670:(e,s,t)=>{t.d(s,{Z:()=>l,a:()=>a});var i=t(7378);const n={},r=i.createContext(n);function a(e){const s=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),i.createElement(r.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2239],{3477:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>l,toc:()=>d});var i=t(4246),n=t(1670);const r={},a="User accounts",l={id:"guides/user-accounts",title:"User accounts",description:"The administrator of a Komga server has the ability to create other User Accounts for that server.",source:"@site/docs/guides/user-accounts.md",sourceDirName:"guides",slug:"/guides/user-accounts",permalink:"/docs/guides/user-accounts",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/user-accounts.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Local Artwork Assets",permalink:"/docs/guides/local-artwork-assets"},next:{title:"Server settings & management",permalink:"/docs/guides/server-settings"}},o={},d=[{value:"Creating Users",id:"creating-users",level:2},{value:"User Roles",id:"user-roles",level:2},{value:"Administrator",id:"administrator",level:3},{value:"Page Streaming",id:"page-streaming",level:3},{value:"File Download",id:"file-download",level:3},{value:"Shared Libraries",id:"shared-libraries",level:2},{value:"Content Restrictions",id:"content-restrictions",level:2},{value:"Age Rating",id:"age-rating",level:3},{value:"Labels",id:"labels",level:3},{value:"Multiple restrictions",id:"multiple-restrictions",level:3},{value:"Deleting Users",id:"deleting-users",level:2}];function c(e){const s={admonition:"admonition",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,n.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(s.h1,{id:"user-accounts",children:"User accounts"}),"\n",(0,i.jsx)(s.p,{children:"The administrator of a Komga server has the ability to create other User Accounts for that server."}),"\n",(0,i.jsxs)(s.p,{children:["You can manage Users in ",(0,i.jsx)(s.em,{children:"Server Settings > Users"}),"."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/users-management.png",style:{maxHeight:"300px"},alt:"Users management"}),"\n",(0,i.jsx)(s.h2,{id:"creating-users",children:"Creating Users"}),"\n",(0,i.jsxs)(s.p,{children:["You can add a user by clicking on the ",(0,i.jsx)(s.em,{children:"+"})," button."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/add-user.png",style:{maxHeight:"200px"},alt:"Add User"}),"\n",(0,i.jsxs)(s.p,{children:["A dialog will show up. Fill in all the required information, and press ",(0,i.jsx)(s.em,{children:"Add"}),"."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/add-user-dialog.png",style:{maxHeight:"400px"},alt:"Add User Dialog"}),"\n",(0,i.jsx)(s.h2,{id:"user-roles",children:"User Roles"}),"\n",(0,i.jsx)(s.p,{children:"Users can have different roles, giving them the ability to do certain things."}),"\n",(0,i.jsx)(s.h3,{id:"administrator",children:"Administrator"}),"\n",(0,i.jsx)(s.p,{children:"An administrator can perform all the management actions:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"add, edit, and delete libraries"}),"\n",(0,i.jsx)(s.li,{children:"add, edit, and delete users"}),"\n",(0,i.jsx)(s.li,{children:"add, edit, and delete collections"}),"\n",(0,i.jsx)(s.li,{children:"edit series and book metadata"}),"\n",(0,i.jsx)(s.li,{children:"manually scan, analyze and refresh metadata"}),"\n"]}),"\n",(0,i.jsx)(s.h3,{id:"page-streaming",children:"Page Streaming"}),"\n",(0,i.jsx)(s.p,{children:"A user with this role will be able to stream individual pages, for example to read using the Webreader."}),"\n",(0,i.jsx)(s.h3,{id:"file-download",children:"File Download"}),"\n",(0,i.jsx)(s.p,{children:"A user with this role will be able to download the file of a book."}),"\n",(0,i.jsx)(s.h2,{id:"shared-libraries",children:"Shared Libraries"}),"\n",(0,i.jsxs)(s.p,{children:["An administrator can limit what libraries users can access. This is done via the ",(0,i.jsx)(s.em,{children:"Edit Restrictions"})," button."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/edit-libraries.png",style:{maxHeight:"50px"},alt:"Edit Restrictions"}),"\n",(0,i.jsxs)(s.p,{children:["Choose the libraries the user will be able to access, or select ",(0,i.jsx)(s.em,{children:"All libraries"})," for unrestricted access (default option)."]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/edit-libraries-dialog.png",style:{maxHeight:"400px"},alt:"Edit Shared Libraries"}),"\n",(0,i.jsx)(s.h2,{id:"content-restrictions",children:"Content Restrictions"}),"\n",(0,i.jsx)(s.p,{children:"Content restrictions lets you control more finely the content you share. You can select specific age rating as well as content that you\u2019ve set with a specific Label."}),"\n",(0,i.jsx)(s.p,{children:"Content restriction is performed at series level, and will also apply to books, collections and reading lists."}),"\n",(0,i.jsx)(s.h3,{id:"age-rating",children:"Age Rating"}),"\n",(0,i.jsx)(s.p,{children:"Select which age rating you wish to only allow or exclude. For instance, if you choose to only allow content under 10 as the restriction, then only content that has an age rating of 10 or under will be shared . If you choose to exclude content over 16 then those will be hidden."}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/restriction-age-allow.png",style:{maxHeight:"400px"},alt:"Age Restriction Allow under"}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/restriction-age-exclude.png",style:{maxHeight:"400px"},alt:"Age Restriction Exclude over"}),"\n",(0,i.jsx)(s.h3,{id:"labels",children:"Labels"}),"\n",(0,i.jsx)(s.p,{children:"You can create arbitrary Labels when editing library content. When sharing, you can then choose to allow one or more Labels to have content matching those Labels shared. You can also exclude labels."}),"\n",(0,i.jsx)(s.p,{children:"Labels are defined on Series:"}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/series-sharing.png",style:{maxHeight:"400px"},alt:"Edit Shared Libraries"}),"\n",(0,i.jsx)(s.h3,{id:"multiple-restrictions",children:"Multiple restrictions"}),"\n",(0,i.jsx)(s.p,{children:"When combining multiple restrictions, the following rules apply:"}),"\n",(0,i.jsxs)(s.ul,{children:["\n",(0,i.jsx)(s.li,{children:"Exclusion rules have always priority over allow rules."}),"\n",(0,i.jsxs)(s.li,{children:["Allow rules apply with an ",(0,i.jsx)(s.em,{children:"OR"}),' condition: for example allowing a user to access content rated 10 or under, or labelled "kids", the user will be able to access content matching one or the other.']}),"\n"]}),"\n",(0,i.jsx)("img",{src:"/assets/media/guides/user-accounts/restrictions-dialog.png",style:{maxHeight:"400px"},alt:"Edit Restrictions"}),"\n",(0,i.jsx)(s.h2,{id:"deleting-users",children:"Deleting Users"}),"\n",(0,i.jsxs)(s.admonition,{type:"danger",children:[(0,i.jsx)(s.p,{children:"Deleting a user will remove all read progress for this user."}),(0,i.jsx)(s.p,{children:"This cannot be undone."})]})]})}function h(e={}){const{wrapper:s}={...(0,n.a)(),...e.components};return s?(0,i.jsx)(s,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1670:(e,s,t)=>{t.d(s,{Z:()=>l,a:()=>a});var i=t(7378);const n={},r=i.createContext(n);function a(e){const s=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function l(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:a(e.components),i.createElement(r.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/0bf9748d.22290631.js b/assets/js/0bf9748d.19656e01.js
similarity index 99%
rename from assets/js/0bf9748d.22290631.js
rename to assets/js/0bf9748d.19656e01.js
index d04b77c3..a13a2706 100644
--- a/assets/js/0bf9748d.22290631.js
+++ b/assets/js/0bf9748d.19656e01.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9847],{7842:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>d});var s=n(4246),a=n(1670);const r={},l="Scanning, Analyzing and Refreshing Metadata",t={id:"guides/scan-analysis-refresh",title:"Scanning, Analyzing and Refreshing Metadata",description:"Once a library has been created, it is processed by Komga so all the files are matched to series and books, and metadata is gathered. As time goes on, you\u2019ll add and remove books to the libraries or make other changes that mean the library is no longer up-to-date. You can Scan libraries to bring them up-to-date. Scanning, Analyzing and Refreshing a library do different things.",source:"@site/docs/guides/scan-analysis-refresh.md",sourceDirName:"guides",slug:"/guides/scan-analysis-refresh",permalink:"/docs/guides/scan-analysis-refresh",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/scan-analysis-refresh.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Emptying Library Trash",permalink:"/docs/guides/trash"},next:{title:"Image Types",permalink:"/docs/guides/image-formats"}},o={},d=[{value:"Scan Library Files",id:"scan-library-files",level:2},{value:"Deep scan",id:"deep-scan",level:3},{value:"What happens during a Scan?",id:"what-happens-during-a-scan",level:2},{value:"Analyze books",id:"analyze-books",level:2},{value:"What happens during Analysis?",id:"what-happens-during-analysis",level:3},{value:"Gather media properties",id:"gather-media-properties",level:4},{value:"Generate default artwork",id:"generate-default-artwork",level:4},{value:"Analyze your content",id:"analyze-your-content",level:3},{value:"Media Analysis screen",id:"media-analysis-screen",level:3},{value:"Refresh metadata",id:"refresh-metadata",level:2},{value:"Import metadata for CBR/CBZ containing a ComicInfo.xml file",id:"import-metadata-for-cbrcbz-containing-a-comicinfoxml-file",level:3},{value:"Book metadata",id:"book-metadata",level:4},{value:"Series metadata",id:"series-metadata",level:4},{value:"Collections",id:"collections",level:4},{value:"Read lists",id:"read-lists",level:4},{value:"StoryArcNumber",id:"storyarcnumber",level:5},{value:"Import metadata from EPUB files",id:"import-metadata-from-epub-files",level:3},{value:"Book metadata",id:"book-metadata-1",level:4},{value:"Series metadata",id:"series-metadata-1",level:4},{value:"Import metadata generated by Mylar",id:"import-metadata-generated-by-mylar",level:3},{value:"Import local media assets",id:"import-local-media-assets",level:3},{value:"Local artwork",id:"local-artwork",level:4},{value:"Import ISBN within barcode",id:"import-isbn-within-barcode",level:3},{value:"ISBN barcode",id:"isbn-barcode",level:4}];function c(e){const i={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",li:"li",p:"p",ul:"ul",...(0,a.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"scanning-analyzing-and-refreshing-metadata",children:"Scanning, Analyzing and Refreshing Metadata"}),"\n",(0,s.jsx)(i.p,{children:"Once a library has been created, it is processed by Komga so all the files are matched to series and books, and metadata is gathered. As time goes on, you\u2019ll add and remove books to the libraries or make other changes that mean the library is no longer up-to-date. You can Scan libraries to bring them up-to-date. Scanning, Analyzing and Refreshing a library do different things."}),"\n",(0,s.jsx)(i.h2,{id:"scan-library-files",children:"Scan Library Files"}),"\n",(0,s.jsx)(i.p,{children:"Scanning a library makes Komga check its folders and sub-folders for new or removed books. If it finds new media, it then pulls it into the library. You can think of scanning as \u201ccheck for new or changed content\u201d."}),"\n",(0,s.jsx)(i.p,{children:"All files that have changed after a scan will be Analyzed."}),"\n",(0,s.jsx)(i.p,{children:"You should Scan Library Files if you have:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Added or deleted files or folders"}),"\n",(0,s.jsx)(i.li,{children:"Renamed a file or folder"}),"\n",(0,s.jsx)(i.li,{children:"Moved files or folders from one location to another"}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"By default, Komga will scan your libraries regularly."}),"\n",(0,s.jsx)(i.h3,{id:"deep-scan",children:"Deep scan"}),"\n",(0,s.jsx)(i.p,{children:"This will force the scanner to compare all scanned books with the ones stored in the database. Normally this is not required, as Komga uses the last modified time of the parent folders to decide whether to compare books, but some filesystems may behave differently."}),"\n",(0,s.jsx)(i.p,{children:"Trigger a Deep Scan if Komga is missing some books after a scan."}),"\n",(0,s.jsx)(i.h2,{id:"what-happens-during-a-scan",children:"What happens during a Scan?"}),"\n",(0,s.jsxs)(i.p,{children:["Komga will generate a library representation of your files on disk. A Komga library does ",(0,s.jsx)(i.em,{children:"not"})," represent exactly your folder structure."]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["Komga will create a ",(0,s.jsx)(i.em,{children:"Series"})," for each subfolder of any library, whatever the depth of this subfolder in your directory structure"]}),"\n",(0,s.jsxs)(i.li,{children:["Komga will create a ",(0,s.jsx)(i.em,{children:"Book"})," for each file found, and place it inside the ",(0,s.jsx)(i.em,{children:"Series"})," corresponding to the parent folder of the file"]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"analyze-books",children:"Analyze books"}),"\n",(0,s.jsx)(i.p,{children:"Analysis is automatically performed when content is added to your Library. In rare cases, new versions of Komga may update the media analysis capabilities to correct something or add the ability to detect new things. In those cases, content may be re-analyzed when you access it after the new server version is installed."}),"\n",(0,s.jsx)(i.h3,{id:"what-happens-during-analysis",children:"What happens during Analysis?"}),"\n",(0,s.jsx)(i.p,{children:"Whenever an item is added to one of your Libraries, Komga performs some analysis on it to gather information. In addition, all files analyzed will also be refreshed for metadata."}),"\n",(0,s.jsx)(i.h4,{id:"gather-media-properties",children:"Gather media properties"}),"\n",(0,s.jsx)(i.p,{children:"The primary purpose of media analysis is to gather information about that media item. All of the media you add to a Library has properties that are useful to know, such as:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Container: ZIP, RAR, EPUB, PDF, etc."}),"\n",(0,s.jsx)(i.li,{children:"Images Format: JPEG, PNG, WEBP, etc."}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Why, though? What use are these media properties? Your Server, together with your apps, can use this information to help determine whether (and how) content can be played."}),"\n",(0,s.jsx)(i.p,{children:"For example: Imagine you have a CBR file with WEBP images, but you\u2019re using Internet Explorer (which can\u2019t read WEBP). Since the webreader knows what kind of content your browser can display and since your media analysis detected that the book has WEBP images, your Komga Server can convert those images to a compatible format (like JPEG) for you in order to let you read your book successfully."}),"\n",(0,s.jsx)(i.h4,{id:"generate-default-artwork",children:"Generate default artwork"}),"\n",(0,s.jsx)(i.p,{children:"During analysis, artwork will automatically be grabbed from a book file. The first page will be used for poster/thumbnail type purposes."}),"\n",(0,s.jsx)(i.h3,{id:"analyze-your-content",children:"Analyze your content"}),"\n",(0,s.jsx)(i.p,{children:"You can analyze content in multiple ways: for a book, for a series, or even for an entire Library."}),"\n",(0,s.jsxs)(i.p,{children:["Look for the action menu icon ",(0,s.jsx)("img",{src:"/assets/media/guides/action-menu-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," and click on ",(0,s.jsx)(i.em,{children:"Analyze"}),"."]}),"\n",(0,s.jsx)(i.admonition,{type:"warning",children:(0,s.jsx)(i.p,{children:"Depending on the size of your Library, analysis may take a while."})}),"\n",(0,s.jsx)(i.h3,{id:"media-analysis-screen",children:"Media Analysis screen"}),"\n",(0,s.jsxs)(i.p,{children:["You can check all the media for which the analysis did not succeed from the Media Analysis screen. You can access it from ",(0,s.jsx)(i.em,{children:"Media Management > Media Analysis"}),"."]}),"\n",(0,s.jsx)(i.p,{children:"It will show you all books with a status of:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Error: Komga could not analyze the book. If possible, there will be a comment to describe the error."}),"\n",(0,s.jsx)(i.li,{children:"Unsupported: Komga does not support those files. The comment will give you more information."}),"\n"]}),"\n",(0,s.jsx)("a",{href:"/assets/media/guides/scan-analysis-refresh/media-analysis.png",children:(0,s.jsx)("img",{src:"/assets/media/guides/scan-analysis-refresh/media-analysis.png",style:{maxHeight:"400px"},alt:"Media Analysis"})}),"\n",(0,s.jsx)(i.h2,{id:"refresh-metadata",children:"Refresh metadata"}),"\n",(0,s.jsx)(i.p,{children:"Refreshing Metadata for a library, series, or individual book causes the metadata for the item to be refreshed, even if it already has metadata. You can think of refreshing as \u201cupdate metadata for the requested item even if it already has some\u201d."}),"\n",(0,s.jsx)(i.p,{children:"You should refresh a library or individual item if:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"You\u2019ve changed options for the library"}),"\n",(0,s.jsx)(i.li,{children:'You\u2019ve added "local media assets" (such as artwork)'}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Metadata is gathered from the following sources:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["a local ",(0,s.jsx)(i.code,{children:"ComicInfo.xml"})," file located inside a CBZ or CBR"]}),"\n",(0,s.jsx)(i.li,{children:"the metadata of an EPUB file"}),"\n",(0,s.jsx)(i.li,{children:"local media assets"}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"The metadata refresh is dependent of the options of the Library."}),"\n",(0,s.jsx)(i.h3,{id:"import-metadata-for-cbrcbz-containing-a-comicinfoxml-file",children:"Import metadata for CBR/CBZ containing a ComicInfo.xml file"}),"\n",(0,s.jsx)(i.h4,{id:"book-metadata",children:"Book metadata"}),"\n",(0,s.jsxs)(i.p,{children:["This will import the following elements from the ",(0,s.jsx)(i.code,{children:"ComicInfo.xml"})," file in Komga:"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"Year"}),", ",(0,s.jsx)(i.code,{children:"Month"}),", and ",(0,s.jsx)(i.code,{children:"Day"})," to form the ",(0,s.jsx)(i.em,{children:"Release Date"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"Writer"}),", ",(0,s.jsx)(i.code,{children:"Penciller"}),", ",(0,s.jsx)(i.code,{children:"Inker"}),", ",(0,s.jsx)(i.code,{children:"Colorist"}),", ",(0,s.jsx)(i.code,{children:"Letterer"}),", ",(0,s.jsx)(i.code,{children:"CoverArtist"}),", ",(0,s.jsx)(i.code,{children:"Editor"}),", and ",(0,s.jsx)(i.code,{children:"Translator"})," as ",(0,s.jsx)(i.em,{children:"Authors"})," with the according role. A value with multiple names separated by a ",(0,s.jsx)(i.code,{children:","})," will be split in different authors."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"Title"}),", ",(0,s.jsx)(i.code,{children:"Summary"}),", ",(0,s.jsx)(i.code,{children:"Number"})," as their Komga equivalent"]}),"\n",(0,s.jsxs)(i.li,{children:["Valid ",(0,s.jsx)(i.code,{children:"Web"})," links as a book link"]}),"\n",(0,s.jsxs)(i.li,{children:["The ",(0,s.jsx)(i.code,{children:"Tags"})," element will be split by ",(0,s.jsx)(i.code,{children:","})," and added to the book's ",(0,s.jsx)(i.em,{children:"tags"})]}),"\n",(0,s.jsxs)(i.li,{children:["If the ",(0,s.jsx)(i.code,{children:"GTIN"})," element contains a valid ISBN, as the book's ",(0,s.jsx)(i.em,{children:"ISBN"})]}),"\n"]}),"\n",(0,s.jsx)(i.h4,{id:"series-metadata",children:"Series metadata"}),"\n",(0,s.jsxs)(i.p,{children:["This will import the following elements from the ",(0,s.jsx)(i.code,{children:"ComicInfo.xml"})," of the Series' books in Komga:"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["The ",(0,s.jsx)(i.code,{children:"Series"})," and ",(0,s.jsx)(i.code,{children:"Volume"})," elements will be used to overwrite the title of the Series, in the form ",(0,s.jsx)(i.code,{children:"jar
file",id:"with-the-jar-file",level:3},{value:"With docker run",id:"with-docker-run",level:3},{value:"With docker-compose",id:"with-docker-compose",level:3},{value:"Available commands",id:"available-commands",level:2},{value:"List users",id:"list-users",level:3},{value:"Reset password for a user",id:"reset-password-for-a-user",level:3}];function c(e){const s={code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.h1,{id:"command-line-interface",children:"Command Line Interface"}),"\n",(0,r.jsx)(s.p,{children:"Komga offers a few commands available from the command line."}),"\n",(0,r.jsx)(s.h2,{id:"how-to-use",children:"How to use?"}),"\n",(0,r.jsx)(s.p,{children:"You just need to append the command to the command line. Note that Komga will still start and run as usual."}),"\n",(0,r.jsxs)(s.h3,{id:"with-the-jar-file",children:["With the ",(0,r.jsx)(s.code,{children:"jar"})," file"]}),"\n",(0,r.jsx)(s.p,{children:"Example:"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-shell",children:"java -jar komga-x.y.z.jar --list-users\n"})}),"\n",(0,r.jsx)(s.h3,{id:"with-docker-run",children:"With docker run"}),"\n",(0,r.jsx)(s.p,{children:"Example:"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-shell",children:"docker run ghcr.io/gotson/komga:latest --list-users\n"})}),"\n",(0,r.jsx)(s.h3,{id:"with-docker-compose",children:"With docker-compose"}),"\n",(0,r.jsxs)(s.p,{children:["You can override the ",(0,r.jsx)(s.code,{children:"command"}),":"]}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-yaml",children:"services:\n komga:\n image: gotson/komga:latest\n command: --newpassword=toto --reset=admin@example.org\n"})}),"\n",(0,r.jsx)(s.h2,{id:"available-commands",children:"Available commands"}),"\n",(0,r.jsx)(s.h3,{id:"list-users",children:"List users"}),"\n",(0,r.jsxs)(s.p,{children:["Command: ",(0,r.jsx)(s.code,{children:"--list-users"})]}),"\n",(0,r.jsx)(s.p,{children:"This will output all the users configured in the database. The output will be shown in the console or the logs."}),"\n",(0,r.jsx)(s.p,{children:"Example:"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.code,{children:"2023-08-02T13:41:45.215+08:00 INFO 1979 --- [ main] o.g.k.i.apprunner.ListUsersRunner : Here is a list of all users: [admin@example.org, jacky@example.org]"})}),"\n",(0,r.jsx)(s.h3,{id:"reset-password-for-a-user",children:"Reset password for a user"}),"\n",(0,r.jsxs)(s.p,{children:["Command: ",(0,r.jsx)(s.code,{children:"--reset=user@domain.com --newpassword=YourNewPassword"})]}),"\n",(0,r.jsx)(s.p,{children:"This will reset the password for the specified user."}),"\n",(0,r.jsx)(s.p,{children:"Example:"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.code,{children:"2023-08-02T13:50:42.998+08:00 INFO 2806 --- [ main] o.g.k.i.apprunner.PasswordResetRunner : Reset password for user: admin@example.org"})})]})}function h(e={}){const{wrapper:s}={...(0,o.a)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},1670:(e,s,n)=>{n.d(s,{Z:()=>a,a:()=>i});var r=n(7378);const o={},t=r.createContext(o);function i(e){const s=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(t.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7021],{5138:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>t,metadata:()=>a,toc:()=>l});var r=n(4246),o=n(1670);const t={},i="Command Line Interface",a={id:"guides/cli",title:"Command Line Interface",description:"Komga offers a few commands available from the command line.",source:"@site/docs/guides/cli.md",sourceDirName:"guides",slug:"/guides/cli",permalink:"/docs/guides/cli",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/cli.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Announcements",permalink:"/docs/guides/announcements"},next:{title:"Contribution",permalink:"/docs/contribution"}},d={},l=[{value:"How to use?",id:"how-to-use",level:2},{value:"With the jar
file",id:"with-the-jar-file",level:3},{value:"With docker run",id:"with-docker-run",level:3},{value:"With docker-compose",id:"with-docker-compose",level:3},{value:"Available commands",id:"available-commands",level:2},{value:"List users",id:"list-users",level:3},{value:"Reset password for a user",id:"reset-password-for-a-user",level:3}];function c(e){const s={code:"code",h1:"h1",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.h1,{id:"command-line-interface",children:"Command Line Interface"}),"\n",(0,r.jsx)(s.p,{children:"Komga offers a few commands available from the command line."}),"\n",(0,r.jsx)(s.h2,{id:"how-to-use",children:"How to use?"}),"\n",(0,r.jsx)(s.p,{children:"You just need to append the command to the command line. Note that Komga will still start and run as usual."}),"\n",(0,r.jsxs)(s.h3,{id:"with-the-jar-file",children:["With the ",(0,r.jsx)(s.code,{children:"jar"})," file"]}),"\n",(0,r.jsx)(s.p,{children:"Example:"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-shell",children:"java -jar komga-x.y.z.jar --list-users\n"})}),"\n",(0,r.jsx)(s.h3,{id:"with-docker-run",children:"With docker run"}),"\n",(0,r.jsx)(s.p,{children:"Example:"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-shell",children:"docker run ghcr.io/gotson/komga:latest --list-users\n"})}),"\n",(0,r.jsx)(s.h3,{id:"with-docker-compose",children:"With docker-compose"}),"\n",(0,r.jsxs)(s.p,{children:["You can override the ",(0,r.jsx)(s.code,{children:"command"}),":"]}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-yaml",children:"services:\n komga:\n image: gotson/komga:latest\n command: --newpassword=toto --reset=admin@example.org\n"})}),"\n",(0,r.jsx)(s.h2,{id:"available-commands",children:"Available commands"}),"\n",(0,r.jsx)(s.h3,{id:"list-users",children:"List users"}),"\n",(0,r.jsxs)(s.p,{children:["Command: ",(0,r.jsx)(s.code,{children:"--list-users"})]}),"\n",(0,r.jsx)(s.p,{children:"This will output all the users configured in the database. The output will be shown in the console or the logs."}),"\n",(0,r.jsx)(s.p,{children:"Example:"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.code,{children:"2023-08-02T13:41:45.215+08:00 INFO 1979 --- [ main] o.g.k.i.apprunner.ListUsersRunner : Here is a list of all users: [admin@example.org, jacky@example.org]"})}),"\n",(0,r.jsx)(s.h3,{id:"reset-password-for-a-user",children:"Reset password for a user"}),"\n",(0,r.jsxs)(s.p,{children:["Command: ",(0,r.jsx)(s.code,{children:"--reset=user@domain.com --newpassword=YourNewPassword"})]}),"\n",(0,r.jsx)(s.p,{children:"This will reset the password for the specified user."}),"\n",(0,r.jsx)(s.p,{children:"Example:"}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.code,{children:"2023-08-02T13:50:42.998+08:00 INFO 2806 --- [ main] o.g.k.i.apprunner.PasswordResetRunner : Reset password for user: admin@example.org"})})]})}function h(e={}){const{wrapper:s}={...(0,o.a)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(c,{...e})}):c(e)}},1670:(e,s,n)=>{n.d(s,{Z:()=>a,a:()=>i});var r=n(7378);const o={},t=r.createContext(o);function i(e){const s=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),r.createElement(t.Provider,{value:s},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/206b31bb.d5e487eb.js b/assets/js/206b31bb.0d63cf90.js
similarity index 99%
rename from assets/js/206b31bb.d5e487eb.js
rename to assets/js/206b31bb.0d63cf90.js
index df69a342..ef15a53d 100644
--- a/assets/js/206b31bb.d5e487eb.js
+++ b/assets/js/206b31bb.0d63cf90.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1778],{1539:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>h});var i=s(4246),t=s(1670);const o={},r="One-Shots",l={id:"guides/oneshots",title:"One-Shots",description:"What are One-Shots?",source:"@site/docs/guides/oneshots.md",sourceDirName:"guides",slug:"/guides/oneshots",permalink:"/docs/guides/oneshots",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/oneshots.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Image Types",permalink:"/docs/guides/image-formats"},next:{title:"Edit Metadata",permalink:"/docs/guides/edit-metadata"}},d={},h=[{value:"What are One-Shots?",id:"what-are-one-shots",level:2},{value:"One-Shots handling",id:"one-shots-handling",level:2},{value:"Configuration",id:"configuration",level:3},{value:"Processing",id:"processing",level:3},{value:"Metadata",id:"metadata",level:3},{value:"Dashboard",id:"dashboard",level:3},{value:"REST API",id:"rest-api",level:3}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"one-shots",children:"One-Shots"}),"\n",(0,i.jsx)(n.h2,{id:"what-are-one-shots",children:"What are One-Shots?"}),"\n",(0,i.jsx)(n.p,{children:"One-Shots are series containing a single book."}),"\n",(0,i.jsx)(n.p,{children:"However not all series containing a single book are One-Shots. Here are some example of single book series that are not One-Shots:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"a series that has multiple books published, but only a single book is collected in Komga"}),"\n",(0,i.jsx)(n.li,{children:"a series that currently has only 1 book published, but will have more in the future"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Historically Komga required each series to be in its own directory on disk. This was cumbersome for One-Shots, as each book needed to be placed in a dedicated directory."}),"\n",(0,i.jsx)(n.p,{children:"With One-Shots handling, this is not necessary anymore."}),"\n",(0,i.jsx)(n.p,{children:"One-Shots are still composed of a series with a single book, but are handled slightly differently."}),"\n",(0,i.jsx)(n.h2,{id:"one-shots-handling",children:"One-Shots handling"}),"\n",(0,i.jsx)(n.h3,{id:"configuration",children:"Configuration"}),"\n",(0,i.jsxs)(n.p,{children:["You can enable One-Shots handling through ",(0,i.jsx)(n.a,{href:"/docs/guides/libraries#one-shots-directory",children:"Library options"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"processing",children:"Processing"}),"\n",(0,i.jsxs)(n.p,{children:["One-Shots are detected during the scan. Any directory for which the full path contains the configured ",(0,i.jsx)(n.em,{children:"One-Shots directory"})," will generate One-Shot series instead of standard Series."]}),"\n",(0,i.jsxs)(n.p,{children:["Given the following directory structure, with ",(0,i.jsx)(n.em,{children:"One-Shots directory"})," configured to ",(0,i.jsx)(n.code,{children:"_oneshots"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"/data/books/Comics\n\u251c\u2500\u2500 Space Adventures\n\u2502\xa0\xa0 \u251c\u2500\u2500 Space_Adventures_001.cbz\n\u2502\xa0\xa0 \u251c\u2500\u2500 Space_Adventures_002.cbz\n\u2502\xa0\xa0 \u251c\u2500\u2500 Space_Adventures_003.cbz\n\u2502\xa0\xa0 \u2514\u2500\u2500 _oneshots\n\u2502\xa0\xa0 \u2514\u2500\u2500 Pluto Adventures.cbz\n\u251c\u2500\u2500 Super Duck\n\u2502\xa0\xa0 \u251c\u2500\u2500 Super_Duck_001.cbz\n\u2502\xa0\xa0 \u251c\u2500\u2500 Super_Duck_002.cbz\n\u2502\xa0\xa0 \u2514\u2500\u2500 Super_Duck_003.cbz\n\u2514\u2500\u2500 _oneshots\n \u251c\u2500\u2500 A oneshot.cbz\n \u251c\u2500\u2500 Another oneshot.cbz\n \u2514\u2500\u2500 Yet another oneshot.cbz\n"})}),"\n",(0,i.jsx)(n.p,{children:"This will result in:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["2 regular series:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Space Adventures"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Super Duck"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["4 One-Shots:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Pluto Adventures"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"A oneshot"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Another oneshot"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Yet another oneshot"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.em,{children:"One-Shots directory"})," is checked against ",(0,i.jsx)(n.strong,{children:"any part of the directory path"}),":"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"_oneshots"})," will match on:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"/data/books/Comics/_oneshots"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"/data/books/Comics/My weirdly named _oneshots"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["To match only directories starting with the provided string, prefix ",(0,i.jsx)(n.em,{children:"One-Shots directory"})," with ",(0,i.jsx)(n.code,{children:"/"}),", like ",(0,i.jsx)(n.code,{children:"/_oneshots"})]})}),"\n",(0,i.jsx)(n.h3,{id:"metadata",children:"Metadata"}),"\n",(0,i.jsx)(n.p,{children:"While the book metadata will be processed as usual, the series metadata for One-Shots will be handled slightly differently:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["the Mylar ",(0,i.jsx)(n.code,{children:"series.json"})," is ignored"]}),"\n",(0,i.jsx)(n.li,{children:"the local artwork is ignored. The one for the book is still processed as usual."}),"\n",(0,i.jsxs)(n.li,{children:["in addition, some metadata is set:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the series title and summary are set from the one of the book"}),"\n",(0,i.jsxs)(n.li,{children:["the series status is set to ",(0,i.jsx)(n.em,{children:"Ended"})]}),"\n",(0,i.jsx)(n.li,{children:"the series total book count is set to 1"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"dashboard",children:"Dashboard"}),"\n",(0,i.jsx)(n.p,{children:"The Dashboard has specific handling for One-Shots:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"One-Shots are displayed in a new view that shows both series and book metadata fields"}),"\n",(0,i.jsxs)(n.li,{children:["when editing One-Shots metadata, a new dialog will allow to edit both book and series level metadata fields.","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you edit multiple items and all are One-Shots, this dialog is also used."}),"\n",(0,i.jsx)(n.li,{children:"If there is a mix of One-Shots and normal items (series or books), the regular dialog will be used instead.s"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"One-Shots can be added to both collections and readlists"}),"\n",(0,i.jsxs)(n.li,{children:["One-Shots will not show in the ",(0,i.jsx)(n.em,{children:"Recently Added Series"})," or ",(0,i.jsx)(n.em,{children:"Recently Updated Series"})," sections, but they will show in ",(0,i.jsx)(n.em,{children:"Recently Added Books"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Item card in Series views (when browsing libraries or collections):","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"will show an unread indicator in the top-right corner, instead of the number of unread books"}),"\n",(0,i.jsxs)(n.li,{children:["will display ",(0,i.jsx)(n.em,{children:"One-shot"})," at the bottom of the card instead of the number of books"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Item card in Book views (when browsing readlists or recommended) will not display the Series name nor the book number"}),"\n",(0,i.jsxs)(n.li,{children:["the Series filter panel has a ",(0,i.jsx)(n.em,{children:"One-shot"})," filter"]}),"\n",(0,i.jsx)(n.li,{children:"One-Shots will not show in the Series picker dialog when importing books"}),"\n",(0,i.jsx)(n.li,{children:"One-Shots will show only as books in the search bar and detailed search view"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"rest-api",children:"REST API"}),"\n",(0,i.jsxs)(n.p,{children:["One-Shots are still composed of a Series with a single Book, however both have a new ",(0,i.jsx)(n.code,{children:"boolean"})," attribute ",(0,i.jsx)(n.code,{children:"oneshot"})," which can be used in client applications to handle One-Shots differently."]})]})}function c(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},1670:(e,n,s)=>{s.d(n,{Z:()=>l,a:()=>r});var i=s(7378);const t={},o=i.createContext(t);function r(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1778],{1539:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>r,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>h});var i=s(4246),t=s(1670);const o={},r="One-Shots",l={id:"guides/oneshots",title:"One-Shots",description:"What are One-Shots?",source:"@site/docs/guides/oneshots.md",sourceDirName:"guides",slug:"/guides/oneshots",permalink:"/docs/guides/oneshots",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/oneshots.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Image Types",permalink:"/docs/guides/image-formats"},next:{title:"Edit Metadata",permalink:"/docs/guides/edit-metadata"}},d={},h=[{value:"What are One-Shots?",id:"what-are-one-shots",level:2},{value:"One-Shots handling",id:"one-shots-handling",level:2},{value:"Configuration",id:"configuration",level:3},{value:"Processing",id:"processing",level:3},{value:"Metadata",id:"metadata",level:3},{value:"Dashboard",id:"dashboard",level:3},{value:"REST API",id:"rest-api",level:3}];function a(e){const n={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"one-shots",children:"One-Shots"}),"\n",(0,i.jsx)(n.h2,{id:"what-are-one-shots",children:"What are One-Shots?"}),"\n",(0,i.jsx)(n.p,{children:"One-Shots are series containing a single book."}),"\n",(0,i.jsx)(n.p,{children:"However not all series containing a single book are One-Shots. Here are some example of single book series that are not One-Shots:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"a series that has multiple books published, but only a single book is collected in Komga"}),"\n",(0,i.jsx)(n.li,{children:"a series that currently has only 1 book published, but will have more in the future"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Historically Komga required each series to be in its own directory on disk. This was cumbersome for One-Shots, as each book needed to be placed in a dedicated directory."}),"\n",(0,i.jsx)(n.p,{children:"With One-Shots handling, this is not necessary anymore."}),"\n",(0,i.jsx)(n.p,{children:"One-Shots are still composed of a series with a single book, but are handled slightly differently."}),"\n",(0,i.jsx)(n.h2,{id:"one-shots-handling",children:"One-Shots handling"}),"\n",(0,i.jsx)(n.h3,{id:"configuration",children:"Configuration"}),"\n",(0,i.jsxs)(n.p,{children:["You can enable One-Shots handling through ",(0,i.jsx)(n.a,{href:"/docs/guides/libraries#one-shots-directory",children:"Library options"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"processing",children:"Processing"}),"\n",(0,i.jsxs)(n.p,{children:["One-Shots are detected during the scan. Any directory for which the full path contains the configured ",(0,i.jsx)(n.em,{children:"One-Shots directory"})," will generate One-Shot series instead of standard Series."]}),"\n",(0,i.jsxs)(n.p,{children:["Given the following directory structure, with ",(0,i.jsx)(n.em,{children:"One-Shots directory"})," configured to ",(0,i.jsx)(n.code,{children:"_oneshots"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"/data/books/Comics\n\u251c\u2500\u2500 Space Adventures\n\u2502\xa0\xa0 \u251c\u2500\u2500 Space_Adventures_001.cbz\n\u2502\xa0\xa0 \u251c\u2500\u2500 Space_Adventures_002.cbz\n\u2502\xa0\xa0 \u251c\u2500\u2500 Space_Adventures_003.cbz\n\u2502\xa0\xa0 \u2514\u2500\u2500 _oneshots\n\u2502\xa0\xa0 \u2514\u2500\u2500 Pluto Adventures.cbz\n\u251c\u2500\u2500 Super Duck\n\u2502\xa0\xa0 \u251c\u2500\u2500 Super_Duck_001.cbz\n\u2502\xa0\xa0 \u251c\u2500\u2500 Super_Duck_002.cbz\n\u2502\xa0\xa0 \u2514\u2500\u2500 Super_Duck_003.cbz\n\u2514\u2500\u2500 _oneshots\n \u251c\u2500\u2500 A oneshot.cbz\n \u251c\u2500\u2500 Another oneshot.cbz\n \u2514\u2500\u2500 Yet another oneshot.cbz\n"})}),"\n",(0,i.jsx)(n.p,{children:"This will result in:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["2 regular series:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Space Adventures"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Super Duck"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["4 One-Shots:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Pluto Adventures"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"A oneshot"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Another oneshot"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.em,{children:"Yet another oneshot"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.em,{children:"One-Shots directory"})," is checked against ",(0,i.jsx)(n.strong,{children:"any part of the directory path"}),":"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"_oneshots"})," will match on:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"/data/books/Comics/_oneshots"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"/data/books/Comics/My weirdly named _oneshots"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["To match only directories starting with the provided string, prefix ",(0,i.jsx)(n.em,{children:"One-Shots directory"})," with ",(0,i.jsx)(n.code,{children:"/"}),", like ",(0,i.jsx)(n.code,{children:"/_oneshots"})]})}),"\n",(0,i.jsx)(n.h3,{id:"metadata",children:"Metadata"}),"\n",(0,i.jsx)(n.p,{children:"While the book metadata will be processed as usual, the series metadata for One-Shots will be handled slightly differently:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["the Mylar ",(0,i.jsx)(n.code,{children:"series.json"})," is ignored"]}),"\n",(0,i.jsx)(n.li,{children:"the local artwork is ignored. The one for the book is still processed as usual."}),"\n",(0,i.jsxs)(n.li,{children:["in addition, some metadata is set:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"the series title and summary are set from the one of the book"}),"\n",(0,i.jsxs)(n.li,{children:["the series status is set to ",(0,i.jsx)(n.em,{children:"Ended"})]}),"\n",(0,i.jsx)(n.li,{children:"the series total book count is set to 1"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"dashboard",children:"Dashboard"}),"\n",(0,i.jsx)(n.p,{children:"The Dashboard has specific handling for One-Shots:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"One-Shots are displayed in a new view that shows both series and book metadata fields"}),"\n",(0,i.jsxs)(n.li,{children:["when editing One-Shots metadata, a new dialog will allow to edit both book and series level metadata fields.","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"If you edit multiple items and all are One-Shots, this dialog is also used."}),"\n",(0,i.jsx)(n.li,{children:"If there is a mix of One-Shots and normal items (series or books), the regular dialog will be used instead.s"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"One-Shots can be added to both collections and readlists"}),"\n",(0,i.jsxs)(n.li,{children:["One-Shots will not show in the ",(0,i.jsx)(n.em,{children:"Recently Added Series"})," or ",(0,i.jsx)(n.em,{children:"Recently Updated Series"})," sections, but they will show in ",(0,i.jsx)(n.em,{children:"Recently Added Books"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:["Item card in Series views (when browsing libraries or collections):","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"will show an unread indicator in the top-right corner, instead of the number of unread books"}),"\n",(0,i.jsxs)(n.li,{children:["will display ",(0,i.jsx)(n.em,{children:"One-shot"})," at the bottom of the card instead of the number of books"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Item card in Book views (when browsing readlists or recommended) will not display the Series name nor the book number"}),"\n",(0,i.jsxs)(n.li,{children:["the Series filter panel has a ",(0,i.jsx)(n.em,{children:"One-shot"})," filter"]}),"\n",(0,i.jsx)(n.li,{children:"One-Shots will not show in the Series picker dialog when importing books"}),"\n",(0,i.jsx)(n.li,{children:"One-Shots will show only as books in the search bar and detailed search view"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"rest-api",children:"REST API"}),"\n",(0,i.jsxs)(n.p,{children:["One-Shots are still composed of a Series with a single Book, however both have a new ",(0,i.jsx)(n.code,{children:"boolean"})," attribute ",(0,i.jsx)(n.code,{children:"oneshot"})," which can be used in client applications to handle One-Shots differently."]})]})}function c(e={}){const{wrapper:n}={...(0,t.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},1670:(e,n,s)=>{s.d(n,{Z:()=>l,a:()=>r});var i=s(7378);const t={},o=i.createContext(t);function r(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/24227623.c96a2ec6.js b/assets/js/24227623.48e91684.js
similarity index 98%
rename from assets/js/24227623.c96a2ec6.js
rename to assets/js/24227623.48e91684.js
index 6ab274f4..a7bac628 100644
--- a/assets/js/24227623.c96a2ec6.js
+++ b/assets/js/24227623.48e91684.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2854],{2395:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>t,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>l});var a=s(4246),n=s(1670);const i={},o="Read progress",d={id:"guides/read-progress",title:"Read progress",description:"Komga can track which books you have read, and books that you are currently reading. Reading progress is tracked for each user separately.",source:"@site/docs/guides/read-progress.md",sourceDirName:"guides",slug:"/guides/read-progress",permalink:"/docs/guides/read-progress",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/read-progress.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Server settings & management",permalink:"/docs/guides/server-settings"},next:{title:"Collections",permalink:"/docs/guides/collections"}},t={},l=[{value:"Supported readers",id:"supported-readers",level:2},{value:"Webreader",id:"webreader",level:3},{value:"Tachiyomi",id:"tachiyomi",level:3},{value:"CDisplayEx",id:"cdisplayex",level:3},{value:"Unread and in progress indicators",id:"unread-and-in-progress-indicators",level:2},{value:"Marking progress manually",id:"marking-progress-manually",level:2}];function c(e){const r={a:"a",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,n.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(r.h1,{id:"read-progress",children:"Read progress"}),"\n",(0,a.jsx)(r.p,{children:"Komga can track which books you have read, and books that you are currently reading. Reading progress is tracked for each user separately."}),"\n",(0,a.jsx)(r.h2,{id:"supported-readers",children:"Supported readers"}),"\n",(0,a.jsx)(r.h3,{id:"webreader",children:"Webreader"}),"\n",(0,a.jsx)(r.p,{children:"The webreader can track the progress as you read:"}),"\n",(0,a.jsxs)(r.ul,{children:["\n",(0,a.jsx)(r.li,{children:"when you open a book that is in progress, the webreader will resume reading where you left it."}),"\n",(0,a.jsx)(r.li,{children:"when you finish reading a book, the webreader will mark it as read."}),"\n"]}),"\n",(0,a.jsx)(r.h3,{id:"tachiyomi",children:"Tachiyomi"}),"\n",(0,a.jsxs)(r.p,{children:["Tachiyomi can track progress of read books, using the Komga tracker. See ",(0,a.jsx)(r.a,{href:"tachiyomi#track-read-progress",children:"here"})," for more details."]}),"\n",(0,a.jsx)(r.h3,{id:"cdisplayex",children:"CDisplayEx"}),"\n",(0,a.jsxs)(r.p,{children:["CDisplayEx syncs read status and reading progress, See ",(0,a.jsx)(r.a,{href:"cdisplayex#reading-status",children:"here"}),"."]}),"\n",(0,a.jsx)(r.h2,{id:"unread-and-in-progress-indicators",children:"Unread and in progress indicators"}),"\n",(0,a.jsx)(r.p,{children:"The book card will display read progress indicators:"}),"\n",(0,a.jsxs)(r.ul,{children:["\n",(0,a.jsx)(r.li,{children:"Unread books will display an orange tick in the top right corner:"}),"\n"]}),"\n",(0,a.jsx)("img",{src:"/assets/media/guides/read-progress/book-card-unread.png",style:{maxHeight:"300px"},alt:"Book card showing unread indicator"}),"\n",(0,a.jsxs)(r.ul,{children:["\n",(0,a.jsx)(r.li,{children:"In progress books will display a progress bar at the bottom of the thumbnail:"}),"\n"]}),"\n",(0,a.jsx)("img",{src:"/assets/media/guides/read-progress/book-card-inprogress.png",style:{maxHeight:"300px"},alt:"Book card showing reading progress"}),"\n",(0,a.jsx)(r.p,{children:"In addition, the series card will display the number of unread books in the top right corner:"}),"\n",(0,a.jsx)("img",{src:"/assets/media/guides/read-progress/series-card-unread-count.png",style:{maxHeight:"300px"},alt:"Series card showing unread count of books"}),"\n",(0,a.jsx)(r.h2,{id:"marking-progress-manually",children:"Marking progress manually"}),"\n",(0,a.jsxs)(r.p,{children:["You can mark books or series as read or unread manually. Look for the action menu icon ",(0,a.jsx)("img",{src:"/assets/media/guides/action-menu-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," and click on ",(0,a.jsx)(r.em,{children:"Mark as read"})," or ",(0,a.jsx)(r.em,{children:"Mark as unread"}),"."]})]})}function h(e={}){const{wrapper:r}={...(0,n.a)(),...e.components};return r?(0,a.jsx)(r,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},1670:(e,r,s)=>{s.d(r,{Z:()=>d,a:()=>o});var a=s(7378);const n={},i=a.createContext(n);function o(e){const r=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),a.createElement(i.Provider,{value:r},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2854],{2395:(e,r,s)=>{s.r(r),s.d(r,{assets:()=>t,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>d,toc:()=>l});var a=s(4246),n=s(1670);const i={},o="Read progress",d={id:"guides/read-progress",title:"Read progress",description:"Komga can track which books you have read, and books that you are currently reading. Reading progress is tracked for each user separately.",source:"@site/docs/guides/read-progress.md",sourceDirName:"guides",slug:"/guides/read-progress",permalink:"/docs/guides/read-progress",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/read-progress.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Server settings & management",permalink:"/docs/guides/server-settings"},next:{title:"Collections",permalink:"/docs/guides/collections"}},t={},l=[{value:"Supported readers",id:"supported-readers",level:2},{value:"Webreader",id:"webreader",level:3},{value:"Tachiyomi",id:"tachiyomi",level:3},{value:"CDisplayEx",id:"cdisplayex",level:3},{value:"Unread and in progress indicators",id:"unread-and-in-progress-indicators",level:2},{value:"Marking progress manually",id:"marking-progress-manually",level:2}];function c(e){const r={a:"a",em:"em",h1:"h1",h2:"h2",h3:"h3",li:"li",p:"p",ul:"ul",...(0,n.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(r.h1,{id:"read-progress",children:"Read progress"}),"\n",(0,a.jsx)(r.p,{children:"Komga can track which books you have read, and books that you are currently reading. Reading progress is tracked for each user separately."}),"\n",(0,a.jsx)(r.h2,{id:"supported-readers",children:"Supported readers"}),"\n",(0,a.jsx)(r.h3,{id:"webreader",children:"Webreader"}),"\n",(0,a.jsx)(r.p,{children:"The webreader can track the progress as you read:"}),"\n",(0,a.jsxs)(r.ul,{children:["\n",(0,a.jsx)(r.li,{children:"when you open a book that is in progress, the webreader will resume reading where you left it."}),"\n",(0,a.jsx)(r.li,{children:"when you finish reading a book, the webreader will mark it as read."}),"\n"]}),"\n",(0,a.jsx)(r.h3,{id:"tachiyomi",children:"Tachiyomi"}),"\n",(0,a.jsxs)(r.p,{children:["Tachiyomi can track progress of read books, using the Komga tracker. See ",(0,a.jsx)(r.a,{href:"tachiyomi#track-read-progress",children:"here"})," for more details."]}),"\n",(0,a.jsx)(r.h3,{id:"cdisplayex",children:"CDisplayEx"}),"\n",(0,a.jsxs)(r.p,{children:["CDisplayEx syncs read status and reading progress, See ",(0,a.jsx)(r.a,{href:"cdisplayex#reading-status",children:"here"}),"."]}),"\n",(0,a.jsx)(r.h2,{id:"unread-and-in-progress-indicators",children:"Unread and in progress indicators"}),"\n",(0,a.jsx)(r.p,{children:"The book card will display read progress indicators:"}),"\n",(0,a.jsxs)(r.ul,{children:["\n",(0,a.jsx)(r.li,{children:"Unread books will display an orange tick in the top right corner:"}),"\n"]}),"\n",(0,a.jsx)("img",{src:"/assets/media/guides/read-progress/book-card-unread.png",style:{maxHeight:"300px"},alt:"Book card showing unread indicator"}),"\n",(0,a.jsxs)(r.ul,{children:["\n",(0,a.jsx)(r.li,{children:"In progress books will display a progress bar at the bottom of the thumbnail:"}),"\n"]}),"\n",(0,a.jsx)("img",{src:"/assets/media/guides/read-progress/book-card-inprogress.png",style:{maxHeight:"300px"},alt:"Book card showing reading progress"}),"\n",(0,a.jsx)(r.p,{children:"In addition, the series card will display the number of unread books in the top right corner:"}),"\n",(0,a.jsx)("img",{src:"/assets/media/guides/read-progress/series-card-unread-count.png",style:{maxHeight:"300px"},alt:"Series card showing unread count of books"}),"\n",(0,a.jsx)(r.h2,{id:"marking-progress-manually",children:"Marking progress manually"}),"\n",(0,a.jsxs)(r.p,{children:["You can mark books or series as read or unread manually. Look for the action menu icon ",(0,a.jsx)("img",{src:"/assets/media/guides/action-menu-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," and click on ",(0,a.jsx)(r.em,{children:"Mark as read"})," or ",(0,a.jsx)(r.em,{children:"Mark as unread"}),"."]})]})}function h(e={}){const{wrapper:r}={...(0,n.a)(),...e.components};return r?(0,a.jsx)(r,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},1670:(e,r,s)=>{s.d(r,{Z:()=>d,a:()=>o});var a=s(7378);const n={},i=a.createContext(n);function o(e){const r=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),a.createElement(i.Provider,{value:r},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/2b8f2de1.05c58df7.js b/assets/js/2b8f2de1.434232ee.js
similarity index 98%
rename from assets/js/2b8f2de1.05c58df7.js
rename to assets/js/2b8f2de1.434232ee.js
index 66d10fd3..47dbd421 100644
--- a/assets/js/2b8f2de1.05c58df7.js
+++ b/assets/js/2b8f2de1.434232ee.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9925],{4003:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>h,frontMatter:()=>d,metadata:()=>l,toc:()=>c});var r=s(4246),n=s(1670);const d={},i="Read with any OPDS reader",l={id:"guides/opds",title:"Read with any OPDS reader",description:"Komga should work with any OPDS reader, unfortunately most readers badly implement the OPDS protocol.",source:"@site/docs/guides/opds.md",sourceDirName:"guides",slug:"/guides/opds",permalink:"/docs/guides/opds",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/opds.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Read with CDisplayEx",permalink:"/docs/guides/cdisplayex"},next:{title:"Read with Panels on iOS",permalink:"/docs/guides/panels"}},o={},c=[];function a(e){const t={a:"a",code:"code",h1:"h1",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"read-with-any-opds-reader",children:"Read with any OPDS reader"}),"\n",(0,r.jsx)(t.p,{children:"Komga should work with any OPDS reader, unfortunately most readers badly implement the OPDS protocol."}),"\n",(0,r.jsx)(t.p,{children:"Komga supports OPDS v1 and v2, the URL should be configured accordingly:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["OPDS v1: ",(0,r.jsx)(t.code,{children:"http(s)://your-server(:25600)(/baseUrl)/opds/v1.2/catalog"})]}),"\n",(0,r.jsxs)(t.li,{children:["OPDS v2: ",(0,r.jsx)(t.code,{children:"http(s)://your-server(:25600)(/baseUrl)/opds/v2/catalog"})]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Here is a list of reader applications that have been tested:"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"OS"}),(0,r.jsx)(t.th,{children:"App name"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Status"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"OpenSearch support"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Page streaming support"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Android"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://play.google.com/store/apps/details?id=org.geometerplus.zlibrary.ui.android",children:"FBReader: Favorite Book Reader"})}),(0,r.jsxs)(t.td,{style:{textAlign:"center"},children:["\u274c"," Can't download CBR/CBZ, only PDF. PDF only supported in Premium version. Does not remember password."]}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Android"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://play.google.com/store/apps/details?id=com.flyersoft.moonreader",children:"Moon+ Reader"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Android"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://play.google.com/store/apps/details?id=com.foobnix.pdf.reader",children:"Librera"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Android"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://play.google.com/store/apps/details?id=com.obreey.reader",children:"PocketBook"})}),(0,r.jsxs)(t.td,{style:{textAlign:"center"},children:["\u274c"," Doesn't show CBR/CBZ"]}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"iOS"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"http://kybook-reader.com/",children:"KyBook 3"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:(0,r.jsx)(t.strong,{children:"Yes"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"iOS"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://panels.app/",children:"Panels"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsxs)(t.td,{style:{textAlign:"center"},children:[(0,r.jsx)(t.strong,{children:"OPDS PSE 1.0"})," (v2.8.0+)",(0,r.jsx)("br",{}),(0,r.jsx)(t.strong,{children:"OPDS PSE 1.1"})," (v2.9.7+)"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"iPadOS"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://apps.apple.com/us/app/chunky-comic-reader/id663567628",children:"Chunky Comic Reader"})}),(0,r.jsxs)(t.td,{style:{textAlign:"center"},children:["\u274c"," Does not work anymore with Komga 1.4.0+"]}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:(0,r.jsx)(t.strong,{children:"OPDS PSE 1.0"})})]})]})]}),"\n",(0,r.jsx)(t.p,{children:"The OPDS v1 feed also supports:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["OpenSearch functionality, to search by ",(0,r.jsx)(t.code,{children:"Series"})]}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://anansi-project.github.io/docs/opds-pse/intro",children:"OPDS Page Streaming Extension 1.2"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},1670:(e,t,s)=>{s.d(t,{Z:()=>l,a:()=>i});var r=s(7378);const n={},d=r.createContext(n);function i(e){const t=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),r.createElement(d.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9925],{4003:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>h,frontMatter:()=>d,metadata:()=>l,toc:()=>c});var r=s(4246),n=s(1670);const d={},i="Read with any OPDS reader",l={id:"guides/opds",title:"Read with any OPDS reader",description:"Komga should work with any OPDS reader, unfortunately most readers badly implement the OPDS protocol.",source:"@site/docs/guides/opds.md",sourceDirName:"guides",slug:"/guides/opds",permalink:"/docs/guides/opds",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/opds.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Read with CDisplayEx",permalink:"/docs/guides/cdisplayex"},next:{title:"Read with Panels on iOS",permalink:"/docs/guides/panels"}},o={},c=[];function a(e){const t={a:"a",code:"code",h1:"h1",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.a)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h1,{id:"read-with-any-opds-reader",children:"Read with any OPDS reader"}),"\n",(0,r.jsx)(t.p,{children:"Komga should work with any OPDS reader, unfortunately most readers badly implement the OPDS protocol."}),"\n",(0,r.jsx)(t.p,{children:"Komga supports OPDS v1 and v2, the URL should be configured accordingly:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["OPDS v1: ",(0,r.jsx)(t.code,{children:"http(s)://your-server(:25600)(/baseUrl)/opds/v1.2/catalog"})]}),"\n",(0,r.jsxs)(t.li,{children:["OPDS v2: ",(0,r.jsx)(t.code,{children:"http(s)://your-server(:25600)(/baseUrl)/opds/v2/catalog"})]}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:"Here is a list of reader applications that have been tested:"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"OS"}),(0,r.jsx)(t.th,{children:"App name"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Status"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"OpenSearch support"}),(0,r.jsx)(t.th,{style:{textAlign:"center"},children:"Page streaming support"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Android"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://play.google.com/store/apps/details?id=org.geometerplus.zlibrary.ui.android",children:"FBReader: Favorite Book Reader"})}),(0,r.jsxs)(t.td,{style:{textAlign:"center"},children:["\u274c"," Can't download CBR/CBZ, only PDF. PDF only supported in Premium version. Does not remember password."]}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Android"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://play.google.com/store/apps/details?id=com.flyersoft.moonreader",children:"Moon+ Reader"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Android"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://play.google.com/store/apps/details?id=com.foobnix.pdf.reader",children:"Librera"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"Android"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://play.google.com/store/apps/details?id=com.obreey.reader",children:"PocketBook"})}),(0,r.jsxs)(t.td,{style:{textAlign:"center"},children:["\u274c"," Doesn't show CBR/CBZ"]}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"iOS"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"http://kybook-reader.com/",children:"KyBook 3"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:(0,r.jsx)(t.strong,{children:"Yes"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"iOS"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://panels.app/",children:"Panels"})}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"\u2714\ufe0f"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsxs)(t.td,{style:{textAlign:"center"},children:[(0,r.jsx)(t.strong,{children:"OPDS PSE 1.0"})," (v2.8.0+)",(0,r.jsx)("br",{}),(0,r.jsx)(t.strong,{children:"OPDS PSE 1.1"})," (v2.9.7+)"]})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"iPadOS"}),(0,r.jsx)(t.td,{children:(0,r.jsx)(t.a,{href:"https://apps.apple.com/us/app/chunky-comic-reader/id663567628",children:"Chunky Comic Reader"})}),(0,r.jsxs)(t.td,{style:{textAlign:"center"},children:["\u274c"," Does not work anymore with Komga 1.4.0+"]}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:"No"}),(0,r.jsx)(t.td,{style:{textAlign:"center"},children:(0,r.jsx)(t.strong,{children:"OPDS PSE 1.0"})})]})]})]}),"\n",(0,r.jsx)(t.p,{children:"The OPDS v1 feed also supports:"}),"\n",(0,r.jsxs)(t.ul,{children:["\n",(0,r.jsxs)(t.li,{children:["OpenSearch functionality, to search by ",(0,r.jsx)(t.code,{children:"Series"})]}),"\n",(0,r.jsx)(t.li,{children:(0,r.jsx)(t.a,{href:"https://anansi-project.github.io/docs/opds-pse/intro",children:"OPDS Page Streaming Extension 1.2"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},1670:(e,t,s)=>{s.d(t,{Z:()=>l,a:()=>i});var r=s(7378);const n={},d=r.createContext(n);function i(e){const t=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),r.createElement(d.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/416fe654.731a2720.js b/assets/js/416fe654.29b922a4.js
similarity index 98%
rename from assets/js/416fe654.731a2720.js
rename to assets/js/416fe654.29b922a4.js
index bdcfb0c2..7385faed 100644
--- a/assets/js/416fe654.731a2720.js
+++ b/assets/js/416fe654.29b922a4.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7214],{9438:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var s=n(4246),o=n(1670);const i={},r="Contribution",a={id:"contribution",title:"Contribution",description:"Code",source:"@site/docs/contribution.md",sourceDirName:".",slug:"/contribution",permalink:"/docs/contribution",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/contribution.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Command Line Interface",permalink:"/docs/guides/cli"},next:{title:"Community",permalink:"/docs/community"}},l={},c=[{value:"Code",id:"code",level:2},{value:"Application",id:"application",level:3},{value:"Tachiyomi Extension",id:"tachiyomi-extension",level:3},{value:"Website",id:"website",level:3},{value:"Translation",id:"translation",level:2},{value:"Helpful links",id:"helpful-links",level:4},{value:"Project status",id:"project-status",level:4},{value:"Donation",id:"donation",level:2},{value:"Sponsors",id:"sponsors",level:2}];function h(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"contribution",children:"Contribution"}),"\n",(0,s.jsx)(t.h2,{id:"code",children:"Code"}),"\n",(0,s.jsx)(t.p,{children:"Skilled at code? Know how to improve something or you generally want to support the creation of the app?"}),"\n",(0,s.jsx)(t.h3,{id:"application",children:"Application"}),"\n",(0,s.jsxs)(t.p,{children:["The main application: ",(0,s.jsx)(t.a,{href:"https://github.com/gotson/komga",children:"gotson/komga"})," ",(0,s.jsx)(t.img,{src:"https://img.shields.io/github/issues/gotson/komga?style=social",alt:"GitHub issues"})]}),"\n",(0,s.jsx)(t.h3,{id:"tachiyomi-extension",children:"Tachiyomi Extension"}),"\n",(0,s.jsxs)(t.p,{children:["The official Komga extension for Tachiyomi: ",(0,s.jsx)(t.a,{href:"https://github.com/tachiyomiorg/tachiyomi-extensions/tree/master/src/all/komga",children:"tachiyomiorg/tachiyomi-extensions"})]}),"\n",(0,s.jsx)(t.h3,{id:"website",children:"Website"}),"\n",(0,s.jsxs)(t.p,{children:["The repository that hosts this very website you're reading on now: ",(0,s.jsx)(t.a,{href:"https://github.com/gotson/komga-website",children:"gotson/komga-website"})]}),"\n",(0,s.jsx)(t.h2,{id:"translation",children:"Translation"}),"\n",(0,s.jsx)("a",{href:"https://hosted.weblate.org/engage/komga/",children:(0,s.jsx)("img",{src:"https://hosted.weblate.org/widgets/komga/-/svg-badge.svg",alt:"Translation status"})}),"\n",(0,s.jsxs)(t.p,{children:["Want to help translate the app to your language? You can easily help by utilizing a service we use called ",(0,s.jsx)(t.strong,{children:"Weblate"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Visit our translation project ",(0,s.jsx)(t.a,{href:"https://hosted.weblate.org/engage/komga/",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h4,{id:"helpful-links",children:"Helpful links"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.weblate.org/en/latest/user/translating.html",children:"Translators guide"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.weblate.org/en/latest/user/profile.html#secondary-languages",children:"Secondary-languages"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.weblate.org/en/latest/user/profile.html#subscriptions",children:"Subscriptions"})}),"\n"]}),"\n",(0,s.jsx)(t.h4,{id:"project-status",children:"Project status"}),"\n",(0,s.jsx)("a",{href:"https://hosted.weblate.org/engage/komga/",children:(0,s.jsx)("img",{src:"https://hosted.weblate.org/widgets/komga/-/horizontal-auto.svg",alt:"Translation status"})}),"\n",(0,s.jsx)(t.h2,{id:"donation",children:"Donation"}),"\n",(0,s.jsx)(t.p,{children:"If you can't contribute code, but you still wish to help, then you can choose to contribute financially by using the buttons below, or going directly to any of those platforms:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://opencollective.com/komga",children:"Open Collective"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://ko-fi.com/gotson",children:"Ko-Fi"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://github.com/sponsors/gotson",children:"Github Sponsors"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"sponsors",children:"Sponsors"}),"\n",(0,s.jsx)("br",{}),"\n",(0,s.jsx)("a",{href:"https://www.jetbrains.com/?from=Komga",target:"_blank",rel:"noopener",children:(0,s.jsx)("img",{src:"/assets/media/sponsors/sponsors-jetbrains.png",style:{maxHeight:"100px"}})})]})}function d(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>r});var s=n(7378);const o={},i=s.createContext(o);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7214],{9438:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>i,metadata:()=>a,toc:()=>c});var s=n(4246),o=n(1670);const i={},r="Contribution",a={id:"contribution",title:"Contribution",description:"Code",source:"@site/docs/contribution.md",sourceDirName:".",slug:"/contribution",permalink:"/docs/contribution",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/contribution.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Command Line Interface",permalink:"/docs/guides/cli"},next:{title:"Community",permalink:"/docs/community"}},l={},c=[{value:"Code",id:"code",level:2},{value:"Application",id:"application",level:3},{value:"Tachiyomi Extension",id:"tachiyomi-extension",level:3},{value:"Website",id:"website",level:3},{value:"Translation",id:"translation",level:2},{value:"Helpful links",id:"helpful-links",level:4},{value:"Project status",id:"project-status",level:4},{value:"Donation",id:"donation",level:2},{value:"Sponsors",id:"sponsors",level:2}];function h(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"contribution",children:"Contribution"}),"\n",(0,s.jsx)(t.h2,{id:"code",children:"Code"}),"\n",(0,s.jsx)(t.p,{children:"Skilled at code? Know how to improve something or you generally want to support the creation of the app?"}),"\n",(0,s.jsx)(t.h3,{id:"application",children:"Application"}),"\n",(0,s.jsxs)(t.p,{children:["The main application: ",(0,s.jsx)(t.a,{href:"https://github.com/gotson/komga",children:"gotson/komga"})," ",(0,s.jsx)(t.img,{src:"https://img.shields.io/github/issues/gotson/komga?style=social",alt:"GitHub issues"})]}),"\n",(0,s.jsx)(t.h3,{id:"tachiyomi-extension",children:"Tachiyomi Extension"}),"\n",(0,s.jsxs)(t.p,{children:["The official Komga extension for Tachiyomi: ",(0,s.jsx)(t.a,{href:"https://github.com/tachiyomiorg/tachiyomi-extensions/tree/master/src/all/komga",children:"tachiyomiorg/tachiyomi-extensions"})]}),"\n",(0,s.jsx)(t.h3,{id:"website",children:"Website"}),"\n",(0,s.jsxs)(t.p,{children:["The repository that hosts this very website you're reading on now: ",(0,s.jsx)(t.a,{href:"https://github.com/gotson/komga-website",children:"gotson/komga-website"})]}),"\n",(0,s.jsx)(t.h2,{id:"translation",children:"Translation"}),"\n",(0,s.jsx)("a",{href:"https://hosted.weblate.org/engage/komga/",children:(0,s.jsx)("img",{src:"https://hosted.weblate.org/widgets/komga/-/svg-badge.svg",alt:"Translation status"})}),"\n",(0,s.jsxs)(t.p,{children:["Want to help translate the app to your language? You can easily help by utilizing a service we use called ",(0,s.jsx)(t.strong,{children:"Weblate"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["Visit our translation project ",(0,s.jsx)(t.a,{href:"https://hosted.weblate.org/engage/komga/",children:"here"}),"."]}),"\n",(0,s.jsx)(t.h4,{id:"helpful-links",children:"Helpful links"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.weblate.org/en/latest/user/translating.html",children:"Translators guide"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.weblate.org/en/latest/user/profile.html#secondary-languages",children:"Secondary-languages"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://docs.weblate.org/en/latest/user/profile.html#subscriptions",children:"Subscriptions"})}),"\n"]}),"\n",(0,s.jsx)(t.h4,{id:"project-status",children:"Project status"}),"\n",(0,s.jsx)("a",{href:"https://hosted.weblate.org/engage/komga/",children:(0,s.jsx)("img",{src:"https://hosted.weblate.org/widgets/komga/-/horizontal-auto.svg",alt:"Translation status"})}),"\n",(0,s.jsx)(t.h2,{id:"donation",children:"Donation"}),"\n",(0,s.jsx)(t.p,{children:"If you can't contribute code, but you still wish to help, then you can choose to contribute financially by using the buttons below, or going directly to any of those platforms:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://opencollective.com/komga",children:"Open Collective"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://ko-fi.com/gotson",children:"Ko-Fi"})}),"\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://github.com/sponsors/gotson",children:"Github Sponsors"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"sponsors",children:"Sponsors"}),"\n",(0,s.jsx)("br",{}),"\n",(0,s.jsx)("a",{href:"https://www.jetbrains.com/?from=Komga",target:"_blank",rel:"noopener",children:(0,s.jsx)("img",{src:"/assets/media/sponsors/sponsors-jetbrains.png",style:{maxHeight:"100px"}})})]})}function d(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>r});var s=n(7378);const o={},i=s.createContext(o);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/49136dfa.559f00d4.js b/assets/js/49136dfa.34ce1c5b.js
similarity index 98%
rename from assets/js/49136dfa.559f00d4.js
rename to assets/js/49136dfa.34ce1c5b.js
index b8d21bcf..d3c4a6d4 100644
--- a/assets/js/49136dfa.559f00d4.js
+++ b/assets/js/49136dfa.34ce1c5b.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[473],{7854:(e,i,o)=>{o.r(i),o.d(i,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>n,metadata:()=>r,toc:()=>c});var t=o(4246),s=o(1670);const n={},l="Import Books",r={id:"guides/import-books",title:"Import Books",description:"Komga lets you import files that are outside your existing libraries directly into existing series folder (from the Import > Books screen).",source:"@site/docs/guides/import-books.md",sourceDirName:"guides",slug:"/guides/import-books",permalink:"/docs/guides/import-books",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/import-books.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Full Text Search",permalink:"/docs/guides/search"},next:{title:"Duplicate Files",permalink:"/docs/guides/duplicate-files"}},a={},c=[{value:"Scan for books",id:"scan-for-books",level:2},{value:"Select destination series",id:"select-destination-series",level:2},{value:"Check book details",id:"check-book-details",level:2},{value:"Finalize the import",id:"finalize-the-import",level:2}];function d(e){const i={em:"em",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.h1,{id:"import-books",children:"Import Books"}),"\n",(0,t.jsxs)(i.p,{children:["Komga lets you import files that are outside your existing libraries directly into existing series folder (from the ",(0,t.jsx)(i.em,{children:"Import > Books"})," screen)."]}),"\n",(0,t.jsx)(i.h2,{id:"scan-for-books",children:"Scan for books"}),"\n",(0,t.jsxs)(i.p,{children:["Start by choosing a folder to scan for eligible books, and click ",(0,t.jsx)(i.em,{children:"Scan"}),"."]}),"\n",(0,t.jsx)("img",{src:"/assets/media/guides/import-books/book-import-scan.png",style:{maxHeight:" 400px"},alt:"Scan for books"}),"\n",(0,t.jsx)(i.p,{children:"Komga will display a list of all files eligible for import."}),"\n",(0,t.jsx)(i.h2,{id:"select-destination-series",children:"Select destination series"}),"\n",(0,t.jsxs)(i.p,{children:["You will need to pick a destination series for each. You can choose individually, or for all the selected files at once using the ",(0,t.jsx)(i.em,{children:"Select Series"})," button."]}),"\n",(0,t.jsx)("img",{src:"/assets/media/guides/import-books/book-import-pick-series.png",style:{maxHeight:" 400px"},alt:"Select series"}),"\n",(0,t.jsx)(i.h2,{id:"check-book-details",children:"Check book details"}),"\n",(0,t.jsx)(i.p,{children:"For each book, you can:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"display the book details: format, number of pages, and detailed page list"}),"\n",(0,t.jsx)(i.li,{children:"browse the book pages"}),"\n",(0,t.jsx)(i.li,{children:"change the destination file name"}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"If you choose a number for a book, and a book already exists with that number, Komga will offer you to upgrade it, effectively replacing the existing file. In case of upgrade, you can:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"display the details of both books side by side"}),"\n",(0,t.jsx)(i.li,{children:"browse both books side by side"}),"\n"]}),"\n",(0,t.jsx)("img",{src:"/assets/media/guides/import-books/book-import-buttons.png",style:{maxHeight:" 400px"},alt:"Book actions"}),"\n",(0,t.jsx)(i.h2,{id:"finalize-the-import",children:"Finalize the import"}),"\n",(0,t.jsx)(i.p,{children:"Komga will import only the selected files (checkbox on the left)."}),"\n",(0,t.jsx)(i.p,{children:"You can decide to:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"move the files: files will be moved from their location, effectively deleting the original file."}),"\n",(0,t.jsx)(i.li,{children:"copy/hardlink the files: Komga will try to hardlink the files to their destination (compatible file systems only), and if that doesn't work will copy the files to their destination, leaving the original file untouched."}),"\n"]}),"\n",(0,t.jsxs)(i.p,{children:["Cick ",(0,t.jsx)(i.em,{children:"Import"})," to start the import process."]})]})}function h(e={}){const{wrapper:i}={...(0,s.a)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1670:(e,i,o)=>{o.d(i,{Z:()=>r,a:()=>l});var t=o(7378);const s={},n=t.createContext(s);function l(e){const i=t.useContext(n);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(n.Provider,{value:i},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[473],{7854:(e,i,o)=>{o.r(i),o.d(i,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>n,metadata:()=>r,toc:()=>c});var t=o(4246),s=o(1670);const n={},l="Import Books",r={id:"guides/import-books",title:"Import Books",description:"Komga lets you import files that are outside your existing libraries directly into existing series folder (from the Import > Books screen).",source:"@site/docs/guides/import-books.md",sourceDirName:"guides",slug:"/guides/import-books",permalink:"/docs/guides/import-books",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/import-books.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Full Text Search",permalink:"/docs/guides/search"},next:{title:"Duplicate Files",permalink:"/docs/guides/duplicate-files"}},a={},c=[{value:"Scan for books",id:"scan-for-books",level:2},{value:"Select destination series",id:"select-destination-series",level:2},{value:"Check book details",id:"check-book-details",level:2},{value:"Finalize the import",id:"finalize-the-import",level:2}];function d(e){const i={em:"em",h1:"h1",h2:"h2",li:"li",p:"p",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.h1,{id:"import-books",children:"Import Books"}),"\n",(0,t.jsxs)(i.p,{children:["Komga lets you import files that are outside your existing libraries directly into existing series folder (from the ",(0,t.jsx)(i.em,{children:"Import > Books"})," screen)."]}),"\n",(0,t.jsx)(i.h2,{id:"scan-for-books",children:"Scan for books"}),"\n",(0,t.jsxs)(i.p,{children:["Start by choosing a folder to scan for eligible books, and click ",(0,t.jsx)(i.em,{children:"Scan"}),"."]}),"\n",(0,t.jsx)("img",{src:"/assets/media/guides/import-books/book-import-scan.png",style:{maxHeight:" 400px"},alt:"Scan for books"}),"\n",(0,t.jsx)(i.p,{children:"Komga will display a list of all files eligible for import."}),"\n",(0,t.jsx)(i.h2,{id:"select-destination-series",children:"Select destination series"}),"\n",(0,t.jsxs)(i.p,{children:["You will need to pick a destination series for each. You can choose individually, or for all the selected files at once using the ",(0,t.jsx)(i.em,{children:"Select Series"})," button."]}),"\n",(0,t.jsx)("img",{src:"/assets/media/guides/import-books/book-import-pick-series.png",style:{maxHeight:" 400px"},alt:"Select series"}),"\n",(0,t.jsx)(i.h2,{id:"check-book-details",children:"Check book details"}),"\n",(0,t.jsx)(i.p,{children:"For each book, you can:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"display the book details: format, number of pages, and detailed page list"}),"\n",(0,t.jsx)(i.li,{children:"browse the book pages"}),"\n",(0,t.jsx)(i.li,{children:"change the destination file name"}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"If you choose a number for a book, and a book already exists with that number, Komga will offer you to upgrade it, effectively replacing the existing file. In case of upgrade, you can:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"display the details of both books side by side"}),"\n",(0,t.jsx)(i.li,{children:"browse both books side by side"}),"\n"]}),"\n",(0,t.jsx)("img",{src:"/assets/media/guides/import-books/book-import-buttons.png",style:{maxHeight:" 400px"},alt:"Book actions"}),"\n",(0,t.jsx)(i.h2,{id:"finalize-the-import",children:"Finalize the import"}),"\n",(0,t.jsx)(i.p,{children:"Komga will import only the selected files (checkbox on the left)."}),"\n",(0,t.jsx)(i.p,{children:"You can decide to:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"move the files: files will be moved from their location, effectively deleting the original file."}),"\n",(0,t.jsx)(i.li,{children:"copy/hardlink the files: Komga will try to hardlink the files to their destination (compatible file systems only), and if that doesn't work will copy the files to their destination, leaving the original file untouched."}),"\n"]}),"\n",(0,t.jsxs)(i.p,{children:["Cick ",(0,t.jsx)(i.em,{children:"Import"})," to start the import process."]})]})}function h(e={}){const{wrapper:i}={...(0,s.a)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1670:(e,i,o)=>{o.d(i,{Z:()=>r,a:()=>l});var t=o(7378);const s={},n=t.createContext(s);function l(e){const i=t.useContext(n);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(n.Provider,{value:i},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/4c25ac78.96e00548.js b/assets/js/4c25ac78.a686dda5.js
similarity index 99%
rename from assets/js/4c25ac78.96e00548.js
rename to assets/js/4c25ac78.a686dda5.js
index 13dd57b3..074adb81 100644
--- a/assets/js/4c25ac78.96e00548.js
+++ b/assets/js/4c25ac78.a686dda5.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2727],{2450:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>d,toc:()=>o});var s=i(4246),n=i(1670);const a={},r="Edit Metadata",d={id:"guides/edit-metadata",title:"Edit Metadata",description:"In some cases, when you add an item to your Library, information such as summaries or release date is retrieved from embedded metadata. These details are shown when viewing the item to provide information about the item and make using Komga a more enjoyable experience.",source:"@site/docs/guides/edit-metadata.md",sourceDirName:"guides",slug:"/guides/edit-metadata",permalink:"/docs/guides/edit-metadata",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/edit-metadata.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"One-Shots",permalink:"/docs/guides/oneshots"},next:{title:"Local Artwork Assets",permalink:"/docs/guides/local-artwork-assets"}},l={},o=[{value:"The Edit Screen",id:"the-edit-screen",level:2},{value:"Opening the Edit Screen",id:"opening-the-edit-screen",level:3},{value:"From the Item Card",id:"from-the-item-card",level:4},{value:"From the Item Details",id:"from-the-item-details",level:4},{value:"Edit Screen Details",id:"edit-screen-details",level:3},{value:"Edit Screen for Series",id:"edit-screen-for-series",level:4},{value:"General",id:"general",level:5},{value:"Tags",id:"tags",level:5},{value:"Edit Screen for Books",id:"edit-screen-for-books",level:4},{value:"General",id:"general-1",level:5},{value:"Authors",id:"authors",level:5},{value:"Tags",id:"tags-1",level:5},{value:"Using the Edit Screen",id:"using-the-edit-screen",level:2},{value:"Editing Standard Fields, Tags or Authors",id:"editing-standard-fields-tags-or-authors",level:3},{value:"Changing Fields",id:"changing-fields",level:3},{value:"Locking And Unlocking",id:"locking-and-unlocking",level:3},{value:"Sort Titles",id:"sort-titles",level:3},{value:"Sort Numbers",id:"sort-numbers",level:3}];function h(e){const t={code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"edit-metadata",children:"Edit Metadata"}),"\n",(0,s.jsx)(t.p,{children:"In some cases, when you add an item to your Library, information such as summaries or release date is retrieved from embedded metadata. These details are shown when viewing the item to provide information about the item and make using Komga a more enjoyable experience."}),"\n",(0,s.jsx)(t.p,{children:"You may wish to customize or change the information associated with a library item."}),"\n",(0,s.jsx)(t.h2,{id:"the-edit-screen",children:"The Edit Screen"}),"\n",(0,s.jsx)(t.h3,{id:"opening-the-edit-screen",children:"Opening the Edit Screen"}),"\n",(0,s.jsx)(t.p,{children:"The edit screen for an item can be accessed in several ways, depending on where you are."}),"\n",(0,s.jsx)(t.h4,{id:"from-the-item-card",children:"From the Item Card"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"Hover over the item card"}),"\n",(0,s.jsxs)(t.li,{children:["Click the ",(0,s.jsx)("img",{src:"/assets/media/guides/edit-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," icon"]}),"\n"]}),"\n",(0,s.jsx)(t.h4,{id:"from-the-item-details",children:"From the Item Details"}),"\n",(0,s.jsxs)(t.p,{children:["When viewing the details for a Library item, click the ",(0,s.jsx)("img",{src:"/assets/media/guides/edit-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," button in the top actionbar."]}),"\n",(0,s.jsx)(t.h3,{id:"edit-screen-details",children:"Edit Screen Details"}),"\n",(0,s.jsx)(t.p,{children:"The Edit Screen allows you to access title, authors, summary, tags, and more. There are several areas of the Edit Screen that can be accessed from the tabs on the left side."}),"\n",(0,s.jsx)(t.h4,{id:"edit-screen-for-series",children:"Edit Screen for Series"}),"\n",(0,s.jsx)(t.h5,{id:"general",children:"General"}),"\n",(0,s.jsx)(t.p,{children:"The General screen allows you to edit details such as the title, sort title, summary, and more."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-series-general-2.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-series-general-2.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h5,{id:"tags",children:"Tags"}),"\n",(0,s.jsx)(t.p,{children:"The Tags page includes metadata such as genres and tags. These are items that can have more than one value and are typically available for sorting or filtering."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-series-tags.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h4,{id:"edit-screen-for-books",children:"Edit Screen for Books"}),"\n",(0,s.jsx)(t.h5,{id:"general-1",children:"General"}),"\n",(0,s.jsx)(t.p,{children:"The General screen allows you to edit details such as the title, number, summary, and more."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-book-general.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h5,{id:"authors",children:"Authors"}),"\n",(0,s.jsx)(t.p,{children:"The Authors page includes metadata such as writers, pencillers, inkers, and more. These are items that can have more than one value and are typically available for sorting or filtering."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-book-authors.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h5,{id:"tags-1",children:"Tags"}),"\n",(0,s.jsx)(t.p,{children:"The Tags page includes metadata such as genres and tags. These are items that can have more than one value and are typically available for sorting or filtering."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-book-tags.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h2,{id:"using-the-edit-screen",children:"Using the Edit Screen"}),"\n",(0,s.jsx)(t.h3,{id:"editing-standard-fields-tags-or-authors",children:"Editing Standard Fields, Tags or Authors"}),"\n",(0,s.jsx)(t.h3,{id:"changing-fields",children:"Changing Fields"}),"\n",(0,s.jsx)(t.p,{children:"To edit the details for a particular piece of metadata:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Choose the tab of category you want to change on the left, then click the detail field"}),"\n",(0,s.jsx)(t.li,{children:"Type or paste the changes"}),"\n",(0,s.jsx)(t.li,{children:"For items in the Tags or Authors area, simply start typing the name. If the name already exists in the database, it will appear for you and you can select it. Otherwise, simply type out the name like normal."}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To remove an item, click the ",(0,s.jsx)(t.code,{children:"X"})," next to the entry."]}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/author-chip.png",style:{maxHeight:"80px"}}),"\n",(0,s.jsx)(t.h3,{id:"locking-and-unlocking",children:"Locking And Unlocking"}),"\n",(0,s.jsx)(t.p,{children:"If you\u2019ve made an edit to a field, it is automatically locked. A locked field will not be altered when an item is refreshed. To lock or unlock a field:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Edit the field and it will lock automatically"}),"\n",(0,s.jsx)(t.li,{children:"Click the lock icon to either lock or unlock the field"}),"\n",(0,s.jsx)(t.li,{children:"A field is locked when the lock icon is colored orange"}),"\n"]}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/locked-field.png",style:{maxHeight:"80px"}}),"\n",(0,s.jsx)(t.h3,{id:"sort-titles",children:"Sort Titles"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"Sort Title"})," field lets you control how items are sorted alphabetically. The ",(0,s.jsx)(t.code,{children:"Title"})," field is what will be displayed, but the ",(0,s.jsx)(t.code,{children:"Sort Title"})," field is used for sorting."]}),"\n",(0,s.jsx)(t.p,{children:'For example, if you want to ignore the article ("The") for your series like "The Boys":'}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:'Find the "The Boys" series and open the Edit Details screen'}),"\n",(0,s.jsxs)(t.li,{children:["Click in the ",(0,s.jsx)(t.code,{children:"Sort Title"}),' and type "Boys (The)" then ',(0,s.jsx)(t.code,{children:"Save Changes"})]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:['The result is that the series "The Boys" will appear together in the list under the letter B and sorted as entered in the ',(0,s.jsx)(t.code,{children:"Sort Title"})," field."]}),"\n",(0,s.jsx)(t.h3,{id:"sort-numbers",children:"Sort Numbers"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"Sort Number"})," field lets you control how items are sorted within a series. The ",(0,s.jsx)(t.code,{children:"Number"})," field is what will be displayed, but the ",(0,s.jsx)(t.code,{children:"Sort Number"})," field is used for sorting."]}),"\n",(0,s.jsx)(t.p,{children:'For example, if you have a "2015 Special" that is between book 24 and 25:'}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["set the ",(0,s.jsx)(t.code,{children:"Number"}),' to "2015 Special"']}),"\n",(0,s.jsxs)(t.li,{children:["set the ",(0,s.jsx)(t.code,{children:"Sort Number"}),' to "24.5"']}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:'The result is that the special book will appear between book 24 and 25, and will show "2015 Special" as its number.'})]})}function c(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1670:(e,t,i)=>{i.d(t,{Z:()=>d,a:()=>r});var s=i(7378);const n={},a=s.createContext(n);function r(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2727],{2450:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>d,toc:()=>o});var s=i(4246),n=i(1670);const a={},r="Edit Metadata",d={id:"guides/edit-metadata",title:"Edit Metadata",description:"In some cases, when you add an item to your Library, information such as summaries or release date is retrieved from embedded metadata. These details are shown when viewing the item to provide information about the item and make using Komga a more enjoyable experience.",source:"@site/docs/guides/edit-metadata.md",sourceDirName:"guides",slug:"/guides/edit-metadata",permalink:"/docs/guides/edit-metadata",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/edit-metadata.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"One-Shots",permalink:"/docs/guides/oneshots"},next:{title:"Local Artwork Assets",permalink:"/docs/guides/local-artwork-assets"}},l={},o=[{value:"The Edit Screen",id:"the-edit-screen",level:2},{value:"Opening the Edit Screen",id:"opening-the-edit-screen",level:3},{value:"From the Item Card",id:"from-the-item-card",level:4},{value:"From the Item Details",id:"from-the-item-details",level:4},{value:"Edit Screen Details",id:"edit-screen-details",level:3},{value:"Edit Screen for Series",id:"edit-screen-for-series",level:4},{value:"General",id:"general",level:5},{value:"Tags",id:"tags",level:5},{value:"Edit Screen for Books",id:"edit-screen-for-books",level:4},{value:"General",id:"general-1",level:5},{value:"Authors",id:"authors",level:5},{value:"Tags",id:"tags-1",level:5},{value:"Using the Edit Screen",id:"using-the-edit-screen",level:2},{value:"Editing Standard Fields, Tags or Authors",id:"editing-standard-fields-tags-or-authors",level:3},{value:"Changing Fields",id:"changing-fields",level:3},{value:"Locking And Unlocking",id:"locking-and-unlocking",level:3},{value:"Sort Titles",id:"sort-titles",level:3},{value:"Sort Numbers",id:"sort-numbers",level:3}];function h(e){const t={code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",li:"li",ol:"ol",p:"p",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"edit-metadata",children:"Edit Metadata"}),"\n",(0,s.jsx)(t.p,{children:"In some cases, when you add an item to your Library, information such as summaries or release date is retrieved from embedded metadata. These details are shown when viewing the item to provide information about the item and make using Komga a more enjoyable experience."}),"\n",(0,s.jsx)(t.p,{children:"You may wish to customize or change the information associated with a library item."}),"\n",(0,s.jsx)(t.h2,{id:"the-edit-screen",children:"The Edit Screen"}),"\n",(0,s.jsx)(t.h3,{id:"opening-the-edit-screen",children:"Opening the Edit Screen"}),"\n",(0,s.jsx)(t.p,{children:"The edit screen for an item can be accessed in several ways, depending on where you are."}),"\n",(0,s.jsx)(t.h4,{id:"from-the-item-card",children:"From the Item Card"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"Hover over the item card"}),"\n",(0,s.jsxs)(t.li,{children:["Click the ",(0,s.jsx)("img",{src:"/assets/media/guides/edit-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," icon"]}),"\n"]}),"\n",(0,s.jsx)(t.h4,{id:"from-the-item-details",children:"From the Item Details"}),"\n",(0,s.jsxs)(t.p,{children:["When viewing the details for a Library item, click the ",(0,s.jsx)("img",{src:"/assets/media/guides/edit-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," button in the top actionbar."]}),"\n",(0,s.jsx)(t.h3,{id:"edit-screen-details",children:"Edit Screen Details"}),"\n",(0,s.jsx)(t.p,{children:"The Edit Screen allows you to access title, authors, summary, tags, and more. There are several areas of the Edit Screen that can be accessed from the tabs on the left side."}),"\n",(0,s.jsx)(t.h4,{id:"edit-screen-for-series",children:"Edit Screen for Series"}),"\n",(0,s.jsx)(t.h5,{id:"general",children:"General"}),"\n",(0,s.jsx)(t.p,{children:"The General screen allows you to edit details such as the title, sort title, summary, and more."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-series-general-2.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-series-general-2.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h5,{id:"tags",children:"Tags"}),"\n",(0,s.jsx)(t.p,{children:"The Tags page includes metadata such as genres and tags. These are items that can have more than one value and are typically available for sorting or filtering."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-series-tags.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h4,{id:"edit-screen-for-books",children:"Edit Screen for Books"}),"\n",(0,s.jsx)(t.h5,{id:"general-1",children:"General"}),"\n",(0,s.jsx)(t.p,{children:"The General screen allows you to edit details such as the title, number, summary, and more."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-book-general.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h5,{id:"authors",children:"Authors"}),"\n",(0,s.jsx)(t.p,{children:"The Authors page includes metadata such as writers, pencillers, inkers, and more. These are items that can have more than one value and are typically available for sorting or filtering."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-book-authors.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h5,{id:"tags-1",children:"Tags"}),"\n",(0,s.jsx)(t.p,{children:"The Tags page includes metadata such as genres and tags. These are items that can have more than one value and are typically available for sorting or filtering."}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/edit-book-tags.png",style:{maxHeight:"300px"}}),"\n",(0,s.jsx)(t.h2,{id:"using-the-edit-screen",children:"Using the Edit Screen"}),"\n",(0,s.jsx)(t.h3,{id:"editing-standard-fields-tags-or-authors",children:"Editing Standard Fields, Tags or Authors"}),"\n",(0,s.jsx)(t.h3,{id:"changing-fields",children:"Changing Fields"}),"\n",(0,s.jsx)(t.p,{children:"To edit the details for a particular piece of metadata:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Choose the tab of category you want to change on the left, then click the detail field"}),"\n",(0,s.jsx)(t.li,{children:"Type or paste the changes"}),"\n",(0,s.jsx)(t.li,{children:"For items in the Tags or Authors area, simply start typing the name. If the name already exists in the database, it will appear for you and you can select it. Otherwise, simply type out the name like normal."}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["To remove an item, click the ",(0,s.jsx)(t.code,{children:"X"})," next to the entry."]}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/author-chip.png",style:{maxHeight:"80px"}}),"\n",(0,s.jsx)(t.h3,{id:"locking-and-unlocking",children:"Locking And Unlocking"}),"\n",(0,s.jsx)(t.p,{children:"If you\u2019ve made an edit to a field, it is automatically locked. A locked field will not be altered when an item is refreshed. To lock or unlock a field:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Edit the field and it will lock automatically"}),"\n",(0,s.jsx)(t.li,{children:"Click the lock icon to either lock or unlock the field"}),"\n",(0,s.jsx)(t.li,{children:"A field is locked when the lock icon is colored orange"}),"\n"]}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/edit-metadata/locked-field.png",style:{maxHeight:"80px"}}),"\n",(0,s.jsx)(t.h3,{id:"sort-titles",children:"Sort Titles"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"Sort Title"})," field lets you control how items are sorted alphabetically. The ",(0,s.jsx)(t.code,{children:"Title"})," field is what will be displayed, but the ",(0,s.jsx)(t.code,{children:"Sort Title"})," field is used for sorting."]}),"\n",(0,s.jsx)(t.p,{children:'For example, if you want to ignore the article ("The") for your series like "The Boys":'}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:'Find the "The Boys" series and open the Edit Details screen'}),"\n",(0,s.jsxs)(t.li,{children:["Click in the ",(0,s.jsx)(t.code,{children:"Sort Title"}),' and type "Boys (The)" then ',(0,s.jsx)(t.code,{children:"Save Changes"})]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:['The result is that the series "The Boys" will appear together in the list under the letter B and sorted as entered in the ',(0,s.jsx)(t.code,{children:"Sort Title"})," field."]}),"\n",(0,s.jsx)(t.h3,{id:"sort-numbers",children:"Sort Numbers"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.code,{children:"Sort Number"})," field lets you control how items are sorted within a series. The ",(0,s.jsx)(t.code,{children:"Number"})," field is what will be displayed, but the ",(0,s.jsx)(t.code,{children:"Sort Number"})," field is used for sorting."]}),"\n",(0,s.jsx)(t.p,{children:'For example, if you have a "2015 Special" that is between book 24 and 25:'}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["set the ",(0,s.jsx)(t.code,{children:"Number"}),' to "2015 Special"']}),"\n",(0,s.jsxs)(t.li,{children:["set the ",(0,s.jsx)(t.code,{children:"Sort Number"}),' to "24.5"']}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:'The result is that the special book will appear between book 24 and 25, and will show "2015 Special" as its number.'})]})}function c(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},1670:(e,t,i)=>{i.d(t,{Z:()=>d,a:()=>r});var s=i(7378);const n={},a=s.createContext(n);function r(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/4cc4731f.f9653892.js b/assets/js/4cc4731f.a1b013e6.js
similarity index 99%
rename from assets/js/4cc4731f.f9653892.js
rename to assets/js/4cc4731f.a1b013e6.js
index da1b3514..293705aa 100644
--- a/assets/js/4cc4731f.f9653892.js
+++ b/assets/js/4cc4731f.a1b013e6.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1169],{2588:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var i=t(4246),a=t(1670);const s={},l="Install via third-party integrations",o={id:"installation/thirdparty",title:"Install via third-party integrations",description:"Those methods are not officially supported, if you encounter installation issues please contact the respective authors.",source:"@site/docs/installation/thirdparty.md",sourceDirName:"installation",slug:"/installation/thirdparty",permalink:"/docs/installation/thirdparty",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/installation/thirdparty.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Run with the Jar file",permalink:"/docs/installation/jar"},next:{title:"Configuration options",permalink:"/docs/installation/configuration"}},r={},d=[{value:"Windows Installer and Updater",id:"windows-installer-and-updater",level:2},{value:"Scoop (Windows)",id:"scoop-windows",level:2},{value:"Installation",id:"installation",level:3},{value:"1. (Skip if JDK is installed) Install JDK",id:"1-skip-if-jdk-is-installed-install-jdk",level:4},{value:"2. Install Komga",id:"2-install-komga",level:4},{value:"Manage",id:"manage",level:3},{value:"Run",id:"run",level:4},{value:"Update",id:"update",level:4},{value:"Uninstall",id:"uninstall",level:4},{value:"AUR - Arch User Repository",id:"aur---arch-user-repository",level:2},{value:"Installation",id:"installation-1",level:3},{value:"Run",id:"run-1",level:3},{value:"QNAP",id:"qnap",level:2},{value:"FreeNAS",id:"freenas",level:2},{value:"YunoHost",id:"yunohost",level:2},{value:"TrueNAS SCALE",id:"truenas-scale",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"install-via-third-party-integrations",children:"Install via third-party integrations"}),"\n",(0,i.jsx)(n.admonition,{title:"Warning",type:"warning",children:(0,i.jsx)(n.p,{children:"Those methods are not officially supported, if you encounter installation issues please contact the respective authors."})}),"\n",(0,i.jsx)(n.h2,{id:"windows-installer-and-updater",children:"Windows Installer and Updater"}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.a,{href:"https://github.com/losslesspng/SetUpKomgaJava",children:"Powershell script"})," to get up and running with Komga."]}),"\n",(0,i.jsx)(n.h2,{id:"scoop-windows",children:"Scoop (Windows)"}),"\n",(0,i.jsxs)(n.p,{children:["Komga is available in ",(0,i.jsx)(n.a,{href:"https://github.com/ScoopInstaller/Scoop",children:"Scoop"}),"'s ",(0,i.jsx)(n.a,{href:"https://github.com/ScoopInstaller/Extras",children:"extras"})," bucket."]}),"\n",(0,i.jsx)(n.h3,{id:"installation",children:"Installation"}),"\n",(0,i.jsxs)(n.p,{children:["You need Scoop to use this installation method. Instruction to install Scoop can be found ",(0,i.jsx)(n.a,{href:"https://github.com/ScoopInstaller/Scoop#installation",children:"here"}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"1-skip-if-jdk-is-installed-install-jdk",children:"1. (Skip if JDK is installed) Install JDK"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"scoop bucket add java"})," and then run ",(0,i.jsx)(n.code,{children:"scoop install java/temurin-lts-jdk"}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"2-install-komga",children:"2. Install Komga"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"scoop bucket add extras"})," and then run ",(0,i.jsx)(n.code,{children:"scoop install komga"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"manage",children:"Manage"}),"\n",(0,i.jsx)(n.h4,{id:"run",children:"Run"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"komga"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Note: Default config dir is ",(0,i.jsx)(n.code,{children:"%USERPROFILE%\\scoop\\apps\\komga\\current\\config"})]}),"\n",(0,i.jsx)(n.h4,{id:"update",children:"Update"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"scoop update komga"}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"uninstall",children:"Uninstall"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"scoop uninstall komga"})]}),"\n",(0,i.jsx)(n.h2,{id:"aur---arch-user-repository",children:"AUR - Arch User Repository"}),"\n",(0,i.jsxs)(n.p,{children:["Komga is available as an ",(0,i.jsx)(n.a,{href:"https://aur.archlinux.org/packages/komga/",children:"AUR"})," package."]}),"\n",(0,i.jsx)(n.h3,{id:"installation-1",children:"Installation"}),"\n",(0,i.jsxs)(n.p,{children:["It can be installed using ",(0,i.jsx)(n.code,{children:"yay -S komga"})," (or any other AUR package manager)."]}),"\n",(0,i.jsx)(n.h3,{id:"run-1",children:"Run"}),"\n",(0,i.jsxs)(n.p,{children:["Just run ",(0,i.jsx)(n.code,{children:"komga"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"qnap",children:"QNAP"}),"\n",(0,i.jsxs)(n.p,{children:["Komga is available as a ",(0,i.jsx)(n.a,{href:"https://www.qnapclub.eu/en/qpkg/853",children:"QPKG"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"freenas",children:"FreeNAS"}),"\n",(0,i.jsxs)(n.p,{children:["There is a ",(0,i.jsx)(n.a,{href:"https://blog.tommyku.com/blog/deploying-komga-on-freenas-jail/",children:"tutorial"})," to install Komga on FreeNAS jail."]}),"\n",(0,i.jsx)(n.h2,{id:"yunohost",children:"YunoHost"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://install-app.yunohost.org/?app=komga",children:(0,i.jsx)(n.img,{src:"https://install-app.yunohost.org/install-with-yunohost.svg",alt:"Install Komga with YunoHost"})})}),"\n",(0,i.jsx)(n.h2,{id:"truenas-scale",children:"TrueNAS SCALE"}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"SCALE is still in beta"})}),"\n",(0,i.jsxs)(n.p,{children:["There is a ",(0,i.jsx)(n.a,{href:"https://truecharts.org/manual/Quick-Start%20Guides/01-Open-Apps/",children:"tutorial"})," to install Truecharts on TrueNAS SCALE. Follow steps 1-4 to add TrueCharts to SCALE.\nIn order to create komga you need to find it under the TrueCharts apps in SCALE.\nScale needs access to ip range of: 172.16.0.0/16 in order to deploy.\nKeep all defaults and change:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Enter a name with lowercase letters."}),"\n",(0,i.jsxs)(n.li,{children:['Change the update type to "Rolling Update',":Create",' new pods and then kill old ones"']}),"\n",(0,i.jsx)(n.li,{children:"Next"}),"\n",(0,i.jsx)(n.li,{children:"You can change the node port to whatever you prefer, this is the port you will be accessing komga over."}),"\n",(0,i.jsx)(n.li,{children:"This is the Komga Data source, add what you need."}),"\n",(0,i.jsx)(n.li,{children:"Next"}),"\n",(0,i.jsx)(n.li,{children:"Next"}),"\n",(0,i.jsx)(n.li,{children:"Choose the container resources (I chose default), Next."}),"\n",(0,i.jsx)(n.li,{children:"I left this at disabled, Next."}),"\n",(0,i.jsx)(n.li,{children:"Install Komga and let it run.\nOnce its installed click portal and you now have komga setup in SCALE."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1670:(e,n,t)=>{t.d(n,{Z:()=>o,a:()=>l});var i=t(7378);const a={},s=i.createContext(a);function l(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1169],{2588:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>o,toc:()=>d});var i=t(4246),a=t(1670);const s={},l="Install via third-party integrations",o={id:"installation/thirdparty",title:"Install via third-party integrations",description:"Those methods are not officially supported, if you encounter installation issues please contact the respective authors.",source:"@site/docs/installation/thirdparty.md",sourceDirName:"installation",slug:"/installation/thirdparty",permalink:"/docs/installation/thirdparty",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/installation/thirdparty.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Run with the Jar file",permalink:"/docs/installation/jar"},next:{title:"Configuration options",permalink:"/docs/installation/configuration"}},r={},d=[{value:"Windows Installer and Updater",id:"windows-installer-and-updater",level:2},{value:"Scoop (Windows)",id:"scoop-windows",level:2},{value:"Installation",id:"installation",level:3},{value:"1. (Skip if JDK is installed) Install JDK",id:"1-skip-if-jdk-is-installed-install-jdk",level:4},{value:"2. Install Komga",id:"2-install-komga",level:4},{value:"Manage",id:"manage",level:3},{value:"Run",id:"run",level:4},{value:"Update",id:"update",level:4},{value:"Uninstall",id:"uninstall",level:4},{value:"AUR - Arch User Repository",id:"aur---arch-user-repository",level:2},{value:"Installation",id:"installation-1",level:3},{value:"Run",id:"run-1",level:3},{value:"QNAP",id:"qnap",level:2},{value:"FreeNAS",id:"freenas",level:2},{value:"YunoHost",id:"yunohost",level:2},{value:"TrueNAS SCALE",id:"truenas-scale",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",...(0,a.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h1,{id:"install-via-third-party-integrations",children:"Install via third-party integrations"}),"\n",(0,i.jsx)(n.admonition,{title:"Warning",type:"warning",children:(0,i.jsx)(n.p,{children:"Those methods are not officially supported, if you encounter installation issues please contact the respective authors."})}),"\n",(0,i.jsx)(n.h2,{id:"windows-installer-and-updater",children:"Windows Installer and Updater"}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.a,{href:"https://github.com/losslesspng/SetUpKomgaJava",children:"Powershell script"})," to get up and running with Komga."]}),"\n",(0,i.jsx)(n.h2,{id:"scoop-windows",children:"Scoop (Windows)"}),"\n",(0,i.jsxs)(n.p,{children:["Komga is available in ",(0,i.jsx)(n.a,{href:"https://github.com/ScoopInstaller/Scoop",children:"Scoop"}),"'s ",(0,i.jsx)(n.a,{href:"https://github.com/ScoopInstaller/Extras",children:"extras"})," bucket."]}),"\n",(0,i.jsx)(n.h3,{id:"installation",children:"Installation"}),"\n",(0,i.jsxs)(n.p,{children:["You need Scoop to use this installation method. Instruction to install Scoop can be found ",(0,i.jsx)(n.a,{href:"https://github.com/ScoopInstaller/Scoop#installation",children:"here"}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"1-skip-if-jdk-is-installed-install-jdk",children:"1. (Skip if JDK is installed) Install JDK"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"scoop bucket add java"})," and then run ",(0,i.jsx)(n.code,{children:"scoop install java/temurin-lts-jdk"}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"2-install-komga",children:"2. Install Komga"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"scoop bucket add extras"})," and then run ",(0,i.jsx)(n.code,{children:"scoop install komga"}),"."]}),"\n",(0,i.jsx)(n.h3,{id:"manage",children:"Manage"}),"\n",(0,i.jsx)(n.h4,{id:"run",children:"Run"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"komga"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["Note: Default config dir is ",(0,i.jsx)(n.code,{children:"%USERPROFILE%\\scoop\\apps\\komga\\current\\config"})]}),"\n",(0,i.jsx)(n.h4,{id:"update",children:"Update"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"scoop update komga"}),"."]}),"\n",(0,i.jsx)(n.h4,{id:"uninstall",children:"Uninstall"}),"\n",(0,i.jsxs)(n.p,{children:["Run ",(0,i.jsx)(n.code,{children:"scoop uninstall komga"})]}),"\n",(0,i.jsx)(n.h2,{id:"aur---arch-user-repository",children:"AUR - Arch User Repository"}),"\n",(0,i.jsxs)(n.p,{children:["Komga is available as an ",(0,i.jsx)(n.a,{href:"https://aur.archlinux.org/packages/komga/",children:"AUR"})," package."]}),"\n",(0,i.jsx)(n.h3,{id:"installation-1",children:"Installation"}),"\n",(0,i.jsxs)(n.p,{children:["It can be installed using ",(0,i.jsx)(n.code,{children:"yay -S komga"})," (or any other AUR package manager)."]}),"\n",(0,i.jsx)(n.h3,{id:"run-1",children:"Run"}),"\n",(0,i.jsxs)(n.p,{children:["Just run ",(0,i.jsx)(n.code,{children:"komga"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"qnap",children:"QNAP"}),"\n",(0,i.jsxs)(n.p,{children:["Komga is available as a ",(0,i.jsx)(n.a,{href:"https://www.qnapclub.eu/en/qpkg/853",children:"QPKG"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"freenas",children:"FreeNAS"}),"\n",(0,i.jsxs)(n.p,{children:["There is a ",(0,i.jsx)(n.a,{href:"https://blog.tommyku.com/blog/deploying-komga-on-freenas-jail/",children:"tutorial"})," to install Komga on FreeNAS jail."]}),"\n",(0,i.jsx)(n.h2,{id:"yunohost",children:"YunoHost"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://install-app.yunohost.org/?app=komga",children:(0,i.jsx)(n.img,{src:"https://install-app.yunohost.org/install-with-yunohost.svg",alt:"Install Komga with YunoHost"})})}),"\n",(0,i.jsx)(n.h2,{id:"truenas-scale",children:"TrueNAS SCALE"}),"\n",(0,i.jsx)(n.admonition,{type:"warning",children:(0,i.jsx)(n.p,{children:"SCALE is still in beta"})}),"\n",(0,i.jsxs)(n.p,{children:["There is a ",(0,i.jsx)(n.a,{href:"https://truecharts.org/manual/Quick-Start%20Guides/01-Open-Apps/",children:"tutorial"})," to install Truecharts on TrueNAS SCALE. Follow steps 1-4 to add TrueCharts to SCALE.\nIn order to create komga you need to find it under the TrueCharts apps in SCALE.\nScale needs access to ip range of: 172.16.0.0/16 in order to deploy.\nKeep all defaults and change:"]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Enter a name with lowercase letters."}),"\n",(0,i.jsxs)(n.li,{children:['Change the update type to "Rolling Update',":Create",' new pods and then kill old ones"']}),"\n",(0,i.jsx)(n.li,{children:"Next"}),"\n",(0,i.jsx)(n.li,{children:"You can change the node port to whatever you prefer, this is the port you will be accessing komga over."}),"\n",(0,i.jsx)(n.li,{children:"This is the Komga Data source, add what you need."}),"\n",(0,i.jsx)(n.li,{children:"Next"}),"\n",(0,i.jsx)(n.li,{children:"Next"}),"\n",(0,i.jsx)(n.li,{children:"Choose the container resources (I chose default), Next."}),"\n",(0,i.jsx)(n.li,{children:"I left this at disabled, Next."}),"\n",(0,i.jsx)(n.li,{children:"Install Komga and let it run.\nOnce its installed click portal and you now have komga setup in SCALE."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,a.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},1670:(e,n,t)=>{t.d(n,{Z:()=>o,a:()=>l});var i=t(7378);const a={},s=i.createContext(a);function l(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/55519d27.bdb515e8.js b/assets/js/55519d27.7348b15c.js
similarity index 99%
rename from assets/js/55519d27.bdb515e8.js
rename to assets/js/55519d27.7348b15c.js
index 846602a1..0a9b1f48 100644
--- a/assets/js/55519d27.bdb515e8.js
+++ b/assets/js/55519d27.7348b15c.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4114],{8003:(e,i,r)=>{r.r(i),r.d(i,{assets:()=>o,contentTitle:()=>t,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var s=r(4246),n=r(1670);const a={},t="Libraries",l={id:"guides/libraries",title:"Libraries",description:"You can separate content in different libraries, a library is a group of books. Libraries access can also be restricted to specific users.",source:"@site/docs/guides/libraries.md",sourceDirName:"guides",slug:"/guides/libraries",permalink:"/docs/guides/libraries",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/libraries.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Desktop Application",permalink:"/docs/guides/desktop"},next:{title:"Emptying Library Trash",permalink:"/docs/guides/trash"}},o={},c=[{value:"Creating libraries",id:"creating-libraries",level:2},{value:"Scanner",id:"scanner",level:3},{value:"Empty trash automatically after every scan",id:"empty-trash-automatically-after-every-scan",level:4},{value:"Force directory modified time",id:"force-directory-modified-time",level:4},{value:"Scan on startup",id:"scan-on-startup",level:4},{value:"Scan interval",id:"scan-interval",level:4},{value:"One-Shots directory",id:"one-shots-directory",level:4},{value:"Scan for these file types",id:"scan-for-these-file-types",level:4},{value:"Directory exclusions",id:"directory-exclusions",level:4},{value:"Options",id:"options",level:3},{value:"Analysis",id:"analysis",level:4},{value:"Compute hash for files",id:"compute-hash-for-files",level:5},{value:"Compute hash for pages",id:"compute-hash-for-pages",level:5},{value:"Analyze page dimensions",id:"analyze-page-dimensions",level:5},{value:"File management",id:"file-management",level:4},{value:"Automatically repair incorrect file extensions",id:"automatically-repair-incorrect-file-extensions",level:5},{value:"Automatically convert to CBZ",id:"automatically-convert-to-cbz",level:5},{value:"Series cover",id:"series-cover",level:4},{value:"Metadata",id:"metadata",level:3},{value:"Edit a library",id:"edit-a-library",level:2},{value:"Delete a library",id:"delete-a-library",level:2}];function d(e){const i={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"libraries",children:"Libraries"}),"\n",(0,s.jsx)(i.p,{children:"You can separate content in different libraries, a library is a group of books. Libraries access can also be restricted to specific users."}),"\n",(0,s.jsx)(i.p,{children:"Each library has a root folder, and no library can share any part of their path."}),"\n",(0,s.jsxs)(i.p,{children:["For example if you have a library with a root path of ",(0,s.jsx)(i.code,{children:"/books/mangas"}),", you can't create a library with a root path of ",(0,s.jsx)(i.code,{children:"/books"}),", because the two root paths would overlap. You can however create a library with a root path of ",(0,s.jsx)(i.code,{children:"/books/comics"}),"."]}),"\n",(0,s.jsx)(i.h2,{id:"creating-libraries",children:"Creating libraries"}),"\n",(0,s.jsx)(i.p,{children:"From the web interface:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["click on the ",(0,s.jsx)(i.em,{children:"+"})," icon next to ",(0,s.jsx)(i.em,{children:"Libraries"})," in the sidebar ",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add.png",style:{verticalAlign:"middle",maxHeight:"32px"}})]}),"\n",(0,s.jsxs)(i.li,{children:["choose a ",(0,s.jsx)(i.em,{children:"Name"})," for your library"]}),"\n",(0,s.jsxs)(i.li,{children:["click the ",(0,s.jsx)(i.em,{children:"Browse"})," button and select a root folder containing your books"]}),"\n",(0,s.jsxs)(i.li,{children:["click ",(0,s.jsx)(i.em,{children:"Add"})]}),"\n"]}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add-dialog.png",style:{maxHeight:"300px"},alt:"Add Library Dialog"}),"\n",(0,s.jsx)(i.p,{children:"You can also specify extra options."}),"\n",(0,s.jsx)(i.h3,{id:"scanner",children:"Scanner"}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add-scanner.png",style:{maxHeight:"400px"},alt:"Add Library Dialog Scanner"}),"\n",(0,s.jsx)(i.h4,{id:"empty-trash-automatically-after-every-scan",children:"Empty trash automatically after every scan"}),"\n",(0,s.jsxs)(i.p,{children:["See ",(0,s.jsx)(i.a,{href:"/docs/guides/trash#automatically-empty-trash",children:"Emptying library trash"}),"."]}),"\n",(0,s.jsx)(i.h4,{id:"force-directory-modified-time",children:"Force directory modified time"}),"\n",(0,s.jsx)(i.p,{children:"This will force the last modified time of a directory as the maximum from its own last modified time and the last modified time from all the books inside the directory. This should be used only if your filesystem does not update the last modified time of a directory when files inside it are modified (Google Drive for instance)."}),"\n",(0,s.jsx)(i.h4,{id:"scan-on-startup",children:"Scan on startup"}),"\n",(0,s.jsx)(i.p,{children:"If enabled, the library will be scanner when Komga starts."}),"\n",(0,s.jsx)(i.h4,{id:"scan-interval",children:"Scan interval"}),"\n",(0,s.jsx)(i.p,{children:"Choose to scan all of your libraries on a time-based interval. Choose the interval to use from the dropdown. Available frequencies:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"disabled"}),"\n",(0,s.jsx)(i.li,{children:"hourly"}),"\n",(0,s.jsx)(i.li,{children:"every 6 hours"}),"\n",(0,s.jsx)(i.li,{children:"every 12 hours"}),"\n",(0,s.jsx)(i.li,{children:"daily"}),"\n",(0,s.jsx)(i.li,{children:"weekly"}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"The scan interval is based on when Komga started, or when you changed that setting for the library. For instance, if you have it set to \u201cevery 6 hours\u201d and you start your server at 12:35, then a scan will be started around 18:35."}),"\n",(0,s.jsx)(i.h4,{id:"one-shots-directory",children:"One-Shots directory"}),"\n",(0,s.jsxs)(i.p,{children:["See ",(0,s.jsx)(i.a,{href:"/docs/guides/oneshots",children:"One-Shots"}),"."]}),"\n",(0,s.jsx)(i.h4,{id:"scan-for-these-file-types",children:"Scan for these file types"}),"\n",(0,s.jsx)(i.p,{children:"This will configure the scanner to only look for files with specific file extensions. Available types:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["Comic Book archives: ",(0,s.jsx)(i.code,{children:"cbz"}),", ",(0,s.jsx)(i.code,{children:"zip"}),", ",(0,s.jsx)(i.code,{children:"cbr"}),", ",(0,s.jsx)(i.code,{children:"rar"})]}),"\n",(0,s.jsxs)(i.li,{children:["PDF: ",(0,s.jsx)(i.code,{children:"pdf"})]}),"\n",(0,s.jsxs)(i.li,{children:["Epub: ",(0,s.jsx)(i.code,{children:"epub"})]}),"\n"]}),"\n",(0,s.jsx)(i.h4,{id:"directory-exclusions",children:"Directory exclusions"}),"\n",(0,s.jsx)(i.p,{children:"You can specify any pattern to exclude directory subtrees from the scan."}),"\n",(0,s.jsx)(i.p,{children:"Any directory for which the full path contains any of the configured patterns will be ignored during the scan."}),"\n",(0,s.jsxs)(i.p,{children:["Patterns are checked against ",(0,s.jsx)(i.strong,{children:"any part of the directory path"}),":"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"#recycle"})," will match on:","\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"/data/books/Comics/#recycle"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"/data/books/Comics/My weirdly named #recycle comic"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.admonition,{type:"tip",children:(0,s.jsxs)(i.p,{children:["To match only directories starting with the provided string, prefix the pattern with ",(0,s.jsx)(i.code,{children:"/"}),", like ",(0,s.jsx)(i.code,{children:"/#recycle"})]})}),"\n",(0,s.jsx)(i.h3,{id:"options",children:"Options"}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add-options.png",style:{maxHeight:"500px"},alt:"Add Library Dialog Options"}),"\n",(0,s.jsx)(i.h4,{id:"analysis",children:"Analysis"}),"\n",(0,s.jsx)(i.h5,{id:"compute-hash-for-files",children:"Compute hash for files"}),"\n",(0,s.jsx)(i.p,{children:'Komga will compute a filehash for your files. This is required for the "restore from trash bin" functionality to work, and to detect duplicate files.'}),"\n",(0,s.jsx)(i.p,{children:"This can consume lots of resources on large libraries or slow hardware."}),"\n",(0,s.jsx)(i.h5,{id:"compute-hash-for-pages",children:"Compute hash for pages"}),"\n",(0,s.jsxs)(i.p,{children:["Komga will compute a filehash for the first and last 3 pages in each book (",(0,s.jsx)(i.code,{children:"cbz"})," only). Those are used to detect duplicate pages."]}),"\n",(0,s.jsx)(i.p,{children:"This can consume lots of resources on large libraries or slow hardware."}),"\n",(0,s.jsx)(i.h5,{id:"analyze-page-dimensions",children:"Analyze page dimensions"}),"\n",(0,s.jsx)(i.p,{children:"Komga will retrieve each page's dimensions (width and height). This is useful for:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"properly displaying landscape pages in the web reader, when using double pages"}),"\n",(0,s.jsx)(i.li,{children:'comparing page dimensions in the "Import" dialog'}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"This can consume lots of resources on large libraries or slow hardware."}),"\n",(0,s.jsx)(i.h4,{id:"file-management",children:"File management"}),"\n",(0,s.jsx)(i.h5,{id:"automatically-repair-incorrect-file-extensions",children:"Automatically repair incorrect file extensions"}),"\n",(0,s.jsxs)(i.p,{children:["Files with an incorrect extension will be automatically renamed in the background. For example a ",(0,s.jsx)(i.code,{children:"zip"})," file with a ",(0,s.jsx)(i.code,{children:".cbr"})," extension will be renamed to ",(0,s.jsx)(i.code,{children:".cbz"}),"."]}),"\n",(0,s.jsx)(i.h5,{id:"automatically-convert-to-cbz",children:"Automatically convert to CBZ"}),"\n",(0,s.jsxs)(i.p,{children:["Books in ",(0,s.jsx)(i.code,{children:"rar"}),"/",(0,s.jsx)(i.code,{children:"cbr"})," format (RAR4 only) will be converted to ",(0,s.jsx)(i.code,{children:"cbz"})," automatically in the background. The ",(0,s.jsx)(i.code,{children:"zip"})," files are created with the ",(0,s.jsx)(i.code,{children:"DEFLATE"})," method without compression."]}),"\n",(0,s.jsx)(i.h4,{id:"series-cover",children:"Series cover"}),"\n",(0,s.jsx)(i.p,{children:"Choose which book cover is used for the series."}),"\n",(0,s.jsx)(i.h3,{id:"metadata",children:"Metadata"}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add-metadata.png",style:{maxHeight:"600px"},alt:"Add Library Dialog Metadata"}),"\n",(0,s.jsxs)(i.p,{children:["Check the ",(0,s.jsx)(i.a,{href:"/docs/guides/scan-analysis-refresh#refresh-metadata",children:"Refresh Metadata"})," section to know more about what they do."]}),"\n",(0,s.jsx)(i.h2,{id:"edit-a-library",children:"Edit a library"}),"\n",(0,s.jsxs)(i.p,{children:["To edit a library, look for the action menu icon ",(0,s.jsx)("img",{src:"/assets/media/guides/action-menu-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," and click on ",(0,s.jsx)(i.em,{children:"Edit"}),"."]}),"\n",(0,s.jsxs)(i.admonition,{type:"warning",children:[(0,s.jsxs)(i.p,{children:["If you change the root folder of a library, and ",(0,s.jsx)(i.strong,{children:"the new path doesn't share anything with the previous path"}),", you will lose all your series, books and read progress for that library."]}),(0,s.jsxs)(i.p,{children:["If you change the path ",(0,s.jsx)(i.strong,{children:"for a parent directory of the current path"}),", you will not lose your content."]}),(0,s.jsxs)(i.p,{children:["If you change the path ",(0,s.jsx)(i.strong,{children:"for a child directory of the current path"}),", you will lose part of your content."]})]}),"\n",(0,s.jsx)(i.h2,{id:"delete-a-library",children:"Delete a library"}),"\n",(0,s.jsxs)(i.p,{children:["To delete a library, look for the action menu icon ",(0,s.jsx)("img",{src:"/assets/media/guides/action-menu-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," and click on ",(0,s.jsx)(i.em,{children:"Delete"}),"."]}),"\n",(0,s.jsxs)(i.admonition,{type:"danger",children:[(0,s.jsx)(i.p,{children:"Deleting a library will remove all series and books contained in this library. Read progress for all those books will be deleted."}),(0,s.jsx)(i.p,{children:"Your media files will not be affected."}),(0,s.jsx)(i.p,{children:"This cannot be undone."})]})]})}function h(e={}){const{wrapper:i}={...(0,n.a)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1670:(e,i,r)=>{r.d(i,{Z:()=>l,a:()=>t});var s=r(7378);const n={},a=s.createContext(n);function t(e){const i=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:t(e.components),s.createElement(a.Provider,{value:i},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4114],{8003:(e,i,r)=>{r.r(i),r.d(i,{assets:()=>o,contentTitle:()=>t,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var s=r(4246),n=r(1670);const a={},t="Libraries",l={id:"guides/libraries",title:"Libraries",description:"You can separate content in different libraries, a library is a group of books. Libraries access can also be restricted to specific users.",source:"@site/docs/guides/libraries.md",sourceDirName:"guides",slug:"/guides/libraries",permalink:"/docs/guides/libraries",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/libraries.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Desktop Application",permalink:"/docs/guides/desktop"},next:{title:"Emptying Library Trash",permalink:"/docs/guides/trash"}},o={},c=[{value:"Creating libraries",id:"creating-libraries",level:2},{value:"Scanner",id:"scanner",level:3},{value:"Empty trash automatically after every scan",id:"empty-trash-automatically-after-every-scan",level:4},{value:"Force directory modified time",id:"force-directory-modified-time",level:4},{value:"Scan on startup",id:"scan-on-startup",level:4},{value:"Scan interval",id:"scan-interval",level:4},{value:"One-Shots directory",id:"one-shots-directory",level:4},{value:"Scan for these file types",id:"scan-for-these-file-types",level:4},{value:"Directory exclusions",id:"directory-exclusions",level:4},{value:"Options",id:"options",level:3},{value:"Analysis",id:"analysis",level:4},{value:"Compute hash for files",id:"compute-hash-for-files",level:5},{value:"Compute hash for pages",id:"compute-hash-for-pages",level:5},{value:"Analyze page dimensions",id:"analyze-page-dimensions",level:5},{value:"File management",id:"file-management",level:4},{value:"Automatically repair incorrect file extensions",id:"automatically-repair-incorrect-file-extensions",level:5},{value:"Automatically convert to CBZ",id:"automatically-convert-to-cbz",level:5},{value:"Series cover",id:"series-cover",level:4},{value:"Metadata",id:"metadata",level:3},{value:"Edit a library",id:"edit-a-library",level:2},{value:"Delete a library",id:"delete-a-library",level:2}];function d(e){const i={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h1,{id:"libraries",children:"Libraries"}),"\n",(0,s.jsx)(i.p,{children:"You can separate content in different libraries, a library is a group of books. Libraries access can also be restricted to specific users."}),"\n",(0,s.jsx)(i.p,{children:"Each library has a root folder, and no library can share any part of their path."}),"\n",(0,s.jsxs)(i.p,{children:["For example if you have a library with a root path of ",(0,s.jsx)(i.code,{children:"/books/mangas"}),", you can't create a library with a root path of ",(0,s.jsx)(i.code,{children:"/books"}),", because the two root paths would overlap. You can however create a library with a root path of ",(0,s.jsx)(i.code,{children:"/books/comics"}),"."]}),"\n",(0,s.jsx)(i.h2,{id:"creating-libraries",children:"Creating libraries"}),"\n",(0,s.jsx)(i.p,{children:"From the web interface:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["click on the ",(0,s.jsx)(i.em,{children:"+"})," icon next to ",(0,s.jsx)(i.em,{children:"Libraries"})," in the sidebar ",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add.png",style:{verticalAlign:"middle",maxHeight:"32px"}})]}),"\n",(0,s.jsxs)(i.li,{children:["choose a ",(0,s.jsx)(i.em,{children:"Name"})," for your library"]}),"\n",(0,s.jsxs)(i.li,{children:["click the ",(0,s.jsx)(i.em,{children:"Browse"})," button and select a root folder containing your books"]}),"\n",(0,s.jsxs)(i.li,{children:["click ",(0,s.jsx)(i.em,{children:"Add"})]}),"\n"]}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add-dialog.png",style:{maxHeight:"300px"},alt:"Add Library Dialog"}),"\n",(0,s.jsx)(i.p,{children:"You can also specify extra options."}),"\n",(0,s.jsx)(i.h3,{id:"scanner",children:"Scanner"}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add-scanner.png",style:{maxHeight:"400px"},alt:"Add Library Dialog Scanner"}),"\n",(0,s.jsx)(i.h4,{id:"empty-trash-automatically-after-every-scan",children:"Empty trash automatically after every scan"}),"\n",(0,s.jsxs)(i.p,{children:["See ",(0,s.jsx)(i.a,{href:"/docs/guides/trash#automatically-empty-trash",children:"Emptying library trash"}),"."]}),"\n",(0,s.jsx)(i.h4,{id:"force-directory-modified-time",children:"Force directory modified time"}),"\n",(0,s.jsx)(i.p,{children:"This will force the last modified time of a directory as the maximum from its own last modified time and the last modified time from all the books inside the directory. This should be used only if your filesystem does not update the last modified time of a directory when files inside it are modified (Google Drive for instance)."}),"\n",(0,s.jsx)(i.h4,{id:"scan-on-startup",children:"Scan on startup"}),"\n",(0,s.jsx)(i.p,{children:"If enabled, the library will be scanner when Komga starts."}),"\n",(0,s.jsx)(i.h4,{id:"scan-interval",children:"Scan interval"}),"\n",(0,s.jsx)(i.p,{children:"Choose to scan all of your libraries on a time-based interval. Choose the interval to use from the dropdown. Available frequencies:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"disabled"}),"\n",(0,s.jsx)(i.li,{children:"hourly"}),"\n",(0,s.jsx)(i.li,{children:"every 6 hours"}),"\n",(0,s.jsx)(i.li,{children:"every 12 hours"}),"\n",(0,s.jsx)(i.li,{children:"daily"}),"\n",(0,s.jsx)(i.li,{children:"weekly"}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"The scan interval is based on when Komga started, or when you changed that setting for the library. For instance, if you have it set to \u201cevery 6 hours\u201d and you start your server at 12:35, then a scan will be started around 18:35."}),"\n",(0,s.jsx)(i.h4,{id:"one-shots-directory",children:"One-Shots directory"}),"\n",(0,s.jsxs)(i.p,{children:["See ",(0,s.jsx)(i.a,{href:"/docs/guides/oneshots",children:"One-Shots"}),"."]}),"\n",(0,s.jsx)(i.h4,{id:"scan-for-these-file-types",children:"Scan for these file types"}),"\n",(0,s.jsx)(i.p,{children:"This will configure the scanner to only look for files with specific file extensions. Available types:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["Comic Book archives: ",(0,s.jsx)(i.code,{children:"cbz"}),", ",(0,s.jsx)(i.code,{children:"zip"}),", ",(0,s.jsx)(i.code,{children:"cbr"}),", ",(0,s.jsx)(i.code,{children:"rar"})]}),"\n",(0,s.jsxs)(i.li,{children:["PDF: ",(0,s.jsx)(i.code,{children:"pdf"})]}),"\n",(0,s.jsxs)(i.li,{children:["Epub: ",(0,s.jsx)(i.code,{children:"epub"})]}),"\n"]}),"\n",(0,s.jsx)(i.h4,{id:"directory-exclusions",children:"Directory exclusions"}),"\n",(0,s.jsx)(i.p,{children:"You can specify any pattern to exclude directory subtrees from the scan."}),"\n",(0,s.jsx)(i.p,{children:"Any directory for which the full path contains any of the configured patterns will be ignored during the scan."}),"\n",(0,s.jsxs)(i.p,{children:["Patterns are checked against ",(0,s.jsx)(i.strong,{children:"any part of the directory path"}),":"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.code,{children:"#recycle"})," will match on:","\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"/data/books/Comics/#recycle"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.code,{children:"/data/books/Comics/My weirdly named #recycle comic"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.admonition,{type:"tip",children:(0,s.jsxs)(i.p,{children:["To match only directories starting with the provided string, prefix the pattern with ",(0,s.jsx)(i.code,{children:"/"}),", like ",(0,s.jsx)(i.code,{children:"/#recycle"})]})}),"\n",(0,s.jsx)(i.h3,{id:"options",children:"Options"}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add-options.png",style:{maxHeight:"500px"},alt:"Add Library Dialog Options"}),"\n",(0,s.jsx)(i.h4,{id:"analysis",children:"Analysis"}),"\n",(0,s.jsx)(i.h5,{id:"compute-hash-for-files",children:"Compute hash for files"}),"\n",(0,s.jsx)(i.p,{children:'Komga will compute a filehash for your files. This is required for the "restore from trash bin" functionality to work, and to detect duplicate files.'}),"\n",(0,s.jsx)(i.p,{children:"This can consume lots of resources on large libraries or slow hardware."}),"\n",(0,s.jsx)(i.h5,{id:"compute-hash-for-pages",children:"Compute hash for pages"}),"\n",(0,s.jsxs)(i.p,{children:["Komga will compute a filehash for the first and last 3 pages in each book (",(0,s.jsx)(i.code,{children:"cbz"})," only). Those are used to detect duplicate pages."]}),"\n",(0,s.jsx)(i.p,{children:"This can consume lots of resources on large libraries or slow hardware."}),"\n",(0,s.jsx)(i.h5,{id:"analyze-page-dimensions",children:"Analyze page dimensions"}),"\n",(0,s.jsx)(i.p,{children:"Komga will retrieve each page's dimensions (width and height). This is useful for:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"properly displaying landscape pages in the web reader, when using double pages"}),"\n",(0,s.jsx)(i.li,{children:'comparing page dimensions in the "Import" dialog'}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"This can consume lots of resources on large libraries or slow hardware."}),"\n",(0,s.jsx)(i.h4,{id:"file-management",children:"File management"}),"\n",(0,s.jsx)(i.h5,{id:"automatically-repair-incorrect-file-extensions",children:"Automatically repair incorrect file extensions"}),"\n",(0,s.jsxs)(i.p,{children:["Files with an incorrect extension will be automatically renamed in the background. For example a ",(0,s.jsx)(i.code,{children:"zip"})," file with a ",(0,s.jsx)(i.code,{children:".cbr"})," extension will be renamed to ",(0,s.jsx)(i.code,{children:".cbz"}),"."]}),"\n",(0,s.jsx)(i.h5,{id:"automatically-convert-to-cbz",children:"Automatically convert to CBZ"}),"\n",(0,s.jsxs)(i.p,{children:["Books in ",(0,s.jsx)(i.code,{children:"rar"}),"/",(0,s.jsx)(i.code,{children:"cbr"})," format (RAR4 only) will be converted to ",(0,s.jsx)(i.code,{children:"cbz"})," automatically in the background. The ",(0,s.jsx)(i.code,{children:"zip"})," files are created with the ",(0,s.jsx)(i.code,{children:"DEFLATE"})," method without compression."]}),"\n",(0,s.jsx)(i.h4,{id:"series-cover",children:"Series cover"}),"\n",(0,s.jsx)(i.p,{children:"Choose which book cover is used for the series."}),"\n",(0,s.jsx)(i.h3,{id:"metadata",children:"Metadata"}),"\n",(0,s.jsx)("img",{src:"/assets/media/guides/libraries/library-add-metadata.png",style:{maxHeight:"600px"},alt:"Add Library Dialog Metadata"}),"\n",(0,s.jsxs)(i.p,{children:["Check the ",(0,s.jsx)(i.a,{href:"/docs/guides/scan-analysis-refresh#refresh-metadata",children:"Refresh Metadata"})," section to know more about what they do."]}),"\n",(0,s.jsx)(i.h2,{id:"edit-a-library",children:"Edit a library"}),"\n",(0,s.jsxs)(i.p,{children:["To edit a library, look for the action menu icon ",(0,s.jsx)("img",{src:"/assets/media/guides/action-menu-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," and click on ",(0,s.jsx)(i.em,{children:"Edit"}),"."]}),"\n",(0,s.jsxs)(i.admonition,{type:"warning",children:[(0,s.jsxs)(i.p,{children:["If you change the root folder of a library, and ",(0,s.jsx)(i.strong,{children:"the new path doesn't share anything with the previous path"}),", you will lose all your series, books and read progress for that library."]}),(0,s.jsxs)(i.p,{children:["If you change the path ",(0,s.jsx)(i.strong,{children:"for a parent directory of the current path"}),", you will not lose your content."]}),(0,s.jsxs)(i.p,{children:["If you change the path ",(0,s.jsx)(i.strong,{children:"for a child directory of the current path"}),", you will lose part of your content."]})]}),"\n",(0,s.jsx)(i.h2,{id:"delete-a-library",children:"Delete a library"}),"\n",(0,s.jsxs)(i.p,{children:["To delete a library, look for the action menu icon ",(0,s.jsx)("img",{src:"/assets/media/guides/action-menu-icon.png",style:{verticalAlign:"middle",maxHeight:"32px"}})," and click on ",(0,s.jsx)(i.em,{children:"Delete"}),"."]}),"\n",(0,s.jsxs)(i.admonition,{type:"danger",children:[(0,s.jsx)(i.p,{children:"Deleting a library will remove all series and books contained in this library. Read progress for all those books will be deleted."}),(0,s.jsx)(i.p,{children:"Your media files will not be affected."}),(0,s.jsx)(i.p,{children:"This cannot be undone."})]})]})}function h(e={}){const{wrapper:i}={...(0,n.a)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},1670:(e,i,r)=>{r.d(i,{Z:()=>l,a:()=>t});var s=r(7378);const n={},a=s.createContext(n);function t(e){const i=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:t(e.components),s.createElement(a.Provider,{value:i},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/5592dbb1.bfbbe53d.js b/assets/js/5592dbb1.fb1e307b.js
similarity index 97%
rename from assets/js/5592dbb1.bfbbe53d.js
rename to assets/js/5592dbb1.fb1e307b.js
index ee2649a0..fbfc911e 100644
--- a/assets/js/5592dbb1.bfbbe53d.js
+++ b/assets/js/5592dbb1.fb1e307b.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8336],{9568:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=i(4246),o=i(1670);const s={},r="Desktop Application",a={id:"guides/desktop",title:"Desktop Application",description:"The Desktop application runs in your menu bar / tray icon:",source:"@site/docs/guides/desktop.md",sourceDirName:"guides",slug:"/guides/desktop",permalink:"/docs/guides/desktop",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/desktop.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Accessing the web interface",permalink:"/docs/guides/webui"},next:{title:"Libraries",permalink:"/docs/guides/libraries"}},c={},l=[];function p(e){const t={a:"a",h1:"h1",li:"li",p:"p",ul:"ul",...(0,o.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"desktop-application",children:"Desktop Application"}),"\n",(0,n.jsx)(t.p,{children:"The Desktop application runs in your menu bar / tray icon:"}),"\n",(0,n.jsx)("img",{src:"/assets/media/guides/desktop/desktop-menu.png",style:{maxHeight:"200px"},alt:"Desktop application menu"}),"\n",(0,n.jsx)(t.p,{children:"From the menu you can:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Open Komga: this will open the ",(0,n.jsx)(t.a,{href:"./webui",children:"web interface"}),"."]}),"\n",(0,n.jsx)(t.li,{children:"Show log file: this will open a file explorer at the location of the log file."}),"\n",(0,n.jsx)(t.li,{children:"Open configuration directory: this will open a file explorer at the location of the configuration directory."}),"\n",(0,n.jsx)(t.li,{children:"Quit Komga: this will stop Komga and exit the application."}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p(e)}},1670:(e,t,i)=>{i.d(t,{Z:()=>a,a:()=>r});var n=i(7378);const o={},s=n.createContext(o);function r(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8336],{9568:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>r,default:()=>d,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=i(4246),o=i(1670);const s={},r="Desktop Application",a={id:"guides/desktop",title:"Desktop Application",description:"The Desktop application runs in your menu bar / tray icon:",source:"@site/docs/guides/desktop.md",sourceDirName:"guides",slug:"/guides/desktop",permalink:"/docs/guides/desktop",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/guides/desktop.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Accessing the web interface",permalink:"/docs/guides/webui"},next:{title:"Libraries",permalink:"/docs/guides/libraries"}},c={},l=[];function p(e){const t={a:"a",h1:"h1",li:"li",p:"p",ul:"ul",...(0,o.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"desktop-application",children:"Desktop Application"}),"\n",(0,n.jsx)(t.p,{children:"The Desktop application runs in your menu bar / tray icon:"}),"\n",(0,n.jsx)("img",{src:"/assets/media/guides/desktop/desktop-menu.png",style:{maxHeight:"200px"},alt:"Desktop application menu"}),"\n",(0,n.jsx)(t.p,{children:"From the menu you can:"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:["Open Komga: this will open the ",(0,n.jsx)(t.a,{href:"./webui",children:"web interface"}),"."]}),"\n",(0,n.jsx)(t.li,{children:"Show log file: this will open a file explorer at the location of the log file."}),"\n",(0,n.jsx)(t.li,{children:"Open configuration directory: this will open a file explorer at the location of the configuration directory."}),"\n",(0,n.jsx)(t.li,{children:"Quit Komga: this will stop Komga and exit the application."}),"\n"]})]})}function d(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(p,{...e})}):p(e)}},1670:(e,t,i)=>{i.d(t,{Z:()=>a,a:()=>r});var n=i(7378);const o={},s=n.createContext(o);function r(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/58903ab2.c458fc48.js b/assets/js/58903ab2.f6bd9eed.js
similarity index 98%
rename from assets/js/58903ab2.c458fc48.js
rename to assets/js/58903ab2.f6bd9eed.js
index 48ffb089..80e49139 100644
--- a/assets/js/58903ab2.c458fc48.js
+++ b/assets/js/58903ab2.f6bd9eed.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6399],{2228:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>l,toc:()=>r});var a=n(4246),i=n(1670);const s={},o="Install the Desktop application",l={id:"installation/desktop",title:"Install the Desktop application",description:"You can install Komga from the Download page. Just follow the instructions on the page.",source:"@site/docs/installation/desktop.md",sourceDirName:"installation",slug:"/installation/desktop",permalink:"/docs/installation/desktop",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/installation/desktop.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Install from the Microsoft Store",permalink:"/docs/installation/ms-store"},next:{title:"Run with Docker",permalink:"/docs/installation/docker"}},d={},r=[{value:"Updating",id:"updating",level:2},{value:"Windows",id:"windows",level:3},{value:"macOS",id:"macos",level:3},{value:"Linux",id:"linux",level:3},{value:"Read next",id:"read-next",level:2}];function c(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",p:"p",...(0,i.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h1,{id:"install-the-desktop-application",children:"Install the Desktop application"}),"\n",(0,a.jsxs)(t.p,{children:["You can install Komga from the ",(0,a.jsx)(t.a,{href:"https://download.komga.org",children:"Download page"}),". Just follow the instructions on the page."]}),"\n",(0,a.jsx)(t.p,{children:"The desktop application is available for Windows, macOS and Linux."}),"\n",(0,a.jsx)(t.h2,{id:"updating",children:"Updating"}),"\n",(0,a.jsx)(t.p,{children:"The application will automatically update itself when a new version is available."}),"\n",(0,a.jsx)(t.h3,{id:"windows",children:"Windows"}),"\n",(0,a.jsx)(t.p,{children:"The OS itself will check for updates every 8 hours and upgrade the app in the background, even if it's not being used. Users will never see an update prompt."}),"\n",(0,a.jsx)(t.h3,{id:"macos",children:"macOS"}),"\n",(0,a.jsx)(t.p,{children:"The app will check for updates on startup without blocking the user, and on a schedule whilst the app runs. Once the user agrees, updates will be downloaded and applied in the background ready for the next launch."}),"\n",(0,a.jsx)(t.h3,{id:"linux",children:"Linux"}),"\n",(0,a.jsx)(t.p,{children:"An update check will be performed synchronously on each app start. If a new version is available then the update process will start and the update downloaded and applied, without any user interaction being required."}),"\n",(0,a.jsx)(t.h2,{id:"read-next",children:"Read next"}),"\n",(0,a.jsxs)(t.p,{children:["Check the ",(0,a.jsx)(t.a,{href:"../guides/desktop",children:"Desktop Application"})," page."]})]})}function p(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>l,a:()=>o});var a=n(7378);const i={},s=a.createContext(i);function o(e){const t=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6399],{2228:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>s,metadata:()=>l,toc:()=>r});var a=n(4246),i=n(1670);const s={},o="Install the Desktop application",l={id:"installation/desktop",title:"Install the Desktop application",description:"You can install Komga from the Download page. Just follow the instructions on the page.",source:"@site/docs/installation/desktop.md",sourceDirName:"installation",slug:"/installation/desktop",permalink:"/docs/installation/desktop",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/installation/desktop.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Install from the Microsoft Store",permalink:"/docs/installation/ms-store"},next:{title:"Run with Docker",permalink:"/docs/installation/docker"}},d={},r=[{value:"Updating",id:"updating",level:2},{value:"Windows",id:"windows",level:3},{value:"macOS",id:"macos",level:3},{value:"Linux",id:"linux",level:3},{value:"Read next",id:"read-next",level:2}];function c(e){const t={a:"a",h1:"h1",h2:"h2",h3:"h3",p:"p",...(0,i.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(t.h1,{id:"install-the-desktop-application",children:"Install the Desktop application"}),"\n",(0,a.jsxs)(t.p,{children:["You can install Komga from the ",(0,a.jsx)(t.a,{href:"https://download.komga.org",children:"Download page"}),". Just follow the instructions on the page."]}),"\n",(0,a.jsx)(t.p,{children:"The desktop application is available for Windows, macOS and Linux."}),"\n",(0,a.jsx)(t.h2,{id:"updating",children:"Updating"}),"\n",(0,a.jsx)(t.p,{children:"The application will automatically update itself when a new version is available."}),"\n",(0,a.jsx)(t.h3,{id:"windows",children:"Windows"}),"\n",(0,a.jsx)(t.p,{children:"The OS itself will check for updates every 8 hours and upgrade the app in the background, even if it's not being used. Users will never see an update prompt."}),"\n",(0,a.jsx)(t.h3,{id:"macos",children:"macOS"}),"\n",(0,a.jsx)(t.p,{children:"The app will check for updates on startup without blocking the user, and on a schedule whilst the app runs. Once the user agrees, updates will be downloaded and applied in the background ready for the next launch."}),"\n",(0,a.jsx)(t.h3,{id:"linux",children:"Linux"}),"\n",(0,a.jsx)(t.p,{children:"An update check will be performed synchronously on each app start. If a new version is available then the update process will start and the update downloaded and applied, without any user interaction being required."}),"\n",(0,a.jsx)(t.h2,{id:"read-next",children:"Read next"}),"\n",(0,a.jsxs)(t.p,{children:["Check the ",(0,a.jsx)(t.a,{href:"../guides/desktop",children:"Desktop Application"})," page."]})]})}function p(e={}){const{wrapper:t}={...(0,i.a)(),...e.components};return t?(0,a.jsx)(t,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},1670:(e,t,n)=>{n.d(t,{Z:()=>l,a:()=>o});var a=n(7378);const i={},s=a.createContext(i);function o(e){const t=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),a.createElement(s.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/5ef0e9d6.517974e8.js b/assets/js/5ef0e9d6.7d1daf02.js
similarity index 98%
rename from assets/js/5ef0e9d6.517974e8.js
rename to assets/js/5ef0e9d6.7d1daf02.js
index f612dcaf..91fa6b94 100644
--- a/assets/js/5ef0e9d6.517974e8.js
+++ b/assets/js/5ef0e9d6.7d1daf02.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9880],{3456:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var n=a(4246),o=a(1670);const i={},s="Community",r={id:"community",title:"Community",description:"This page lists community applications or tools that can be used alongside Komga.",source:"@site/docs/community.md",sourceDirName:".",slug:"/community",permalink:"/docs/community",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/community.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Contribution",permalink:"/docs/contribution"},next:{title:"Frequently Asked Questions",permalink:"/docs/faq"}},l={},c=[{value:"Komf",id:"komf",level:2},{value:"Kurp",id:"kurp",level:2},{value:"Manga Manager",id:"manga-manager",level:2},{value:"KoMI",id:"komi",level:2},{value:"Mylar League",id:"mylar-league",level:2}];function d(e){const t={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",p:"p",...(0,o.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"community",children:"Community"}),"\n",(0,n.jsx)(t.p,{children:"This page lists community applications or tools that can be used alongside Komga."}),"\n",(0,n.jsx)(t.h2,{id:"komf",children:"Komf"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/Snd-R/komf",children:"Komga and Kavita Metadata Fetcher"})," is a tool that fetches metadata and thumbnails for your digital comic book library. It can automatically pick up added series and update their metadata and thumbnail."]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"kurp",children:"Kurp"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/Snd-R/kurp",children:"Komga and Kavita upscaling reverse proxy"}),". Reverse proxy that intercepts image requests and applies upscaling. Other requests are transparently proxied without noticable delay"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"manga-manager",children:"Manga Manager"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/MangaManagerORG/Manga-Manager",children:"Manga Manager"})," is an all-in-one tool to make managing your manga library easy. Has a built-in metadata editor as well as cover and back cover editor."]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"komi",children:"KoMI"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/edwinbadillo/KoMI",children:"KoMI"})," is a user script that adds buttons in the series page to perform metadata matching with online sources."]}),"\n",(0,n.jsx)(t.h2,{id:"mylar-league",children:"Mylar League"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/flips22/mylar-league",children:"Mylar League"})," is a collection of various tools to aid in the integration of mylar and komga with leagueofcomicgeeks.com."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},1670:(e,t,a)=>{a.d(t,{Z:()=>r,a:()=>s});var n=a(7378);const o={},i=n.createContext(o);function s(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9880],{3456:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var n=a(4246),o=a(1670);const i={},s="Community",r={id:"community",title:"Community",description:"This page lists community applications or tools that can be used alongside Komga.",source:"@site/docs/community.md",sourceDirName:".",slug:"/community",permalink:"/docs/community",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/community.md",tags:[],version:"current",lastUpdatedAt:1702624884,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Contribution",permalink:"/docs/contribution"},next:{title:"Frequently Asked Questions",permalink:"/docs/faq"}},l={},c=[{value:"Komf",id:"komf",level:2},{value:"Kurp",id:"kurp",level:2},{value:"Manga Manager",id:"manga-manager",level:2},{value:"KoMI",id:"komi",level:2},{value:"Mylar League",id:"mylar-league",level:2}];function d(e){const t={a:"a",blockquote:"blockquote",h1:"h1",h2:"h2",p:"p",...(0,o.a)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h1,{id:"community",children:"Community"}),"\n",(0,n.jsx)(t.p,{children:"This page lists community applications or tools that can be used alongside Komga."}),"\n",(0,n.jsx)(t.h2,{id:"komf",children:"Komf"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/Snd-R/komf",children:"Komga and Kavita Metadata Fetcher"})," is a tool that fetches metadata and thumbnails for your digital comic book library. It can automatically pick up added series and update their metadata and thumbnail."]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"kurp",children:"Kurp"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/Snd-R/kurp",children:"Komga and Kavita upscaling reverse proxy"}),". Reverse proxy that intercepts image requests and applies upscaling. Other requests are transparently proxied without noticable delay"]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"manga-manager",children:"Manga Manager"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/MangaManagerORG/Manga-Manager",children:"Manga Manager"})," is an all-in-one tool to make managing your manga library easy. Has a built-in metadata editor as well as cover and back cover editor."]}),"\n"]}),"\n",(0,n.jsx)(t.h2,{id:"komi",children:"KoMI"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/edwinbadillo/KoMI",children:"KoMI"})," is a user script that adds buttons in the series page to perform metadata matching with online sources."]}),"\n",(0,n.jsx)(t.h2,{id:"mylar-league",children:"Mylar League"}),"\n",(0,n.jsxs)(t.blockquote,{children:["\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.a,{href:"https://github.com/flips22/mylar-league",children:"Mylar League"})," is a collection of various tools to aid in the integration of mylar and komga with leagueofcomicgeeks.com."]}),"\n"]})]})}function u(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},1670:(e,t,a)=>{a.d(t,{Z:()=>r,a:()=>s});var n=a(7378);const o={},i=n.createContext(o);function s(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/607df45e.8b1cdfe2.js b/assets/js/607df45e.3b52fdcc.js
similarity index 97%
rename from assets/js/607df45e.8b1cdfe2.js
rename to assets/js/607df45e.3b52fdcc.js
index a8170993..4d70eba5 100644
--- a/assets/js/607df45e.8b1cdfe2.js
+++ b/assets/js/607df45e.3b52fdcc.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9112],{3486:(e,o,n)=>{n.r(o),n.d(o,{assets:()=>c,contentTitle:()=>s,default:()=>u,frontMatter:()=>i,metadata:()=>a,toc:()=>l});var t=n(4246),r=n(1670);const i={},s="Google Drive and rclone",a={id:"installation/gdrive",title:"Google Drive and rclone",description:"If your books are stored on Google Drive, you can use Plexdrive or rclone to make them accessible to Komga.",source:"@site/docs/installation/gdrive.md",sourceDirName:"installation",slug:"/installation/gdrive",permalink:"/docs/installation/gdrive",draft:!1,unlisted:!1,editUrl:"https://github.com/gotson/komga-website/tree/master/docs/installation/gdrive.md",tags:[],version:"current",lastUpdatedAt:1702624629,formattedLastUpdatedAt:"Dec 15, 2023",frontMatter:{},sidebar:"docsSidebar",previous:{title:"Social login",permalink:"/docs/installation/oauth2"},next:{title:"Guides",permalink:"/docs/category/guides"}},c={},l=[];function d(e){const o={a:"a",code:"code",h1:"h1",p:"p",pre:"pre",...(0,r.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(o.h1,{id:"google-drive-and-rclone",children:"Google Drive and rclone"}),"\n",(0,t.jsxs)(o.p,{children:["If your books are stored on Google Drive, you can use ",(0,t.jsx)(o.a,{href:"https://github.com/plexdrive/plexdrive",children:"Plexdrive"})," or ",(0,t.jsx)(o.a,{href:"https://rclone.org/",children:"rclone"})," to make them accessible to Komga."]}),"\n",(0,t.jsxs)(o.p,{children:["You will need to configure your library to ",(0,t.jsx)(o.a,{href:"/docs/guides/libraries#force-directory-modified-time",children:"force the directory modified time"}),"."]}),"\n",(0,t.jsx)(o.p,{children:"Rclone requires some specific configuration to cache files locally, and work better with Komga.\nHere is a user-provided configuration that works well (thanks Magikarp):"}),"\n",(0,t.jsx)(o.pre,{children:(0,t.jsx)(o.code,{className:"language-shell",children:"rclone mount <directory>
",id:"komga_configdir--komgaconfig-dir-directory",level:4},{value:"SERVER_PORT / server.port: <port>
",id:"server_port--serverport-port",level:4},{value:"SERVER_SERVLET_CONTEXT_PATH / server.servlet.context-path: <baseUrl>
",id:"server_servlet_context_path--serverservletcontext-path-baseurl",level:4},{value:"SERVER_SERVLET_SESSION_TIMEOUT / server.servlet.session.timeout: <duration>
",id:"server_servlet_session_timeout--serverservletsessiontimeout-duration",level:4},{value:"<cron>
<true/false>
<exclusions>
<key>
<duration>
<duration>
<file path>
",id:"komga_database_file--komgadatabasefile-file-path",level:4},{value:"KOMGA_CORS_ALLOWED_ORIGINS / komga.cors.allowed-origins: <origins>
",id:"komga_cors_allowed_origins--komgacorsallowed-origins-origins",level:4},{value:"<true/false>
<true/false>
<true/false>
",id:"komga_oauth2_account_creation--komgaoauth2-account-creation-truefalse",level:4},{value:"KOMGA_OIDC_EMAIL_VERIFICATION / komga.oidc-email-verification: <true/false>
",id:"komga_oidc_email_verification--komgaoidc-email-verification-truefalse",level:4},{value:"LOGGING_FILE_NAME / logging.file.name: <logfile name>
",id:"logging_file_name--loggingfilename-logfile-name",level:4},{value:"<int>
<int>
<directory>
",id:"komga_configdir--komgaconfig-dir-directory",level:4},{value:"SERVER_PORT / server.port: <port>
",id:"server_port--serverport-port",level:4},{value:"SERVER_SERVLET_CONTEXT_PATH / server.servlet.context-path: <baseUrl>
",id:"server_servlet_context_path--serverservletcontext-path-baseurl",level:4},{value:"SERVER_SERVLET_SESSION_TIMEOUT / server.servlet.session.timeout: <duration>
",id:"server_servlet_session_timeout--serverservletsessiontimeout-duration",level:4},{value:"<cron>
<true/false>
<exclusions>
<key>
<duration>
<duration>
<file path>
",id:"komga_database_file--komgadatabasefile-file-path",level:4},{value:"KOMGA_CORS_ALLOWED_ORIGINS / komga.cors.allowed-origins: <origins>
",id:"komga_cors_allowed_origins--komgacorsallowed-origins-origins",level:4},{value:"<true/false>
<true/false>
<true/false>
",id:"komga_oauth2_account_creation--komgaoauth2-account-creation-truefalse",level:4},{value:"KOMGA_OIDC_EMAIL_VERIFICATION / komga.oidc-email-verification: <true/false>
",id:"komga_oidc_email_verification--komgaoidc-email-verification-truefalse",level:4},{value:"LOGGING_FILE_NAME / logging.file.name: <logfile name>
",id:"logging_file_name--loggingfilename-logfile-name",level:4},{value:"<int>
<int>
Deprecated since version: 1.3.0
Use PATCH /api/v1/libraries/{libraryId}
instead, without any change needed. The PUT
endpoint redirects to the PATCH
endpoint internally.
The endpoint now accepts a partial DTO, and will only update fields that are present.
The endpoint now accepts a partial DTO, and will only update fields that are present.