diff --git a/docs/index.md b/docs/index.md index 2907c28..d3d807d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -25,6 +25,7 @@ Information about the parts of the WROLPi interface. * [Videos](modules/videos/index.md) * [Encrypted Cookies](modules/videos/cookies.md) * [Archives](modules/archives/index.md) +* [Docs](modules/docs/index.md) * [Map](modules/map/index.md) * [Zim](modules/zim/index.md) diff --git a/docs/modules/docs/docs-detail.png b/docs/modules/docs/docs-detail.png new file mode 100644 index 0000000..c239111 Binary files /dev/null and b/docs/modules/docs/docs-detail.png differ diff --git a/docs/modules/docs/docs-page.png b/docs/modules/docs/docs-page.png new file mode 100644 index 0000000..24bab7d Binary files /dev/null and b/docs/modules/docs/docs-page.png differ diff --git a/docs/modules/docs/index.md b/docs/modules/docs/index.md new file mode 100644 index 0000000..68b95e0 --- /dev/null +++ b/docs/modules/docs/index.md @@ -0,0 +1,76 @@ +# Docs + +## Overview + +The Docs module provides a unified interface for viewing, organizing, and searching documents. The main page +(`/docs`) allows browsing all documents with filtering and search. + +![docs-page.png](docs-page.png) + +## Supported Formats + +The Docs module supports the following file types: + +* **eBooks** - EPUB, MOBI +* **PDFs** - PDF +* **Office Documents** - DOCX, DOC, ODT +* **Comic Books** - CBZ, CBR, CBT, CB7 + +## Browsing Documents + +The Docs page displays all documents sorted by published date by default. You can change the sort order to: + +* **Published Date** - When the document was published +* **Size** - File size +* **Title** - Alphabetical by title + +When using search, results are sorted by relevance. + +## Inline Viewers + +Documents can be read directly in the browser without downloading: + +* **EPUB** - A built-in HTML5 reader renders EPUB files. +* **PDF** - An embedded PDF viewer displays the document. +* **Comic Books** - A dedicated comic viewer displays pages with navigation controls, keyboard shortcuts + (arrow keys), and a right-to-left mode toggle for manga. + +![docs-detail.png](docs-detail.png) + +## Authors and Subjects + +The Docs module automatically creates collections for authors and subjects extracted from document metadata. + +* **Authors** (`/docs/authors`) - Browse documents grouped by author. +* **Subjects** (`/docs/subjects`) - Browse documents grouped by subject. + +Clicking an author or subject name filters the document list to show only matching documents. + +## Searching + +Documents are searchable using full-text search across their content and metadata. You can also filter by: + +* Author +* Subject +* Language +* File type +* Tags + +When indexes for a document are generated, they are searched in the following order of precedence: + +1. Title +2. Author +3. Document contents + +## Cover Images + +The Docs module automatically extracts or detects cover images: + +* Calibre ebook directories with a `cover.jpg` +* Cover images embedded in EPUB metadata +* First page of PDFs + +## Statistics + +The statistics page (`/docs/statistics`) provides an overview of your document library including total document +count, format breakdown, total size, and unique author and subject counts. diff --git a/docs/modules/videos/index.md b/docs/modules/videos/index.md index 7b24991..1967d4a 100644 --- a/docs/modules/videos/index.md +++ b/docs/modules/videos/index.md @@ -169,6 +169,24 @@ When the indexes for a Video are generated for searching, they are searched in t 2. Description 3. Subtitles +## Captions + +When a video has captions (VTT or SRT files), they are displayed in the **Captions** tab on the video detail page. +You can click the timestamp to scrub the video to that location. + +![video-captions.png](video-captions.png) + +### Scrubbing by Caption + +Each caption line has a clickable timestamp link on the left side. Clicking a timestamp will jump the video to +that point, making it easy to navigate long videos by their spoken content. + +### Filtering Captions + +A filter input at the top of the captions tab allows you to search through the caption text. Type one or more +words to narrow the list to only captions containing all of those words. This is useful for finding a specific +topic or quote in a long video. + ## Videos without WROLPi WROLPi comes with VLC pre-installed, this application allows you to watch video files, even if the React App is not diff --git a/docs/modules/videos/video-captions.png b/docs/modules/videos/video-captions.png new file mode 100644 index 0000000..e81a3e2 Binary files /dev/null and b/docs/modules/videos/video-captions.png differ diff --git a/docs/system/certificates.md b/docs/system/certificates.md index 9b09f9a..3a5caf4 100644 --- a/docs/system/certificates.md +++ b/docs/system/certificates.md @@ -20,6 +20,16 @@ WROLPi uses a two-level certificate system: when your WROLPi's hostname or IP address changes. Because your devices already trust the Root CA, they will automatically trust any new leaf certificate. +### First Startup (Temporary Certificate) + +On a fresh install, no media drive is mounted yet and no Root CA exists. WROLPi generates a **temporary self-signed +certificate** so that Caddy can serve HTTPS immediately. This allows the browser to reach the Controller for +[onboarding](getting-started.md#onboarding), though you will see a browser certificate warning that must be accepted. + +Once onboarding completes and the repair script runs, proper Root CA and leaf certificates are generated and the +temporary certificate is replaced. After installing the Root CA on your devices, the browser warning will not appear +again. + ## Downloading the Root CA Certificate You can download the Root CA certificate from: diff --git a/docs/system/getting-started.md b/docs/system/getting-started.md index b77859e..ed67ea2 100644 --- a/docs/system/getting-started.md +++ b/docs/system/getting-started.md @@ -1,16 +1,36 @@ # Getting Started -## Finish WROLPi Installation +## First Boot -To finish your WROLPi installation follow these steps: +When a WROLPi boots for the first time, it generates a temporary HTTPS certificate and starts the Controller +fallback UI. Your browser will be redirected to the Controller where you can complete the onboarding process. -1. Modify fstab to [mount your external drive(s)](external-drives.md). In the example below, `/dev/sda1` will be mounted - to `/media/wrolpi` - 1. `echo '/dev/sda1 /media/wrolpi auto defaults,nofail 0 0' | sudo tee -a /etc/fstab` -2. Finish the installation with the repair script: `sudo bash /opt/wrolpi/repair.sh` -3. Reboot: `sudo reboot` -4. After reboot, browse to `http://wrolpi.local` or `http://127.0.0.1` on the WROLPi itself. -5. [Refresh your files](../modules/files/index.md#refreshing) +### Onboarding + +1. Open a browser to your WROLPi's address (e.g. `https://wrolpi.local` or `https://127.0.0.1` on the WROLPi + itself). +2. Accept the self-signed certificate warning in your browser. This is expected on a fresh install. +3. The Controller will display the **Welcome to WROLPi** screen with your available drives. + +![onboarding-drive-selection.png](onboarding-drive-selection.png) + +4. Select the drive you want to use as your WROLPi media drive. +5. If the drive contains an existing WROLPi configuration, you will be asked to confirm. Click **Set Up This + Drive** to proceed, or **Choose Different Drive** to go back. + +![onboarding-confirm-drive.png](onboarding-confirm-drive.png) + +6. WROLPi will mount the drive and start the repair script automatically. You will see a **Repair WROLPi + Running** banner at the top of the page. + +![onboarding-repair-running.png](onboarding-repair-running.png) + +> This will take about 15 minutes on a Raspberry Pi 4. + +7. Once repair completes, all services will start and you will be redirected to the main UI. + +After onboarding, you should install the [HTTPS certificate](certificates.md) on your devices to avoid the +browser warning on future visits. # Creating a new WROLPi @@ -23,16 +43,16 @@ on a new Raspberry Pi. 1. Plug in your SD card, find its device path with: `sudo blkid` 2. Extract and copy the WROLPi image to your drive (/dev/sdb in this example): - * `xzcat WROLPi-v0.10-aarch64-desktop.img.xz | sudo dd of=/dev/sdb status=progress` + * `xzcat WROLPi-v0.19-aarch64-desktop.img.xz | sudo dd of=/dev/sdb status=progress` ### Image an SD Card on Windows -1. Copy the WROLPi image to your micro SD card using [Balena Etcher](https://www.balena.io/etcher) +1. Copy the WROLPi image to your micro SD card using [Raspberry Pi Imager](https://www.raspberrypi.com/software/) ### First Boot 1. Unplug your Raspberry Pi -2. Insert the micro SD card from step 2 into your Raspberry Pi +2. Insert the micro SD card into your Raspberry Pi 3. Connect any peripherals to your Raspberry Pi. 4. Boot your Raspberry Pi. 5. Choose your Country/Language/Timezone. @@ -43,13 +63,8 @@ on a new Raspberry Pi. 10. Skip "Update Software". 11. Restart. 12. Login using the user you created above. -13. Launch the Terminal application - 1. Modify fstab to mount your external drive to **/media/wrolpi** - * `echo '/dev/sda1 /media/wrolpi auto defaults,nofail 0 0' | sudo tee -a /etc/fstab` - 2. Finish the installation with the repair script: - * `/opt/wrolpi/repair.sh` - 3. Reboot: `sudo reboot` -14. Join the Hotspot, browse to https://wrolpi.local or, the IP address of your WROLPi! +13. A browser will open automatically. Follow the [Onboarding](#onboarding) steps above to select your drive and + complete the installation. ## Debian @@ -62,8 +77,6 @@ on a new Debian computer. 2. Install Debian 12. 3. Unplug the thumb-drive after the installation has completed 4. Login as the user you created during installation. -5. Switch to the root user: `su -` -6. Finish the installation with the repair script: `sudo bash /opt/wrolpi/repair.sh` -7. Reboot: `sudo reboot` -8. Join the Hotspot or browse to `http://wrolpi.local` or the IP address of your WROLPi! -9. [Refresh your files](../modules/files/index.md#refreshing) +5. Reboot: `sudo reboot` +6. A browser will open automatically. Follow the [Onboarding](#onboarding) steps above to select your drive and + complete the installation. diff --git a/docs/system/onboarding-confirm-drive.png b/docs/system/onboarding-confirm-drive.png new file mode 100644 index 0000000..2c31d47 Binary files /dev/null and b/docs/system/onboarding-confirm-drive.png differ diff --git a/docs/system/onboarding-drive-selection.png b/docs/system/onboarding-drive-selection.png new file mode 100644 index 0000000..ec4c05d Binary files /dev/null and b/docs/system/onboarding-drive-selection.png differ diff --git a/docs/system/onboarding-repair-running.png b/docs/system/onboarding-repair-running.png new file mode 100644 index 0000000..84791c9 Binary files /dev/null and b/docs/system/onboarding-repair-running.png differ