<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Grimoire Manual</title>
    <link>https://read.rmv.fyi/grimoire-manual</link>
    <description>To set up and use your Grimoire instance, refer to this document.</description>
    <lastBuildDate>Sun, 26 Oct 2025 22:49:34 +0100</lastBuildDate>
    <atom:link href="https://read.rmv.fyi/grimoire-manual.xml" rel="self" type="application/rss+xml" />
    
        <item>
      <title>Chapter 9 - Appendices</title>
      <link>https://read.rmv.fyi/grimoire-manual/chapter-9-appendices</link>
      <guid>https://read.rmv.fyi/grimoire-manual/chapter-9-appendices</guid>
      <pubDate>Sun, 26 Oct 2025 19:40:23 +0100</pubDate>
            <content:encoded><![CDATA[
        <h3>APPENDIX A: GLOSSARY OF TERMS</h3>
<p><strong>Blurb:</strong> Marketing description text for a book, displayed on book detail page.</p>
<p><strong>Blueprint:</strong> YAML configuration file defining fields and structure for Panel editing interface.</p>
<p><strong>Chapter:</strong> Individual content page within a book, containing readable text.</p>
<p><strong>Grimoire:</strong> The system name, referring to this web publishing platform.</p>
<p><strong>KirbyTags:</strong> Special syntax for embedding content. Image and File tags are supported.</p>
<p><strong>LocalStorage:</strong> Browser API for persistent client-side data storage.</p>
<p><strong>Panel:</strong> Kirby's administrative web interface for content management.</p>
<p><strong>Prose:</strong> Tailwind CSS plugin providing optimised typography for long-form reading.</p>
<p><strong>Slug:</strong> URL-friendly identifier for pages, lowercase with hyphens.</p>
<p><strong>Template:</strong> PHP file that renders page content as HTML.</p>
<p><strong>wcontent:</strong> Field name for chapter content (Grimoire-specific, not standard Kirby field).</p>
<h3>APPENDIX B: KEYBOARD SHORTCUT REFERENCE</h3>
<table>
<thead>
<tr>
<th>Key</th>
<th>Action</th>
<th>Available On</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>T</code></td>
<td>Toggle light/dark theme</td>
<td>All pages</td>
</tr>
<tr>
<td><code>→</code></td>
<td>Navigate to next chapter</td>
<td>Chapter pages</td>
</tr>
<tr>
<td><code>←</code></td>
<td>Navigate to previous page/book</td>
<td>Chapter pages</td>
</tr>
<tr>
<td><code>A-</code></td>
<td>Decrease font size</td>
<td>Chapter pages (desktop)</td>
</tr>
<tr>
<td><code>A</code></td>
<td>Reset to default font size</td>
<td>Chapter pages (desktop)</td>
</tr>
<tr>
<td><code>A+</code></td>
<td>Increase font size</td>
<td>Chapter pages (desktop)</td>
</tr>
</tbody>
</table>
<p><strong>Note:</strong> Shortcuts disabled when text input has focus.</p>
<h3>APPENDIX C: CONTENT RATING SYSTEM</h3>
<table>
<thead>
<tr>
<th>Rating</th>
<th>Meaning</th>
<th>Home Page Behavior</th>
<th>Access Requirement</th>
</tr>
</thead>
<tbody>
<tr>
<td>SFW</td>
<td>Safe for Work</td>
<td>Cover displayed normally</td>
<td>None</td>
</tr>
<tr>
<td>NSFW</td>
<td>Not Safe for Work</td>
<td>Cover blurred, click to reveal</td>
<td>Single click</td>
</tr>
<tr>
<td>NSFL</td>
<td>Not Safe for Life</td>
<td>Cover blurred, click prompts warning</td>
<td>Click + confirmation</td>
</tr>
</tbody>
</table>
<p><strong>Implementation Notes:</strong></p>
<ul>
<li>Rating stored in book.txt as <code>Rating:</code> field</li>
<li>Blurring implemented via CSS class <code>blur-xl</code></li>
<li>JavaScript handles click events and confirmations</li>
<li>NSFL warning text: "This content is marked as NSFL (Not Safe for Life) and may contain extremely disturbing material. Are you sure you want to reveal this content?"</li>
</ul>
<h3>APPENDIX D: SERIES NAVIGATION SPECIFICATION</h3>
<p>Series navigation enables multi-book sequential reading.</p>
<p><strong>Requirements:</strong></p>
<ol>
<li>Each book in series must have identical <code>seriesname</code> value</li>
<li>Each book must have unique <code>seriesnumber</code> (integer, starting from 1)</li>
<li>Numbers must be sequential (no gaps: 1, 2, 3, etc.)</li>
</ol>
<p><strong>Behavior:</strong></p>
<ul>
<li>Book page displays "Previous" link if book N-1 exists with matching series name</li>
<li>Book page displays "Next" link if book N+1 exists with matching series name</li>
<li>Links positioned below blurb text, before progress indicator</li>
<li>Format: Border buttons with arrow indicators</li>
</ul>
<p><strong>Example Series Configuration:</strong></p>
<p>Book 1: <code>Seriesname: The Chronicles</code> / <code>Seriesnumber: 1</code><br />
Book 2: <code>Seriesname: The Chronicles</code> / <code>Seriesnumber: 2</code><br />
Book 3: <code>Seriesname: The Chronicles</code> / <code>Seriesnumber: 3</code></p>
<h3>APPENDIX E: RSS FEED SPECIFICATION</h3>
<p>Each book automatically generates an RSS 2.0 feed.</p>
<p><strong>Feed URL:</strong> <code>https://[domain]/[book-slug].xml</code></p>
<p><strong>Feed Elements:</strong></p>
<ul>
<li><code>&lt;title&gt;</code> Book title</li>
<li><code>&lt;description&gt;</code> Book blurb</li>
<li><code>&lt;link&gt;</code> Book URL</li>
<li><code>&lt;item&gt;</code> One per chapter, containing:<ul>
<li><code>&lt;title&gt;</code> Chapter title</li>
<li><code>&lt;description&gt;</code> First 500 characters of chapter content</li>
<li><code>&lt;link&gt;</code> Chapter URL</li>
<li><code>&lt;pubDate&gt;</code> Chapter publication date</li>
<li><code>&lt;guid&gt;</code> Unique chapter identifier</li>
</ul>
</li>
</ul>
<p><strong>Template Location:</strong> <code>site/templates/book.xml.php</code></p>
<h3>APPENDIX F: TAILWIND TYPOGRAPHY CLASSES</h3>
<p>Grimoire uses Tailwind's Typography plugin for optimised reading.</p>
<p><strong>Applied Classes:</strong></p>
<table>
<thead>
<tr>
<th>Class</th>
<th>Purpose</th>
<th>Applied To</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>prose</code></td>
<td>Base typography styles</td>
<td>Content containers</td>
</tr>
<tr>
<td><code>prose-sm</code></td>
<td>Small text size</td>
<td>Content (when user selects A-)</td>
</tr>
<tr>
<td><code>prose-lg</code></td>
<td>Large text size (default)</td>
<td>Content (default state)</td>
</tr>
<tr>
<td><code>prose-xl</code></td>
<td>Extra large text</td>
<td>Content (when user selects A+)</td>
</tr>
<tr>
<td><code>dark:prose-invert</code></td>
<td>Dark mode text colors</td>
<td>Content (in dark theme)</td>
</tr>
<tr>
<td><code>max-w-prose</code></td>
<td>Optimal reading width</td>
<td>Content containers</td>
</tr>
</tbody>
</table>
<p><strong>Effective Measurements:</strong></p>
<ul>
<li><code>prose-sm</code>: Approximately 14px base font</li>
<li><code>prose-lg</code>: Approximately 18px base font (default)</li>
<li><code>prose-xl</code>: Approximately 20px base font</li>
<li><code>max-w-prose</code>: 65 characters per line (optimal readability)</li>
</ul>
<h3>APPENDIX G: TECHNICAL SUPPORT</h3>
<p><strong>Official Repository:</strong><br />
<a href="https://github.com/1612elphi/kirby-grimoire">https://github.com/1612elphi/kirby-grimoire</a></p>
<p><strong>Issue Reporting:</strong><br />
Submit bug reports and feature requests via GitHub Issues.</p>
<p><strong>Community Support:</strong><br />
Kirby CMS Forum: <a href="https://forum.getkirby.com">https://forum.getkirby.com</a></p>
<p><strong>Commercial Support:</strong><br />
Psh, who are you, a cop?</p>
<hr />
<h2>REVISION HISTORY</h2>
<table>
<thead>
<tr>
<th>Version</th>
<th>Date</th>
<th>Changes</th>
</tr>
</thead>
<tbody>
<tr>
<td>1.0</td>
<td>November 2024</td>
<td>Initial release</td>
</tr>
<tr>
<td>2.0</td>
<td>October 2025</td>
<td>Added comic support</td>
</tr>
</tbody>
</table>
<hr />
<h2>LICENSE AND COPYRIGHT</h2>
<p>Grimoire Publishing System<br />
Copyright © RMV</p>
<p>Built on Kirby CMS<br />
Copyright © Bastian Allgeier</p>
<p>This documentation may be reproduced and distributed under the terms of the system license.</p>              ]]></content:encoded>
    </item>
        <item>
      <title>Chapter 8 - Troubleshooting and Maintenance</title>
      <link>https://read.rmv.fyi/grimoire-manual/chapter-8-troubleshooting-and-maintenance</link>
      <guid>https://read.rmv.fyi/grimoire-manual/chapter-8-troubleshooting-and-maintenance</guid>
      <pubDate>Sun, 26 Oct 2025 19:37:09 +0100</pubDate>
            <content:encoded><![CDATA[
        <h3>8.1 COMMON ISSUES</h3>
<p><strong>ISSUE 8.1.1: Panel Access Denied</strong></p>
<p><strong>Symptoms:</strong> Cannot access <code>/panel</code>, receives error</p>
<p><strong>Resolution:</strong></p>
<ol>
<li>Verify <code>.htaccess</code> file present in root directory</li>
<li>Verify Apache <code>mod_rewrite</code> enabled</li>
<li>Check file permissions: Panel requires write access to <code>/site/accounts</code></li>
<li>Review PHP error log for specific errors</li>
</ol>
<p><strong>ISSUE 8.1.2: Cover Images Not Displaying</strong></p>
<p><strong>Symptoms:</strong> Book covers show fallback image or broken image icon</p>
<p><strong>Resolution:</strong></p>
<ol>
<li>Verify image uploaded to book via Panel</li>
<li>Check file exists in: <code>/content/{book-number}_{book-slug}/</code></li>
<li>Verify PHP GD extension installed: <code>php -m | grep gd</code></li>
<li>Check file permissions: Web server must read content directory</li>
<li>Clear media cache: Delete <code>/media</code> directory (regenerates automatically)</li>
</ol>
<p><strong>ISSUE 8.1.3: CSS Changes Not Appearing</strong></p>
<p><strong>Symptoms:</strong> Style modifications not reflected in browser</p>
<p><strong>Resolution:</strong></p>
<ol>
<li>Verify editing correct file: <code>assets/css/processing.css</code></li>
<li>Rebuild CSS: <code>npm run build</code></li>
<li>Clear browser cache: Hard refresh (Ctrl+F5 or Cmd+Shift+R)</li>
<li>Verify output file updated: Check modification time of <code>assets/css/tailwind.css</code></li>
</ol>
<p><strong>ISSUE 8.1.4: Progress Tracking Not Working</strong></p>
<p><strong>Symptoms:</strong> Reading progress not saved, "Resume Reading" not appearing</p>
<p><strong>Resolution:</strong></p>
<ol>
<li>Verify JavaScript enabled in browser</li>
<li>Check browser console for JavaScript errors</li>
<li>Verify LocalStorage not disabled:<ul>
<li>Open browser DevTools</li>
<li>Navigate to Application/Storage tab</li>
<li>Verify LocalStorage accessible</li>
</ul>
</li>
<li>Check browser privacy settings: Some privacy modes disable LocalStorage</li>
<li>Verify <code>data-book-id</code> and <code>data-chapter-id</code> attributes present on <code>&lt;body&gt;</code> element</li>
</ol>
<p><strong>ISSUE 8.1.5: Chapter Content Not Displaying</strong></p>
<p><strong>Symptoms:</strong> Chapter page loads but content area empty</p>
<p><strong>Resolution:</strong></p>
<ol>
<li>Verify content entered in <code>wcontent</code> field (not <code>content</code>)</li>
<li>Check chapter.txt file contains <code>Wcontent:</code> section</li>
<li>Verify no YAML syntax errors in chapter.txt</li>
<li>Check PHP error log for template rendering errors</li>
</ol>
<h3>8.2 PERFORMANCE OPTIMIZATION</h3>
<p><strong>OPTIMIZATION 8.2.1: Image Compression</strong></p>
<p>For optimal load times:</p>
<ol>
<li>Compress cover images before upload</li>
<li>Use tools: ImageOptim, TinyPNG, or Squoosh</li>
<li>Target file size: Under 500 KB per cover image</li>
<li>Kirby generates thumbnails automatically from source</li>
</ol>
<p><strong>OPTIMIZATION 8.2.2: CSS Purging</strong></p>
<p>Production builds should purge unused CSS:</p>
<p>Tailwind configuration already optimized:</p>
<ul>
<li>Scans only necessary files for class usage</li>
<li>Automatically removes unused utilities</li>
<li><code>npm run build</code> produces minified output</li>
</ul>
<p><strong>OPTIMIZATION 8.2.3: PHP Caching</strong></p>
<p>For high-traffic sites:</p>
<ol>
<li>Enable PHP OPcache in php.ini:<pre><code class="language-ini">opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000</code></pre>
</li>
<li>Consider Kirby's built-in cache (requires configuration)</li>
</ol>
<h3>8.3 SECURITY BEST PRACTICES</h3>
<p><strong>SECURITY 8.3.1: Production Checklist</strong></p>
<p>Before deploying to production:</p>
<ul>
<li>[ ] Disable debug mode in <code>site/config/config.php</code></li>
<li>[ ] Use strong passwords for Panel accounts (minimum 12 characters)</li>
<li>[ ] Restrict Panel access to admin IP addresses (if feasible)</li>
<li>[ ] Enable HTTPS/SSL (required for LocalStorage security)</li>
<li>[ ] Keep Kirby and dependencies updated</li>
<li>[ ] Set appropriate file permissions:<ul>
<li>Directories: 755</li>
<li>Files: 644</li>
<li>Except: <code>site/accounts/</code> requires write access</li>
</ul>
</li>
<li>[ ] Remove unused Panel users</li>
<li>[ ] Regular backups configured</li>
</ul>
<p><strong>SECURITY 8.3.2: Content Sanitization</strong></p>
<p>Kirby automatically sanitizes user input. However:</p>
<ul>
<li>Review uploaded files: Only allow trusted users to upload</li>
<li>Content Rating system: Use NSFW/NSFL appropriately</li>
<li>Author's notes: Markdown permitted but HTML filtered</li>
</ul>
<h3>8.4 LOG FILE LOCATIONS</h3>
<p><strong>PHP Error Log:</strong></p>
<ul>
<li>Location varies by server configuration</li>
<li>Common: <code>/var/log/php/error.log</code> or server root</li>
<li>Enable in php.ini: <code>log_errors = On</code></li>
</ul>
<p><strong>Web Server Logs:</strong></p>
<ul>
<li>Apache: <code>/var/log/apache2/error.log</code></li>
<li>Nginx: <code>/var/log/nginx/error.log</code></li>
</ul>
<p><strong>Kirby Debug Mode:</strong><br />
When enabled, errors display directly in browser (development only).</p>              ]]></content:encoded>
    </item>
        <item>
      <title>Chapter 7 - Technical Reference</title>
      <link>https://read.rmv.fyi/grimoire-manual/chapter-7-technical-reference</link>
      <guid>https://read.rmv.fyi/grimoire-manual/chapter-7-technical-reference</guid>
      <pubDate>Sun, 26 Oct 2025 19:35:49 +0100</pubDate>
            <content:encoded><![CDATA[
        <h3>7.1 FILE SYSTEM STRUCTURE</h3>
<pre><code>kirby-grimoire/
├── assets/
│   ├── css/
│   │   ├── processing.css      # Tailwind source
│   │   └── tailwind.css        # Compiled output
│   ├── js/
│   │   └── main.js             # Custom JavaScript
│   └── img/
│       └── fallback.jpg        # Default cover image
├── content/                    # Content storage
│   ├── site.txt                # Site metadata
│   └── [numbered-books]/       # Book directories
├── kirby/                      # Kirby CMS core (vendor)
├── media/                      # Auto-generated thumbnails
├── site/
│   ├── blueprints/             # Panel field definitions
│   │   ├── site.yml            # Site settings blueprint
│   │   ├── pages/
│   │   │   ├── book.yml        # Book field definitions
│   │   │   └── chapter.yml     # Chapter field definitions
│   │   └── files/              # File field definitions
│   ├── config/
│   │   └── config.php          # System configuration
│   ├── models/                 # Custom page models
│   ├── snippets/               # Reusable code fragments
│   │   ├── head.php            # HTML head section
│   │   └── scripts.php         # JavaScript and styles
│   └── templates/              # Page rendering
│       ├── home.php            # Landing page
│       ├── book.php            # Book detail page
│       ├── book.xml.php        # RSS feed template
│       └── chapter.php         # Chapter reading page
├── .htaccess                   # Apache configuration
├── composer.json               # PHP dependencies
├── package.json                # Node dependencies
└── tailwind.config.js          # Tailwind configuration</code></pre>
<h3>7.2 LOCALSTORAGE DATA SCHEMA</h3>
<p>Grimoire stores user preferences and progress in browser LocalStorage using the following keys:</p>
<table>
<thead>
<tr>
<th>Key</th>
<th>Data Type</th>
<th>Purpose</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>grimoire_theme</code></td>
<td>String</td>
<td>"light" or "dark"</td>
</tr>
<tr>
<td><code>grimoire_font_size</code></td>
<td>String</td>
<td>"small", "default", or "large"</td>
</tr>
<tr>
<td><code>grimoire_chapter_progress_{bookId}</code></td>
<td>Array</td>
<td>List of completed chapter IDs</td>
</tr>
<tr>
<td><code>grimoire_reading_position_{bookId}_{chapterId}</code></td>
<td>Object</td>
<td><code>{scroll: Number, timestamp: Number}</code></td>
</tr>
</tbody>
</table>
<p><strong>Example Reading Position:</strong></p>
<pre><code class="language-json">{
  "scroll": 2840,
  "timestamp": 1698765432000
}</code></pre>
<h3>7.3 CONTENT FILE FORMAT</h3>
<p>All content stored in plain text format with YAML frontmatter.</p>
<p><strong>EXAMPLE 7.3.1: Book Metadata (book.txt)</strong></p>
<pre><code>Title: The Manual

----

Subtitle: A Comprehensive Guide

----

Author: Technical Publications

----

Blurb: Complete system documentation

----

Cover:
- cover.jpg

----

Rating: sfw

----

Seriesname: Documentation Series

----

Seriesnumber: 1</code></pre>
<p><strong>EXAMPLE 7.3.2: Chapter Content (chapter.txt)</strong></p>
<pre><code>Title: Chapter One

----

Subtitle: Getting Started

----

Wcontent:

This is the chapter content written in Markdown.

## Headings Work

- Bullet lists
- Also work

**Bold** and *italic* supported.

----

An: This is an author's note.

----

Anmode: after</code></pre>
<h3>7.4 TEMPLATE HIERARCHY</h3>
<p>Kirby automatically selects templates based on page type:</p>
<pre><code>Page Type → Blueprint → Template → Output
──────────────────────────────────────────
site      → site.yml  → home.php → HTML
book      → book.yml  → book.php → HTML
book.xml  → (same)    → book.xml.php → XML/RSS
chapter   → chapter.yml → chapter.php → HTML</code></pre>
<h3>7.5 CSS ARCHITECTURE</h3>
<p><strong>Tailwind Configuration (tailwind.config.js):</strong></p>
<ul>
<li><strong>Dark Mode:</strong> Class-based (<code>darkMode: 'class'</code>)</li>
<li><strong>Content Paths:</strong> Scans <code>site/**/*.php</code>, <code>site/**/*.js</code>, <code>content/**/*.txt</code></li>
<li><strong>Plugins:</strong> Typography plugin for prose styling</li>
</ul>
<p><strong>Custom Styles (site/snippets/scripts.php):</strong></p>
<p>Inline <code>&lt;style&gt;</code> block provides:</p>
<ul>
<li>Reading progress bar styling</li>
<li>Navigation hide/show animations</li>
<li>Font size button active states</li>
<li>Comic-specific styles (if comic feature used)</li>
</ul>
<h3>7.6 JAVASCRIPT ARCHITECTURE</h3>
<p>All reading features encapsulated in <code>Grimoire</code> namespace.</p>
<p><strong>Core Modules:</strong></p>
<ol>
<li>
<p><strong>Storage Utility</strong> (<code>Grimoire.storage</code>)</p>
<ul>
<li><code>get(key, defaultValue)</code>: Retrieve from LocalStorage</li>
<li><code>set(key, value)</code>: Store in LocalStorage</li>
</ul>
</li>
<li>
<p><strong>Reading Progress Bar</strong></p>
<ul>
<li>Monitors scroll position via <code>requestAnimationFrame</code></li>
<li>Updates progress bar width in real-time</li>
</ul>
</li>
<li>
<p><strong>Scroll Position Tracking</strong></p>
<ul>
<li>Saves position every 500ms during scroll</li>
<li>Restores on page load after 100ms delay</li>
</ul>
</li>
<li>
<p><strong>Chapter Completion Tracking</strong></p>
<ul>
<li>Monitors when reader reaches 90% of content</li>
<li>Marks chapter as read in LocalStorage</li>
</ul>
</li>
<li>
<p><strong>Font Size Controls</strong></p>
<ul>
<li>Manipulates Tailwind typography classes</li>
<li>Persists preference across sessions</li>
</ul>
</li>
<li>
<p><strong>Theme Toggle</strong></p>
<ul>
<li>Adds/removes <code>dark</code> class on <code>&lt;html&gt;</code> element</li>
<li>Updates icon graphic</li>
<li>Persists preference</li>
</ul>
</li>
<li>
<p><strong>Distraction-Free Mode</strong></p>
<ul>
<li>Hides/shows navigation based on scroll direction</li>
<li>Uses <code>requestAnimationFrame</code> for performance</li>
</ul>
</li>
<li>
<p><strong>Keyboard Shortcuts</strong></p>
<ul>
<li>Listens for key events</li>
<li>Prevents default when shortcuts triggered</li>
<li>Respects input focus state</li>
</ul>
</li>
</ol>
<h3>7.7 API ENDPOINTS</h3>
<p>Grimoire does not provide a REST API. All content access occurs through rendered HTML pages and RSS feeds.</p>
<p><strong>Public URLs:</strong></p>
<table>
<thead>
<tr>
<th>Pattern</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>/</code></td>
<td>Home page (all books)</td>
</tr>
<tr>
<td><code>/{book-slug}</code></td>
<td>Book detail page</td>
</tr>
<tr>
<td><code>/{book-slug}.xml</code></td>
<td>Book RSS feed</td>
</tr>
<tr>
<td><code>/{book-slug}/{chapter-slug}</code></td>
<td>Chapter reading page</td>
</tr>
<tr>
<td><code>/panel</code></td>
<td>Administrative interface</td>
</tr>
</tbody>
</table>
<h3>7.8 MARKDOWN EXTENSIONS</h3>
<p>Kirby's Markdown Extra features enabled by default.</p>
<p><strong>Supported Syntax:</strong></p>
<ul>
<li>Standard Markdown: headings, lists, links, images, emphasis</li>
<li>Tables: Pipe-delimited table syntax</li>
<li>Fenced code blocks: Triple backtick syntax</li>
<li>Definition lists: Colon-based definitions</li>
<li>Footnotes: Reference-style footnotes</li>
<li>Abbreviations: Definition-based abbreviations</li>
<li>KirbyTags: <code>image:</code> and <code>file:</code></li>
</ul>              ]]></content:encoded>
    </item>
        <item>
      <title>Chapter 6 - Administrative Functions</title>
      <link>https://read.rmv.fyi/grimoire-manual/chapter-6-administrative-functions</link>
      <guid>https://read.rmv.fyi/grimoire-manual/chapter-6-administrative-functions</guid>
      <pubDate>Sun, 26 Oct 2025 19:33:13 +0100</pubDate>
            <content:encoded><![CDATA[
        <h3>6.1 USER MANAGEMENT</h3>
<p><strong>PROCEDURE 6.1.1: Creating Additional Users</strong></p>
<ol>
<li>Log into Panel as administrator</li>
<li>Navigate to Users section</li>
<li>Click "+ Add" to create new user</li>
<li>Enter user details:<ul>
<li>Email address</li>
<li>Password</li>
<li>User role (Admin or Editor)</li>
<li>Language preference</li>
</ul>
</li>
<li>Save user account</li>
</ol>
<p><strong>User Roles:</strong></p>
<table>
<thead>
<tr>
<th>Role</th>
<th>Permissions</th>
</tr>
</thead>
<tbody>
<tr>
<td>Admin</td>
<td>Full system access, user management, settings</td>
</tr>
<tr>
<td>Editor</td>
<td>Content creation and editing, no settings access</td>
</tr>
</tbody>
</table>
<h3>6.2 CONTENT PUBLICATION CONTROL</h3>
<p><strong>PROCEDURE 6.2.1: Publishing Content</strong></p>
<p>Content visibility controlled by page status:</p>
<ul>
<li><strong>Draft:</strong> Content exists but not listed on site</li>
<li><strong>Listed:</strong> Content visible to public</li>
</ul>
<p>To publish content:</p>
<ol>
<li>Edit page in Panel</li>
<li>Locate status control (top right)</li>
<li>Change from "Draft" to "Listed"</li>
<li>Save changes</li>
</ol>
<p><strong>PROCEDURE 6.2.2: Unpublishing Content</strong></p>
<ol>
<li>Edit page in Panel</li>
<li>Change status from "Listed" to "Unlisted" or "Draft"</li>
<li>Save changes</li>
<li>Content removed from public view immediately</li>
</ol>
<h3>6.3 BACKUP PROCEDURES</h3>
<p><strong>PROCEDURE 6.3.1: Content Backup</strong></p>
<ol>
<li>Access server via FTP, SFTP, or shell</li>
<li>Navigate to installation directory</li>
<li>Create compressed archive of:<ul>
<li><code>/content</code> directory (all content and metadata)</li>
<li><code>/media</code> directory (uploaded images)</li>
<li><code>/site</code> directory (templates and configuration)</li>
</ul>
</li>
<li>Download archive to secure location</li>
<li>Verify archive integrity</li>
</ol>
<p><strong>Recommended Backup Frequency:</strong> Daily for active sites, weekly for static sites</p>
<p><strong>PROCEDURE 6.3.2: Database-Free Architecture</strong></p>
<p><strong>NOTE:</strong> Grimoire utilizes file-based storage. No database backup required. All content exists as human-readable text files.</p>
<h3>6.4 ASSET COMPILATION</h3>
<p><strong>PROCEDURE 6.4.1: CSS Rebuilding</strong></p>
<p>When modifying styles:</p>
<ol>
<li>Edit source file: <code>assets/css/processing.css</code></li>
<li>Execute build command:<pre><code>npm run build</code></pre>
</li>
<li>Compiled output written to: <code>assets/css/tailwind.css</code></li>
<li>Clear browser cache to see changes</li>
</ol>
<p><strong>PROCEDURE 6.4.2: Development Workflow</strong></p>
<p>For active development:</p>
<pre><code>npm run watch</code></pre>
<p>This command monitors source files and automatically rebuilds on changes.</p>
<h3>6.5 SYSTEM UPDATES</h3>
<p><strong>PROCEDURE 6.5.1: Updating Kirby CMS</strong></p>
<ol>
<li>Backup entire installation (see PROCEDURE 6.3.1)</li>
<li>Navigate to installation directory via command line</li>
<li>Execute update command:<pre><code>composer update</code></pre>
</li>
<li>Review update log for breaking changes</li>
<li>Test site functionality</li>
<li>If issues occur, restore from backup</li>
</ol>
<p><strong>PROCEDURE 6.5.2: Updating Frontend Dependencies</strong></p>
<ol>
<li>Check for outdated packages:<pre><code>npm outdated</code></pre>
</li>
<li>Update packages:<pre><code>npm update</code></pre>
</li>
<li>Rebuild assets:<pre><code>npm run build</code></pre>
</li>
<li>Test site functionality</li>
</ol>              ]]></content:encoded>
    </item>
        <item>
      <title>Chapter 5 - Reading Interface</title>
      <link>https://read.rmv.fyi/grimoire-manual/chapter-5-reading-interface</link>
      <guid>https://read.rmv.fyi/grimoire-manual/chapter-5-reading-interface</guid>
      <pubDate>Sun, 26 Oct 2025 19:32:16 +0100</pubDate>
            <content:encoded><![CDATA[
        <h3>5.1 HOME PAGE INTERFACE</h3>
<p>The home page displays all published books in a responsive grid layout.</p>
<p><strong>Interface Components:</strong></p>
<ul>
<li><strong>Navigation Bar:</strong> Site name/logo, theme toggle, Panel access link</li>
<li><strong>Book Grid:</strong> Thumbnail cards for each book</li>
<li><strong>Book Card Elements:</strong> Cover image, title, series information (if applicable), author name</li>
<li><strong>Footer:</strong> Optional attribution text</li>
</ul>
<figure><img alt="" src="https://read.rmv.fyi/media/pages/grimoire-manual/chapter-5-reading-interface/9c607d4815-1761503335/screenshot-2025-10-26-at-19.28.41.png"></figure>
<p><strong>User Actions:</strong></p>
<ul>
<li>Click any book card to navigate to book detail page</li>
<li>Click Panel icon to access administrative interface</li>
<li>Click theme toggle to switch between light/dark modes</li>
</ul>
<h3>5.2 BOOK PAGE INTERFACE</h3>
<p>Book pages provide comprehensive information about a work and chapter access.</p>
<p><strong>Layout Structure:</strong></p>
<p><strong>Left Column (Desktop):</strong></p>
<ul>
<li>Cover image (full size)</li>
</ul>
<p><strong>Right Column (Desktop):</strong></p>
<ul>
<li>Series information (if applicable)</li>
<li>Title and subtitle</li>
<li>Author name</li>
<li>Blurb text</li>
<li>Series navigation (previous/next in series)</li>
<li>Reading progress indicator</li>
<li>"Resume Reading" button</li>
<li>Total reading time estimate</li>
<li>Chapter list with individual reading times</li>
</ul>
<figure><img alt="" src="https://read.rmv.fyi/media/pages/grimoire-manual/chapter-5-reading-interface/937ddc2362-1761503397/screenshot-2025-10-26-at-19.29.40.png"></figure>
<p><strong>Mobile Layout:</strong></p>
<p>On screens below 768px width, layout converts to single column with cover image at top.</p>
<h3>5.3 CHAPTER READING INTERFACE</h3>
<p>Chapter pages provide optimized reading experience with minimal distractions.</p>
<p><strong>Interface Components:</strong></p>
<p><strong>Top Navigation Bar:</strong></p>
<ul>
<li>Back button (returns to book page)</li>
<li>Breadcrumb: Book Title » Chapter Title</li>
<li>Font size controls (A-, A, A+) - desktop only</li>
<li>Theme toggle</li>
</ul>
<p><strong>Reading Progress Bar:</strong></p>
<ul>
<li>Fixed at top of viewport</li>
<li>Fills left-to-right as reader scrolls</li>
<li>Black gradient in light mode, white gradient in dark mode</li>
</ul>
<p><strong>Content Area:</strong></p>
<ul>
<li>Author's note (if configured for "before" display)</li>
<li>Chapter content (centered, optimized typography)</li>
<li>Author's note (if configured for "after" display)</li>
<li>"Read Next" button (if subsequent chapter exists)</li>
</ul>
<figure><img alt="" src="https://read.rmv.fyi/media/pages/grimoire-manual/chapter-5-reading-interface/9dcdadfce4-1761503439/screenshot-2025-10-26-at-19.30.12.png"></figure>
<h3>5.4 THEME SWITCHING</h3>
<p>Grimoire supports light and dark reading modes.</p>
<p><strong>PROCEDURE 5.4.1: Manual Theme Toggle</strong></p>
<p>Method 1: Click moon/sun icon in navigation bar<br />
Method 2: Press <code>T</code> key on keyboard</p>
<p><strong>Theme Characteristics:</strong></p>
<table>
<thead>
<tr>
<th>Element</th>
<th>Light Mode</th>
<th>Dark Mode</th>
</tr>
</thead>
<tbody>
<tr>
<td>Background</td>
<td>White (#FFFFFF)</td>
<td>Dark Gray (#111827)</td>
</tr>
<tr>
<td>Primary Text</td>
<td>Black (#000000)</td>
<td>Light Gray (#F9FAFB)</td>
</tr>
<tr>
<td>Secondary Text</td>
<td>Gray (#6B7280)</td>
<td>Medium Gray (#9CA3AF)</td>
</tr>
<tr>
<td>Progress Bar</td>
<td>Black gradient</td>
<td>White gradient</td>
</tr>
</tbody>
</table>
<p><strong>Persistence:</strong> Theme preference stored in browser LocalStorage, persists across sessions.</p>
<h3>5.5 FONT SIZE ADJUSTMENT</h3>
<p>Desktop users can adjust reading text size for optimal comfort.</p>
<p><strong>PROCEDURE 5.5.1: Font Size Selection</strong></p>
<ol>
<li>Navigate to any chapter page</li>
<li>Locate font size controls (A-, A, A+) in navigation bar</li>
<li>Click desired size:<ul>
<li><strong>A-</strong> (Small): prose-sm class</li>
<li><strong>A</strong> (Default): prose-lg class</li>
<li><strong>A+</strong> (Large): prose-xl class</li>
</ul>
</li>
<li>Size preference saved automatically</li>
</ol>
<p><strong>NOTE:</strong> Font size controls hidden on mobile devices (screen width &lt; 768px) to preserve navigation bar space.</p>
<h3>5.6 READING PROGRESS TRACKING</h3>
<p>Grimoire automatically tracks reading progress at both chapter and book levels.</p>
<p><strong>TRACKING MECHANISM 5.6.1: Chapter Progress</strong></p>
<ul>
<li>System monitors scroll position in real-time</li>
<li>When reader scrolls to 90% of chapter length, chapter marked as complete</li>
<li>Progress data stored in LocalStorage: <code>grimoire_chapter_progress_{bookId}</code></li>
<li>Completed chapters display with reduced opacity (40%) on book page</li>
</ul>
<p><strong>TRACKING MECHANISM 5.6.2: Book Progress</strong></p>
<ul>
<li>Book page displays progress indicator when any chapters completed</li>
<li>Shows: "X of Y chapters (Z%)"</li>
<li>Visual progress bar fills proportionally</li>
<li>Progress data persists in browser LocalStorage</li>
</ul>
<figure><img alt="" src="https://read.rmv.fyi/media/pages/grimoire-manual/chapter-5-reading-interface/abcf6c38f1-1761503502/screenshot-2025-10-26-at-19.31.33.png"></figure>
<h3>5.7 SCROLL POSITION MEMORY</h3>
<p>The system preserves exact scroll position for each chapter.</p>
<p><strong>MECHANISM 5.7.1: Position Saving</strong></p>
<ul>
<li>Scroll position saved automatically every 500ms during reading</li>
<li>Position saved on page navigation</li>
<li>Stored with timestamp in LocalStorage: <code>grimoire_reading_position_{bookId}_{chapterId}</code></li>
</ul>
<p><strong>MECHANISM 5.7.2: Position Restoration</strong></p>
<ul>
<li>On chapter page load, system checks for saved position</li>
<li>If found, page scrolls to saved location after 100ms delay</li>
<li>Allows seamless continuation of reading session</li>
</ul>
<h3>5.8 READING TIME ESTIMATES</h3>
<p>All reading time calculations based on 225 words per minute (industry standard).</p>
<p><strong>Display Locations:</strong></p>
<ul>
<li><strong>Book Page:</strong> Total reading time for entire book</li>
<li><strong>Chapter List:</strong> Individual time estimate per chapter</li>
</ul>
<p><strong>Calculation Method:</strong></p>
<pre><code>words_in_content = str_word_count(chapter_content)
minutes = ceil(words_in_content / 225)</code></pre>
<h3>5.9 KEYBOARD SHORTCUTS</h3>
<p>The following keyboard shortcuts enhance reading efficiency:</p>
<table>
<thead>
<tr>
<th>Key</th>
<th>Function</th>
<th>Context</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>T</code></td>
<td>Toggle theme</td>
<td>All pages</td>
</tr>
<tr>
<td><code>→</code> (Right Arrow)</td>
<td>Next chapter</td>
<td>Chapter pages</td>
</tr>
<tr>
<td><code>←</code> (Left Arrow)</td>
<td>Previous page</td>
<td>Chapter pages</td>
</tr>
</tbody>
</table>
<p><strong>NOTE:</strong> Keyboard shortcuts disabled when input/textarea elements have focus.</p>
<h3>5.10 DISTRACTION-FREE READING MODE</h3>
<p>Navigation bar automatically hides during scrolling to maximize reading space.</p>
<p><strong>BEHAVIOR 5.10.1: Auto-Hide Navigation</strong></p>
<ul>
<li>When scrolling down beyond 100 pixels: navigation slides up and fades out</li>
<li>When scrolling up: navigation slides down and fades in</li>
<li>When hovering near top of page: navigation becomes visible</li>
<li>Smooth CSS transitions provide non-jarring experience</li>
</ul>
<p>This feature reduces visual clutter during active reading while maintaining quick access to controls.</p>
<h3>5.11 RSS FEED ACCESS</h3>
<p>Each book provides an XML RSS feed for chapter notifications.</p>
<p><strong>PROCEDURE 5.12.1: Subscribing to Book Feed</strong></p>
<ol>
<li>Navigate to book page</li>
<li>Click RSS icon in navigation bar</li>
<li>Browser displays XML feed or prompts for feed reader</li>
<li>Add URL to preferred RSS reader application</li>
</ol>
<p><strong>Feed URL Format:</strong> <code>https://[domain]/[book-slug].xml</code></p>              ]]></content:encoded>
    </item>
        <item>
      <title>Chapter 4 - Content Management Procedures</title>
      <link>https://read.rmv.fyi/grimoire-manual/chapter-4-content-management-procedures</link>
      <guid>https://read.rmv.fyi/grimoire-manual/chapter-4-content-management-procedures</guid>
      <pubDate>Sun, 26 Oct 2025 19:27:11 +0100</pubDate>
            <content:encoded><![CDATA[
        <h3>4.1 CONTENT HIERARCHY OVERVIEW</h3>
<p>All content resides in the <code>content/</code> directory with the following structure:</p>
<pre><code>content/
├── 1_book-name/
│   ├── book.txt
│   ├── cover.jpg
│   ├── 1_chapter-name/
│   │   └── chapter.txt
│   ├── 2_next-chapter/
│   │   └── chapter.txt
│   └── ...
└── 2_another-book/
    └── ...</code></pre>
<p><strong>NOTE:</strong> Numeric prefixes determine display order. Higher numbers appear later in sequence.</p>
<h3>4.2 CREATING A NEW BOOK</h3>
<p><strong>PROCEDURE 4.2.1: Book Creation</strong></p>
<ol>
<li>Access the Panel at <code>/panel</code></li>
<li>Navigate to the Home page view</li>
<li>Click "+ Add" button</li>
<li>Select "Book" from template options</li>
<li>Enter URL slug (must be unique, lowercase, hyphen-separated)</li>
<li>Click "Add" to create book page</li>
</ol>
<figure><img alt="" src="https://read.rmv.fyi/media/pages/grimoire-manual/chapter-4-content-management-procedures/02a24ace03-1761503167/screenshot-create.png"></figure>
<h3>4.3 CONFIGURING BOOK METADATA</h3>
<p><strong>PROCEDURE 4.3.1: Book Field Entry</strong></p>
<p>Navigate to the newly created book page and complete the following fields:</p>
<p><strong>Required Fields:</strong></p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Description</th>
<th>Format</th>
</tr>
</thead>
<tbody>
<tr>
<td><em>Title</em></td>
<td>Primary book title</td>
<td>Plain text</td>
</tr>
<tr>
<td><em>Subtitle</em></td>
<td>Secondary title or tagline</td>
<td>Plain text</td>
</tr>
<tr>
<td><em>Author</em></td>
<td>Author name(s)</td>
<td>Plain text</td>
</tr>
<tr>
<td><em>Blurb</em></td>
<td>Marketing description</td>
<td>Markdown supported</td>
</tr>
<tr>
<td><em>Cover</em></td>
<td>Cover image</td>
<td>Image file (JPG, PNG recommended)</td>
</tr>
</tbody>
</table>
<p><strong>Optional Fields:</strong></p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Description</th>
<th>Default</th>
</tr>
</thead>
<tbody>
<tr>
<td><em>Content Rating</em></td>
<td>Display filtering</td>
<td>SFW</td>
</tr>
<tr>
<td><em>Series Name</em></td>
<td>If part of series</td>
<td>Empty</td>
</tr>
<tr>
<td><em>Series Number</em></td>
<td>Sequential position</td>
<td>Empty</td>
</tr>
</tbody>
</table>
<p><strong>Content Rating Options:</strong></p>
<ul>
<li><strong>SFW (Safe for Work):</strong> No content warnings, displayed normally</li>
<li><strong>NSFW (Not Safe for Work):</strong> Cover blurred on home page, click to reveal</li>
<li><strong>NSFL (Not Safe for Life):</strong> Cover blurred, requires confirmation dialog</li>
</ul>
<h3>4.4 UPLOADING COVER IMAGES</h3>
<p><strong>PROCEDURE 4.4.1: Cover Image Upload</strong></p>
<ol>
<li>In book editing view, locate <em>Cover</em> field</li>
<li>Click "+" or drag image file to upload area</li>
<li>Wait for upload completion</li>
<li>Image appears in cover field</li>
<li>Click "Save" to commit changes</li>
</ol>
<p><strong>Image Specifications:</strong></p>
<ul>
<li>Recommended dimensions: 1600 x 2400 pixels (2:3 aspect ratio)</li>
<li>Maximum file size: Determined by PHP configuration</li>
<li>Supported formats: JPEG, PNG, WebP</li>
<li>Color mode: RGB</li>
</ul>
<p><strong>NOTE:</strong> Grimoire automatically generates thumbnails for optimal display performance.</p>
<h3>4.5 CREATING CHAPTERS</h3>
<p><strong>PROCEDURE 4.5.1: Chapter Creation</strong></p>
<ol>
<li>Within book editing view, locate "Chapters" section</li>
<li>Click "+ Add" button</li>
<li>Select "Chapter" template</li>
<li>Enter chapter URL slug</li>
<li>Click "Add" to create chapter</li>
</ol>
<p><strong>PROCEDURE 4.5.2: Chapter Content Entry</strong></p>
<p>Navigate to chapter editing view and complete:</p>
<p><strong>Primary Fields:</strong></p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Description</th>
<th>Required</th>
</tr>
</thead>
<tbody>
<tr>
<td><em>Title</em></td>
<td>Chapter title</td>
<td>Yes</td>
</tr>
<tr>
<td><em>Subtitle</em></td>
<td>Optional subtitle</td>
<td>No</td>
</tr>
<tr>
<td><em>Content</em> (wcontent)</td>
<td>Chapter text</td>
<td>Yes</td>
</tr>
</tbody>
</table>
<p><strong>NOTE:</strong> The content field is internally named <code>wcontent</code>, not the standard <code>content</code> field. This isn't relevant to the user experience, but should be considered when editing the source code.</p>
<h3>4.6 AUTHOR'S NOTES</h3>
<p>Chapters support optional author's notes displayed before or after chapter content.</p>
<p><strong>PROCEDURE 4.6.1: Adding Author's Notes</strong></p>
<ol>
<li>In chapter editing view, locate <em>Author's note</em> field</li>
<li>Enter note text (Markdown supported)</li>
<li>Select <em>Author's note mode</em>:<ul>
<li><strong>Don't Display:</strong> Note saved but not shown</li>
<li><strong>Display Before Chapter:</strong> Note appears above chapter text</li>
<li><strong>Display After Chapter:</strong> Note appears below chapter text</li>
</ul>
</li>
<li>Save changes</li>
</ol>
<h3>4.7 CHAPTER ORDERING</h3>
<p>Chapter display order is determined by numeric prefixes in the file system.</p>
<p><strong>PROCEDURE 4.7.1: Reordering Chapters</strong></p>
<ol>
<li>In book editing view, locate "Chapters" section</li>
<li>Hover over chapter to reveal handle icon</li>
<li>Click and drag chapter to new position</li>
<li>Release to commit new order</li>
<li>System automatically updates numeric prefixes</li>
</ol>
<h3>4.8 SERIES MANAGEMENT</h3>
<p>Books may be organized into series with sequential navigation.</p>
<p><strong>PROCEDURE 4.8.1: Adding Book to Series</strong></p>
<ol>
<li>Edit book metadata</li>
<li>Enter <em>Series Name</em> (must match exactly across all books in series)</li>
<li>Enter <em>Series Number</em> (integer: 1, 2, 3, etc.)</li>
<li>Save changes</li>
</ol>
<p>When series metadata is configured, automatic "Previous" and "Next" navigation links appear on book pages, allowing readers to traverse the series sequentially.</p>              ]]></content:encoded>
    </item>
        <item>
      <title>Chapter 3 - Installation and Configuration</title>
      <link>https://read.rmv.fyi/grimoire-manual/chapter-3-installation-and-configuration</link>
      <guid>https://read.rmv.fyi/grimoire-manual/chapter-3-installation-and-configuration</guid>
      <pubDate>Sun, 26 Oct 2025 22:43:30 +0100</pubDate>
            <content:encoded><![CDATA[
        <h3>3.1 INITIAL INSTALLATION</h3>
<p><strong>PROCEDURE 3.1.1: Installing Grimoire</strong></p>
<ol>
<li>Extract the Grimoire distribution archive to your web server document root</li>
<li>Navigate to the installation directory via command line interface</li>
<li>Execute dependency installation:<pre><code>composer update</code></pre>
</li>
<li>Install frontend dependencies:<pre><code>npm install</code></pre>
</li>
<li>Build frontend assets:<pre><code>npm run build</code></pre>
</li>
</ol>
<p><strong>NOTE:</strong> For development environments, use <code>npm run watch</code> to enable automatic asset rebuilding.</p>
<h3>3.2 WEB SERVER CONFIGURATION</h3>
<p><strong>PROCEDURE 3.2.1: Apache Configuration</strong></p>
<p>Grimoire includes a pre-configured <code>.htaccess</code> file. Ensure <code>mod_rewrite</code> is enabled:</p>
<pre><code class="language-apache">LoadModule rewrite_module modules/mod_rewrite.so</code></pre>
<p><strong>PROCEDURE 3.2.2: Starting Development Server</strong></p>
<p>For local development, utilize the built-in PHP server:</p>
<pre><code>composer start</code></pre>
<p>This command executes: <code>php -S localhost:8000 kirby/router.php</code></p>
<p>Access the system at: <code>http://localhost:8000</code></p>
<h3>3.3 ADMINISTRATIVE PANEL ACCESS</h3>
<p>The Kirby Panel provides the administrative interface for content management.</p>
<p><strong>PROCEDURE 3.3.1: Initial Panel Access</strong></p>
<ol>
<li>Navigate to: <code>http://[your-domain]/panel</code></li>
<li>On first access, create an administrator account</li>
<li>Enter desired credentials</li>
<li>Submit account creation form</li>
</ol>
<p><strong>WARNING:</strong> Store administrative credentials securely. Lost credentials require manual file system recovery.</p>
<h3>3.4 SYSTEM CONFIGURATION</h3>
<p>Primary system configuration is located in <code>site/config/config.php</code>.</p>
<p><strong>CONFIGURATION 3.4.1: Debug Mode</strong></p>
<p>For production environments, ensure debug mode is disabled:</p>
<pre><code class="language-php">'debug' =&gt; false</code></pre>
<p><strong>CONFIGURATION 3.4.2: Markdown Settings</strong></p>
<p>Grimoire enables extended Markdown features:</p>
<pre><code class="language-php">'markdown' =&gt; [
  'extra' =&gt; true
]</code></pre>
<p><strong>CONFIGURATION 3.4.3: Image Processing</strong></p>
<p>Thumbnail generation settings:</p>
<pre><code class="language-php">'thumbs' =&gt; [
  'driver' =&gt; 'gd',
  'quality' =&gt; 80
]</code></pre>
<h3>3.5 SITE-LEVEL SETTINGS</h3>
<p>Access site settings through the Panel at Settings &gt; Site.</p>
<p><strong>Setting Fields:</strong></p>
<table>
<thead>
<tr>
<th>Field Name</th>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><em>Name</em></td>
<td>Text</td>
<td>Site name displayed in navigation</td>
</tr>
<tr>
<td><em>Logo</em></td>
<td>File</td>
<td>Optional logo image (replaces text name when enabled)</td>
</tr>
<tr>
<td><em>Show Logo?</em></td>
<td>Toggle</td>
<td>Controls logo display</td>
</tr>
<tr>
<td><em>Show attribution at the bottom?</em></td>
<td>Toggle</td>
<td>Controls footer attribution display</td>
</tr>
<tr>
<td><em>Show Book/Comic badges?</em></td>
<td>Toggle</td>
<td>Controls content type badges on home page</td>
</tr>
</tbody>
</table>              ]]></content:encoded>
    </item>
        <item>
      <title>Chapter 2 - System Architecture</title>
      <link>https://read.rmv.fyi/grimoire-manual/chapter-2-system-architecture</link>
      <guid>https://read.rmv.fyi/grimoire-manual/chapter-2-system-architecture</guid>
      <pubDate>Sun, 26 Oct 2025 19:22:42 +0100</pubDate>
            <content:encoded><![CDATA[
        <h3>2.1 SYSTEM OVERVIEW</h3>
<p>Grimoire implements a hierarchical content structure consisting of three primary levels:</p>
<p><strong>Level 1: HOME</strong><br />
The primary landing page displaying all published works in a grid layout.</p>
<p><strong>Level 2: BOOK</strong><br />
Container pages for individual works, including metadata and chapter listings.</p>
<p><strong>Level 3: CHAPTER</strong><br />
Individual content pages containing the readable text of each chapter.</p>
<h3>2.2 HARDWARE REQUIREMENTS</h3>
<p><strong>Minimum Server Configuration:</strong></p>
<ul>
<li>Processor: 1 GHz or faster</li>
<li>Memory: 512 MB RAM minimum, 1 GB recommended</li>
<li>Storage: 100 MB for system files, plus storage for content and media</li>
</ul>
<p><strong>Client Browser Requirements:</strong></p>
<ul>
<li>Modern web browser with JavaScript enabled</li>
<li>HTML5 and CSS3 support required</li>
<li>LocalStorage API support recommended for enhanced features</li>
</ul>
<h3>2.3 SOFTWARE REQUIREMENTS</h3>
<p><strong>Server Environment:</strong></p>
<ul>
<li>PHP Version: 8.2 or higher</li>
<li>Required PHP Extensions: mbstring, gd, curl, zip</li>
<li>Web Server: Apache, Nginx, or compatible</li>
<li>Composer: Latest stable version</li>
</ul>
<p><strong>Development Environment:</strong></p>
<ul>
<li>Node.js: 14.x or higher</li>
<li>NPM: 6.x or higher</li>
<li>Tailwind CSS: Configured via npm</li>
</ul>
<h3>2.4 LICENSING REQUIREMENTS</h3>
<p>Grimoire is distributed under open source terms. However, the following third-party components require separate licensing:</p>
<ul>
<li><strong>Kirby CMS:</strong> Requires commercial license for production use (evaluation free)</li>
<li><strong>Fancybox UI:</strong> Licensed under GPLv3 or commercial license</li>
</ul>              ]]></content:encoded>
    </item>
        <item>
      <title>Chapter 1 - Introduction</title>
      <link>https://read.rmv.fyi/grimoire-manual/chapter-1-introduction</link>
      <guid>https://read.rmv.fyi/grimoire-manual/chapter-1-introduction</guid>
      <pubDate>Sun, 26 Oct 2025 19:21:38 +0100</pubDate>
            <content:encoded><![CDATA[
        <h3>1.1 PURPOSE AND SCOPE</h3>
<p>This manual provides comprehensive documentation for the Grimoire Publishing System, a web-based content publishing platform designed for the distribution of long-form written works. The system enables content creators to author, manage, and publish books, novels, and serialised content for web-based consumption.</p>
<p>Grimoire is built upon the Kirby Content Management System (CMS) and provides an enhanced reading experience through progressive web technologies.</p>
<h3>1.2 INTENDED AUDIENCE</h3>
<p>This document serves three primary user classes:</p>
<ul>
<li><strong>System Administrators:</strong> Responsible for installation, configuration, and maintenance</li>
<li><strong>Content Authors:</strong> Individuals creating and managing published works</li>
<li><strong>End Users:</strong> Readers accessing published content through the web interface</li>
</ul>
<h3>1.3 DOCUMENTATION CONVENTIONS</h3>
<p>Throughout this manual, the following conventions are employed:</p>
<ul>
<li><strong>UPPERCASE</strong> indicates system constants and configuration keys</li>
<li><code>monospace</code> indicates file paths, code, and command-line entries</li>
<li><em>italic</em> indicates field names and menu options</li>
<li><strong>Bold</strong> indicates important notices or warnings</li>
</ul>
<h3>1.4 RELATED DOCUMENTATION</h3>
<ul>
<li>Kirby CMS Documentation: <a href="https://getkirby.com/docs">https://getkirby.com/docs</a></li>
<li>PHP Manual: <a href="https://www.php.net/manual/">https://www.php.net/manual/</a></li>
<li>Tailwind CSS Documentation: <a href="https://tailwindcss.com/docs">https://tailwindcss.com/docs</a></li>
</ul>              ]]></content:encoded>
    </item>
        
  </channel>
</rss>