Skip to content

feat: new starlight-astro docs site#35

Open
alexhb1 wants to merge 2 commits into
mainfrom
starlight-redesign
Open

feat: new starlight-astro docs site#35
alexhb1 wants to merge 2 commits into
mainfrom
starlight-redesign

Conversation

@alexhb1

@alexhb1 alexhb1 commented Jun 18, 2026

Copy link
Copy Markdown
Member

This updates the site to a new architecture using Astro/Starlight with a new design, new homepage, and integrated documentation pages with API docs.

Key changes:

  • Moved from React+Docusaurus to Astro's Starlight
  • New homepage and general UI design
  • Converted docs from MD > MDX, and updated various references throughout each
  • Introduced theme-aware images. Add new images with the same name and -light appended to the names and it'll use that exclusively for light mode, the standard image reserved for dark mode.

Live preview: https://alexhb1.github.io/. Tested and working on my fork's github pages deployment with no issues.

Other elements to address:

  • No homepage images yet
  • No light mode images. Currently will default to the current dark mode versions.
  • No advanced MDX features (E.g. tabs, dynamic components etc) that can improve general UX of the documentation.

Summary by CodeRabbit

  • New Features

    • Migrated the documentation site from Docusaurus to Astro with Starlight integration.
    • Added theme-aware image rendering for consistent light/dark visuals.
    • Enhanced documentation navigation with a tabbed Docs/API sidebar and richer sidebar sublists.
    • Introduced new landing components (hero, footer, and reusable UI buttons).
  • Chores

    • Updated build/deployment setup (Astro scripts, Node.js version for builds, GitHub Pages artifact source).
    • Updated README, docs routing, and standardized MDX/frontmatter and heading/callout styles across pages.

@coderabbitai

coderabbitai Bot commented Jun 18, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Migrates the documentation site from Docusaurus to Astro Starlight. Removes docusaurus.config.ts, sidebars.ts, and the old React HomepageFeatures component. Adds astro.config.mjs, PostCSS config, and new Astro components for the sidebar, hero, footer, and theme-aware images. Updates all MDX documentation pages to use frontmatter, ThemeImage, plain headings, and absolute route links.

Changes

Docusaurus to Astro Starlight Migration

Layer / File(s) Summary
Build tooling, dependencies, and CI configuration replacement
package.json, postcss.config.mjs, .gitignore, .github/workflows/deploy.yml, README.md
Updates Node.js to version 24, changes CI artifact path from build to dist, replaces Docusaurus/React dependencies with Astro/Starlight/Tailwind v4, adds ESM mode and Astro dev/build/preview scripts, adds PostCSS Tailwind plugin config, rewrites .gitignore for Astro output/build artifacts, and updates README with Astro site description and local/preview/deploy instructions for GitHub Pages on main branch.
Astro site configuration and content collection
astro.config.mjs, src/content.config.ts
Defines the Astro site URL (https://grimmory.org), Inter font via fontsource (weights 400/500/600/700, latin subset), Starlight integration with custom component overrides (Head/Hero/SiteTitle/Footer/Sidebar/TwoColumnContent/PageSidebar), starlightOpenAPI wiring to a released openapi.json with autogenerated API Reference sidebar group (collapsed, badges enabled, operation labels from summary), per-language snippet targets with shell/curl default, social links (GitHub/Discord), and multi-section autogenerated sidebar. Adds docs content collection with Starlight loader and schema.
Shared UI primitives: AppButton, DocsIcon, ThemeImage, Head
src/components/AppButton.astro, src/components/DocsIcon.astro, src/components/ThemeImage.astro, src/components/Head.astro
Adds a polymorphic styled anchor button (tone/variant/size/icon/iconPlacement, auto-computed rel for external links), a dynamic Lucide icon resolver by kebab-case name, a responsive light/dark image component with WebP srcset generation per width and MutationObserver theme switching via data-theme attribute, and Starlight Head with Inter font preload using CSS variable hook.
Page-level components: Hero, Features, CommunityLinks, Footer, SiteTitle
src/components/Hero.astro, src/components/Features.astro, src/components/CommunityLinks.astro, src/components/Footer.astro, src/components/SiteTitle.astro
Adds hero section (headline + logo + tagline + action buttons with IntersectionObserver scroll sentinel), features grid (Lucide icons + title + description, responsive 1-to-2 columns), community links nav (Discord/GitHub/Sponsor/Docs AppButtons), footer (Starlight default + conditional custom nav + year-based copyright), and site title (SVG wordmark + sr-only text). Removes legacy React HomepageFeatures component and CSS module.
Tabbed sidebar with recursive sublists: Sidebar, ApiSidebarSublist, IconSidebarSublist, PageSidebar, TwoColumnContent
src/components/Sidebar.astro, src/components/ApiSidebarSublist.astro, src/components/IconSidebarSublist.astro, src/components/PageSidebar.astro, src/components/TwoColumnContent.astro
Adds tabbed sidebar (Docs vs API tabs from starlightRoute.sidebar with ARIA role=tablist/tabpanel, keyboard navigation via Arrow/Home/End), ApiSidebarSublist (link/group rendering with aria-current, collapse-on-open, badges, method-color accents), IconSidebarSublist (Lucide icon lookup per label, recursive group expansion, current-descendant auto-open), PageSidebar (responsive mobile/desktop TOC containers), and TwoColumnContent (flex layout with optional fixed right sidebar when TOC present).
Landing page: splash template with hero and components
src/content/docs/index.mdx
Creates the Starlight splash landing page with frontmatter (title/description/layout=splash/sidebar hidden), hero actions ("Get started" + "View on GitHub"), and renders Features and CommunityLinks Astro components. Removes old Docusaurus docs/index.mdx redirect file.
Administration documentation pages standardization
src/content/docs/administration/*
Updates audit-logs, content-restrictions, devices, email-setup, global-preferences, task-manager, user-management: adds frontmatter (title/slug/sidebar), replaces Markdown images with ThemeImage, removes emoji-prefixed headings, converts :::info/:::warning to :::note/:::caution, updates Audit Log links to /tools/audit-logs routes.
Authentication and OIDC documentation pages standardization
src/content/docs/authentication/*
Updates oidc-identity-providers (authelia, authentik, pocket-id), oidc-settings, overview: adds frontmatter, replaces Markdown images with ThemeImage, removes emoji headings, converts provider-setup callouts to :::note blocks, updates OIDC Settings links to absolute routes with fragments (/authentication/oidc-settings#...), replaces checkmarks with DocsIcon components.
Bookdrop and Books documentation pages standardization
src/content/docs/bookdrop/*, src/content/docs/books/*
Updates bookdrop (advanced, basics), books (authors, grid, library-stats, magic-shelf, notebook, reading-stats, series, shelf, table): adds frontmatter, replaces Markdown images with ThemeImage, removes emoji headings, converts admonitions, updates Magic Shelf link to /books/magic-shelf route.
Customization and Integration documentation pages standardization
src/content/docs/customization/*, src/content/docs/integration/*
Updates customization (cover-art-settings, custom-fonts, custom-icons), integration (kobo, komga-api, koreader, opds): adds frontmatter, replaces Markdown images with ThemeImage, removes emoji headings, converts admonitions to note/caution, adds DocsIcon for troubleshooting category markers, restructures Komga API into numbered steps, updates KOReader/OPDS links to absolute routes.
Library and Metadata documentation pages standardization
src/content/docs/library/*, src/content/docs/metadata/*
Updates library (duplicate-detection, edit-library, organization-modes, physical-books, setup-first-library), metadata (amazon-cookie, file-naming-patterns, hardcover-token, lubimyczytac, metadata-center, metadata-fetch-configuration, metadata-manager): adds frontmatter, replaces Markdown images with ThemeImage, removes emoji headings, converts admonitions, adds DocsIcon for remove actions, updates Magic Shelf and task-manager links to absolute routes.

Sequence Diagram(s)

sequenceDiagram
  participant Browser
  participant Sidebar as Sidebar Component
  participant IconSidebarSublist
  participant ApiSidebarSublist
  participant ThemeImage

  Browser->>Sidebar: page load — compute active tab from starlightRoute.sidebar
  Sidebar->>IconSidebarSublist: render Docs tab panel with icon-labeled entries
  Sidebar->>ApiSidebarSublist: render API tab panel (hidden initially)
  Browser->>Sidebar: user clicks "API" tab or presses arrow key
  Sidebar->>Sidebar: update aria-selected, tabindex, toggle hidden state
  Sidebar->>ApiSidebarSublist: show API panel with collapsed operation groups
  Sidebar->>IconSidebarSublist: hide Docs panel

  Browser->>ThemeImage: page load — read document.documentElement.dataset.theme
  ThemeImage->>Browser: set img.src/srcset from data-dark-src or data-light-src
  Browser->>ThemeImage: user switches theme via Starlight theme picker (data-theme changes)
  ThemeImage->>Browser: MutationObserver fires, re-applies src/srcset with new theme
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • grimmory-tools/grimmory-docs#1: Modifies sidebars.ts entries (telemetry) within the same Docusaurus structure that this PR removes entirely as part of the migration.

Poem

🐇 From Docusaurus I hop away,
To Starlight's glow I bound today!
With ThemeImage dark and light,
And tabbed sidebars shining bright,
The docs bloom fresh in Astro's ray! ✨


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (1 error)

Check name Status Explanation Resolution
Description check ❌ Error The PR description is missing several required sections: Linked Issue, Manual Testing Steps, AI Disclosure, and incomplete Checklist items. Add all required sections from the template: Linked Issue (with issue number), detailed Manual Testing Steps (with numbered steps), AI Disclosure statement, and complete all Checklist items with proper checkbox status.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'feat: new starlight-astro docs site' follows conventional commit format with 'feat' prefix and clearly describes the main change.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch starlight-redesign
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch starlight-redesign

Warning

Review ran into problems

🔥 Problems

Linked repositories: Your configuration references 1 linked repositories, but your current plan allows 0. Analyzed ``, skipped grimmory-tools/grimmory-docs.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@alexhb1 alexhb1 marked this pull request as draft June 18, 2026 13:29

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/content/docs/integration/komga-api.mdx (1)

45-54: ⚠️ Potential issue | 🟠 Major

Fix port inconsistency in Komga API examples.

The Komga API documentation uses localhost:8080 (lines 45, 53, 338, 340), but all other integration docs (opds.mdx, koreader.mdx, kobo.mdx) consistently use port 6060 for Grimmory endpoints. Update the Komga API examples to use :6060 to match the canonical default port across the documentation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/content/docs/integration/komga-api.mdx` around lines 45 - 54, The Komga
API documentation uses an inconsistent port number (8080) compared to other
integration documentation files which standardly use port 6060 for Grimmory
endpoints. Replace all instances of port 8080 with port 6060 in the Komga API
examples, including the URL in the main API endpoint example
(http://localhost:8080/komga should become http://localhost:6060/komga) and in
the Network Access tip section where it mentions replacing localhost:8080 with
the actual server address. Ensure consistency across all referenced lines (45,
53, 338, 340) to match the standard port used in opds.mdx, koreader.mdx, and
kobo.mdx documentation.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.gitignore:
- Around line 8-9: The current .gitignore entries only ignore specific .env
filenames (.env and .env.production), which allows other environment files like
.env.local and .env.development to be accidentally committed. Replace the two
specific .env entries with a single wildcard pattern (.env*) that will match all
environment files regardless of their suffix, ensuring comprehensive coverage of
secret files.

In `@astro.config.mjs`:
- Line 38: In the schema configuration at line 38, the URL uses the mutable
releases/latest/download/openapi.json path which creates nondeterministic
builds. Replace this with a specific versioned release URL (for example,
releases/vX.Y.Z/download/openapi.json) to pin the schema to a stable version,
ensuring reproducible builds and avoiding upstream outage vulnerabilities.

In `@README.md`:
- Line 37: Ensure the GitHub platform name is capitalized with the official
spelling "GitHub" (capital G and capital H) on line 37 of the README.md file.
Review the text "GitHub Pages deploys from
[deploy.yml](.github/workflows/deploy.yml) on push to `main`" and correct any
instances where "GitHub" appears with incorrect capitalization to match the
official branding standard.

In `@src/components/AppButton.astro`:
- Line 70: The linkRel variable assignment currently uses the custom rel value
as a fallback when target is blank, which can drop the required security tokens
noopener noreferrer. Instead of replacing the security tokens, merge them with
any custom rel value by combining noopener noreferrer with the provided rel when
target equals _blank, ensuring both the security tokens and custom rel
attributes are preserved in the final linkRel value.

In `@src/content/docs/authentication/oidc-identity-providers/authelia.mdx`:
- Around line 113-116: The anchor fragment links in the
authentication/oidc-identity-providers/authelia.mdx file contain unnecessary
leading dashes that don't match the actual heading slugs in the
oidc-settings.mdx file. In the "User Provisioning" list item, change the anchor
from `#-user-provisioning` to `#user-provisioning`. In the "OIDC-Only Mode" list
item, change the anchor from `#-oidc-only-mode` to `#oidc-only-mode`. Also
locate and fix the same anchor fragments on line 135 by removing the leading
dashes to match the actual heading slugs without the dash prefix.

In `@src/content/docs/authentication/oidc-identity-providers/authentik.mdx`:
- Around line 177-180: The fragment identifiers in the OIDC Settings links
throughout the document use legacy formats with leading hyphens that no longer
match the current heading identifiers. Update the fragment links from their
current format (such as `#-user-provisioning` and `#-oidc-only-mode`) to the correct
format without the leading hyphen (such as `#user-provisioning` and
`#oidc-only-mode`) in the User Provisioning, OIDC-Only Mode, and Account Linking
list items, as well as any other instances on line 194, to ensure the internal
documentation links properly navigate to the intended sections.

In `@src/content/docs/authentication/oidc-identity-providers/pocket-id.mdx`:
- Around line 111-114: Update the outdated anchor fragment references in the
OIDC settings links to match the current normalized section heading IDs. Replace
the fragment on line 111 from `#-user-provisioning` with the correct current ID,
the fragment on line 113 from `#-oidc-only-mode` with the correct current ID,
and also update the fragment reference on line 128 (mentioned as also applying)
to use the normalized ID format. Ensure all four links to the OIDC settings page
use fragment IDs that exactly match the current section headings in the target
documentation file.

In `@src/content/docs/bookdrop/basics.mdx`:
- Line 59: In the "Filename Pattern Preview" line, replace the relative link
reference to metadata/file-naming-patterns with an absolute docs route. Change
the link syntax from the current relative path to use the normalized absolute
route format to ensure proper resolution regardless of trailing-slash behavior
and route configuration.

In `@src/content/docs/books/magic-shelf.mdx`:
- Line 9: The ThemeImage component imported in magic-shelf.mdx and referenced in
other markdown files requires image assets to exist in src/assets/images/, but
33 referenced image files are missing from the repository, which will cause
build-time failure. To fix this, either add all missing image assets to
src/assets/images/ with the correct directory structure (such as
src/assets/images/magic-shelf/ for the images referenced in magic-shelf.mdx
lines 31, 36, 283, 298, 301 and src/assets/images/library-stats/ for the
library-stats.mdx images), ensuring at least the dark variants exist since
ThemeImage.astro requires the base dark images, or update the image path
references in the markdown files to point to image assets that already exist in
the repository.

---

Outside diff comments:
In `@src/content/docs/integration/komga-api.mdx`:
- Around line 45-54: The Komga API documentation uses an inconsistent port
number (8080) compared to other integration documentation files which standardly
use port 6060 for Grimmory endpoints. Replace all instances of port 8080 with
port 6060 in the Komga API examples, including the URL in the main API endpoint
example (http://localhost:8080/komga should become http://localhost:6060/komga)
and in the Network Access tip section where it mentions replacing localhost:8080
with the actual server address. Ensure consistency across all referenced lines
(45, 53, 338, 340) to match the standard port used in opds.mdx, koreader.mdx,
and kobo.mdx documentation.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3dcde93e-25f2-4290-bd47-934dbe51b349

📥 Commits

Reviewing files that changed from the base of the PR and between 6aad6c6 and 9cb91c0.

⛔ Files ignored due to path filters (230)
  • package-lock.json is excluded by !**/package-lock.json
  • public/favicon.png is excluded by !**/*.png
  • public/favicon.svg is excluded by !**/*.svg
  • src/assets/images/audiobook-player/audiobook-player-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/audit-logs/audit-logs.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authelia/disable-oidc.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authelia/grimmory-oidc-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authelia/login-success.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authelia/standard-login.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/application-details.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/create-application.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/disable-oidc.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/grimmory-homepage.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/grimmory-oidc-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/login-page.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/oauth-scopes.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/provider-credentials.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/provider-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/provider-type.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/providers-list.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/redirect-uris.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/standard-login.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/user-bindings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/user-impersonation.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/auto-provisioning/enable-auto-provisioning.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/auto-provisioning/setup-oidc.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/auto-provisioning/verify-user-creation.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/oidc-settings/group-mapping.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/login-methods.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/oidc-only-mode.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/provider-configuration.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/provider-reference-full.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/provider-reference.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/user-provisioning.png is excluded by !**/*.png
  • src/assets/images/authentication/pocket-id/app-card.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/client-details.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/copy-client-id.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/create-client.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/disable-oidc.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/grimmory-oidc-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/login-success.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/standard-login.jpg is excluded by !**/*.jpg
  • src/assets/images/authors/author-details.jpg is excluded by !**/*.jpg
  • src/assets/images/authors/browse-all-authors.jpg is excluded by !**/*.jpg
  • src/assets/images/authors/edit-details.jpg is excluded by !**/*.jpg
  • src/assets/images/authors/search-author.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-dropdown.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-folder.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-library.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-pre-final.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-pre.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-progress.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-summary.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/processing-status.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-notes.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-pages.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-shortcuts.jpg is excluded by !**/*.jpg
  • src/assets/images/cdn/bg.png is excluded by !**/*.png
  • src/assets/images/custom-fonts/file-preview.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/font-collection.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/font-library.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/global-setting.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/per-book-setting.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/upload-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/dashboard/dashboard-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/dashboard/dashboard-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/devices/hardcover-integration.jpg is excluded by !**/*.jpg
  • src/assets/images/devices/kobo-admin-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/devices/kobo-integration.jpg is excluded by !**/*.jpg
  • src/assets/images/devices/koreader-sync.jpg is excluded by !**/*.jpg
  • src/assets/images/duplicate-detection/find-duplicates-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/duplicate-detection/library-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/edit-library/edit-form.jpg is excluded by !**/*.jpg
  • src/assets/images/edit-library/header-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/edit-library/sidebar-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/email-setup/create-provider-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/email-setup/email-configuration.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-layout.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-navigation.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-notes.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-quick-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-theme.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-toc.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-typography.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/add-book-folders.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/click-add-a-library.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/library-folder-picker.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/library-processing.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/monitoring-library.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/new-library-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/selected-library-folders.jpg is excluded by !**/*.jpg
  • src/assets/images/global-preferences/global-preferences.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/cover-size-slider.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/overview.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/search-bar.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/series-collapsed.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/series-expanded.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/sidebar-filters.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/sidebar-sort-options.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/sort-dropdown.jpg is excluded by !**/*.jpg
  • src/assets/images/icons/add-svg.jpg is excluded by !**/*.jpg
  • src/assets/images/icons/custom-icons.jpg is excluded by !**/*.jpg
  • src/assets/images/icons/icon-picker.jpg is excluded by !**/*.jpg
  • src/assets/images/icons/prime-icons.jpg is excluded by !**/*.jpg
  • src/assets/images/initial-setup/admin-user.jpg is excluded by !**/*.jpg
  • src/assets/images/initial-setup/empty-dashboard.jpg is excluded by !**/*.jpg
  • src/assets/images/initial-setup/login.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/assign-shelf.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/config-after.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/config-before.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/config-file-location.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/device-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/remove-confirm.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/remove-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/shelf-after-removal.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/shelf-with-books.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/sync-after-removal.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/sync-button.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/synced-books.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/synced-progress.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/user-permissions.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/binary-matching.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/credentials-setup.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/custom-sync-server.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/device-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/login-credentials.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/matching-method.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/push-pull-options.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/settings-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/synced-progress.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/user-permissions.jpg is excluded by !**/*.jpg
  • src/assets/images/library-stats/library-stats-charts.jpg is excluded by !**/*.jpg
  • src/assets/images/library-stats/library-stats-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-1.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-2.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex1.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex2.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex3.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex4.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex5.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-export.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-import-applied.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-import-json.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/book-details.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/edit-metadata.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/files-tab.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/notes-tab.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/reading-sessions-tab.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/reviews-tab.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/search-metadata-compare.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/search-metadata.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/sidecar.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-config/metadata-configuration.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/amazon-cookie/amazon-cookie-1.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/amazon-cookie/amazon-cookie-2.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/auto-metadata-download.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/enabled-fields.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/file-naming-patterns.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/hardcover-api/hardcover-1.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/hardcover-api/hardcover-2.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/access-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/delete-option.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/merge-target.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/overview.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/rename-button.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/rename-confirm.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/rename-input.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/select-items.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/metadata-fetch-configuration/metadata-fetch-configuration.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/metadata-persistence.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/metadata-providers.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/public-reviews.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/sidecar-json.jpg is excluded by !**/*.jpg
  • src/assets/images/notebook/notebook-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/opds/opds.jpg is excluded by !**/*.jpg
  • src/assets/images/pdf-reader/pdf-reader-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/pdf-reader/pdf-reader-view-modes.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/add-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/isbn-import-complete.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/isbn-import-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/isbn-import-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/isbn-import-progress.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/library-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/comic-reader.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/custom-font-library.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/ebook-appearance.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/ebook-layout.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/ebook-typography.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/pdf-reader.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/settings-application-mode.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-book-flow.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-completion-race.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-debt-era.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-session-archetypes.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-survival-length.jpg is excluded by !**/*.jpg
  • src/assets/images/series/browse-all-series.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/assign-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/assign-multiple-books.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/assign-single-book.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/create-confirm.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/create-form.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/sidebar-listing.jpg is excluded by !**/*.jpg
  • src/assets/images/table/delete-confirm.jpg is excluded by !**/*.jpg
  • src/assets/images/table/delete-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/table/sidebar-default.jpg is excluded by !**/*.jpg
  • src/assets/images/table/sidebar-sort-options.jpg is excluded by !**/*.jpg
  • src/assets/images/table/table-search.jpg is excluded by !**/*.jpg
  • src/assets/images/table/table-select-all.jpg is excluded by !**/*.jpg
  • src/assets/images/table/table-sorting.jpg is excluded by !**/*.jpg
  • src/assets/images/table/table-visible-columns.jpg is excluded by !**/*.jpg
  • src/assets/images/table/toggle-grid-state.jpg is excluded by !**/*.jpg
  • src/assets/images/table/toggle-table-state.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/system-task-manager.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-1.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-2.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-3.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-4.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-5.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-6.jpg is excluded by !**/*.jpg
  • src/assets/images/user-management/user-management.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/filter-preferences.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/layout.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/library-shelf-view-sort.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/metadata-series-view.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/sidebar-sorting.jpg is excluded by !**/*.jpg
  • src/assets/logo-with-text.svg is excluded by !**/*.svg
  • src/assets/logo.svg is excluded by !**/*.svg
📒 Files selected for processing (70)
  • .github/workflows/deploy.yml
  • .gitignore
  • README.md
  • astro.config.mjs
  • docs/index.mdx
  • docusaurus.config.ts
  • package.json
  • postcss.config.mjs
  • public/CNAME
  • sidebars.ts
  • src/components/ApiSidebarSublist.astro
  • src/components/AppButton.astro
  • src/components/CommunityLinks.astro
  • src/components/DocsIcon.astro
  • src/components/Features.astro
  • src/components/Footer.astro
  • src/components/Head.astro
  • src/components/Hero.astro
  • src/components/HomepageFeatures/index.tsx
  • src/components/HomepageFeatures/styles.module.css
  • src/components/IconSidebarSublist.astro
  • src/components/PageSidebar.astro
  • src/components/Sidebar.astro
  • src/components/SiteTitle.astro
  • src/components/ThemeImage.astro
  • src/components/TwoColumnContent.astro
  • src/content.config.ts
  • src/content/docs/administration/audit-logs.mdx
  • src/content/docs/administration/content-restrictions.mdx
  • src/content/docs/administration/devices.mdx
  • src/content/docs/administration/email-setup.mdx
  • src/content/docs/administration/global-preferences.mdx
  • src/content/docs/administration/task-manager.mdx
  • src/content/docs/administration/user-management.mdx
  • src/content/docs/authentication/oidc-identity-providers/authelia.mdx
  • src/content/docs/authentication/oidc-identity-providers/authentik.mdx
  • src/content/docs/authentication/oidc-identity-providers/pocket-id.mdx
  • src/content/docs/authentication/oidc-settings.mdx
  • src/content/docs/authentication/overview.mdx
  • src/content/docs/bookdrop/advanced.mdx
  • src/content/docs/bookdrop/basics.mdx
  • src/content/docs/books/authors.mdx
  • src/content/docs/books/grid.mdx
  • src/content/docs/books/library-stats.mdx
  • src/content/docs/books/magic-shelf.mdx
  • src/content/docs/books/notebook.mdx
  • src/content/docs/books/reading-stats.mdx
  • src/content/docs/books/series.mdx
  • src/content/docs/books/shelf.mdx
  • src/content/docs/books/table.mdx
  • src/content/docs/customization/cover-art-settings.mdx
  • src/content/docs/customization/custom-fonts.mdx
  • src/content/docs/customization/custom-icons.mdx
  • src/content/docs/index.mdx
  • src/content/docs/integration/kobo.mdx
  • src/content/docs/integration/komga-api.mdx
  • src/content/docs/integration/koreader.mdx
  • src/content/docs/integration/opds.mdx
  • src/content/docs/library/duplicate-detection.mdx
  • src/content/docs/library/edit-library.mdx
  • src/content/docs/library/organization-modes.mdx
  • src/content/docs/library/physical-books.mdx
  • src/content/docs/library/setup-first-library.mdx
  • src/content/docs/metadata/amazon-cookie.mdx
  • src/content/docs/metadata/file-naming-patterns.mdx
  • src/content/docs/metadata/hardcover-token.mdx
  • src/content/docs/metadata/lubimyczytac.mdx
  • src/content/docs/metadata/metadata-center.mdx
  • src/content/docs/metadata/metadata-fetch-configuration.mdx
  • src/content/docs/metadata/metadata-manager.mdx
💤 Files with no reviewable changes (5)
  • src/components/HomepageFeatures/index.tsx
  • sidebars.ts
  • src/components/HomepageFeatures/styles.module.css
  • docusaurus.config.ts
  • docs/index.mdx
📜 Review details
🧰 Additional context used
🪛 LanguageTool
src/content/docs/metadata/lubimyczytac.mdx

[grammar] ~16-~16: Ensure spelling is correct
Context: ... and you're done. ::: --- ## Enabling LubimyCzytac Open Settings > Metadata 2, find **L...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

src/content/docs/bookdrop/advanced.mdx

[grammar] ~9-~9: Ensure spelling is correct
Context: ...t with importing large collections into Grimmory - Bulk Edit - Pattern Extraction --- ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

README.md

[uncategorized] ~37-~37: The official name of this software platform is spelled with a capital “H”.
Context: ...y GitHub Pages deploys from deploy.yml on push to main...

(GITHUB)

src/content/docs/integration/koreader.mdx

[style] ~56-~56: You have already used ‘right’ in nearby sentences. Consider using an alternative word to let your writing stand out and sound more polished.
Context: ...uses), ensuring the right book gets the right progress. <ThemeImage src={"/img/korea...

(REP_RIGHT)

src/content/docs/administration/devices.mdx

[grammar] ~19-~19: Ensure spelling is correct
Context: ...r device are automatically reflected in Grimmory. Requires the KOReader Sync permissio...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~69-~69: Ensure spelling is correct
Context: ...h ways, and your Kobo ratings update in Grimmory. Requires the Kobo Sync permission....

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

src/content/docs/books/authors.mdx

[style] ~82-~82: Consider removing “of” to be more concise
Context: ...ult and can be expanded. Below the bio, all of the author's books in your library are list...

(ALL_OF_THE)

src/content/docs/integration/kobo.mdx

[grammar] ~10-~10: Ensure spelling is correct
Context: ...o'; Kobo sync lets you send books from Grimmory to your Kobo eReader and sync reading a...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~10-~10: Ensure spelling is correct
Context: ...rsonal ratings set on Kobo sync back to Grimmory. You control what gets synced through a...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~16-~16: Ensure spelling is correct
Context: ...edirecting your Kobo's built-in sync to Grimmory instead of the Kobo Store. Your Kobo st...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~16-~16: Ensure spelling is correct
Context: ...tes), but it also pulls books from your Grimmory library. :::note[File Format Support] ...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~119-~119: Ensure spelling is correct
Context: ...ialog with Sync now button"} /> 5. Your Grimmory books appear on the device, ready to re...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~147-~147: Ensure spelling is correct
Context: ...book is removed from your Kobo shelf in Grimmory but stays in your library. It's not del...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

src/content/docs/metadata/metadata-center.mdx

[grammar] ~218-~218: Ensure spelling is correct
Context: ...g metadata when migrating books between Grimmory instances, sharing curated metadata wit...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

src/content/docs/authentication/oidc-identity-providers/authelia.mdx

[grammar] ~113-~113: Ensure spelling is correct
Context: ...r-provisioning):** Automatically create Grimmory accounts when users sign in for the fir...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~114-~114: Ensure spelling is correct
Context: ...roup-mapping):** Map Authelia groups to Grimmory permissions and library access (make su...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~135-~135: Ensure spelling is correct
Context: ...ttings#-user-provisioning), or create a Grimmory user with a username that exactly match...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

src/content/docs/authentication/oidc-identity-providers/pocket-id.mdx

[grammar] ~128-~128: Ensure spelling is correct
Context: ...ttings#-user-provisioning), or create a Grimmory user with a username that exactly match...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

src/content/docs/integration/komga-api.mdx

[grammar] ~321-~321: Ensure spelling is correct
Context: ...adata populated - Edit book metadata in Grimmory to add series information - Alternative...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

src/content/docs/authentication/oidc-settings.mdx

[grammar] ~236-~236: Ensure spelling is correct
Context: ...our identity provider using groups, and Grimmory automatically applies the right permiss...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~238-~238: Ensure spelling is correct
Context: ... configuring each user's permissions in Grimmory, you manage everything in your identity...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)


[grammar] ~238-~238: Ensure spelling is correct
Context: ...oup in Authentik or Keycloak, and their Grimmory access updates on next login. <ThemeIm...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

🔇 Additional comments (60)
package.json (1)

3-21: LGTM!

postcss.config.mjs (1)

1-5: LGTM!

.github/workflows/deploy.yml (1)

31-31: LGTM!

Also applies to: 43-43

src/content.config.ts (1)

1-7: LGTM!

src/components/AppButton.astro (1)

1-69: LGTM!

Also applies to: 73-95

src/components/DocsIcon.astro (1)

1-39: LGTM!

src/components/ThemeImage.astro (2)

1-85: LGTM!


86-113: The observer deduplication issue does not exist in this codebase.

Astro automatically bundles and deduplicates script tags in components by default. Since the <script> tag in ThemeImage.astro has no is:inline directive, the script runs once per page regardless of how many component instances exist. Only one MutationObserver is created, and there is no O(n×instances) performance problem. The proposed singleton pattern fix is unnecessary.

			> Likely an incorrect or invalid review comment.
src/components/Head.astro (1)

1-7: LGTM!

src/components/Hero.astro (1)

1-170: LGTM!

src/components/Features.astro (1)

1-100: LGTM!

src/components/CommunityLinks.astro (1)

1-40: LGTM!

src/components/Footer.astro (1)

1-58: LGTM!

src/components/SiteTitle.astro (1)

1-60: LGTM!

src/components/ApiSidebarSublist.astro (1)

1-199: LGTM!

src/components/IconSidebarSublist.astro (1)

1-201: LGTM!

src/components/Sidebar.astro (1)

1-225: LGTM!

src/components/PageSidebar.astro (1)

1-52: LGTM!

src/components/TwoColumnContent.astro (1)

1-58: LGTM!

src/content/docs/index.mdx (1)

1-25: LGTM!

src/content/docs/administration/audit-logs.mdx (1)

1-21: LGTM!

Also applies to: 34-38, 52-53, 70-78, 92-93, 114-127

src/content/docs/administration/content-restrictions.mdx (1)

1-7: LGTM!

Also applies to: 13-16, 33-36, 37-48, 51-59

src/content/docs/administration/devices.mdx (1)

1-10: LGTM!

Also applies to: 17-24, 47-73, 96-101, 117-124

src/content/docs/administration/email-setup.mdx (1)

1-10: LGTM!

Also applies to: 26-31, 37-38, 73-74, 92-103, 114-121, 132-133, 153-154, 164-165, 186-190

src/content/docs/administration/global-preferences.mdx (1)

1-10: LGTM!

Also applies to: 15-19, 22-27, 54-60, 63-69, 71-79

src/content/docs/administration/task-manager.mdx (1)

1-10: LGTM!

Also applies to: 15-23, 33-34, 44-45, 55-56, 66-67, 77-78, 92-93, 107-108, 120-121, 162-163, 184-187

src/content/docs/administration/user-management.mdx (1)

1-10: LGTM!

Also applies to: 28-32, 48-49, 60-70, 80-89, 98-99, 110-119, 132-137, 200-201, 214-219

src/content/docs/authentication/oidc-identity-providers/authentik.mdx (1)

1-176: LGTM!

Also applies to: 181-193, 195-223

src/content/docs/authentication/oidc-identity-providers/pocket-id.mdx (1)

1-110: LGTM!

Also applies to: 115-127, 129-153

src/content/docs/authentication/oidc-settings.mdx (1)

1-527: LGTM!

src/content/docs/authentication/overview.mdx (1)

1-84: LGTM!

src/content/docs/bookdrop/advanced.mdx (1)

1-146: LGTM!

src/content/docs/bookdrop/basics.mdx (1)

1-58: LGTM!

Also applies to: 60-116

src/content/docs/books/authors.mdx (1)

1-126: LGTM!

src/content/docs/books/grid.mdx (1)

1-81: LGTM!

src/content/docs/books/library-stats.mdx (1)

1-7: LGTM!

Also applies to: 9-15, 17-21, 26-26, 28-28, 32-32, 53-53

src/content/docs/books/notebook.mdx (1)

1-7: LGTM!

Also applies to: 9-9, 11-11, 13-13, 15-15, 17-17, 30-30, 42-42, 51-51, 66-66

src/content/docs/books/reading-stats.mdx (1)

1-7: LGTM!

Also applies to: 9-15, 17-17, 19-19, 21-21, 23-23, 25-25, 27-27, 29-29, 42-43, 45-45, 58-58, 60-60, 73-73, 75-76, 78-78, 80-80, 82-82

src/content/docs/books/series.mdx (1)

1-7: LGTM!

Also applies to: 9-9, 11-11, 13-13, 15-15, 17-17, 19-20, 40-49, 60-60, 75-75, 92-92, 104-110, 112-112, 114-114, 116-116

src/content/docs/books/shelf.mdx (1)

1-7: LGTM!

Also applies to: 9-9, 11-11, 13-13, 15-15, 17-17, 19-19, 21-21, 23-24, 26-26, 28-29, 31-31, 33-33, 35-36, 38-38, 40-42, 44-45, 47-48, 50-50, 52-52, 54-54

src/content/docs/books/table.mdx (1)

1-7: LGTM!

Also applies to: 9-9, 11-11, 13-15, 17-17, 19-19, 21-22, 24-24, 26-26, 28-28, 30-31, 33-33, 35-35, 37-38, 40-40, 42-42, 44-46, 48-48, 50-50, 52-53, 55-55, 57-57, 59-59, 61-62, 64-64

src/content/docs/customization/cover-art-settings.mdx (1)

1-7: LGTM!

src/content/docs/customization/custom-fonts.mdx (1)

1-10: LGTM!

Also applies to: 15-27, 42-44, 48-53, 57-71, 75-85

src/content/docs/customization/custom-icons.mdx (1)

1-9: LGTM!

Also applies to: 19-19, 28-35, 50-50, 70-70

src/content/docs/integration/kobo.mdx (1)

1-18: LGTM!

Also applies to: 46-56, 65-69, 81-86, 98-98, 112-122, 140-150, 163-163, 189-189

src/content/docs/integration/koreader.mdx (1)

1-8: LGTM!

Also applies to: 26-37, 46-60, 70-70

src/content/docs/integration/opds.mdx (1)

1-8: LGTM!

Also applies to: 20-20, 70-75, 92-92

src/content/docs/library/duplicate-detection.mdx (1)

1-27: LGTM!

Also applies to: 55-55, 73-73, 86-86, 106-117, 119-131

src/content/docs/library/edit-library.mdx (1)

1-8: LGTM!

Also applies to: 14-23, 25-66, 70-70

src/content/docs/library/organization-modes.mdx (1)

1-8: LGTM!

Also applies to: 59-59, 162-162

src/content/docs/library/setup-first-library.mdx (1)

1-11: LGTM!

Also applies to: 15-23, 34-44, 67-83

src/content/docs/metadata/amazon-cookie.mdx (1)

1-12: LGTM!

Also applies to: 29-29, 41-41

src/content/docs/metadata/file-naming-patterns.mdx (1)

1-12: LGTM!

src/content/docs/metadata/hardcover-token.mdx (1)

1-8: LGTM!

Also applies to: 20-22, 34-34

src/content/docs/metadata/lubimyczytac.mdx (1)

1-30: LGTM!

Also applies to: 49-50, 64-64

src/content/docs/metadata/metadata-center.mdx (1)

49-53: Links are correctly configured with slug overrides.

The referenced pages are located under /administration/ but have explicit slug: tools/* overrides in their frontmatter, so the /tools/task-manager and /tools/global-preferences links in this file will resolve correctly and are safe.

src/content/docs/library/physical-books.mdx (1)

125-125: The link /magic-shelf is correct. The target file src/content/docs/books/magic-shelf.mdx explicitly sets slug: magic-shelf in its frontmatter, which overrides the directory-based URL structure and makes /magic-shelf the correct route.

src/content/docs/metadata/metadata-fetch-configuration.mdx (2)

1-15: LGTM!

Also applies to: 34-57, 93-99, 131-132, 161-168, 186-208, 264-271


266-266: The link to /tools/audit-logs is correctly configured. The audit-logs.mdx file declares slug: tools/audit-logs in its frontmatter, so the link will resolve without issues.

src/content/docs/metadata/metadata-manager.mdx (1)

1-16: LGTM!

Also applies to: 50-51, 70-72, 83-83

Comment thread .gitignore Outdated
Comment thread astro.config.mjs
Comment thread README.md
Comment thread src/components/AppButton.astro Outdated
Comment thread src/content/docs/authentication/oidc-identity-providers/authelia.mdx Outdated
Comment thread src/content/docs/authentication/oidc-identity-providers/authentik.mdx Outdated
Comment thread src/content/docs/authentication/oidc-identity-providers/pocket-id.mdx Outdated
Comment thread src/content/docs/bookdrop/basics.mdx Outdated
Comment thread src/content/docs/books/magic-shelf.mdx
@alexhb1 alexhb1 force-pushed the starlight-redesign branch from 9cb91c0 to f010e2d Compare June 18, 2026 14:12
@alexhb1 alexhb1 marked this pull request as ready for review June 18, 2026 14:18
@alexhb1 alexhb1 requested a review from zachyale June 18, 2026 14:19

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.gitignore:
- Line 10: The .gitignore file currently ignores .DS_Store (macOS system files)
but is missing Thumbs.db (Windows system files). Since the PR introduces image
directories where Windows Explorer will auto-generate Thumbs.db files, add
Thumbs.db to the .gitignore file on a new line alongside .DS_Store to prevent
accidental commits of Windows system files and maintain cross-platform
consistency.

In `@README.md`:
- Line 3: Update the Read the Docs badge link URL in the README.md file to match
the correct documentation route. Change the href from
https://grimmory.org/getting-started to
https://grimmory.org/start/getting-started to align with the actual file
location at src/content/docs/start/getting-started.mdx. This ensures the badge
correctly directs users to the getting-started documentation page.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 27181319-f64f-466c-bcfe-c9fe0c8d4dd3

📥 Commits

Reviewing files that changed from the base of the PR and between 9cb91c0 and e7eeb7f.

⛔ Files ignored due to path filters (230)
  • package-lock.json is excluded by !**/package-lock.json
  • public/favicon.png is excluded by !**/*.png
  • public/favicon.svg is excluded by !**/*.svg
  • src/assets/images/audiobook-player/audiobook-player-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/audit-logs/audit-logs.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authelia/disable-oidc.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authelia/grimmory-oidc-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authelia/login-success.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authelia/standard-login.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/application-details.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/create-application.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/disable-oidc.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/grimmory-homepage.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/grimmory-oidc-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/login-page.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/oauth-scopes.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/provider-credentials.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/provider-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/provider-type.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/providers-list.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/redirect-uris.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/standard-login.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/user-bindings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/authentik/user-impersonation.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/auto-provisioning/enable-auto-provisioning.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/auto-provisioning/setup-oidc.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/auto-provisioning/verify-user-creation.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/oidc-settings/group-mapping.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/login-methods.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/oidc-only-mode.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/provider-configuration.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/provider-reference-full.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/provider-reference.png is excluded by !**/*.png
  • src/assets/images/authentication/oidc-settings/user-provisioning.png is excluded by !**/*.png
  • src/assets/images/authentication/pocket-id/app-card.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/client-details.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/copy-client-id.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/create-client.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/disable-oidc.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/grimmory-oidc-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/login-success.jpg is excluded by !**/*.jpg
  • src/assets/images/authentication/pocket-id/standard-login.jpg is excluded by !**/*.jpg
  • src/assets/images/authors/author-details.jpg is excluded by !**/*.jpg
  • src/assets/images/authors/browse-all-authors.jpg is excluded by !**/*.jpg
  • src/assets/images/authors/edit-details.jpg is excluded by !**/*.jpg
  • src/assets/images/authors/search-author.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-dropdown.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-folder.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-library.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-pre-final.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-pre.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-progress.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/bookdrop-summary.jpg is excluded by !**/*.jpg
  • src/assets/images/bookdrop/processing-status.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-notes.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-pages.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/cbx-reader/cbx-reader-shortcuts.jpg is excluded by !**/*.jpg
  • src/assets/images/cdn/bg.png is excluded by !**/*.png
  • src/assets/images/custom-fonts/file-preview.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/font-collection.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/font-library.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/global-setting.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/per-book-setting.jpg is excluded by !**/*.jpg
  • src/assets/images/custom-fonts/upload-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/dashboard/dashboard-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/dashboard/dashboard-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/devices/hardcover-integration.jpg is excluded by !**/*.jpg
  • src/assets/images/devices/kobo-admin-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/devices/kobo-integration.jpg is excluded by !**/*.jpg
  • src/assets/images/devices/koreader-sync.jpg is excluded by !**/*.jpg
  • src/assets/images/duplicate-detection/find-duplicates-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/duplicate-detection/library-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/edit-library/edit-form.jpg is excluded by !**/*.jpg
  • src/assets/images/edit-library/header-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/edit-library/sidebar-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/email-setup/create-provider-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/email-setup/email-configuration.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-layout.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-navigation.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-notes.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-quick-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-theme.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-toc.jpg is excluded by !**/*.jpg
  • src/assets/images/epub-reader/epub-reader-typography.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/add-book-folders.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/click-add-a-library.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/library-folder-picker.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/library-processing.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/monitoring-library.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/new-library-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/first-library/selected-library-folders.jpg is excluded by !**/*.jpg
  • src/assets/images/global-preferences/global-preferences.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/cover-size-slider.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/overview.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/search-bar.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/series-collapsed.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/series-expanded.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/sidebar-filters.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/sidebar-sort-options.jpg is excluded by !**/*.jpg
  • src/assets/images/grid/sort-dropdown.jpg is excluded by !**/*.jpg
  • src/assets/images/icons/add-svg.jpg is excluded by !**/*.jpg
  • src/assets/images/icons/custom-icons.jpg is excluded by !**/*.jpg
  • src/assets/images/icons/icon-picker.jpg is excluded by !**/*.jpg
  • src/assets/images/icons/prime-icons.jpg is excluded by !**/*.jpg
  • src/assets/images/initial-setup/admin-user.jpg is excluded by !**/*.jpg
  • src/assets/images/initial-setup/empty-dashboard.jpg is excluded by !**/*.jpg
  • src/assets/images/initial-setup/login.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/assign-shelf.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/config-after.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/config-before.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/config-file-location.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/device-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/remove-confirm.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/remove-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/shelf-after-removal.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/shelf-with-books.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/sync-after-removal.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/sync-button.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/synced-books.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/synced-progress.jpg is excluded by !**/*.jpg
  • src/assets/images/kobo/user-permissions.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/binary-matching.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/credentials-setup.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/custom-sync-server.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/device-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/login-credentials.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/matching-method.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/push-pull-options.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/settings-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/synced-progress.jpg is excluded by !**/*.jpg
  • src/assets/images/koreader/user-permissions.jpg is excluded by !**/*.jpg
  • src/assets/images/library-stats/library-stats-charts.jpg is excluded by !**/*.jpg
  • src/assets/images/library-stats/library-stats-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-1.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-2.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex1.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex2.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex3.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex4.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-ex5.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-export.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-import-applied.jpg is excluded by !**/*.jpg
  • src/assets/images/magic-shelf/magic-shelf-import-json.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/book-details.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/edit-metadata.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/files-tab.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/notes-tab.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/reading-sessions-tab.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/reviews-tab.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/search-metadata-compare.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/search-metadata.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-center/sidecar.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata-config/metadata-configuration.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/amazon-cookie/amazon-cookie-1.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/amazon-cookie/amazon-cookie-2.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/auto-metadata-download.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/enabled-fields.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/file-naming-patterns.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/hardcover-api/hardcover-1.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/hardcover-api/hardcover-2.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/access-settings.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/delete-option.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/merge-target.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/overview.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/rename-button.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/rename-confirm.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/rename-input.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/manager/select-items.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/metadata-fetch-configuration/metadata-fetch-configuration.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/metadata-persistence.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/metadata-providers.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/public-reviews.jpg is excluded by !**/*.jpg
  • src/assets/images/metadata/sidecar-json.jpg is excluded by !**/*.jpg
  • src/assets/images/notebook/notebook-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/opds/opds.jpg is excluded by !**/*.jpg
  • src/assets/images/pdf-reader/pdf-reader-overview.jpg is excluded by !**/*.jpg
  • src/assets/images/pdf-reader/pdf-reader-view-modes.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/add-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/isbn-import-complete.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/isbn-import-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/isbn-import-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/isbn-import-progress.jpg is excluded by !**/*.jpg
  • src/assets/images/physical-books/library-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/comic-reader.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/custom-font-library.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/ebook-appearance.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/ebook-layout.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/ebook-typography.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/pdf-reader.jpg is excluded by !**/*.jpg
  • src/assets/images/reader/settings-application-mode.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-book-flow.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-completion-race.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-debt-era.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-session-archetypes.jpg is excluded by !**/*.jpg
  • src/assets/images/reading-stats/reading-stats-survival-length.jpg is excluded by !**/*.jpg
  • src/assets/images/series/browse-all-series.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/assign-dialog.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/assign-multiple-books.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/assign-single-book.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/create-confirm.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/create-form.jpg is excluded by !**/*.jpg
  • src/assets/images/shelf/sidebar-listing.jpg is excluded by !**/*.jpg
  • src/assets/images/table/delete-confirm.jpg is excluded by !**/*.jpg
  • src/assets/images/table/delete-menu.jpg is excluded by !**/*.jpg
  • src/assets/images/table/sidebar-default.jpg is excluded by !**/*.jpg
  • src/assets/images/table/sidebar-sort-options.jpg is excluded by !**/*.jpg
  • src/assets/images/table/table-search.jpg is excluded by !**/*.jpg
  • src/assets/images/table/table-select-all.jpg is excluded by !**/*.jpg
  • src/assets/images/table/table-sorting.jpg is excluded by !**/*.jpg
  • src/assets/images/table/table-visible-columns.jpg is excluded by !**/*.jpg
  • src/assets/images/table/toggle-grid-state.jpg is excluded by !**/*.jpg
  • src/assets/images/table/toggle-table-state.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/system-task-manager.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-1.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-2.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-3.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-4.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-5.jpg is excluded by !**/*.jpg
  • src/assets/images/task-manager/task-manager-6.jpg is excluded by !**/*.jpg
  • src/assets/images/user-management/user-management.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/filter-preferences.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/layout.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/library-shelf-view-sort.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/metadata-series-view.jpg is excluded by !**/*.jpg
  • src/assets/images/view-preferences/sidebar-sorting.jpg is excluded by !**/*.jpg
  • src/assets/logo-with-text.svg is excluded by !**/*.svg
  • src/assets/logo.svg is excluded by !**/*.svg
📒 Files selected for processing (70)
  • .github/workflows/deploy.yml
  • .gitignore
  • README.md
  • astro.config.mjs
  • docs/index.mdx
  • docusaurus.config.ts
  • package.json
  • postcss.config.mjs
  • public/CNAME
  • sidebars.ts
  • src/components/ApiSidebarSublist.astro
  • src/components/AppButton.astro
  • src/components/CommunityLinks.astro
  • src/components/DocsIcon.astro
  • src/components/Features.astro
  • src/components/Footer.astro
  • src/components/Head.astro
  • src/components/Hero.astro
  • src/components/HomepageFeatures/index.tsx
  • src/components/HomepageFeatures/styles.module.css
  • src/components/IconSidebarSublist.astro
  • src/components/PageSidebar.astro
  • src/components/Sidebar.astro
  • src/components/SiteTitle.astro
  • src/components/ThemeImage.astro
  • src/components/TwoColumnContent.astro
  • src/content.config.ts
  • src/content/docs/administration/audit-logs.mdx
  • src/content/docs/administration/content-restrictions.mdx
  • src/content/docs/administration/devices.mdx
  • src/content/docs/administration/email-setup.mdx
  • src/content/docs/administration/global-preferences.mdx
  • src/content/docs/administration/task-manager.mdx
  • src/content/docs/administration/user-management.mdx
  • src/content/docs/authentication/oidc-identity-providers/authelia.mdx
  • src/content/docs/authentication/oidc-identity-providers/authentik.mdx
  • src/content/docs/authentication/oidc-identity-providers/pocket-id.mdx
  • src/content/docs/authentication/oidc-settings.mdx
  • src/content/docs/authentication/overview.mdx
  • src/content/docs/bookdrop/advanced.mdx
  • src/content/docs/bookdrop/basics.mdx
  • src/content/docs/books/authors.mdx
  • src/content/docs/books/grid.mdx
  • src/content/docs/books/library-stats.mdx
  • src/content/docs/books/magic-shelf.mdx
  • src/content/docs/books/notebook.mdx
  • src/content/docs/books/reading-stats.mdx
  • src/content/docs/books/series.mdx
  • src/content/docs/books/shelf.mdx
  • src/content/docs/books/table.mdx
  • src/content/docs/customization/cover-art-settings.mdx
  • src/content/docs/customization/custom-fonts.mdx
  • src/content/docs/customization/custom-icons.mdx
  • src/content/docs/index.mdx
  • src/content/docs/integration/kobo.mdx
  • src/content/docs/integration/komga-api.mdx
  • src/content/docs/integration/koreader.mdx
  • src/content/docs/integration/opds.mdx
  • src/content/docs/library/duplicate-detection.mdx
  • src/content/docs/library/edit-library.mdx
  • src/content/docs/library/organization-modes.mdx
  • src/content/docs/library/physical-books.mdx
  • src/content/docs/library/setup-first-library.mdx
  • src/content/docs/metadata/amazon-cookie.mdx
  • src/content/docs/metadata/file-naming-patterns.mdx
  • src/content/docs/metadata/hardcover-token.mdx
  • src/content/docs/metadata/lubimyczytac.mdx
  • src/content/docs/metadata/metadata-center.mdx
  • src/content/docs/metadata/metadata-fetch-configuration.mdx
  • src/content/docs/metadata/metadata-manager.mdx
💤 Files with no reviewable changes (5)
  • docusaurus.config.ts
  • docs/index.mdx
  • src/components/HomepageFeatures/index.tsx
  • src/components/HomepageFeatures/styles.module.css
  • sidebars.ts
✅ Files skipped from review due to trivial changes (19)
  • src/content/docs/metadata/hardcover-token.mdx
  • src/content/docs/administration/content-restrictions.mdx
  • src/content/docs/index.mdx
  • src/content/docs/customization/cover-art-settings.mdx
  • src/content/docs/library/organization-modes.mdx
  • src/content/docs/books/notebook.mdx
  • src/content/docs/authentication/overview.mdx
  • src/content/docs/metadata/lubimyczytac.mdx
  • src/content/docs/metadata/metadata-fetch-configuration.mdx
  • src/content/docs/integration/opds.mdx
  • src/content/docs/administration/global-preferences.mdx
  • src/content/docs/bookdrop/advanced.mdx
  • src/content/docs/library/duplicate-detection.mdx
  • src/content/docs/books/table.mdx
  • .github/workflows/deploy.yml
  • src/content/docs/books/reading-stats.mdx
  • src/content/docs/administration/task-manager.mdx
  • src/content/docs/administration/email-setup.mdx
  • src/content/docs/bookdrop/basics.mdx
🚧 Files skipped from review as they are similar to previous changes (39)
  • src/components/SiteTitle.astro
  • src/content.config.ts
  • src/components/Head.astro
  • src/components/DocsIcon.astro
  • src/components/Sidebar.astro
  • src/components/ApiSidebarSublist.astro
  • postcss.config.mjs
  • src/components/TwoColumnContent.astro
  • src/content/docs/metadata/file-naming-patterns.mdx
  • src/components/PageSidebar.astro
  • src/content/docs/books/grid.mdx
  • src/content/docs/metadata/amazon-cookie.mdx
  • src/content/docs/customization/custom-fonts.mdx
  • src/components/Features.astro
  • src/content/docs/books/library-stats.mdx
  • src/content/docs/administration/audit-logs.mdx
  • src/content/docs/books/series.mdx
  • src/content/docs/administration/devices.mdx
  • src/content/docs/metadata/metadata-manager.mdx
  • src/content/docs/integration/kobo.mdx
  • src/components/Footer.astro
  • src/content/docs/authentication/oidc-identity-providers/authentik.mdx
  • package.json
  • src/components/AppButton.astro
  • src/components/ThemeImage.astro
  • src/content/docs/authentication/oidc-identity-providers/authelia.mdx
  • src/components/IconSidebarSublist.astro
  • src/content/docs/library/edit-library.mdx
  • src/content/docs/authentication/oidc-identity-providers/pocket-id.mdx
  • src/content/docs/library/setup-first-library.mdx
  • src/components/Hero.astro
  • astro.config.mjs
  • src/content/docs/customization/custom-icons.mdx
  • src/content/docs/administration/user-management.mdx
  • src/content/docs/metadata/metadata-center.mdx
  • src/content/docs/books/shelf.mdx
  • src/content/docs/integration/komga-api.mdx
  • src/content/docs/library/physical-books.mdx
  • src/content/docs/books/magic-shelf.mdx
📜 Review details
🧰 Additional context used
🪛 LanguageTool
README.md

[uncategorized] ~37-~37: The official name of this software platform is spelled with a capital “H”.
Context: ...y GitHub Pages deploys from deploy.yml on push to main...

(GITHUB)

src/content/docs/authentication/oidc-settings.mdx

[grammar] ~238-~238: Ensure spelling is correct
Context: ... configuring each user's permissions in Grimmory, you manage everything in your identity...

(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)

src/content/docs/books/authors.mdx

[style] ~82-~82: Consider removing “of” to be more concise
Context: ...ult and can be expanded. Below the bio, all of the author's books in your library are list...

(ALL_OF_THE)

src/content/docs/integration/koreader.mdx

[style] ~56-~56: You have already used ‘right’ in nearby sentences. Consider using an alternative word to let your writing stand out and sound more polished.
Context: ...uses), ensuring the right book gets the right progress. <ThemeImage src={"/img/korea...

(REP_RIGHT)

🔇 Additional comments (3)
src/components/CommunityLinks.astro (1)

1-58: LGTM!

.gitignore (1)

11-11: 💤 Low value

Clarify the purpose of the local/ directory entry.

The new local/ ignore entry is not mentioned in the PR objectives or any visible context. Please confirm what this directory is used for (e.g., local development artifacts, local configuration, or local build outputs) to ensure it aligns with the Astro migration and doesn't inadvertently ignore user-created files that should be tracked.

src/content/docs/authentication/oidc-settings.mdx (1)

262-262: DocsIcon component correctly applies Tailwind classes. The component accepts the class prop and properly merges it with the base docs-icon class using Astro's class:list directive, ensuring styling is applied to the rendered SVG element.

Comment thread .gitignore
Comment thread README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant